ROS์ ROS 2
- ROS 2 Foxy๋ ๋ ์ด์ ํ ์คํธ๋๊ฑฐ๋ ์ง์๋์ง ์๋๋ค. ์ด๋ก ์ธํด ROS 2 Foxy๋ฅผ Isaac Sim 4.2 ์ด์๊ณผ ํจ๊ป ์ฌ์ฉํ ๊ฒฝ์ฐ ์ ์ฌ์ ์ธ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
- Omniverse Isaac Sim์์ ์์ฑ๋ ํฉ์ฑ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๊ณ ์กฐ์ํ๊ณ ์ด๋ฅผ ROS ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒ์ํ๋ ๊ณผ์
- Isaac Sim์์ ROS/ROS2 Bridge๋ฅผ ํ์ฑํํ๊ณ ์คํํ๋ ์ํฌํ๋ก๊ฐ ์ต์ Isaac Sim ๋ฆด๋ฆฌ์ค์์ ๋ณ๊ฒฝ๋์๋ค.
⇒ ๋๋ Ubuntu 22.04 ๋ฅผ ์ฌ์ฉ์ค์ด๋ฏ๋ก ROS 2์ Humble ๋ฅผ ์ค์นํ ๊ฒ์ด๋ค.
๐กIsaac Sim ROS Bridge๋?
- Isaac Sim๊ณผ ROS (Robot Operating System) ์์คํ ๊ฐ์ ์ฐ๊ฒฐ์ ์ ๊ณต
- ์ด ๋ธ๋ฆฌ์ง๋ Isaac Sim์ ์๋ฎฌ๋ ์ด์ ํ๊ฒฝ๊ณผ ROS ๊ฐ์ ๋ฉ์์ง ๊ตํ์ ๊ฐ๋ฅํ๊ฒ ํด์ค๋ค.
⇒ ์ฆ, Isaac Sim ๋ด์์ ๋ฐ์ํ๋ ๋ก๋ด์ ์ํ๋ ์ผ์ ๋ฐ์ดํฐ๋ฅผ ROS ํ๊ฒฝ์ผ๋ก ์ ์กํ๊ณ , ROS์์ ์ ์ด ๋ช ๋ น์ Isaac Sim์ผ๋ก ์ ๋ฌํ๋ ์ญํ
- ROS 2 Humble: ROS 2์ ์ต์ LTS ๋ฒ์ . ROS 2์ ๊ธฐ๋ฅ๊ณผ ์ฑ๋ฅ ๊ฐ์ ๋ ๋ฒ์ ์ผ๋ก, ํนํ ์ค์๊ฐ ์ฒ๋ฆฌ์ ๋ณด์ ๊ธฐ๋ฅ์ด ๊ฐ์กฐ
- ROS Noetic: ROS 1์ ๋ง์ง๋ง LTS ๋ฒ์ ์ผ๋ก, ROS 1 ํ๊ฒฝ์์ ๋ก๋ด ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ ๋ ์ฌ์ฉ
1. ๋ค์ดํฐ๋ธ ROS ์คํ
ํ๊ฒฝ
- Ubuntu 22.04
- Isaac Sim์ Python3.10๊ณผ ํจ๊ป ์ ๊ณต
- env ROS_DISTRO๋ณ์๋ ROS 2๊ฐ ์์ค์ธ์ง์ ์ด๋ค ๋ฐฐํฌํ์ ์ฌ์ฉํ ์ง ๊ฒฐ์ ํ๋ ๋ฐ ์ฌ์ฉ
- ์ด ๋ณ์๊ฐ ์ค์ ๋์ง ์์ ๊ฒฝ์ฐ ๋ด๋ถ ROS 2 ๋ฐฐํฌํ ๋น๋๊ฐ ์ฌ์ฉ
- ์ ์ ํ ROS 2 ๋ฐฑ์๋๋ ์์ค๋ ROS ๋ฐฐํฌํ์ ๋ฐ๋ผ ๋์ ์ผ๋ก ๋ก๋
โ ๏ธIsaac Sim ์คํ ์ ์ ROS 2 ํ๊ฒฝ์ ์์ฑ
Isaac Sim๊ณผ ROS 2๋ฅผ ์ฐ๋ํ์ฌ ์ฌ์ฉํ ๋, ROS 2 ํ๊ฒฝ์ ๋จผ์ ์ค์ ํ๊ณ ๋์ Isaac Sim์ ์คํํด์ผ ํ๋ค.
์์ฑ์ ROS 2 ์ค์น ๊ฒฝ๋ก์ ์๋ ์ค์ ํ์ผ์ ์คํํ์ฌ, ROS 2 ๊ด๋ จ ํ๊ฒฝ ๋ณ์๋ค์ ์์คํ ์ ์ค์ ํ๋ ๊ณผ์ ์ ๋งํ๋ค.
๋ง์ฝ ๋งค๋ฒ source ๋ช ๋ น์ด๋ฅผ ์คํํ๋ ๊ฒ์ด ๋ฒ๊ฑฐ๋กญ๋ค๋ฉด, ROS 2๋ฅผ ํ์ฑํํ๋ ๋ช ๋ น์ด๋ฅผ ~/.bashrc ํ์ผ์ ์ถ๊ฐํ ์ ์๋ค. ~/.bashrc๋ ํฐ๋ฏธ๋์ ์ด ๋๋ง๋ค ์๋์ผ๋ก ์คํ๋๋ ์ค์ ํ์ผ์ด๋ค.
- ๊ณต์ ์น์ฌ์ดํธ์ ์ง์นจ์ ๋ฐ๋ผ ROS 2๋ฅผ ๋ค์ด๋ก๋
- (์ ํ ์ฌํญ) ROS 2 Bridge์ ์ผ๋ถ ๋ฉ์์ง ์ ํ(๋ฐ์ด๋ฉ ๋ฐ์ค ๊ฒ์์ ์ฌ์ฉ๋๋ Detection2DArray ๋ฐ Detection3DArray)์ vision_msgs_package ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ค . ์๋ ๋ช
๋ น์ ์คํํ์ฌ ์์คํ
์ ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค. vision_msgs ๊ฒ์์๋ฅผ ์คํํ ํ์๊ฐ ์์ผ๋ฉด ์ด ๋จ๊ณ๋ฅผ ๊ฑด๋๋ธ ์ ์๋ค.
- sudo apt install ros-humble-vision-msgs
- (์ ํ ์ฌํญ) ROS 2 Bridge์ ์ผ๋ถ ๋ฉ์์ง ์ ํ(AckermannDriveStamped๋ Ackermann ์คํฐ์ด๋ง ๋ช
๋ น์ ๋ํ ๊ฒ์ ๋ฐ ๊ตฌ๋
์ ์ฌ์ฉ๋จ)์ ackermann_msgs_package ์ ๋ฐ๋ผ ๋ฌ๋ผ ์ง๋ค. ์๋ ๋ช
๋ น์ ์คํํ์ฌ ์์คํ
์ ํจํค์ง๋ฅผ ์ค์น. ackermann_msgs publishers/subscribers๋ฅผ ์คํํ ํ์๊ฐ ์์ผ๋ฉด ์ด ๋จ๊ณ๋ฅผ ๊ฑด๋๋ธ ์ ์๋ค.
- sudo apt install ros-humble-ackermann-msgs
- ROS ํ๊ฒฝ์ด ํฐ๋ฏธ๋์ด๋ ~/.bashrcํ์ผ์์ ์์ฑ๋์๋์ง ํ์ธ. ์ด ๋จ๊ณ๋ ๋งค๋ฒ ์ํํด์ผ ํ๋ฉฐ ROS ๋ช
๋ น์ ์ฌ์ฉํ๊ฑฐ๋ Isaac Sim์ ์คํํ๊ธฐ ์ ์ ์ํ.
- source /opt/ros/humble/setup.bash
1-1. ๊ณต์ ์น์ฌ์ดํธ์ ์ง์นจ์ ๋ฐ๋ผ ROS 2๋ฅผ ๋ค์ด๋ก๋
https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debs.html
๋ก์ผ์ผ ์ค์
UTF-8 ๋ฌธ์ ์ธ์ฝ๋ฉ์ ์ฌ์ฉํ๋๋ก ๋ก์ผ์ผ(locale)์ ์ค์ ํ๋ค.
locale # check for UTF-8
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
locale # verify settings
[๊ฒฐ๊ณผ]
Setup Sources
์์คํ ์ ROS 2 apt ์ ์ฅ์๋ฅผ ์ถ๊ฐํด์ผํ๋ค.
ROS 2๋ฅผ ์ค์นํ๋ ค๋ฉด Ubuntu Universe ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ํ์ฑํ๋์ด ์์ด์ผํ๋ค.
โUbuntu Universe ๋ฆฌํฌ์งํ ๋ฆฌ๋?
Ubuntu์์ ์ ๊ณตํ๋ ๋ค์ํ ์ํํธ์จ์ด ํจํค์ง๋ฅผ ํฌํจํ๋ ๋ฆฌํฌ์งํ ๋ฆฌ ์ค ํ๋์ด๋ค. Universe ๋ฆฌํฌ์งํ ๋ฆฌ๋ ์ปค๋ฎค๋ํฐ์์ ๊ด๋ฆฌํ๋ ์ํํธ์จ์ด ํจํค์ง๋ฅผ ํฌํจํ๋ฉฐ, ROS (Robot Operating System), ffmpeg, VLC, GIMP ๋ฑ๊ณผ ๊ฐ์ ๋ง์ ์คํ ์์ค ์ํํธ์จ์ด๊ฐ ์ด ๋ฆฌํฌ์งํ ๋ฆฌ์ ํฌํจ๋๋ค.
sudo apt install software-properties-common # add-apt-repository ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ๋๊ตฌ
sudo add-apt-repository universe # Universe ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ถ๊ฐ
ROS 2 ํจํค์ง์ GPG ํค๋ฅผ ์ค์นํ์ฌ ROS ํจํค์ง๊ฐ ์ ๋ขฐํ ์ ์๋ ํจํค์ง์์ ํ์ธํ๋ค. GPG ํค๋ ํจํค์ง์ ์ง์๋ฅผ ํ์ธํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
sudo apt update && sudo apt install curl -y
# ROS์ GPG ํค๋ฅผ ๋ค์ด๋ก๋ -> ๋ค์ด๋ก๋ํ ํค๋ฅผ ์ง์ ๋ ์์น์ ์ ์ฅ
sudo curl -sSL <https://raw.githubusercontent.com/ros/rosdistro/master/ros.key> -o /usr/share/keyrings/ros-archive-keyring.gpg
ROS 2์ apt ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์์คํ ์ ํจํค์ง ์์ค ๋ชฉ๋ก์ ์ถ๊ฐํ๋ค.
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] <http://packages.ros.org/ros2/ubuntu> $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
์ด๋ ๊ฒ ํ๋ฉด apt ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ROS 2 ํจํค์ง๋ฅผ ์ค์นํ ์ ์๋ค.
์ ์ฅ์๋ฅผ ์ค์ ํ ํ apt ์ ์ฅ์ ์บ์๋ฅผ ์ ๋ฐ์ดํธํ๋ค.
sudo apt update
ROS 2๋ฅผ ์ค์นํ๊ธฐ ์ ์ ์์คํ ์ด ์ต์ ์ํ์ธ์ง ํ์ธํ๋ค. apt upgrade ๋ช ๋ น์ด๋ก ์์คํ ์ ๋ชจ๋ ํจํค์ง๋ฅผ ์ต์ ๋ฒ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๋ค.
sudo apt upgrade
โ ๏ธ์ฃผ์
Ubuntu 22.04์ ์ด๊ธฐ ์ ๋ฐ์ดํธ๋ก ์ธํด ROS 2๋ฅผ ์ค์นํ๊ธฐ ์ ์ ๋ฐ ๊ด๋ จ ํจํค์ง๋ฅผ ์ ๋ฐ์ดํธํ๋ ๊ฒ์ด ์ค์ํ๋ค. udev์ ๊ทธ๋ ์ด๋ํ์ง ์๊ณ ์๋ก ์ค์นํ ์์คํ ์ ROS 2 ์ข ์์ฑ์ ์ค์นํ๋ฉด ์ค์ํ ์์คํ ํจํค์ง๊ฐ ์ ๊ฑฐ ๋ ์ ์๋ค .
๊ทธ๋ฆฌ๊ณ ๋ค์ ์ธ๊ฐ์ง ํจํค์ง๋ฅผ ์ค์นํ๋ค.
1. ๋ฐ์คํฌํฑ ์ค์น(๊ถ์ฅ): ROS, RViz, ๋ฐ๋ชจ, ํํ ๋ฆฌ์ผ.
```
sudo apt install ros-humble-desktop
```
2. ROS-Base ์ค์น(Bare Bones): ํต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๋ฉ์์ง ํจํค์ง, ๋ช ๋ น์ค ๋๊ตฌ. GUI ๋๊ตฌ ์์.
```
sudo apt install ros-humble-ros-base
```
3. ROS ํจํค์ง๋ฅผ ๋น๋ํ๊ธฐ ์ํ ์ปดํ์ผ๋ฌ ๋ฐ ๊ธฐํ ๋๊ตฌ
```
sudo apt install ros-dev-tools
```
Environment setup
ROS 2๋ฅผ ์ค์นํ๊ณ ๋๋ฉด, ROS 2 ํ๊ฒฝ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ํ๊ธฐ ์ํด ํ๊ฒฝ ์ค์ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํด์ผํ๋ค. ์ด ๊ณผ์ ์ ํตํด ROS 2 ๊ด๋ จ ๋ช ๋ น์ด ๋ฐ ๋๊ตฌ๋ค์ ์ฌ์ฉํ ์ ์๊ฒ๋๋ค.
1.1. ROS 2 ํ๊ฒฝ ์ค์ ์คํฌ๋ฆฝํธ ์์ฑ ์ด๋ฅผ ์ํด ์๋ ๋ช ๋ น์ด๋ฅผ ํฐ๋ฏธ๋์ ์ ๋ ฅํ์ฌ ํ๊ฒฝ ์ค์ ํ์ผ์ ์์ฑํ๋ค.
source /opt/ros/humble/setup.bash
source ๋ช ๋ น์ด๋ ์ ธ ์คํฌ๋ฆฝํธ๋ ํ์ผ์ ํ์ฌ ์ ธ ํ๊ฒฝ์์ ์คํํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. ์ด๋ฅผ ํตํด ํด๋น ์คํฌ๋ฆฝํธ๊ฐ ์ค์ ํ๋ ํ๊ฒฝ ๋ณ์๋ ์ค์ ์ ํ์ฌ ์ ธ ์ธ์ ์ ์ ์ฉํ ์ ์๋ค. ์ด๋ ์๋ก์ด ํ๋ก์ธ์ค๋ฅผ ์์ฑํ์ง ์๊ณ , ํ์ฌ ์ ธ์์ ๋ฐ๋ก ์คํ๋๊ธฐ ๋๋ฌธ์ ํด๋น ์ ธ ํ๊ฒฝ์ ์ฆ์ ์ํฅ์ ๋ฏธ์น๋ค.
1.2. ์๋ํ ๋ฐฉ๋ฒ: .bashrc์ ์ถ๊ฐ ๋งค๋ฒ ํฐ๋ฏธ๋์ ์ด ๋๋ง๋ค source /opt/ros/humble/setup.bash ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ ๋์ , ~/.bashrc ํ์ผ์ ํด๋น ๋ช ๋ น์ด๋ฅผ ์ถ๊ฐํ์ฌ ์๋์ผ๋ก ์คํ๋๊ฒ ํ ์ ์๋ค.
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
์์ ์คํ (Talker-Listener) ํ ์คํธ
talker๋ ๋ฉ์์ง๋ฅผ ๋ฐํ(publish) ํ๊ณ , listener๋ ๊ทธ ๋ฉ์์ง๋ฅผ ์์ (subscribe) ํ๋ ํ๋ก๊ทธ๋จ์ด๋ค.
- C++๋ก Talker ์คํ
ros2 run demo_nodes_cpp talker
2. Python์ผ๋ก Listener ์คํ
ros2 run demo_nodes_py listener
[๊ฒฐ๊ณผ]
talker์์๋ ๋ฉ์์ง๋ฅผ ๋ฐํํ๋ ๋ก๊ทธ๊ฐ ์ถ๋ ฅ๋๋ค. listener๋ talker๊ฐ ๋ฐํํ๋ ๋ฉ์์ง๋ฅผ ์ค์๊ฐ์ผ๋ก ์์ ํ๋ฉฐ, ์์ ๋ ๋ฉ์์ง๋ฅผ I heard: [๋ฉ์์ง ๋ด์ฉ] ํ์์ผ๋ก ์ถ๋ ฅํ๋ค.
1-2. vision_msgs ํจํค์ง( ์ ํ )
vision_msgs ํจํค์ง๋ ๋น์ ๊ด๋ จ ๋ฉ์์ง๋ฅผ ์ ์ํ๋ ํจํค์ง๋ก, ์๋ฅผ ๋ค์ด Detection2DArray๋ Detection3DArray์ ๊ฐ์ ๋ฉ์์ง ์ ํ์ ํฌํจํ๋ค.
์ด ๋ฉ์์ง๋ค์ ๊ฐ์ฒด ํ์ง๋ ๋น์ ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
sudo apt install ros-humble-vision-msgs
1-3. ackermann_msgs ํจํค์ง
ackermann_msgs ํจํค์ง๋ Ackermann ์กฐํฅ ๋ช ๋ น์ ์ํ ๋ฉ์์ง ์ ํ์ ์ ์ํ๋ค.
์ด ํจํค์ง์์ ์ ์ํ๋ AckermannDriveStamped ๋ฉ์์ง๋ ์์จ ์ฃผํ ์์คํ ์์ ์ฐจ๋ ์ ์ด ๋ช ๋ น(์: ์คํฐ์ด๋ง ๋ช ๋ น-์ฐจ๋์ ์กฐํฅ ๋ฐฉํฅ)์ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
sudo apt install ros-humble-ackermann-msgs
์ ๊ฑฐ
๋ฐ์ด๋๋ฆฌ์์ ์ด๋ฏธ ์ค์นํ ํ ROS 2๋ฅผ ์ ๊ฑฐํ๊ฑฐ๋ ์์ค ๊ธฐ๋ฐ ์ค์น๋ก ์ ํํด์ผ ํ๋ ๊ฒฝ์ฐ ๋ค์ ๋ช ๋ น์ ์คํํ๋ค.
sudo apt remove ~nros-humble-* && sudo apt autoremove
์ ์ฅ์๋ฅผ ์ ๊ฑฐํ ์๋ ์๋ค.
sudo rm /etc/apt/sources.list.d/ros2.list
sudo apt update
sudo apt autoremove
*# Consider upgrading for packages previously shadowed.*
sudo apt upgrade
2. ROS Bridge Extension ํ์ฑํ
์ ํ์ ์ผ๋ก Cyclone DDS๋ก Isaac Sim์ ์คํํ๋ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅธ๋ค.
Isaac Sim๊ณผ ROS 2๋ฅผ ์ฐ๊ฒฐํ ๋ ์ค์ํ ์ค์ ์ ํฌํจํ๋ค.
2-1. Fast DDS ์ค์
ROS 2 ๋ธ๋ฆฌ์ง๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด Isaac Sim์ ์คํํ๊ธฐ ์ ์ ROS 2 ๋ฉ์์ง๋ฅผ ์ ๋ฌํ ๋ชจ๋ ํฐ๋ฏธ๋ ์์ Fast DDS ๋ฏธ๋ค์จ์ด๋ฅผ ์ค์ ํด์ผํ๋ค. Fast DDS๋ DDS(Data Distribution Service) ๊ตฌํ์ฒด๋ก, ROS 2์์ ํต์ ์ ์ํ ๊ธฐ๋ณธ ๋ฏธ๋ค์จ์ด๋ก ์ฌ์ฉ๋๋ค.
fastdds.xml ํ์ผ์ DDS์ ์ค์ ์ ์ ์ํ๋ค. ์ด ํ์ผ์๋ UDP ๊ธฐ๋ฐ์ ํต์ ์ค์ ์ด ํฌํจ๋์ด ์์ผ๋ฉฐ, ROS 2์์ ํต์ ์ ์ค์ ํ๋ ๋ฐ ํ์ํ๋ค.
ROS 2 ์์ ๊ณต๊ฐ์ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด, fastdds.xml ํ์ผ์ ์ด๋ฏธ ์์ ๊ณต๊ฐ์ ๋ฃจํธ ํด๋์ ์์ ๊ฒ์ด๋ค. ์๋ฅผ ๋ค์ด, ROS 2 ์์ ๊ณต๊ฐ์ด ros2_ws๋ผ๋ฉด, ros2_ws ๋๋ ํ ๋ฆฌ ๋ด๋ถ์ fastdds.xml ํ์ผ์ด ์์นํด์ผํ๋ค.
๋ฐ๋ผ์ ๋จผ์ ROS 2 ์์ ๊ณต๊ฐ์ ๋ง๋ค์ด์ค๋ค.
๐ ROS 2 ์์ ๊ณต๊ฐ์ด๋?
ROS 2 ํจํค์ง๋ฅผ ๊ด๋ฆฌํ๊ณ ๊ฐ๋ฐํ๋ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋งํ๋ค.
์ฝ๊ฒ ๋งํ๋ฉด, ROS 2์ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ํ ํด๋์ด๋ค. ROS 2 ์์ ๊ณต๊ฐ์ ROS 2์ ํจํค์ง์ ์์กด์ฑ์ ๊ด๋ฆฌํ๊ณ , ํจํค์ง๋ค์ ๋น๋ํ๊ณ ์คํํ๋ ์ญํ ์ ํ๋ค.
my_ros2_ws/ # ์์ ๊ณต๊ฐ ๋ฃจํธ ๋๋ ํ ๋ฆฌ โโโ src/ # ์์ค ๋๋ ํ ๋ฆฌ (๊ฐ๋ฐ ์ค์ธ ROS 2 ํจํค์ง) โ โโโ my_robot_control/ โ โโโ sensor_driver/ โ โโโ demo_nodes_cpp/ โโโ build/ # ๋น๋ ๋๋ ํ ๋ฆฌ (์ปดํ์ผ ์ค๊ฐ ํ์ผ) โโโ install/ # ์ค์น๋ ํจํค์ง (๋น๋ ํ ์คํ ๊ฐ๋ฅํ ํ์ผ) โโโ log/ # ๋ก๊ทธ ๋๋ ํ ๋ฆฌ (๋น๋ ๋ฐ ์คํ ๋ก๊ทธ)โโ
๐ Isaac Sim ROS 2 ์์ ๊ณต๊ฐ์ ์ค์ ํ๋ ๋ฐฉ๋ฒ
IsaacSim์์ ROS 2 ์์
๊ณต๊ฐ์ ์ฌ์ฉํ๋ ค๋ฉด ROS 2 ์์
๊ณต๊ฐ์ ๋น๋ํด์ผ ํ๋ค.
1. ๊ฐ์ฅ ๋จผ์ , ๋ค์ ๋ ํฌ์งํ ๋ฆฌ์์ ๋ฒ ์ด์ค ํจํค์ง๋ฅผ ๋ค์ด๋ก๋ํ๋ค. https://github.com/isaac-sim/IsaacSim-ros\_workspaces
2. ROS 2 ์์ ๊ณต๊ฐ์ ๋น๋ํ๋ ค๋ฉด ์ถ๊ฐ ํจํค์ง๋ฅผ ์ค์นํด์ผํ๋ค.
# For rosdep install command
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
# For colcon build command
sudo apt install python3-colcon-common-extensionsโ
- ๋ค์ดํฐ๋ธ ROS 2๊ฐ ์์ฑ๋์๋์ง ํ์ธํ๋ค.
- ๋ค์ ๋ช ๋ น์ ์คํํ์ฌROS 2 ์์ ๊ณต๊ฐ์์ ํจํค์ง๋ฅผ ๋น๋ํ๊ธฐ ์ ์, ํด๋น ํจํค์ง๊ฐ ํ์๋ก ํ๋ ์์กด์ฑ(dependencies)์ ์๋์ผ๋ก ์ค์นํ๋ค.
cd humble_ws
rosdep install -i --from-path src --rosdistro humble -y
์ต์ด ์ค์น์์๋ ๋ค์๊ณผ ๊ฐ์ ERROR ๊ฐ ๋จ๋๋ฐ ๋นํฉํ์ง ๋ง๊ณ ์ด๊ธฐํ๋ฅผ ํด์ฃผ๋ฉด ๋๋ค.
4. ์์ ๊ณต๊ฐ ๊ตฌ์ถ
colcon build ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ROS 2๋ฅผ ๋น๋ํ๋ค. ๋น๋ํ๋ฉด ๋ฃจํธ ๋๋ ํ ๋ฆฌ ์๋์ ์๋ก์ด build, install, log๋๋ ํ ๋ฆฌ๊ฐ ์์ฑ๋๋ค.
colcon build
5. ๋ด์ฅ๋ ROS 2 ํจํค์ง๋ฅผ ์ฌ์ฉ
์ด ์์ ๊ณต๊ฐ ๋ด์ ๋ด์ฅ๋ ROS 2 ํจํค์ง๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ ํฐ๋ฏธ๋์ ์ด๊ณ ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์์ ๊ณต๊ฐ์ ์์ฑํ๋ค.
source /opt/ros/humble/setup.bash
cd humble_ws
source install/local_setup.bash
FASTRTPS_DEFAULT_PROFILES_FILE ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ์ฌ ํด๋น ์ค์ ํ์ผ์ ์ง์ ํ ์ ์๋ค.
# ROS 2 ์์
๊ณต๊ฐ ๊ฒฝ๋ก์ ๋ง๊ฒ ์์
export FASTRTPS_DEFAULT_PROFILES_FILE=<path_to_ros2_ws>/fastdds.xml
์ฌ๊ธฐ์ <path_to_ros2_ws>๋ ์ค์ ์์ ๊ณต๊ฐ์ ๊ฒฝ๋ก๋ก ๋ฐ๊ฟ์ผํ๋ค.
์๋ฅผ ๋ค์ด, ์์ ๊ณต๊ฐ์ด /home/ubuntu/ros2_ws์ ์๋ค๋ฉด, ๊ฒฝ๋ก๋ /home/ubuntu/ros2_ws/fastdds.xml๋ก ์ง์ ๋๋ค.
๋ ๊ฐ์ ๊ฒฝ์ฐ๋ ์์ ๊ณต๊ฐ์ด /home/ubuntu/humble_ws์ ์์ผ๋ฏ๋ก ๋ค์๊ณผ ๊ฐ์ด ๊ฒฝ๋ก๋ฅผ ๋ฐ๊พธ์ด ์ค๋ค.
export FASTRTPS_DEFAULT_PROFILES_FILE=/home/ubuntu/humble_ws/fastdds.xml
Nucleus Launcher์์ Isaac Sim์ ์คํํ ๋ "Extra Args"์์๋ ์ค์ ํด์ผํ๋ค.
2-2 ROS_DOMAIN_ID ์ค์ (์ ํ ์ฌํญ)
ROS_DOMAIN_ID๋ ROS 2 ์์คํ ์์ DDS ํต์ ์ ์ํ ๋๋ฉ์ธ ID๋ฅผ ์ง์ ํ๋ ํ๊ฒฝ ๋ณ์์ด๋ค. ์ฌ๋ฌ ์์คํ ์ด ๊ฐ์ ๋คํธ์ํฌ์์ ROS 2 ๋ฉ์์ง๋ฅผ ์๋ก ์ถฉ๋ ์์ด ์ฒ๋ฆฌํ๋ ค๋ฉด, ๊ฐ ์์คํ ์ ๊ณ ์ ํ ROS_DOMAIN_ID๋ฅผ ์ง์ ํด์ผ ํ ์ ์๋ค.
์ด๋ ์ ํ ์ฌํญ์ด์ง๋ง, ์ฌ๋ฌ ๊ฐ์ ROS 2 ์์คํ ์ด ๋์ผํ ๋คํธ์ํฌ์์ ๋ ๋ฆฝ์ ์ผ๋ก ์๋ํ๋๋ก ํ ๋ ์ ์ฉํ๋ค.
# ์ํ๋ ๋๋ฉ์ธ ID๋ก ์ค์
export ROS_DOMAIN_ID=<id_number>
2-3 ํ์ฅ ๊ธฐ๋ฅ ํ์ฑํ
ROS 2 ๋ธ๋ฆฌ์ง๋ฅผ ํ์ฑํํ๋ ค๋ฉด, ํ์ฅ ๊ด๋ฆฌ์ ๋ฉ๋ด์์ "ํ์ฅ"์ผ๋ก ์ด๋ํ์ฌ ROS 2 ๋ธ๋ฆฌ์ง๋ฅผ ๊ฒ์ํ๋ค. ํ์ฅ ํญ์ windows → extensions ์ ์๋ค.
์ด๋ ์ฃผ์ํ ์ ์ ํ ๋ฒ์ ํ๋์ ๋ธ๋ฆฌ์ง๋ง ํ์ฑํํ ์ ์๋ค.
Isaac Sim์ ์คํํ๊ธฐ ์ ์ ROS 2๋ฅผ ์์ฑํด์ผ ํ๋ค๋ ์ ์ด ๋งค์ฐ ์ค์ํ๋ค.
"์์ฑ"์ ํน์ ํ๊ฒฝ์ ์ค์ ํ๋ ๊ณผ์ ์ผ๋ก, ROS 2์ ํ๊ฒฝ ๋ณ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฒฝ๋ก๋ฅผ ํ์ฑํํ๋ ์์ ์ด๋ค.
[๊ฒฐ๊ณผ]
ROS 2 ๋ธ๋ฆฌ์ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
ROS 2 ๋ธ๋ฆฌ์ง๋ Isaac Sim์ด ์คํ๋ ๋ ์์ฑ๋ ROS 2 ์ค์น์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ก๋ํ๋ค. Isaac Sim์ ์คํํ ๋ ROS 2 ๋ฒ์ ์ ๋ช ์์ ์ผ๋ก ์ ํํ๊ฑฐ๋, ROS 2๊ฐ ์์ฑ๋์ง ์์ผ๋ฉด ๋ฏธ๋ฆฌ ํจํค์ง๋ Humble ๋ฒ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ก๋๋๋ค.
3. ROS ํ ํฝ์ ๋ํ ๊ฒ์ ๋ฐ ๊ตฌ๋ ์ ์์
ROS Bridge๋ฅผ ํ์ฑํํ ํ, ROS ํ ํฝ์ ๋ํด publish ๋ฐ subscribe ์์ ์ ์์ํ ์ ์๋ค. ROS ํํ ๋ฆฌ์ผ์ ํ์ตํ๋ ๊ฒ์ ๊ถ์ฅํ๋ฉฐ, ์ด๋ฅผ ์๋ฃํ๋ ค๋ฉด Isaac Sim ROS ์ํฌ์คํ์ด์ค๋ฅผ ๋จผ์ ์ค์ ํด์ผ ํ๋ค.
1. ๋ก์ปฌ์ ROS๊ฐ ์ค์น๋ ๊ฒฝ์ฐ:
- Ubuntu 22.04์์๋ Isaac Sim ROS ์ํฌ์คํ์ด์ค๋ฅผ ์ค์ ํ๊ธฐ ์ํ ์ง์นจ์ ๋ฐ๋ฅผ ์ ์๋ค.
- Ubuntu 20.04์์๋ Python 3.10๊ณผ ํจ๊ป Isaac Sim ROS ์ํฌ์คํ์ด์ค๋ฅผ ๋น๋ํด์ผ ํ๋ค.
2. ๋ก์ปฌ์ ROS๊ฐ ์ค์น๋์ง ์์ ๊ฒฝ์ฐ:
- Linux์์๋ ์ปจํ ์ด๋๋ฅผ ์ด์ฉํด Isaac Sim ROS ์ํฌ์คํ์ด์ค๋ฅผ ์คํํ๊ณ ๋น๋ํ๋ ์ง์นจ์ ๋ฐ๋ฅธ๋ค.
- Windows 10 ๋ฐ 11์์๋ ํ์ฌ ์ด ์ต์ ์ด ์ง์๋์ง ์๋๋ค. ๋ชจ๋ ROS 2 ์ค์น๋ Ubuntu 22.04์ WSL2๋ฅผ ํตํด ๋ค์ดํฐ๋ธ๋ก ์คํํด์ผ ํ๋ค.
'๋ก๋ณดํฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Isaac Sim์์ Nav2๋ก ์์จ์ฃผํ ํ ์คํธ (0) | 2025.01.08 |
---|---|
Running Isaac Lab in the Cloud (0) | 2025.01.08 |