1 분 소요

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

brave_4o3WW41Z9u

두번째 창: listener 역할

ros2 run demo_nodes_cpp listener

brave_BiuIX3HC07

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 설치를 마쳤다.

brave_60fYVqV8xX

vscode를 통한 원격접속 시도

[ctrl + shift + p]를 눌러 “show all command”

Dev Container: Attach to Running Container

를 눌러 실행하면, 현재 실행중인 도커 컨테이너가 뜬다. 내가 실행한 것은 “ros-humble”이라는 이름의 컨테이너이므로 이를 실행

brave_Ed2XP7VUZP


실습을 위한 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

아래와 같이 화면이 정상적으로 실행되는 것을 확인하였다.

brave_0wIPBcTSiz

참고한 링크: here

댓글남기기