일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- splatrendering #3dpointcloud #differentiablerendering
- advancedrenderingtechniques #neuralscenerepresentation
- 3dcontentcreation
- geometrylearning #shapeoptimization #gpuacceleration #realtimerendering
- turtlebot3 #터틀봇
- gaussiansplatting #3dgaussiansplatting #pointbasedrendering
- realtimerendering #machinelearning3d #deeplearninggraphics #computervision
- optimizationalgorithms
- gpuacceleration #aigraphics #virtualreality #augmentedreality #gamedevelopment
- nextgengraphics #futureof3drendering #innovativerenderingtechniques
- 3dscanning #digitaltwintechnology #3dcontentcreation
- computergraphics #3dmodeling #virtualreality #augmentedreality #gamedevelopment
- machinelearning3d #deeplearninggraphics #airendering
- highfidelityreconstruction #sceneunderstanding #computationalgraphics
- 3drenderingtools #pointcloudsoftware #3dvisualizationsoftware
- siggraph #3dsceneunderstanding #highquality3drendering #fastrendering
- 3dsceneunderstanding #pointcloudrendering #neuralscenerepresentation
- nerf (neural radiance fields) #3dreconstruction #pointcloudrendering #volumerendering
- 3dpointcloud #differentiablerendering #3dscenerepresentation #neuralrendering
- pointbasedrendering #computergraphics #3dmodeling #volumerendering
- realtimerendering #highquality3d #fastrendering
- anisotropickernels #ellipsoidalsplatting #orientedsplats #gradientbasedlearning
- gaussianprojection #covariancematrix3d #anisotropicgaussians #ellipsoidalsplatting
- 3dscenerepresentation #covariancematrixoptimization #adaptivegaussians
- nerf (neural radiance fields) #3dreconstruction
- differentiablerendering #machinelearning3d #deeplearninggraphics
- anisotropicgaussianlearning #gaussiansplatting #nonisotropicrenderinㅎ
- computervisionresearch #3dreconstructiontechniques #graphicsresearch
- gaussiansplatting #3dgaussiancovariance #nerf #3dreconstruction
- siggraphtechniques #aigraphics #3dmodelingalgorithms
- Today
- Total
Wiredwisdom
OpenCR Setup 본문
$ sudo dpkg --add-architecture armhf
$ sudo apt-get update
$ sudo apt-get install libc6:armhf
dpkg : Debian 기반 리눅스 배포판을 위한 패키지 관리 시스템
소프트웨어 패키지를 설치, 제거 및 관리하는 데 사용됩니다.
armhf "ARM hard float"의 약자
하드웨어 부동 소수점 연산을 사용하는 ARM 아키텍처 프로세서를 위해 컴파일된 소프트웨어 패키지와 바이너리
성능: 하드웨어 부동 소수점 연산을 사용하므로 부동 소수점 계산을 더 빠르고 효율적으로 수행.
소프트웨어 호환성: armhf 패키지는 하드웨어 부동 소수점 연산을 지원하는 ARM 프로세서에서만 실행.
ARM 아키텍처, ARM(Advanced RISC Machine)
모바일 장치, 임베디드 시스템, 그리고 일부 서버 및 데스크탑 시스템에서 널리 사용되는 RISC(Reduced Instruction Set Computing) 기반의 프로세서 아키텍처.
Hard Float
ARM 프로세서의 하드웨어에서 부동 소수점 연산을 처리하는 방식
하드웨어 부동 소수점 유닛(FPU)이 있어서 부동 소수점 연산을 더 빠르고 효율적으로 처리할 수 있다.
이는 소프트웨어적으로 부동 소수점 연산을 처리하는 "soft float"와 대조된다.
libc6 (GNU C Library version 6)
Linux와 다른 Unix-like 운영체제에서 사용되는 표준 C 라이브러리의 여섯 번째 버전
"libc6"라는 이름은 주로 이 라이브러리의 패키지 이름으로 사용
표준 C 라이브러리 구현 : libc6는 ANSI C 표준 라이브러리 함수의 구현체를 제공.
여기에는 문자열 처리, 메모리 관리, 입출력, 수학 함수 등이 포함.
예: printf, scanf, malloc, free, memcpy, strlen 등.
시스템 호출 인터페이스 제공 : libc6는 운영체제의 커널과 사용자 공간 프로그램 간의 인터페이스를 제공.
시스템 호출을 통해 운영체제의 기능을 사용할 수 있도록 합니다.
예: 파일 열기(open), 읽기(read), 쓰기(write), 프로세스 생성(fork), 네트워크 통신(socket) 등.
다양한 기능 지원:
국제화 및 지역화: 다국어 지원 및 다양한 지역 설정을 처리
스레딩: POSIX 스레드를 지원하여 멀티스레드 프로그래밍을 가능
수학 연산: 고급 수학 함수와 유틸리티를 제공
기술적 세부 사항
버전: libc6의 버전 번호는 GNU C Library의 버전 번호와 일치합니다. 예를 들어, libc6 2.31은 glibc 2.31을 의미합니다.
호환성: libc6는 리눅스 커널과 밀접하게 연동되며, 대부분의 리눅스 응용 프로그램이 이 라이브러리를 사용합니다.
호환성 문제로 인해 시스템에서 libc6를 업그레이드할 때 주의가 필요합니다.
종속성과 중요성:
- 종속성: 수많은 응용 프로그램과 시스템 도구가 libc6에 의존하므로,
이를 제거하거나 비정상적으로 변경하면 시스템이 불안정해질 수 있습니다.
- 중요성: libc6는 리눅스 운영체제에서 핵심적인 역할을 하며,
대부분의 프로그램이 정상적으로 동작하기 위해 필수적인 라이브러리입니다.
업데이트와 관리:
- 업데이트: 보안 패치 및 성능 개선을 위해 정기적으로 업데이트됩니다. 시스템의 패키지 관리자를 통해 업데이트를 받을 수 있습니다.
- 관리: 일반적으로 시스템 관리자나 패키지 관리자가 관리하며, 사용자는 보통 직접 다루지 않습니다.
libc6는 리눅스 시스템의 필수적인 구성 요소로, 시스템의 안정성과 성능에 중요한 역할을 합니다.
GNU-C
표준 C 라이브러리 구현
glibc는 C 프로그래밍 언어의 표준 라이브러리 함수들을 제공합니다.
ANSI C 표준에 따라 설계되었으며, 많은 유틸리티 함수, 수학 함수, 문자열 처리 함수 등을 포함합니다.
예: printf, scanf, strcpy, strlen, malloc, free.
시스템 호출 인터페이스
glibc는 운영체제의 커널과 사용자 프로그램 간의 인터페이스를 제공합니다.
시스템 호출을 통해 파일 시스템, 프로세스 제어, 네트워크 기능 등을 사용할 수 있습니다.
예: open, read, write, fork, exec, socket.
국제화 및 지역화 지원
glibc는 다양한 언어와 지역 설정을 지원하여 다국어 프로그램을 쉽게 개발할 수 있게 합니다.
예: 로케일 설정, 다국어 메시지 처리.
멀티스레딩
POSIX 스레드 라이브러리(pthread)를 지원하여 멀티스레드 프로그래밍을 가능하게 합니다.
예: pthread_create, pthread_join, pthread_mutex_lock.
중요성
리눅스 및 유닉스 시스템의 필수 구성 요소
glibc는 대부분의 리눅스 배포판과 많은 유닉스 시스템에서 기본 C 라이브러리로 사용됩니다.
시스템의 기본적인 동작을 위해 필수적입니다.
광범위한 사용
대부분의 사용자 공간 프로그램이 glibc에 의존하며, 시스템 툴 및 유틸리티도 glibc를 사용합니다.
기술적 세부 사항
구성 요소 : glibc는 다양한 하위 라이브러리로 구성됩니다.
예를 들어, 표준 C 함수 라이브러리, 스레드 라이브러리, 수학 라이브러리 등이 있습니다.
버전 : glibc는 지속적으로 개발되고 있으며, 각 버전은 새로운 기능 추가, 버그 수정, 성능 개선 등을 포함합니다.
호환성 : glibc는 리눅스 커널과 밀접하게 연동되며, 커널 버전에 따라 특정 버전의 glibc가 필요할 수 있습니다.
$ export OPENCR_PORT=/dev/ttyACM0
$ export OPENCR_MODEL=burger
$ rm -rf ./opencr_update.tar.bz2
- export OPENCR_PORT=/dev/ttyACM0:
- 환경 변수를 설정하는 명령어입니다.
- OPENCR_PORT라는 환경 변수를 /dev/ttyACM0로 설정합니다.
- /dev/ttyACM0는 일반적으로 USB 직렬 포트 장치를 나타내며, 이 경우 아마도 특정 하드웨어 장치(예: 마이크로컨트롤러나 개발 보드)와의 통신 포트를 설정하는 데 사용됩니다.
- export OPENCR_MODEL=burger:
- 또 다른 환경 변수를 설정하는 명령어입니다.
- OPENCR_MODEL이라는 환경 변수를 burger로 설정합니다.
- 이는 특정 하드웨어 모델이나 설정을 지정하는 데 사용될 수 있습니다. 여기서 burger는 아마도 로봇이나 개발 보드의 특정 모델을 나타낼 것입니다.
- rm -rf ./opencr_update.tar.bz2:
- 파일을 삭제하는 명령어입니다.
- rm은 "remove"의 약자로 파일이나 디렉토리를 삭제합니다.
- -r 옵션은 디렉토리를 재귀적으로 삭제하도록 하며, 디렉토리와 그 안의 모든 파일을 삭제합니다.
- -f 옵션은 "force"의 약자로, 사용자에게 확인을 묻지 않고 강제로 삭제합니다.
- ./opencr_update.tar.bz2는 현재 디렉토리에 있는 opencr_update.tar.bz2 파일을 삭제합니다.
- 이 명령어는 특정 소프트웨어 업데이트 파일이나 패키지를 제거하는 데 사용될 수 있습니다.
$ wget https://github.com/ROBOTIS-GIT/OpenCR-Binaries/raw/master/turtlebot3/ROS1/latest/opencr_update.tar.bz2
$ tar -xvf opencr_update.tar.bz2
- wget https://github.com/ROBOTIS-GIT/OpenCR-Binaries/raw/master/turtlebot3/ROS1/latest/opencr_update.tar.bz2
- wget은 웹에서 파일을 다운로드하는 명령어입니다.
- https://github.com/ROBOTIS-GIT/OpenCR-Binaries/raw/master/turtlebot3/ROS1/latest/opencr_update.tar.bz2는 다운로드할 파일의 URL입니다.
- 이 명령어는 GitHub 저장소에서 opencr_update.tar.bz2 파일을 현재 디렉토리로 다운로드합니다.
- tar -xvf opencr_update.tar.bz2
- tar는 파일 압축 해제 및 생성 도구입니다.
- -x 옵션은 파일을 추출(extract)하라는 의미입니다.
- -v 옵션은 추출 과정을 자세히(verbose) 출력하라는 의미입니다.
- -f 옵션은 대상 파일 이름을 지정합니다.
- opencr_update.tar.bz2는 추출할 파일의 이름입니다.
- 이 명령어는 opencr_update.tar.bz2 파일을 현재 디렉토리로 압축 해제합니다.
$ cd ./opencr_update
$ ./update.sh $OPENCR_PORT $OPENCR_MODEL.opencr
- cd ./opencr_update:
- cd는 Change Directory의 약자로, 디렉토리를 변경하는 명령어입니다.
- ./opencr_update는 변경할 디렉토리의 경로입니다.
- 이 명령어는 현재 작업 디렉토리에서 opencr_update라는 디렉토리로 이동합니다.
- ./update.sh $OPENCR_PORT $OPENCR_MODEL.opencr:
1. /update.sh
./는 현재 디렉터리에 있는 파일을 실행하는 명령어입니다.
여기서는 현재 디렉터리에 있는 update.sh라는 쉘 스크립트를 실행합니다.
update.sh는 쉘 스크립트 파일의 이름입니다.
이 파일은 OpenCR 보드의 펌웨어 업데이트를 수행하는 명령어들을 포함하고 있습니다
2. $OPENCR_PORT
$OPENCR_PORT는 환경 변수입니다. 이 변수는 OpenCR 보드가 연결된 직렬 포트의 이름을 나타냅니다. 예를 들어, /dev/ttyUSB0 또는 /dev/ttyACM0와 같은 값일 수 있습니다.
쉘 스크립트 실행 시, 이 변수에 해당하는 실제 포트 이름이 대체됩니다.
3. $OPENCR_MODEL.opencr
$OPENCR_MODEL 역시 환경 변수입니다.
이 변수는 업데이트할 펌웨어의 모델명을 나타냅니다.
예를 들어, burger, waffle과 같은 값일 수 있습니다.
4. .opencr는 펌웨어 파일의 확장자입니다.
즉, $OPENCR_MODEL 변수의 값에 .opencr가 붙은 형태가 실제 펌웨어 파일의 이름이 됩니다.
예를 들어, burger.opencr 또는 waffle.opencr과 같은 파일 이름이 됩니다.
쉘 스크립트 실행 시, 이 변수에 해당하는 실제 모델명이 대체됩니다.
이 명령어는 전체적으로 OpenCR 보드의 펌웨어를 지정된 직렬 포트를 통해 업데이트하는 것을 의미합니다.
update.sh 스크립트는 $OPENCR_PORT와 $OPENCR_MODEL.opencr의 값을 받아서 해당 보드에 맞는 업데이트를 수행합니
다.
파일 실행 시 환경 변수 값 설정 이유.
- 유연성과 포괄성: 환경 변수를 사용하면 실행할 파일이나 스크립트가 다양한 환경에서 동작할 수 있습니다. 예를 들어, 포트 번호나 설정 파일의 경로 등을 환경 변수로 지정하면, 환경이 달라져도 손쉽게 변경할 수 있습니다.
- 보안과 안전성: 민감한 정보(예: 패스워드, 특정 디렉토리 경로)를 스크립트 파일에 하드코딩하지 않고 환경 변수로 관리하면, 보안에 더욱 강력하게 접근할 수 있습니다. 환경 변수는 보통 안전한 방식으로 관리되며, 특히 민감한 정보가 포함된 경우 설정 파일이나 시스템 환경 변수를 통해 안전하게 제어할 수 있습니다.
- 유지보수와 관리 용이성: 환경 변수를 사용하면 설정을 중앙 집중 관리할 수 있어, 여러 개의 파일이나 스크립트에서 일관된 설정을 유지할 수 있습니다. 변경이 필요한 경우 환경 변수 값만 수정하면 되므로 유지보수가 편리합니다.
- 자동화와 스크립팅: 특히 자동화된 배포나 설정 관리 시스템에서는 환경 변수를 사용하여 자동화된 작업을 지원합니다. 예를 들어, CI/CD 파이프라인에서는 환경 변수를 사용하여 각 단계에서 필요한 설정을 제공하고, 스크립트를 실행할 수 있습니다.
- After assembling TurtleBot3, connect the power to OpenCR and turn on the power switch of OpenCR. The red Power LED will be turned on.
- Place the robot on the flat ground in a wide open area. For the test, safety radius of 1 meter (40 inches) is recommended.
- Press and hold PUSH SW 1 for a few seconds to command the robot to move 30 centimeters (about 12 inches) forward.
- Press and hold PUSH SW 2 for a few seconds to command the robot to rotate 180 degrees in place.
'Autonomous Driving > Turtlebot3' 카테고리의 다른 글
'roscore' Error - 20.04 Ver, No GUI (0) | 2024.07.01 |
---|---|
Noetic RoS Re-setup (0) | 2024.07.01 |
Master Connecting Procedure - 24 Ver (0) | 2024.07.01 |
Raspberry pi 3B+ OS setup (0) | 2024.07.01 |
Components (1) | 2024.07.01 |