일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- nav2 설치
- ros2 환경설정
- humble 환경설정
- foxy nav2
- first-time robot setup guide
- ros2 configuring environment
- ros2 development guides
- ROS FOXY 튜토리얼
- nav2 getting started
- nav2 튜토리얼
- ros2 foxy tutorial
- humble development guides
- nav2 development guides
- Nav2 document
- nav2 tutorial
- ros2 튜토리얼
- development guides
- CODEUP 6073
- ros2 튜토리얼 환경설정
- docker foxy
- nav2 dev contatiner
- CodeUp
- 코드업
- nav2 development guides
- ros2 foxy docker
- Foxy tutorial
- Python
- ros2 remapping
- nav2 first-time robot setup guide
- error
- Today
- Total
BAN2ARU
[Rasp/Lidar] 라즈베리파이에서 도커환경에서 ROS2를 통해 라이다 실행하기 본문
라즈베리파이4에 도커 설치 및 ROS2 설치 관련해서는 위의 포스팅을 활용해주시기 바랍니다~ 그리고 굳이 docker 환경이 아닌 local 환경에서도 활용가능하며 local 환경인 경우에는 github부분부터 따라해주시면 됩니다~
활용한 라이다 기종은 cyglidar d1이며, 라즈베리파이보드에 usb를 활용하여 연결시켜주었습니다.
이전에 만들어둔 도커컨테이너 실행하기
우선 도커 리스트를 확인해봅니다.
docker ps -a
현재 저의 docker는 다음과 같은 리스트가 있습니다. 그 중에서 GUI8 설정을 해두었던 ros_gui를 활용하여 진행해보고자 합니다. 우선 라즈베리파이에 DISPLAY 설정을 해둡니다.
export DISPLAY=:0.0
xhost +local:docker
이후에 컨테이너를 시작한 후에 실행합니다.
docker start [컨테이너ID 또는 이름]
docker attach [컨테이너ID 또는 이름]
# 실행 예시
docker start ros_gui
docker attach ros_gui
공식 Github 차례대로 진행해주기
cyglidar d1 기종의 경우에는 공식 github 페이지에서 원활하게 기기를 돌릴 수 있도록 공유하고 있습니다. 공식 github 페이지를 참조하여 차례대로 진행해주시면 됩니다.
경로 생성
mkdir의 -p 옵션은 존재하지 않는 중간의 디렉토리 또한 자동으로 생성해주는 옵션입니다.
mkdir -p ~/cyglidar_ws/src/
경로 접속하여 git clone 수행 후에 build 하기
cd ~/cyglidar_ws/src/
git clone -b ROS2-v0.3.0 https://github.com/CygLiDAR-ROS/cyglidar_d1.git
cd ..
colcon build
Udev 설치
cd ~/cyglidar_ws/src/cyglidar_d1/scripts
chmod +x create_udev_rules.sh
./create_udev_rules.sh
local_setup.sh 실행 (임시이므로 새롭게 터미널열면 다시 해줘야 됨)
cd ~/cyglidar_ws
. install/local_setup.bash
Cyglidar 실행
ros2 launch cyglidar_d1_ros2 cyglidar.launch.py
다른 터미널(라즈베리파이 터미널로 접속도 됨)로 접속하여 다음과 같이 작성해주면
docker exec ros_cyglidar /bin/bash -c ". /opt/ros/foxy/setup.bash && ~/cyglidar_ws && . install/local_setup.bash && ros2 launch cyglidar_d1_ros2 view_cyglidar.launch.py"
성공!! 사람모습으로 보이나요?
오류 1. An exception was thrown [open: No such file or directory]
위와 같은 오류는 현재 docker에서 host 상의 dev 정보를 공유하지 않아서이다. 이를 해결하기 위해서는 기존의 docker를 commit하고 옵션을 추가하여 run을 해주면 된다. (혹시 docker 컨테이너에 옵션 추가하여 실행하는 더 간편한 방법이 있으면 알려주시면 감사하겠습니다!)
이후에 local_setup.sh부터 다시 실행시키면 된다!
docker commit [컨테이너명 or 이미지이름] [새로운 이미지이름]
docker run --name [컨테이너 이름] -it -v /dev:/dev -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY [이미지명] /bin/bash
# 예시
docker commit ros_gui ros_cyglidar
docker run --name ros_cyglidar -it -v /dev:/dev -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY ros_cyglidar /bin/bash
오류 2. An exception was thrown [open: Operation not permitted]
위와 같은 오류는 docker에 권하이 없어서 생긴 문제로 보인다. 옵션에 -privileged를 추가해주며, 또한 github 내용을 참조하여 /dev/ttyUSB0에도 권한을 부여해준다.
sudo chmod 777 /dev/ttyUSB0
docker commit [컨테이너명 or 이미지이름] [새로운 이미지이름]
docker run --name [컨테이너명] -it --privileged -v /dev:/dev -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY [이미지명] /bin/bash
# 예시
sudo chmod 777 /dev/ttyUSB0
docker commit ros_cyglidar ros_cyglidar
docker stop ros_cyglidar
docker rm ros_cyglidar
docker run --name ros_cyglidar -it --privileged -v /dev:/dev -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY ros_cyglidar /bin/bash
이후에 local_setup.sh부터 다시 실행시키면 된다.
라즈베리파이를 활용하여 라이다를 실행하는 것까지 진행해보았다. 공부한 내용을 정리하다보니 중간중간 오류부분을 애초에 처음부터 옵션에 넣어서 정리하면 어떨까라는 생각이 들어서 시간이 된다면 전체적으로 정리하여 포스팅할 수 있도록 해야겠다.
해당 내용의 경우는 개인 공부를 정리한 것으로 틀린 부분이 있을 수도 있습니다! 해당 부분에 대한 지적이나 의문은 언제나 환영입니다^^*
'Linux > Raspberry pi' 카테고리의 다른 글
[Rasp/ROS2] 라즈베리파이4 OS에 도커를 활용하여 ROS2 실행 - turtlesim_node (0) | 2023.05.15 |
---|---|
[Rasp/ROS2] 라즈베리파이4 OS에 도커를 활용하여 ROS2 설치 (0) | 2023.05.15 |
[Rasp/Docker] 라즈베리파이4에 도커 설치하기 (1) | 2023.05.15 |