2022. 1. 15. 14:14ㆍRobot
ROS란?
ROS는 Robot Operating System으로 로봇을 위해 만들어진 OS이지만 사실 OS라기보단 미들웨어 / 프레임워크에 가깝다. 그림 1은 ros와 ros2의 각 계층에 대하여 나타낸 그림이다.
ROS1과 2의 차이
ROS와 ROS2의 가장 큰 차이점으로 ROS2에는 DDS(Data Distribution Standard)가 있다. DDS는 일종의 호출 함수 인터페이스 역할을 하기 때문에 계층별 브리지 역할을 수행한다.
Docker에서 ROS 환경 구성
docker에서 ros 환경을 구성할 경우 해당 환경을 컨테이너 이미지로 만들어 엔드 디바이스로 배포하거나 협업을 위한 코드 작성이 용이하기 때문에 docker에서 환경을 구성한다. 그리고 그 이외에도 일반적으로 사용하는 환경이 windows 환경이고 개발을 위한 PC를 따로 두지 않지만 Linux나 Unix 환경이 필요할 경우 매우 간편하게 환경 구성이 가능하다.
C:\> docker search ros2
docker 명령어로 이미지를 찾거나 Docker Hub에서 해당 이미지를 찾을 수 있다. docker에서 이미지를 pull 할 경우 image:tag 로 구성된다. tag는 default로 latest로 설정돼 있다. latest tag를 가진 image를 제공하지 않을 경우 특정 tag를 붙여 설치해야 한다. ros2의 경우 osrf/ros2가 공식 image이고, 해당 image는 latest tag를 지원하지 않기 때문에 특정 tag를 붙여야 한다.
그림 2는 osrf/ros2 hub의 tag이다. 이중 nightly는 latest 버전이면서 동시에 알파버전에 가깝다. nightly 배포판은 보통 trunk와 branch로 구분되는대 trunk의 경우 업데이트 사항이 생길 경우 즉시 적용하고, branch의 경우 해당 realse 버전이 있을 경우 1.0.x와 같이 branch를 따로 두어 안정성을 보장하는 버전과 같이 관리하는 경우이다. ros2의 nightly는 trunk버전에 가깝다고 볼 수 있다.
C:\> docker pull osrf/ros2:nightly
image를 pull 했다면 docker run으로 container를 만들어줘야 한다.
C:\> docker run -it --name {container 이름} -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY osrf/ros2:nightly /bin/bash
-it: install 과 terminal(tty) 옵션이다. t 옵션이 빠질 경우 terminal(tty) 를 사용하지 못한다.
--name: 생성할 container의 임의의 이름을 지정해주는 옵션이다.
-v /tmp/.X11-unix:/tmp/.X11-unix: -v는 볼륨 지정 옵션이다. ros의 프레임워크는 기본적으로 GUI가 필요하기 때문에 x11을 사용하기 위해 넣는다. -v옵션은 Host:Container 순서를 가진다.
-e DISPLAY=$DISPLAY: X11의 디스플레이를 사용하기 위해 추가한 옵션이다. -e는 environment로 환경변수 설정이다.
root@:/# sudo vim /etc/ssh/sshd_config
Host *
# ForwardAgent no
ForwardX11 yes
ForwardX11Trusted yes
Container로 attach 되면 vi, vim 에디터를 통해 sshd_config의 설정을 X11이 가능하도록 변경해준다.
Windows 환경에서 linux의 x-windows를 사용하기 위해선 x-windows 서버를 연결해줘야 한다.
Xming: sourceforge.net/projects/xming/
Xming X Server for Windows
Download Xming X Server for Windows for free. X Window System Server for Windows. Xming is the leading X Window System Server for Microsoft Windows 8/7/Vista/XP (+ server 2012/2008/2003). It is fully featured, small and fast, simple to install and because
sourceforge.net
해당 프로그램을 설치하게 되면 그림 3과 같이 Xming server가 트레이 아이콘으로 작동 중인 상태이다.
root@:/# sudo apt-get install x11-apps
root@:/# xeyes
Container에서 x11 테스트하기 위한 x11-apps를 설치하고 xeyes를 실행시킨다.
※ X-windows 안될 경우 evandde.github.io/wsl2-x/
s2 run turtlesim turtlesim_node
root@:/# ros2 run turtlesim turtlesim_node
위의 명령어를 실행 시키면 그림 5처럼 X-windows 환경에서 ROS2 기본 예제로 제공되는 거북이를 만날 수 있다.
Reference
ROS: www.ros.org/
Exploring ROS: www.researchgate.net/figure/ROS1-ROS2-architecture-for-DDS-approach-to-ROS-We-clarify-the-performance-of-the-data_fig1_309128426
'Robot' 카테고리의 다른 글
[ROS Docker] Docker ROS2에서 turtlebot3 시작하기 - 2 (0) | 2022.01.15 |
---|