๐Ÿ’ป Language/ROS : ๋กœ๋ด‡์‹œ์Šคํ…œ

[ROS2+Gazebo] Docker Image๋กœ ROS2, Gazebo ๋นŒ๋“œํ•˜๊ธฐ

mxnxeonx 2022. 7. 27. 10:50
728x90
728x90

Dockerfile์„ ์ด์šฉํ•˜๋ฉด ๋‹ค์–‘ํ•œ ํŒจํ‚ค์ง€๊ฐ€ ํ•œ ๋ฒˆ์— ์„ค์น˜๋œ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‰ฝ๊ฒŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋ฏธ์ง€ ์ƒ์„ฑ์„ ์œ„ํ•ด ์•„๋ž˜ Github์˜ ๋„์ปค ํŒŒ์ผ์„ ์ด์šฉํ•  ๊ฒƒ์ด๋‹ค.

 

GitHub - ryomo/ros2-gazebo-docker: A ROS2 & Gazebo container with WSLg enabled

A ROS2 & Gazebo container with WSLg enabled. Contribute to ryomo/ros2-gazebo-docker development by creating an account on GitHub.

github.com

 

๋จผ์ € ๊นƒ์„ ํด๋ก ํ•˜๊ณ , ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•œ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

$ git clone https://github.com/ryomo/ros2-gazebo-docker.git
$ cd ros2-gazebo-docker/docker
$ docker build -t ros2-gazebo .

 

๊ทธ๋Ÿผ ์ด๋ฏธ์ง€๊ฐ€ ๋งŒ๋“ค์–ด์กŒ์„ ๊ฒƒ์ด๋‹ค. docker images ๋ช…๋ น์–ด๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋ฏธ์ง€๊ฐ€ ๋งŒ๋“ค์–ด์กŒ๋‹ค๋ฉด, ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค. ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ์€ ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ ์ง„ํ–‰ํ•ด์ฃผ์—ˆ๋‹ค.

$ docker run -it -e DISPLAY=unix$DISPLAY -e USER=$USER -e XDG_RUNTIME_DIR=/tmp -v /root/.Xauthority:/root/.Xauthority -v /tmp/.X11-unix:/temp/.X11 --privileged --gpus all --net=host --runtime=nvidia --name ros2-gazebo ros2-gazebo:latest

 

๋„์ปค๊ฐ€ ์‹คํ–‰๋  ๊ฒƒ์ด๋‹ค. ๋ฐฐํฌ ๊นƒ์—์„œ๋Š” docker-compose๋ฅผ ์‚ฌ์šฉํ•˜๋ผ๊ณ  ๋˜์–ด์žˆ๋Š”๋ฐ, ์ด ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š์•„ ๊ทธ๋ƒฅ docker๋ฅผ ์ด์šฉํ–ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋‹ˆ ํ•ด๋‹น ํ„ฐ๋ฏธ๋„์€ ์‚ฌ์šฉํ•  ์ˆ˜๊ฐ€ ์—†์–ด์„œ ์ƒˆ๋กœ์šด ํ„ฐ๋ฏธ๋„์—์„œ executeํ•ด์ฃผ์—ˆ๋‹ค.

$ docker exec -it ros2-gazebo /bin/bash
๋”๋ณด๊ธฐ

๋งŒ์•ฝ root ์œ ์ €๋กœ ์ ‘์†ํ•˜๋ ค๋ฉด, --user root ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค.

 

ํ„ฐ๋ฏธ๋„์— ์ •์ƒ์ ์œผ๋กœ ์ ‘์†๋˜์—ˆ๋‹ค. ์ด์ œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด ๋ณผ ์ฐจ๋ก€์ด๋‹ค.

 

๊ฐ„๋‹จํ•˜๊ฒŒ ํ„ฐํ‹€์‹ฌ์„ ๋จผ์ € ์‹คํ–‰ํ•ด๋ณธ๋‹ค.

$ ros2 run turtlesim turtlesim_node

 

์ž˜ ์‹คํ–‰์ด ๋˜๋Š” ๋ชจ์Šต์ด๋‹ค. Gazebo๊ฐ€ ์„ค์น˜๋˜์—ˆ๋Š”์ง€๋„ ํ™•์ธํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ์ผœ๋ณด๊ฒ ๋‹ค.

# 1๋ฒˆ ํ„ฐ๋ฏธ๋„
$ gazebo --verbose /opt/ros/galactic/share/gazebo_plugins/worlds/gazebo_ros_diff_drive_demo.world
# 2๋ฒˆ ํ„ฐ๋ฏธ๋„
$ ros2 topic pub /demo/cmd_demo geometry_msgs/Twist '{linear: {x: 1.0}, angular: {z: 1.0}}' -1

1๋ฒˆ ํ„ฐ๋ฏธ๋„์—์„œ ๊ฐ€์ œ๋ณด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ํ™˜๊ฒฝ์ด ์ถœ๋ ฅ๋œ๋‹ค.

์ด ์ƒํƒœ์—์„œ 2๋ฒˆ์งธ ํ„ฐ๋ฏธ๋„์„ ์—ด๊ณ  ros ํ† ํ”ฝ์„ ํผ๋ธ”๋ฆฌ์‹œํ•ด์ฃผ๋ฉด ๋ฐ๋ชจ ๋กœ๋ด‡์ด ๋น™๊ธ€๋น™๊ธ€ ๋ˆ๋‹ค.

728x90
320x100