CLPE-G-Series ROS1 User Guide


Revision History for Document

Rev

Date

Description

Rev

Date

Description

1.0

2022-04-28

Initial Draft

1.1

2024-04-04

8채널 지원 내용 추가

1.2

2024-09-12

JPEG 지원, RQT 내용 추가

 

Overview

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

ROS 사용 방법

시스템 요구사항

Requirements:

·      CANLAB CLPE-G-Series with supplied PC running Ubuntu 20.04

·      ROS 1 Noetic

PC에 Ubuntu 20.04를 설치하는 것이 좋다.

ROS 설치

http://wiki.ros.org/noetic/Installation/Ubuntu ROS 공식 설치 링크를 통해 ROS–noetic(Recommended)를 설치한다.

설치를 무사히 진행했다면 터미널 창에 source /opt/ros/noetic/setup.bash 명령어를 통해 ROS-noetic를 활성화시키고 rosversion -d 명령어를 통해 확인해 본다.

그림 1

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

그림 2

그림 2와 같이 나온다면 설치 과정을 다시 진행해 보거나, source /opt/ros/noetic/setup.bash 명령어를 적용시켰는지 다시 한번 확인해 준다.

ROS 설정

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 Driver

프로그램을 실행하기 위한 저장소를 만들어 준다.

mkdir -p ~/ws_clpe/src cd ~/ws_clpe/ wget https://raw.githubusercontent.com/canlab-co/clpe_ros/noetic/clpe.repos vcs import src < clpe.repos

위 명령어를 수행하면 그림 3과 같은 폴더 구조가 생성된다.

Install dependencies

프로그램을 실행하기 위한 ROS 외부 패키지들을 설치해 준다.

cd ~/ws_clpe sudo rosdep init rosdep update rosdep install --from-paths src --ignore-src --rosdistro noetic -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를 빌드해 준다.

프로그램 실행 방법

Lanuch

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

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

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

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

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

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

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

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

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

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

 예시: rostopic echo /clpe_ros/cam_0/compressed

주의 사항

Launch 과정에서 그림 7과 같은 오류가 발생하면 source /opt/ros/noetic/setup.bash 명령어를 통해 ROS noetic를 활성화시켜 주었는지 확인한다. 프로그램 실행 전 항상 활성화시켜 주어야 한다.

마찬가지로 그림 8과 같은 오류가 발생할 경우 source install/setup.bash 명령어를 적용시켰는지 확인해 준다.

*TIP

매번 이렇게 명령어를 적용 시키기는 힘들기 때문에 ~/.bashrc에 다음과 같이 적어 준다.

alias noetic="source /opt/ros/noetic/setup.bash; source ~/ws_clpe/install/setup.bash"

그리고 source ~/.bashrc 명령어를 통해 적용 시켜준다. 다음 noetic라는 명령어를 입력하면 그림과 같이 활성화된다.

Configuration

드라이버는 동작을 구성하기 위해 다음 ROS 매개변수를 지원한다. password, slave, encoding과 timestamp는 launch 과정에서 직접 사용하여 수정할 수 있다. 다른 매개변수는 config 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_latch

Controls latching for camera image messages

false

cam_{n}_image_queue_size

Controls queue size for camera image messages

10

cam_{n}_info_latch

Controls latching for camera info messages

false

cam_{n}_info_queue_size

Controls queue size for camera info messages

10

RQT

RQT는 ROS에서 사용되는 종합 GUI 툴이다. ROS를 설치할 때 보통 함께 설치된다.

실행 방법

터미널 창을 열어 source /opt/ros/noetic/setup.bash 명령어를 통해 noetic를 활성화시켜 준다. 그 다음 터미널 창에 rqt 명령어를 치면 실행된다.

실행됨과 동시에 RQT 창 화면이 나타나게 된다.

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

RQT 사용 방법

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

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

RVIZ

RVIZ는 ROS에서 사용되는 3차원 시각화 도구이다. ROS를 설치할 때 보통 함께 설치된다.

실행 방법

터미널 창을 열어 source /opt/ros/noetic/setup.bash 명령어를 통해 noetic를 활성화시켜 준다. 그 다음 터미널 창에 그림 11과 같은 명령어를 치면 실행된다.

실행됨과 동시에 RVIZ 창 화면이 나타나게 된다.

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

RVIZ 사용 방법

 그림 12와 같이 창 화면에서 ADD → By topic을 클릭하면 현재 publish되는 topic을 알 수 있다. 이미지 정보를 담고 있는 /image_raw topic이 보이게 된다.

그림 13과 같이 원하는 cam_x의 /image_raw를 더블 클릭한 뒤 나오는 Image 항목을 더블 클릭해 준다.

그러면 그림 14와 같이 활성화되는데 하단에 있는 image 항목을 통해 카메라 영상을 확인할 수 있다. Image 항목은 마우스 클릭을 통하여 원하는 곳으로 옮길 수 있다.

unsupported image encoding [yuv422] 이라는 Status:Error가 나타나고, 카메라 화면이 안 나와 No Image 화면이 뜨게 되는데 영상을 보기 위해서는 아래 방법을 참고한다.

참고 사항

기본적으로, 이미지 데이터들은 yuv 인코딩으로 publish된다. RVIZ는 yuv 인코딩을 지원하지 않기 때문에 다른 포맷으로 변환할 필요가 있다.

yuv422 이외의 인코딩은 변환하는 과정에서 오버헤드를 발생시키므로 성능이 중요한 경우에는 피해야 한다.

위의 명령어로 launch 파일을 실행하면 그림 15와 같이 RVIZ에서도 정상적으로 영상이 나오는 것을 확인할 수 있다.