CLPE-G-Series ROS2 User Guide
- 1 Revision History for Document
- 2 Overview
- 3 ํ
์คํธ ํ๊ฒฝ(PC ์ฌ์)
- 3.1 ์ฃผ์ ์ฌ์
- 3.2 ์์ธ ์ฌ์
- 4 ROS2 ์ฌ์ฉ ๋ฐฉ๋ฒ
- 4.1 ์์คํ ์๊ตฌ์ฌํญ
- 4.2 ROS2 ์ค์น
- 4.3 ROS2 ์ค์
- 4.3.1 System dependencies
- 4.3.2 Install CLPE SDK and ROS2 Driver
- 4.3.3 Install dependencies
- 4.3.4 Build the driver
- 4.3.5 DDS Configuration
- 5 ํ๋ก๊ทธ๋จ ์คํ ๋ฐฉ๋ฒ
- 5.1 Lanuch
- 6 Configuration
- 7 RQT
- 7.1 ์คํ ๋ฐฉ๋ฒ
- 7.2 RQT ์ฌ์ฉ ๋ฐฉ๋ฒ
- 8 RVIZ2
- 8.1 ์คํ ๋ฐฉ๋ฒ
- 8.2 RVIZ2 ์ฌ์ฉ ๋ฐฉ๋ฒ
Revision History for Document
Rev | Date | Description |
---|---|---|
1.0 | 2022-04-28 | Initial Draft |
1.1 | 2023-06-14 | ๊ทธ๋ฆผ 7 Image modify |
1.2 | 2024-04-04 | 8์ฑ๋ ์ง์ ๋ด์ฉ ์ถ๊ฐ |
1.3 | 2024-09-13 | JPEG ์ง์, RQT ๋ด์ฉ ์ถ๊ฐ |
1.4 | 2024-12-17 | CLCC-G-02X ์ง์, ์นด๋ฉ๋ผ ์ผ์ ์ ๋ณด ๊ด๋ จ ๋ด์ฉ ์ถ๊ฐ |
1.5 | 2024-12-18 | ํ ์คํธ ํ๊ฒฝ, ์ผ์ ๋ณ fps ๋ช ์ |
Overview
์ด ๋ฌธ์๋ CLPE-G-Series๋ฅผ ROS2์์ ๊ตฌ๋ ์ํค๊ธฐ ์ํ ์ฌ์ฉ๋ฒ๊ณผ ์นด๋ฉ๋ผ ์์์ ๋ณด๊ธฐ ์ํ RVIZ2 ๋ฐ RQT ์ฌ์ฉ๋ฒ์ ๋ํด ์ค๋ช ํ๋ค.
ํ ์คํธ ํ๊ฒฝ(PC ์ฌ์)
์ฃผ์ ์ฌ์
PC ๋ชจ๋ธ: Nuvo-8208GC
CPU ์ฝ์ด ๊ฐ์: 12
CPU ํด๋ญ: 3.7Ghz
DRAM ์ฉ๋: 64GB(32GB+32GB)
DRAM ํ์ : DDR4
์์ธ ์ฌ์
CPU | RAM |
---|---|
ROS2 ์ฌ์ฉ ๋ฐฉ๋ฒ
์์คํ ์๊ตฌ์ฌํญ
Requirements:
CANLAB CLPE-G-Series with supplied PC running Ubuntu 20.04
PC์ Ubuntu 20.04๋ฅผ ์ค์นํ๋ ๊ฒ์ด ์ข๋ค.
ROS2 ์ค์น
์ด ๋ฌธ์๋ ROS 2 Foxy๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ฑ๋์๋ค.
https://docs.ros.org/en/foxy/Installation/Ubuntu-Install-Debians.html ROS2 ๊ณต์ ์ค์น ๋งํฌ๋ฅผ ํตํด ROS2โfoxy(Recommended)๋ฅผ ์ค์นํ๋ค.
์ค์น๋ฅผ ๋ฌด์ฌํ ์งํํ๋ค๋ฉด ํฐ๋ฏธ๋ ์ฐฝ์ source /opt/ros/foxy/setup.bash ๋ช ๋ น์ด๋ฅผ ํตํด ROS2-foxy๋ฅผ ํ์ฑํ์ํค๊ณ rosversion -d ๋ช ๋ น์ด๋ฅผ ํตํด ํ์ธํด ๋ณธ๋ค.
๊ทธ๋ฆผ 1๊ณผ ๊ฐ์ด foxy๊ฐ ๋์จ๋ค๋ฉด ์ ์์ ์ผ๋ก ์ค์น๋ ๊ฑธ ์ ์ ์๋ค.
๊ทธ๋ฆผ 2์ ๊ฐ์ด ๋์จ๋ค๋ฉด ์ค์น ๊ณผ์ ์ ๋ค์ ์งํํด ๋ณด๊ฑฐ๋, source /opt/ros/foxy/setup.bash ๋ช ๋ น์ด๋ฅผ ์ ์ฉ์์ผฐ๋์ง ๋ค์ ํ๋ฒ ํ์ธํด ์ค๋ค.
ROS2 ์ค์
System dependencies
ย ํ๋ก๊ทธ๋จ์ ์คํํ๊ธฐ ์ ํ์ํ ํจํค์ง๋ค์ ์ค์นํด ์ค๋ค.
sudo apt update && sudo apt install git cmake wget gcc g++ libgstreamer-plugins-base1.0-dev python3-colcon* python3-rosdep python3-vcstool -y
Install CLPE SDK and ROS2 Driver
ย ํ๋ก๊ทธ๋จ์ ์คํํ๊ธฐ ์ํ ์ ์ฅ์๋ฅผ ๋ง๋ค์ด ์ค๋ค.
mkdir -p ~/ws_clpe2/src
cd ~/ws_clpe2/
wget https://raw.githubusercontent.com/canlab-co/clpe_ros/main/clpe.repos
vcs import src < clpe.repos
์ ๋ช ๋ น์ด๋ฅผ ์ํํ๋ฉด ๊ทธ๋ฆผ 3๊ณผ ๊ฐ์ ํด๋ ๊ตฌ์กฐ๊ฐ ์์ฑ๋๋ค.
Install dependencies
ํ๋ก๊ทธ๋จ์ ์คํํ๊ธฐ ์ํ ROS2 ์ธ๋ถ ํจํค์ง๋ค์ ์ค์นํด ์ค๋ค.
cd ~/ws_clpe2
sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro $ROS_DISTRO -y
์ฃผ์ ์ฌํญ
rosdep init ๊ณผ์ ์์ ๊ทธ๋ฆผ 4์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด, sudo rm /etc/ros/rosdep/sources.list.d/20-default.list ๋ช ๋ น์ด๋ฅผ ์ํํ ๋ค ๋ค์ sudo rosdep init์ ์งํํ๋ฉด ๋๋ค.
sudo rm /etc/ros/rosdep/sources.list.d/20-default.list ๋ช ๋ น์ด๋ฅผ ์ํํ ๋ค ๋ค์ sudo rosdep init์ ์งํํ๋ฉด ๋๋ค.
Install ๊ณผ์ ์์ ๊ทธ๋ฆผ 5์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๋ฌด์ํ๊ณ ์งํํ์ฌ๋ ์คํํ๋๋ฐ ์ง์ฅ์ด ์๋ค.
ํ์ง๋ง ์ด ์ค๋ฅ๋ก ์ธํด ์คํ์ด ๋ถ๊ฐ๋ฅํ ์ sudo apt-get install <ํด๋น package> ๋ช ๋ น์ด๋ฅผ ํตํด ์ค์น๋ฅผ ์งํํด์ค๋ค.
Build the driver
ย driver๋ฅผ ๋น๋ํด ์ค๋ค.
DDS Configuration
DDS๊ธฐ๋ฅ์ ํตํด ์ด๋ฏธ์ง ์ ์ก ์ฑ๋ฅ์ ํฅ์์์ผ ์ค๋ค. ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์ ์ก์ด ํ์ฑํ๋ FastDDS๋ฅผ ์ฌ์ฉํ๋ค. ๋จผ์ fastdds.xml ๊ตฌ์ฑ ํ์ผ์ ํด๋์ ๋ณต์ฌํ๋ค.
๊ทธ ๋ค์ sudo vi ~/.bashrc๋ฅผ ์ด์ด ๋ค์ ๋ ์ค์ ์ถ๊ฐ ์์ผ ์ค๋ค.
source ~/.bashrc ๋ช ๋ น์ด๋ฅผ ํตํด ~/.bashrc์ ์ ์ฉ์์ผ ์ค๋ค. ๊ทธ ์ธ์๋ ํฐ๋ฏธ๋์ ์ข ๋ฃ ํ ๋ค์ ํค๋ฉด ์ ์ฉ ๋๋ค.
ํ๋ก๊ทธ๋จ ์คํ ๋ฐฉ๋ฒ
Lanuch
slave CLPE-G-Series๋ฅผ ์ฅ์ฐฉํ๋ค๋ฉด, slave ํ๋ผ๋ฏธํฐ๋ฅผ slave:=y ์ผ๋ก ์ ๋ ฅํด์ผ ํ๋ค.
sudo_password๊ฐ ์ซ์(์์:1)์ด๋ฉด password:=\'1\'๋ก ์์ ํด์ ๋ช ๋ น์ด๋ฅผ ์ ์ด ์ค๋ค. ๊ทธ๋ฆผ 6๊ณผ ๊ฐ์ด ๋์จ๋ค๋ฉด ์ ์์ ์ผ๋ก ์คํ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
CLCC-G-01X ์ฅ์ฐฉ ์ | CLCC-G-02X ์ฅ์ฐฉ ์ |
---|---|
์ผ์ ๋ณ ํ๋ ์ ๋ ์ดํธ
ํ๋จ์ ํ๋ ๊ฐ ์ผ์์ ๋ํ์ฌ encoding ๋ฐฉ์ ๋ณ๋ก ํ๋ ์ ๋ ์ดํธ๋ฅผ ์ ๋ฆฌํ ๋ด์ฉ์ด๋ค.
ROS2 | IMX390(8์ฑ๋) | AR0233(8์ฑ๋) | ||
---|---|---|---|---|
UYVY | JPEG | UYVY | JPEG | |
fps | 30 | 30 | 24 ~ 25 | 30 |
๊ธฐ๋ณธ์ ์ผ๋ก ๋๋ผ์ด๋ฒ๋ camera X๋น 1๊ฐ์ topic์ publishํ๋ค.
/clpe/cam_X/image_raw: UYVY ํ์์ ์ด๋ฏธ์ง ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ topic์ด๋ค.
/clpe/cam_X/compressed: JPEG ํ์์ ์ด๋ฏธ์ง ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ topic์ด๋ค.
๊ธฐ๋ณธ ์ธ์ฝ๋ฉ์ yuv422 ์ด๋ค. ์ง์ํ๋ ์ธ์ฝ๋ฉ ๋ฐฉ์์ ์๋ CLPE-G-Series ROS2 User Guide | โฌ Configuration์ ์ฐธ์กฐํ๋ฉด ๋๋ค.
topic์ ๋ด๊ฒจ์๋ ์ ๋ณด๊ฐ ๊ถ๊ธํ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ํตํด ํ์ธ ํด ๋ณผ ์ ์๋ค.
ํ๋์ ํฐ๋ฏธ๋์ ๋ ์คํํ ๋ค ros2 topic list ๋ช ๋ น์ด๋ฅผ ํตํด publish ์ค์ธ topic๋ค์ ๋ชฉ๋ก์ ํ์ธํ๋ค.
ros2 ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ source /opt/ros/foxy/setup.bash ๋ช ๋ น์ด๋ฅผ ํตํด ํ์ฑํ ์์ผ ์ฃผ์ด์ผ ํ๋ค.
๊ทธ ๋ค์ ์ํ๋ topic์ ์ ๋ณด๋ฅผ ํ์ธ์ ํ๊ณ ์ถ๋ค๋ฉด ros2 topic echo ๋ช ๋ น์ด๋ฅผ ํตํด ํ์ธํ ์ ์๋ค.
ย ์์: ros2 topic echo /clpe/cam_0/image_raw
Launch ๊ณผ์ ์์ ๊ทธ๋ฆผ 8๊ณผ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด source /opt/ros/foxy/setup.bash ๋ช ๋ น์ด๋ฅผ ํตํด Ros2 foxy๋ฅผ ํ์ฑํ์์ผ ์ฃผ์๋์ง ํ์ธํ๋ค. ํ๋ก๊ทธ๋จ ์คํ ์ ํญ์ ํ์ฑํ์์ผ ์ฃผ์ด์ผ ํ๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ๊ทธ๋ฆผ 9์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ source install/setup.bash ๋ช ๋ น์ด๋ฅผ ์ ์ฉ์์ผฐ๋์ง ํ์ธํด ์ค๋ค.
*TIP
๋งค๋ฒ ์ด๋ ๊ฒ ๋ช ๋ น์ด๋ฅผ ์ ์ฉ ์ํค๊ธฐ๋ ํ๋ค๊ธฐ ๋๋ฌธ์ ~/.bashrc์ ๋ค์๊ณผ ๊ฐ์ด ์ ์ด ์ค๋ค.
alias foxy="source /opt/ros/foxy/setup.bash; source ~/ws_clpe2/install/setup.bashโ
๊ทธ๋ฆฌ๊ณ source ~/.bashrc ๋ช ๋ น์ด๋ฅผ ํตํด ์ ์ฉ ์์ผ์ค๋ค. ๋ค์ foxy๋ผ๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ํ์ฑํ๋๋ค.
Configuration
๋๋ผ์ด๋ฒ๋ ๋์์ ๊ตฌ์ฑํ๊ธฐ ์ํด ๋ค์ ROS ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ํ๋ค. password, slave, encoding๊ณผ timestamp๋ launch ๊ณผ์ ์์ ์ง์ ์ฌ์ฉํ์ฌ ์์ ํ ์ ์๋ค. ๋ค๋ฅธ ๋งค๊ฐ๋ณ์๋ launch file์ ํตํด ์์ ๊ฐ๋ฅํ๋ค.
Key | Description | Default |
---|---|---|
password | sudo password | *Required* |
slave | Slave CLPE-G-Series์ ์กด์ฌ ์ฌ๋ถ, ์ง์ํ๋ ์ธ์ : y(Slave CLPE-G-Series ์กด์ฌ), n(Slave CLPE-G-Series ๋ถ์ฌ) | n |
encoding | Image encoding, ์ง์ํ๋ ํฌ๋งท : bgr8, bgra8, rgb8, rgba8, mono16, yuv422, jpeg. Defaults to yuv422. *yuv422, jpeg ์ด์ธ์ ์ธ์ฝ๋ฉ์ ๋ณํํ๋ ๊ณผ์ ์์ ์ค๋ฒํค๋๋ฅผ ๋ฐ์์ํจ๋ค. | yuv422 |
timestamp | Image timestamp, ์ง์ํ๋ ํฌ๋งท : xavier, local | xavier
|
cam_{n}_enable | Enable camera | true |
cam_{n}_pose | Pose relative to the base, 6 values corresponding to [x, y, z, roll, pitch, yaw] | [0,0,0,0,0,0] |
cam_{n}_frame_id | Defines the frame_id all static transformations refers to | base_link |
cam_{n}_image_qos | Sets the QoS by which the topic is published. Available values are the following strings: SYSTEM_DEFAULT, PARAMETER_EVENTS, SERVICES_DEFAULT, PARAMETERS, DEFAULT, SENSOR_DATA, HID_DEFAULT (= DEFAULT with depth of 100), EXTRINSICS_DEFAULT (= DEFAULT with depth of 1 and transient local durabilty). | SENSOR_DATA |
cam_{n}_info_qos | Sets the QoS by which the topic is published. Available values are the following strings: SYSTEM_DEFAULT, PARAMETER_EVENTS, SERVICES_DEFAULT, PARAMETERS, DEFAULT, SENSOR_DATA, HID_DEFAULT (= DEFAULT with depth of 100), EXTRINSICS_DEFAULT (= DEFAULT with depth of 1 and transient local durabilty). | SYSTEM_DEFAULT |
RQT
RQT๋ ROS2์์ ์ฌ์ฉ๋๋ ์ข ํฉ GUI ํด์ด๋ค. ROS2๋ฅผ ์ค์นํ ๋ ๋ณดํต ํจ๊ป ์ค์น๋๋ค.
์คํ ๋ฐฉ๋ฒ
ํฐ๋ฏธ๋ ์ฐฝ์ ์ด์ด source /opt/ros/foxy/setup.bash ๋ช
๋ น์ด๋ฅผ ํตํด foxy๋ฅผ ํ์ฑํ์์ผ ์ค๋ค. ๊ทธ ๋ค์ ํฐ๋ฏธ๋ ์ฐฝ์ rqt
๋ช
๋ น์ด๋ฅผ ์น๋ฉด ์คํ๋๋ค.
์คํ๋จ๊ณผ ๋์์ RQT ์ฐฝ ํ๋ฉด์ด ๋ํ๋๊ฒ ๋๋ค.
์ด๋ ๊ฒ ์ฐฝ ํ๋ฉด์ด ๋ํ๋๊ฒ ๋๋ฉด ์ ์์ ์ผ๋ก RQT๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.
RQT ์ฌ์ฉ ๋ฐฉ๋ฒ
๊ทธ๋ฆผ 11๊ณผ ๊ฐ์ด ์ฐฝ ํ๋ฉด์์ ๋๋กญ๋ฐ์ค๋ฅผ ํด๋ฆญํ๋ฉด ํ์ฌ publish๋๋ topic์ ์ ์ ์๋ค.
์ํ๋ topic์ ๋๋กญ๋ฐ์ค์์ ์ ํํ๋ฉด ์์์ด ๋์ค๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
RVIZ2
RVIZ2๋ ROS2์์ ์ฌ์ฉ๋๋ 3์ฐจ์ ์๊ฐํ ๋๊ตฌ์ด๋ค. ROS2๋ฅผ ์ค์นํ ๋ ๋ณดํต ํจ๊ป ์ค์น๋๋ค.
์คํ ๋ฐฉ๋ฒ
ํฐ๋ฏธ๋ ์ฐฝ์ ์ด์ด source /opt/ros/foxy/setup.bash ๋ช ๋ น์ด๋ฅผ ํตํด foxy๋ฅผ ํ์ฑํ์์ผ ์ค๋ค. ๊ทธ ๋ค์ ํฐ๋ฏธ๋ ์ฐฝ์ ๊ทธ๋ฆผ 12์ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์น๋ฉด ์คํ๋๋ค.
์คํ๋จ๊ณผ ๋์์ RVIZ2 ์ฐฝ ํ๋ฉด์ด ๋ํ๋๊ฒ ๋๋ค.
์ด๋ ๊ฒ ์ฐฝ ํ๋ฉด์ด ๋ํ๋๊ฒ ๋๋ฉด ์ ์์ ์ผ๋ก RVIZ2๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.
RVIZ2 ์ฌ์ฉ ๋ฐฉ๋ฒ
ย ๊ทธ๋ฆผ 13๊ณผ ๊ฐ์ด ์ฐฝ ํ๋ฉด์์ ADD โ By topic์ ํด๋ฆญํ๋ฉด ํ์ฌ publish๋๋ topic์ ์ ์ ์๋ค. ์ด๋ฏธ์ง ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ /image_raw topic์ด ๋ณด์ด๊ฒ ๋๋ค.
๊ทธ๋ฆผ 14์ ๊ฐ์ด ์ํ๋ cam_x์ /image_raw๋ฅผ ๋๋ธ ํด๋ฆญํ ๋ค ๋์ค๋ Image ํญ๋ชฉ์ ๋๋ธ ํด๋ฆญํด ์ค๋ค.
ย
๊ทธ๋ฌ๋ฉด ๊ทธ๋ฆผ 15์ ๊ฐ์ด ํ์ฑํ๋๋๋ฐ ํ๋จ์ ์๋ image ํญ๋ชฉ์ ํตํด ์นด๋ฉ๋ผ ์์์ ํ์ธํ ์ ์๋ค. Image ํญ๋ชฉ์ ๋ง์ฐ์ค ํด๋ฆญ์ ํตํ์ฌ ์ํ๋ ๊ณณ์ผ๋ก ์ฎ๊ธธ ์ ์๋ค.
์์ง ์นด๋ฉ๋ผ ํ๋ฉด์ด ์ ๋์ No Image๋ผ๋ ํญ๋ชฉ์ด ๋จ๊ฒ ๋๋๋ฐ ์์์ ๋ณด๊ธฐ ์ํด Image ์ค์ ์ ํด์ค๋ค. ๊ทธ๋ฆผ 16๊ณผ ๊ฐ์ด Reliability ์ค์ ์ ๋ง์ฐ์ค ํด๋ฆญ์ ํตํด Best Effort๋ก ๋ณ๊ฒฝํด์ค๋ค. ์ด๋ ๊ฒ image ์ค์ ํด์ฃผ๋ฉด ์นด๋ฉ๋ผ ์์์ด ๋์ค๊ฒ ๋๋ค.