QRB ROS IMU
Overview
Qualcomm Sensor See Framework provides IMU data that obtained from the IMU driver via DSP side.
qrb_ros_imu
uses this framework to get the latest IMU data with high performance.
With the Qualcomm Sensor See Framework, data can achieve zero copy performance when coming out of the driver.
qrb_sensor_client
, which is a dynamic library, is based on this framework for helping developers to utilize this feature.
This will greatly reduce the latency between the ROS node and the driver.
This time consumption measurement is around 0.4ms, which is several tens of times
better than the performance where copying occurred before.
IMU data is widely used in robot localization, such as: SLAM(Simultaneous localization and mapping). These localization applications have more precise performance after integrating IMU data to predict position.
This package leverages type adaption and intra process communication to optimize message formats and dramatically accelerate the communication between participating nodes.
QuickStart
Setup Docker on device: Docker Setup.
Download source code
cd ${QRB_ROS_WS}/src git clone https://github.com/qualcomm-qrb-ros/lib_mem_dmabuf.git git clone https://github.com/qualcomm-qrb-ros/qrb_ros_imu.git git clone https://github.com/qualcomm-qrb-ros/qrb_ros_transport.git
Build packages
colcon build
Run
cd ${QRB_ROS_WS}/src source install/local_setup.sh ros2 run qrb_ros_imu imu_node
Setup QCLINUX SDK environments: Reference Getting Started - Environment Setup
Create workspace in QCLINUX SDK environment and clone source code
mkdir -p <qirp_decompressed_workspace>/qirp-sdk/ros_ws cd <qirp_decompressed_workspace>/qirp-sdk/ros_ws git clone https://github.com/qualcomm-qrb-ros/qrb_ros_imu.git
Build source code with QCLINUX SDK
export AMENT_PREFIX_PATH="${OECORE_NATIVE_SYSROOT}/usr:${OECORE_TARGET_SYSROOT}/usr" export PYTHONPATH=${OECORE_NATIVE_SYSROOT}/usr/lib/python3.12/site-packages/:${OECORE_TARGET_SYSROOT}/usr/lib/python3.12/site-packages/ colcon build --continue-on-error --cmake-args \ -DCMAKE_TOOLCHAIN_FILE=${OE_CMAKE_TOOLCHAIN_FILE} \ -DPYTHON_EXECUTABLE=${OECORE_NATIVE_SYSROOT}/usr/bin/python3 \ -DPython3_NumPy_INCLUDE_DIR=${OECORE_NATIVE_SYSROOT}/usr/lib/python3.12/site-packages/numpy/core/include \ -DCMAKE_MAKE_PROGRAM=/usr/bin/make \ -DBUILD_TESTING=OFF
Install ROS package to device
cd <qirp_decompressed_workspace>/qirp-sdk/ros_ws/install/qrb_ros_imu tar -czvf qrb_ros_imu.tar.gz include lib share scp qrb_ros_imu.tar.gz root@[ip-addr]:/home/ cd <qirp_decompressed_workspace>/qirp-sdk/ros_ws/install/qrb_sensor_client tar -czvf qrb_sensor_client.tar.gz include lib share scp qrb_sensor_client.tar.gz root@[ip-addr]:/home/ ssh root@[ip-addr] (ssh) mount -o remount rw / (ssh) tar --no-overwrite-dir --no-same-owner -zxf /home/qrb_ros_imu.tar.gz -C /usr/ (ssh) tar --no-overwrite-dir --no-same-owner -zxf /home/qrb_sensor_client.tar.gz -C /usr/
Run
(ssh) export HOME=/home (ssh) setenforce 0 (ssh) source /usr/bin/ros_setup.sh && source /usr/share/qirp-setup.sh (ssh) ros2 run qrb_ros_imu imu_node
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 |
Updates
Date |
Changes |
---|---|
2024-7-16 |
Added build in QCLINUX SDK |
2024-2-5 |
Initial release |