๐Ÿค– ROS Docker ๊ฐœ๋ฐœํ™˜๊ฒฝ

energyunยท2022๋…„ 6์›” 26์ผ

ros

๋ชฉ๋ก ๋ณด๊ธฐ
1/1

๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์„ฑ

ROS/ROS2๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ kernel์„ ๋”ฐ๋กœ ๋‘” OS๊ฐ€ ์•„๋‹Œ ๋กœ๋ด‡์— ๋‹ค์–‘ํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋นŒ๋“œ, ์‹คํ–‰, ๋ฐฐํฌ ๊ด€๋ฆฌ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•œ ํ•˜๋‚˜์˜ middleware์ด๋‹ค. ROS๋Š” CMake ๊ธฐ๋ฐ˜ ๊ฐ•๋ ฅํ•œ ๋นŒ๋“œ์‹œ์Šคํ…œ์„ ์ด์šฉํ•˜์—ฌ ๋กœ๋ด‡ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์„ ๋„์™€์ค€๋‹ค.

ROS๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์„ ์ง€์›ํ•œ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ unix, linux ๊ณ„์—ด์˜ OS์™€ windows ๊นŒ์ง€ ์ง€์›๋˜๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์„ค์น˜๋Š” ros wiki์— ์ž์„ธํžˆ ์žˆ์–ด ๋”ฐ๋ผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‹ค๋งŒ ํ•ด๋‹น installation์— ์—†๊ฑฐ๋‚˜ host pc์— ์—ฌ๋Ÿฌ ์ข…์†์„ฑ์„ ์„ค์น˜ํ•˜๊ธฐ ์‹ซ๋‹ค๋ฉด ๊ฐ€์ƒํ™”๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

ROS on Docker

docker ์„ค์น˜๋Š” https://www.docker.com/products/docker-desktop ํ†ตํ•ด ๋‚ด๋ ค๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

Docker Ros Image

docker pull ros:$ROS_DISTRO

ROS_DISTO์— ํ•ด๋‹นํ•˜๋Š” ๋ฒ„์ „์„ ์ ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

docker pull ros:noetic   # ros 1 noetic image
docker pull ros:galactic # ros 2 galactic image

Run Docker image

ROS 1 roscore daemon ์‹คํ–‰

docker run -d \
	-e ROS_MASTER_URI=http://${ip}:11311 \
 	ros:noetic \
    roscore

ROS terminal ์ ‘์†

docker run \
	-e ROS_MASTER_URI=http://${ip}:11311 \
    -v $(pwd):/ros_ws \
    --workdir=/ros_ws \
	-it ros:noetic bash

# docker ์ ‘์† ์™„๋ฃŒ
$root@21eqwee13f:/ros_ws#

workspace init, build test

# workspace init
$ mkdir src && cd src
$ catkin_init_workspace

# create pkg
$ catkin_create_pkg

# build
$ cd .. # move top level directory
$ catkin_make

ROS Terminal ์ ‘์†๊ณผ ๊ฐ™์ด docker ํ™˜๊ฒฝ์—์„œ ros ์†Œ์Šค์ฝ”๋“œ ๊ฐœ๋ฐœ ๋นŒ๋“œ, ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€