CLPE-G-Series ROS2 User Guide


Revision History for Document

Rev

Date

Description

Rev

Date

Description

1.0

2022-04-28

Initial Draft

1.1

2023-06-14

그림 7 Image modify https://can-lab.atlassian.net/wiki/spaces/RDC/pages/464912889/CLPE-G-Series+ROS2+User+Guide#%E2%97%BB%EF%B8%8F-Lanuch

1.2

2024-04-04

8채널 지원 내용 추가

1.3

2024-09-13

JPEG 지원, RQT 내용 추가

 

Overview

이 문서는 CLPE-G-Series를 ROS2에서 구동 시키기 위한 사용법과 카메라 영상을 보기 위한 RVIZ2 및 RQT 사용법에 대해 설명한다.

 

ROS2 사용 방법

시스템 요구사항

Requirements:

CLPE-G-Series와 함께 제공된 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

그림 1과 같이 foxy가 나온다면 정상적으로 설치된 걸 알 수 있다.

그림 2

그림 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 ROS 2 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

sudo_password가 숫자(예시:1)이면 password:=\'1\'로 수정해서 명령어를 적어 준다. 그림 6과 같이 나온다면 정상적으로 실행된 것을 확인할 수 있다.

slave CLPE-G-Series를 장착하지 않았다면, slave 파라미터를 slave:=n 으로 입력해야 한다.

기본적으로 드라이버는 camera X당 1개의 topic을 publish한다.

  • /clpe/cam_X/image_raw: UYVY 형식의 이미지 정보를 담고 있는 topic이다.

  • /clpe/cam_X/compressed: JPEG 형식의 이미지 정보를 담고 있는 topic이다.

기본 인코딩은 yuv422 이다. 지원하는 인코딩 방식은 아래 구성을 참조하면 된다.

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

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

  • encoding 이 jpeg 일 경우, local 로 설정해야 함

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 설정해주면 카메라 영상이 나오게 된다.