QRB ROS Transport
Overview
QRB ROS Transport is designed for hardware-acceleration friendly transporting of messages on Qualcomm robotics platforms. It uses type adaption to make message data zero-copy between different ROS nodes, and different hardwares. It includes adapted types for Qualcomm robotics platforms.
Type Adaptation Feature (REP 2007) has enabled on ROS 2 Humble. This interface will allow us to define methods for serializing directly to the user requested type, and/or using that type in intra-process communication without ever converting it.
qrb_ros_transport is based on lib_mem_dmabuf, it is open sourced and apply to all platforms based on Linux.
dmabuf_transport is a zero-copy transport implementation for all platforms based on Linux, it only depends on Linux standard DMA buffer APIs.
System Requirements
Linux kernel version 5.12 and later, for kernel dma-buf support.
ROS 2 Humble and later, for type adaption support.
Quickstart
Currently, we only support build with QCLINUX SDK.
Setup QCLINUX SDK environments follow this document: Set up the cross-compile environment
Create
ros_ws
directory in<qirp_decompressed_workspace>/qirp-sdk/
mkdir -p <qirp_decompressed_workspace>/qirp-sdk/ros_ws
Clone this repository and dependencies under
<qirp_decompressed_workspace>/qirp-sdk/ros_ws
cd <qirp_decompressed_workspace>/qirp-sdk/ros_ws git clone https://github.com/quic-qrb-ros/lib_mem_dmabuf.git git clone https://github.com/quic-qrb-ros/qrb_ros_imu.git git clone https://github.com/quic-qrb-ros/qrb_ros_transport.git
Build projects
export AMENT_PREFIX_PATH="${OECORE_TARGET_SYSROOT}/usr;${OECORE_NATIVE_SYSROOT}/usr" export PYTHONPATH=${PYTHONPATH}:${OECORE_TARGET_SYSROOT}/usr/lib/python3.10/site-packages colcon build --merge-install --cmake-args \ -DPython3_ROOT_DIR=${OECORE_TARGET_SYSROOT}/usr \ -DPython3_NumPy_INCLUDE_DIR=${OECORE_TARGET_SYSROOT}/usr/lib/python3.10/site-packages/numpy/core/include \ -DPYTHON_SOABI=cpython-310-aarch64-linux-gnu -DCMAKE_STAGING_PREFIX=$(pwd)/install \ -DCMAKE_PREFIX_PATH=$(pwd)/install/share \ -DBUILD_TESTING=OFF
Packages
Supported Platforms
This package is designed and tested to be compatible with ROS 2 Humble running on Qualcomm RB3 gen2.
Hardware |
Software |
---|---|
LE.QCROBOTICS.1.0 |
Resources
ROS 2 Type Adaption: ROS 2 new feature to implement zero copy transport.
Linux dma-buf: Linux kernel subsystem for sharing buffers for hardware (DMA) access across multiple device drivers and subsystems, and for synchronizing asynchronous hardware access
lib_mem_dmabuf: Library for access and interact with Linux DMA heaps.
Updates
Date |
Changes |
2024-7-12 |
Add Imu type support |
2024-3-28 |
Initial release |