View Categories

Using the ROS2 node

The instructions below cover downloading and configuring the SDK, building necessary ROS2 nodes, and creating configurations for data acquisition and visualisation. Whether you’re performing 2-D and 3-D imaging or streaming data directly to ROS topics, this guide will help you establish a robust setup tailored to your application’s needs.

Download the SENSUS SDK #

To set up your sensor, start by downloading the SENSUS SDK for your desired platform. This download contains all the necessary library code for running the sensor. Choose a sensible directory for installation, such as:

/<username>/home/calyosensus_sdk

Download ROS2 Project #

Next, download the ROS2 project, which contains two required packages for the ROS2 node: calyosensus_msgs and calyosensus_ros. Place them in your ROS2 workspace under the path:

ros2_ws/src

Building the Node #

1. Open a New Terminal
Source your ROS2 installation by running the following command, replacing <version> with your ROS version:

source /opt/ros/<version>/setup.bash

2. Navigate to the Calyo ROS2 Folder
Change directory to the ROS2 folder for Sensus:

cd sdk_testing/calyosensusros2/

3. Build the Messages

To compile the message package, run:

colcon build --packages-select calyosensus_msgs

4. Build the Driver Node

To compile the driver node, specify platform arguments:

  • Platform: Choose from ["Linux"]
  • Architecture: Choose from ["amd64", "arm64"]

Run the following command, replacing /path/to/sdk with your SDK path: 

Configure Library Paths #

Every time you open a new environment to run the SDK, configure the LD_LIBRARY_PATH as follows:

1. Check Existing Library Paths

echo $LD_LIBRARY_PATH

2. Set Library Path
Update the path, adjusting PLATFORM and ARCHITECTURE as needed. For example:

export LD_LIBRARY_PATH="/path/to/calyosensus_sdk/lib/$PLATFORM/$ARCHITECTURE":$LD_LIBRARY_PATH

For a Linux Jetson system, you might use:

export LD_LIBRARY_PATH="/path/to/calyosensus_sdk/lib/Linux/arm64":$LD_LIBRARY_PATH

3. Verify the Updated Path

To verify the path was set correctly, run:

echo $LD_LIBRARY_PATH

Running the Driver Node #

To execute the driver node, from within the workspace with the package installed, use:

. install/local_setup.sh
ros2 run calyosensus_ros driver --ros-args -p engine_config:=/path/to/your/config.

Example Configurations #

Below are example configurations for reading data from a connected device and processing it with the ResolutionImager2Pipeline processor pipeline.

Example 1: Device Reader with ROS2 Publisher #

This configuration reads data from a device with a specified serial number, performing the ResolutionImager2Pipeline processing pipeline. The processed data is then published to a ROS2 topic named test_pub.

{
    "type" : "calyosensus",
    "mode" : "self_timed",
    "reader" : {
        "type" : "DeviceReader",
        "serial_number" : "CP66156A50003",
        "num_cycles" : 10,
        "max_distance" : 5.0
    },
    "processor" : {
        "type" : "ResolutionImager2Pipeline",
        "min_r" : -5.0,
        "max_r" : 5.0,
        "pixel_size" : 0.05
    },
    "writer" : {
        "type" : "RosDatasetPublisher",
        "topic_name" : "test_pub"
    }
}

Conclusion #

With the SENSUS SDK and ROS2 integration set up, you’re now ready to start collecting, processing, and visualising sensor data within your ROS2 environment. This configuration supports flexible data acquisition, allowing for both real-time operation and offline analysis, with outputs ranging from raw data to complex 2-D and 3-D imaging. This setup should provide a solid foundation for further development, experimentation, and deployment using PULSE sensors on ROS2 Humble and Ubuntu 22.04 or newer.