The officially supported MultiSense ROS2 driver
This driver was developed and tested using Jazzy Jalisco. Earlier ROS2 distros are not supported
If you are unable to use ROS2 Jazzy, please build v1.0.0 of the MultiSense ROS2 driver
Clone the MultiSense ROS2 driver
source /opt/ros/<ros2_distro>/setup.bash
mkdir ros2_ws && cd ros2_ws
git clone --recurse-submodules https://github.com/carnegierobotics/multisense_ros2 src
Ensure all the MultiSense ROS2 dependencies are installed using rosdep
sudo rosdep init
rosdep update
rosdep install --from-paths src -y --ignore-src
Build and install the ROS2 driver
colcon build
source install/setup.bash
ros2 launch multisense_ros multisense_launch.py
For the full set of launch arguments use
ros2 launch multisense_ros multisense_launch.py -s
MultiSense operation parameters including resolution, frame rate, gain, exposure gamma, etc. can be dynamically changed at runtime via the ROS2 parameter server.
For convince the MultiSense ROS2 driver uses the ROS2 generate_parameter_library for managing the majority of it's parameters
The rqt_reconfigure GUI can be used to dynamically change camera parameters during camera operation
The following command launches the rqt_reconfigure GUI
ros2 run rqt_reconfigure rqt_reconfigure
NOTE: You may need to click "Refresh" on the bottom left of the rqt_reconfigure panel to see the MultiSense configuration settings
The ROS2 parameter server has a command line interface to dynamically set MultiSense camera parameters at runtime.
The following command gets a full list of ROS2 parameters which can reconfigure the MultiSense at runtime
ros2 param list
To get the current framerate execute the following command
ros2 param get /multisense/sensor fps
To set the framerate to new value (in this example 15fps) execute the following command
ros2 param set /multisense/sensor fps 15
To get the current operating resolution execute the following command
ros2 param get /multisense/sensor sensor_resolution
To set the sensor resolution to new value (in this example 1/4 resolution with 256 disparities) execute the following command
ros2 param set /multisense/sensor sensor_resolution "[960, 600, 256]"
To get the current auto exposure execute the following command
ros2 param get /multisense/sensor image.auto_exposure_enabled
To enable/disable the camera's auto exposure algorithm (in this example disable) execute the following command
ros2 param set /multisense/sensor image.auto_exposure_enabled false
To get the current auto exposure execute the following command
ros2 param get /multisense/sensor aux.image.auto_exposure_enabled
To enable/disable the aux camera's auto exposure algorithm (in this example disable) execute the following command
ros2 param set /multisense/sensor aux.image.auto_exposure_enabled false
The MultiSense ROS2 driver supports the following three types of time synchronization.
- PTP time synchronization: If the camera has been properly configured to synchronize its time with a remote PTP grandmaster, enabling the
time.ptp_enabledparameter will stamp all sensor data with the PTP synchronized time. Enabling thetime.ptp_enabledparameter will override all other time synchronization methods. - Network time synchronization: For local testing where microsecond level synchronization is not critical, network time synchronization can be
used to update sensor data timestamps to match the host system time. This uses a simple request-response scheme to query the MultiSense system
time, and estimate the network latency between sending the request and receiving the response message. The adjusted offset is smoothed, and applied
to all published sensor data from the MultiSense ROS2 driver. Network time sync can be enabled using the
time.network_time_sync_enabled, and is the default time synchronization mode for the MultiSense driver - Camera time: Sensor data is published using the raw MultiSense system time. This time source starts at 0 when the camera is powered on.
This mode is enabled when the parameters
time.ptp_enabledandtime.network_time_sync_enabledare both set to false
