코딩일지(2024-07-01)
ROS공부를 다시 시작하다!(3)
어제 일본에 도착했다. 다시 작업을 진행하려고 한다. 일단 ROS2 험블에서 터틀봇을 도커에서 돌리는 것을 시도하려고 한다.
컨테이너 실행
# 도커 컨테이너 새로 실행
docker run --name ros_container -it --privileged --env="DISPLAY=:0" \
-v ~/playground/turtlebot-workspace:/root/turtlebot-workspace \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-w /root/turtlebot-workspace \
osrf/ros:humble-desktop-full
# 아래 문구를 .bashrc파일에 넣어주기
echo "source /opt/ros/humble/setup.bash" >> /root/.bashrc
이름을 잘못지어서 다시 이름을 변경
# 1.도커 컨테이너 중지하기
jacksmith@jacksmith-desktop:~/playground/turtlebot-workspace$ docker stop ros_container
# 2.도커 컨테이너 개명하기
jacksmith@jacksmith-desktop:~/playground/turtlebot-workspace$ docker rename ros_container ros_humble
# 3.(종료되었던)도커 컨테이너 시작하기
jacksmith@jacksmith-desktop:~/playground/turtlebot-workspace$ docker start ros-humble
# 4.(종료되었던)도커 컨테이너 내부로 접근하기
jacksmith@jacksmith-desktop:~/playground/turtlebot-workspace$ docker exec -it ros-humble /bin/bash
새창 하나 열고, 도커 컨테이너 내부로 접근
docker exec -it ros-humble /bin/bash
첫번째 창: talker역할
ros2 run demo_nodes_cpp talker
두번째 창: listener 역할
ros2 run demo_nodes_cpp listener
rviz2 실행
host 운영체제에서 x11 서버 유틸리티 설치
창을 새로 하나 열고, 아래 실행
jacksmith@jacksmith-desktop:~/playground/turtlebot-workspace$ sudo apt-get update
jacksmith@jacksmith-desktop:~/playground/turtlebot-workspace$ sudo apt-get install x11-utils
jacksmith@jacksmith-desktop:~/playground/turtlebot-workspace$ xhost +local:root
다시 컨테이너 내부로 접근
docker exec -it ros-humble /bin/bash
#이후 rviz2 유틸리티 실행
rviz2
결과>
현재 아래와 같이 연구실 컴퓨터의 리눅스 위에 ros2 humble 설치를 마쳤다.
vscode를 통한 원격접속 시도
[ctrl + shift + p]를 눌러 “show all command”
Dev Container: Attach to Running Container
를 눌러 실행하면, 현재 실행중인 도커 컨테이너가 뜬다. 내가 실행한 것은 “ros-humble”이라는 이름의 컨테이너이므로 이를 실행
실습을 위한 Gazebo 환경과 사용법을 알아보았다
ROS는 이전 시간에도 알아보았듯이 catkin이라는 빌드시스템을 이용한다. 기존 c/c++ 크로스 플랫폼 개발을 해보았기에 cmake에 대해서 조금 익숙한데 이번에 다룰 Gazebo도 이와 비슷한 구조를 갖고 있는 것 같다.
먼저, 파일 구조 관점에서 ROS Application은 여러 패키지들로 이루어진다. 이들 패키지가 소스파일을 담고 있고, catkin이 이들을 빌드하여 실행 프로그램을 만들게 된다.
일단 아래 ROS 명령을 통해 패키지를 생성하였다.
# 업데이트 및 보조툴 설치
root@e66462a78099:~/turtlebot-workspace# apt update
root@e66462a78099:~/turtlebot-workspace# apt upgrade
root@e66462a78099:~/turtlebot-workspace# apt install -y git python3-pip
# 로스 험블 전용 패키지 설치
root@e66462a78099:~/turtlebot-workspace# apt install -y python3-colcon-common-extensions \
ros-humble-joint-state-publisher-gui \
ros-humble-gazebo-plugins \
ros-humble-joint-state-publisher \
ros-humble-gazebo-ros
최종적으로 아래 명령을 통해 gazebo명령을 실행할 수 있다. (위에서 로스 험블 전용 패키지를 설치하지 않으면, “gazebo”라고 입력해도 명령어를 Not Found한다는 오류가 뜬다.)
root@e66462a78099:~/turtlebot-workspace# gazebo
아래와 같이 화면이 정상적으로 실행되는 것을 확인하였다.
참고한 링크: here
댓글남기기