# src로 이동
cd /worpsace
mkdir -p src
cd src
# 레포지토리 받아오기
git clone -b humble https://github.com/ros/ros_tutorials.git
레포지토리
]가 src 디렉토리에 복제된다.📦ros_tutorials
┣ 📂ros_tutorials
┣ 📂roscpp_tutorials
┃ ┣ 📂add_two_ints_client
┃ ┣ 📂add_two_ints_server
┃ ┣ 📂add_two_ints_server_class
┃ ┣ 📂anonymous_listener
┃ ┣ 📂babbler
┃ ┣ 📂cached_parameters
┃ ┣ 📂custom_callback_processing
┃ ┣ 📂launch
┃ ┣ 📂listener
┃ ┣ 📂listener_async_spin
┃ ┣ 📂listener_class
┃ ┣ 📂listener_multiple
┃ ┣ 📂listener_single_message
┃ ┣ 📂listener_threaded_spin
┃ ┣ 📂listener_unreliable
┃ ┣ 📂listener_with_tracked_object
┃ ┣ 📂listener_with_userdata
┃ ┣ 📂node_handle_namespaces
┃ ┣ 📂notify_connect
┃ ┣ 📂parameters
┃ ┣ 📂srv
┃ ┣ 📂talker
┃ ┣ 📂time_api
┃ ┣ 📂timers
┣ 📂rospy_tutorials
┃ ┣ 📂001_talker_listener
┃ ┣ 📂002_headers
┃ ┣ 📂003_listener_with_user_data
┃ ┣ 📂004_listener_subscribe_notify
┃ ┣ 📂005_add_two_ints
┃ ┣ 📂006_parameters
┃ ┣ 📂007_connection_header
┃ ┣ 📂008_on_shutdown
┃ ┣ 📂009_advanced_publish
┃ ┣ 📂msg
┃ ┣ 📂srv
┃ ┣ 📂test
┗ 📂turtlesim
┃ ┣ 📂action
┃ ┣ 📂images
┃ ┣ 📂include
┃ ┣ 📂launch
┃ ┣ 📂msg
┃ ┣ 📂src
┃ ┣ 📂srv
┃ ┣ 📂tutorials
# 빌드 도구 설치
sudo apt-get update
sudo apt-get install -y python3-colcon-common-extensions
# 패키지 빌드
cd /workspace
colcon build --symlink-install --packages-select turtlesim
cf. 명령어를 살펴보자면,
colcon build
: 패키지를 빌드하는 명령어--symlink-install
: 패키지를 심볼릭 링크로 설치하여 소스 코드 수정시 바로 반영하도록 함--packages-select turtlesim
: turtlesim만 빌드(전체빌드는 아니다)# 환경설정 업데이트
source /workspace/install/setup.bash
# 실행
ros2 run turtlesim turtlesim_node
위 명령어를 실행하면 gui창에 거북이가 나타날 것이다.
결과:
cf.만약 아래와 같은 오류가 발생한다면?
→이는 컨테이너OS로부터 로컬OS쪽으로 gui데이터를 받아오지 못하는 건데, 이를 해결하기 위해 터미널을 하나 더 열고 X11 Forwarding을 활성화한다.
(호스트의 X서버가 컨테이너와 통신할 수 있도록 허용하기 위함)
admin@admin-desktop:~$ xhost +local:docker
cf.status 확인하기
위에서 두개의 터미널을 켠 상태에서 추가적으로 하나의 터미널을 더 열어서, 컨테이너에 접속후 아래 명령어를 쳐보자.
rqt_graph
하지만, 위 그림을 보아도 이해하기가 어려우면, 항목별로 정리해서 리스트를 뽑아볼수도 있다.
ros2 node list
ros2 topic list
ros2 service list
ros2 action list
결과
ros2 node list는 현재 실행 중인 node 목록을 보여준다.
ros2 topic list는 현재 실행 중인 topic 목록을 보여준다.
ros2 service list는 현재 실행 중인 service 목록을 보여준다.
ros2 action list는 현재 실행 중인 action 목록을 보여준다.
위 단서를 취합해보면 아래와 같이 설명할 수 있다.
아직까지는 node가 뭔지, 토픽, 서비스, 액션이 모를 수 있다. 현재로서는 그냥 그런게 있나보다 하고 넘어가도 좋다.
이번에는 rqt를 설치하고 실행해보겠다.
# 업데이트 및 설치
sudo apt update
sudo apt install ~nros-humble-rqt*
# 새로운 터미널에서 rqt명령어 실행
rqt
이제 상단의 Plugins 탭에 들어가서,
Services > Service Caller 순으로 클릭한다.
이제 좌측 상단에 있는 파란색 새로고침 버튼을 눌러준다.