Package Summary
Tags | No category tags. |
Version | 0.1.0 |
License | Apache License 2.0 |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/canlab-co/clpe_ros.git |
VCS Type | git |
VCS Version | noetic |
Last Updated | 2024-12-18 |
Dev Status | MAINTAINED |
CI status | Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Dongwoo Sun
- Taejung Kim
Authors
- Teo Koon Peng
About
This repository contains ROS 1 and ROS 2 drivers for the CANLAB CLPE-G-Series system. CLPE-G-Series is a multi camera grabber board for N2.0 GMSL camera. This drivers exposes camera images and information from CLPE-G-Series as ROS messages using the image_transport framework.
This branch contains the ROS 1
driver. For the ROS 2
driver, please switch to the main
branch.
Environment(PC Specification)
- PC Model: Nuvo-8208GC
- CPU Cores : 12
- CPU Clock : 3.7Ghz
- DRAM Size : 64GB (32GB + 32GB)
- DRAM Type : DDR4
System Requirements
Requirements:
- CANLAB CLPE-G-Series with supplied PC running Ubuntu 20.04
- CLPE_G_Series_SDK
- ROS 1 Noetic
Note: It is strongly recommended to install
Ubuntu 20.04
on the PC shipped with CLPE-G-Series. This way ROS 1 binaries can be installed as debian packages. If the PC is runningUbuntu 18.04
, ROS 1 will need to be built from source which is not officially supported onUbuntu 18.04
. Alternatively, containers or VM may be used but the CLPE-G-Series drivers has to be properly passed through.
Setup
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
ROS 1 Installation
Depending on the version of Ubuntu installed, follow the instructions in the links above to install ROS 1 Noetic binaries or from source. To source ROS 1
source /opt/ros/noetic/setup.bash # if binaries are installed
source ~/ros1_noetic/install/setup.bash # if installed from source following link above
Install CLPE SDK and ROS 1 Driver
Create workspace
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
Install dependencies
cd ~/ws_clpe
# source your ROS 1 workspace before this command
sudo rosdep init # if you have not done this before
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro noetic -y
Build the driver
cd ~/ws_clpe
# source your ROS 1 workspace if you have not already
catkin_make install --cmake-args -DCMAKE_BUILD_TYPE=Release
# To also build the benchmarking scripts
catkin_make install --cmake-args -DCMAKE_BUILD_TYPE=Release -DCLPE_ROS_BUILD_BENCHMARKS=On
Run the driver
Launch
cd ~/ws_clpe
source install/setup.bash
** UYVY **
roslaunch clpe_ros clpe_ros.launch password:=<sudo-password> slave:=n encoding:=yuv422 timestamp:=xavier
** JPEG **
roslaunch clpe_ros clpe_ros.launch password:=<sudo-password> slave:=n encoding:=jpeg timestamp:=local
Note: If
sudo-password
is a number, say42
, you should pass it aspassword:=\'42\'
If you have not equipped slave CLPE-G-Series, you should enterslave:=n
By default the driver will publish topics per camera (X).
- /clpe_ros/cam_X/image_raw: The raw image published as
sensor_msgs::Image
. - /clpe_ros/cam_X/compressed: The JPEG image published as
sensor_msgs::CompressedImage
. - The default encoding is
yuv422
. For other supported encodings, see Configuration below.
Frame rate per sensor
- CLCC-G-01X 8CH
UYVY - 30 fps
JPEG - 30 fps - CLCC-G-02X 8CH
UYVY - 24~25 fps
JPEG - 30 fps
Visualizing in Rviz
By default, images are published in yuv encoding. Rviz does not support yuv so it needs to be converted to a different format.
roslaunch clpe_ros clpe_ros.launch password:=<sudo-password> slave:=y encoding:=bgr8 timestamp:=xavier
Note that this conversion incurs significant overhead so should be avoided if performance is important.
Configuration
The driver supports the following ROS parameters to configure its behavior. The password
, slave
, encoding
and timestamp
parameters can be overwritten at run time. Other parameters can be modified within the config file
Note: If encoding is “jpeg”, timestamp must be set to “local”.
Key | Description | Default |
---|---|---|
password | sudo password | *Required* |
slave | check slave, supported arguments are: y, n. Defaults to n. | n |
encoding | Image encoding, supported formats are: bgr8, bgra8, rgb8, rgba8, mono16, yuv422, jpeg. Defaults to yuv422. Note that encodings other than yuv422 and jpeg incurs conversion overhead. | yuv422 |
timestamp | Image timestamp, supported formats are: xavier, local. Defaults to xavier. | 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_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 |
Unless specified otherwise, all parameters are read-only, that is, they must be initialized at startup and cannot be changed at runtime.
Changelog for package clpe_ros
0.1.0 (2022-04-20)
- Provides ROS 1 Noetic driver for CANLAB CLPE-G-NVP2650D vision system
- By default the driver will publish three topics for each camera X.
- /clpe_ros/cam_X/image_raw: The raw image published as sensor_msgs::msg::Image. The default encoding is yuv422. For other supported encodings, see Configuration.
- /clpe_ros/cam_X/camera_info: The intrinsics of the camera published as a sensor_msgs::msg::CameraInfo message.
- /clpe_ros/cam_X/clpe_camera_info: The intrinsics of the camera published as a clpe_ros_msgs::ClpeCameraInfo message.
- Contributors: Teo Koon Peng, Yadunund Vijay
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
catkin | |
clpe | |
roscpp | |
image_transport | |
geometry_msgs | |
sensor_msgs | |
cv_bridge | |
tf2 | |
clpe_ros_msgs |
System Dependencies
Dependant Packages
Launch files
- launch/clpe_ros.launch
-
- password [default: ]
- slave [default: n]
- encoding [default: yuv422]
- timestamp [default: xavier]
- config [default: $(find clpe_ros)/config/clpe_config.yaml]
Messages
Services
Plugins
Recent questions tagged clpe_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.1.1 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/canlab-co/clpe_ros.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2024-12-18 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Dongwoo Sun
- Taejung Kim
Authors
- Teo Koon Peng
About
This repository contains ROS 1 and ROS 2 drivers for the CANLAB CLPE-G-Series system. CLPE-G-Series is a multi camera grabber board for N2.0 GMSL camera. This drivers exposes camera images and information from CLPE-G-Series as ROS messages using the image_transport framework.
This branch contains the ROS 2
driver. For the ROS 1
driver, please switch to the noetic
branch.
Environment(PC Specification)
- PC Model: Nuvo-8208GC
- CPU Cores : 12
- CPU Clock : 3.7Ghz
- DRAM Size : 64GB (32GB + 32GB)
- DRAM Type : DDR4
System Requirements
Requirements:
- CANLAB CLPE-G-Series with supplied PC running Ubuntu 20.04
- CLPE_G_Series_SDK
- ROS 2 Foxy or ROS 2 Galactic
Note: It is strongly recommended to install
Ubuntu 20.04
on the PC shipped with CLPE-G-Series. This way ROS 2 binaries can be installed as debian packages. If the PC is runningUbuntu 18.04
, ROS 2 will need to be built from source which is not officially supported onUbuntu 18.04
. Alternatively, containers or VM may be used but the CLPE-G-Series drivers has to be properly passed through.
Setup
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
ROS 2 Installation
Depending on the version of Ubuntu installed, follow the instructions in the links above to install ROS 2 binaries or from source. To source ROS 2
source /opt/ros/foxy/setup.bash # if binaries are installed
source ~/ros2_foxy/install/setup.bash # if installed from source following link above
Note: Replace
foxy
withgalactic
if using ROS 2 Galactic
Install CLPE SDK and ROS 2 Driver
Create workspace
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
Install dependencies
cd ~/ws_clpe2
# source your ROS 2 workspace before this command
sudo rosdep init # if you have not done this before
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro $ROS_DISTRO -y
Build the driver
cd ~/ws_clpe2
# source your ROS 2 workspace if you have not already
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
# To also build the benchmarking scripts
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release -DCLPE_ROS_BUILD_BENCHMARKS=On
Run the driver
DDS Configuration
For better image transport performance over DDS, we recommend using FastDDS with Shared Memory Transport enabled.
First copy the the fastdds.xml
config file to a suitable directory, eg. $HOME/fastdds.xml
cd ~/ws_clpe2/src
cp canlab-co/clpe_ros/fastdds.xml ~/
Next add these two lines to your ~/.bashrc
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=$HOME/fastdds.xml
Make sure to source ~/.bashrc
first on all terminals before launching any ROS 2 nodes including the driver.
Launch
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
Note: If
sudo_password
is a number, say42
, you should pass it aspassword:=\'42\'
If you have not equipped slave CLPE-G-Series, you should enterslave:=n
By default the driver will publish topics per camera X.
- /clpe/cam_X/image_raw: The raw image published as
sensor_msgs::msg::Image
. - /clpe/cam_X/compressed: The JPEG image published as
sensor_msgs::msg::CompressedImage
. - The default encoding is
yuv422
. For other supported encodings, see Configuration below.
Frame rate per sensor
- CLCC-G-01X 8CH
UYVY - 30 fps
JPEG - 30 fps - CLCC-G-02X 8CH
UYVY - 24~25 fps
JPEG - 30 fps
ROS2 Component
The driver is also supported as a ROS2 component. To run it, start the component container
ros2 run rclcpp_components component_container
In another terminal, load the component
ros2 component load /ComponentManager clpe_ros clpe::ClpeComponentNode -p password:=<password>
Check that the component is loaded with
ros2 component list
Configuration
The driver supports the following ROS parameters to configure its behavior. The password
, slave
, encoding
and timestamp
parameters can be overwritten at run time. Other parameters can be modified within the launch file.
Note: If encoding is “jpeg”, timestamp must be set to “local”.
Key | Description | Default |
---|---|---|
password | sudo password | *Required* |
slave | check slave, supported arguments are: y, n. Defaults to n. | n |
encoding | Image encoding, supported formats are: bgr8, bgra8, rgb8, rgba8, mono16, yuv422, jpeg. Defaults to yuv422. Note that encodings other than yuv422 and jpeg incurs conversion overhead. | yuv422 |
timestamp | Image timestamp, supported formats are: xavier, local. Defaults to xavier. | 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 |
Unless specified otherwise, all parameters are read-only, that is, they must be initialized at startup and cannot be changed at runtime.
Changelog for package clpe_ros
0.1.1 (2022-08-24)
- remove EEPROM
0.1.0 (2022-04-20)
- Provides ROS 2 driver for CANLAB CLPE-G-NVP2650D vision system
- Support ROS 2 Foxy and ROS 2 Galactic
- By default the driver will publish three topics for each camera X.
- /clpe/cam_X/image_raw: The raw image published as sensor_msgs::msg::Image. The default encoding is yuv422. For other supported encodings, see Configuration.
- /clpe/cam_X/camera_info: The intrinsics of the camera published as a sensor_msgs::msg::CameraInfo message.
- /clpe/cam_X/clpe_camera_info: The intrinsics of the camera published as a clpe_ros_msgs::msg::ClpeCameraInfo message.
- Contributors: Teo Koon Peng, Yadunund Vijay
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
clpe | |
rclcpp | |
image_transport | |
geometry_msgs | |
sensor_msgs | |
cv_bridge | |
tf2 | |
rclcpp_components | |
clpe_ros_msgs |