ROS2 기초 [1] - Docker 환경에서 ROS2 Turtlesim 실행
01. XQuartz(X11) 설치 및 설정 (Intel MacOS 기준)
- 해당 포스트는 실제 로봇이 아닌 Tutlesim 시뮬레이터를 이용해 실제 로봇을 제어하는 것처럼 GUI를 통해 로봇을 제어
- X11을 이용하여 Docker 환경에서 동작하는 GUI를 Local PC에서 확인
# xquartz 설치
brew install --cask xquartz
open -a XQuartz
또는 런치패드에서 직접 실행
설치한 xquartz를 실행후 설정의 보안 탭에서 “연결 인증”과 “네트워크 클라이언트에서의 연결을 허용” 모두 체크
X11 재실행 또는 PC 재부팅(재실행 후 적용이 안 되면 PC재부팅 하는걸로!)
터미널에 xhost +localhost
명령어를 입력해 localhost에서의 접속을 허용
02. docker container 생성
docker run -itd -e "DISPLAY=host.docker.internal:0" --name ros2 osrf/ros:foxy-desktop
이후 모든 터미널 명령어는 docker container 내부에서 실행
03. source setup.bash 자동화
터미널을 실행할 때마다 source /opt/ros/foxy/setup.bash
명령어를 입력해야 ROS2 명령어를 실행시킬 수 있음. 매번 입력하기 번거로우니, 해당 명령어를 .bashrc 에 추가하여 사용자가 새 쉘을 열 때마다 실행되게 함
3-1. 방법 1 - 직접 파일 수정
docker exec -it ros2 /bin/bash
apt-get update
apt-get install vim
vim ~/.bashrc
## .bashrc 파일에 밑의 명령어 작성후 저장
source /opt/ros/foxy/setup.bash
3-2. 방법 2 - 코드를 통해 파일 수정
docker exec -it ros2 /bin/bash
echo "source /opt/ros/foxy/setup.bash">>~/.bashrc
04. 작동 확인(선택사항)
Publisher와 Subscriber가 제대로 데이터를 주고 받는지 확인
터미널 두 개를 열고, 하나는 ros2 run demo_nodes_cpp talker
, 다른 하나는 ros2 run demo_nodes_py listener
를 입력해 메시지 발행과 구독이 정상적으로 이루어지고 있는 지 확인
05. turtlesim 설치 및 제어
- turtlesim이란 ROS 및 ROS 패키지를 교육하기 위해 만들어진 툴로, 실제 로봇이 없더라도 2D 시뮬레이션을 통해 로봇의 동작을 확인할 수 있음
#tutlesim 설치
apt-get install ros-foxy-turtlesim
## 실행
ros2 run turtlesim turtlesim_node
## 거북이 로봇을 제어하기위한 노드 실행
ros2 run turtlesim turtle_teleop_key
ros2 run turtlesim turtle_teleop_key
를 실행한 터미널에서 방향키를 이용해 로봇 제어 가능