Skip to end of metadata
Go to start of metadata

You are viewing an old version of this content. View the current version.

Compare with Current View Version History

Version 1 Current »


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

cpu.pngdmidecode.png

ROS2 사용 방법

◻️ 시스템 요구사항

Requirements:

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과 같은 폴더 구조가 생성된다.

ros2pic3.png

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을 진행하면 된다.

rosdep install --from-paths src --ignore-src --rosdistro $ROS_DISTRO -y 

Install 과정에서 그림 5와 같은 오류가 발생하면 무시하고 진행하여도 실행하는데 지장이 없다.

하지만 이 오류로 인해 실행이 불가능할 시 sudo apt-get install <해당 package> 명령어를 통해 설치를 진행해준다.

Build the driver

 driver를 빌드해 준다.

cd ~/ws_clpe2
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release

DDS Configuration

DDS기능을 통해 이미지 전송 성능을 향상시켜 준다. 공유 메모리 전송이 활성화된 FastDDS를 사용한다. 먼저 fastdds.xml 구성 파일을 폴더에 복사한다.

cd ~/ws_clpe2/src
cp canlab-co/clpe_ros/fastdds.xml ~/

그 다음 sudo vi ~/.bashrc를 열어 다음 두 줄을 추가 시켜 준다.

export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=$HOME/fastdds.xml

source ~/.bashrc 명령어를 통해 ~/.bashrc에 적용시켜 준다. 그 외에도 터미널을 종료 후 다시 키면 적용 된다.

프로그램 실행 방법

◻️ Lanuch

cd ~/ws_clpe2
source install/setup.bash
** UYVY **
ros2 launch clpe_ros clpe_ros.launch.py password:=<sudo-password> slave:=n encoding:=yuv422 timestamp:=xavier
** JPEG **
ros2 launch clpe_ros clpe_ros.launch.py password:=<sudo-password> slave:=n encoding:=jpeg timestamp:=local

slave CLPE-G-Series를 장착했다면, slave 파라미터를 slave:=y 으로 입력해야 한다.

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

CLCC-G-01X 장착 시

CLCC-G-02X 장착 시

Screenshot from 2024-12-17 15-48-16.pngScreenshot from 2024-12-17 15-47-23.png

◾ 센서 별 프레임 레이트

하단의 표는 각 센서에 대하여 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 이다. 지원하는 인코딩 방식은 아래 https://can-lab.atlassian.net/wiki/spaces/RDC/pages/464912889/CLPE-G-Series+ROS2+User+Guide#%E2%AC%9B-Configuration을 참조하면 된다.

topic에 담겨있는 정보가 궁금하다면 다음과 같은 명령어를 통해 확인 해 볼 수 있다.

하나의 터미널을 더 실행한 뒤 ros2 topic list 명령어를 통해 publish 중인 topic들의 목록을 확인한다.

ros2 topic list

ros2 명령어를 사용하기 위해서는 source /opt/ros/foxy/setup.bash 명령어를 통해 활성화 시켜 주어야 한다.

Screenshot from 2024-09-13 12-33-16.png

그 다음 원하는 topic의 정보를 확인을 하고 싶다면 ros2 topic echo 명령어를 통해 확인할 수 있다.

ros2 topic echo <topic>

 예시: 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

  • 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 창 화면이 나타나게 된다.

Screenshot from 2024-09-13 11-47-02.png

이렇게 창 화면이 나타나게 되면 정상적으로 RQT를 사용할 수 있게 된다.

◻️ RQT 사용 방법

그림 11과 같이 창 화면에서 드롭박스를 클릭하면 현재 publish되는 topic을 알 수 있다.

Screenshot from 2024-09-13 11-47-16.png

원하는 topic을 드롭박스에서 선택하면 영상이 나오는 것을 확인할 수 있다.

Screenshot from 2024-09-13 11-47-53.png

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

  • No labels