Package Summary
Tags | No category tags. |
Version | 1.0.2 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/beamaginelidar/l3cam_ros.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-26 |
Dev Status | DEVELOPED |
CI status | Continuous Integration |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Beamagine
Authors
- Beamagine
l3cam_ros
This package is an ROS driver for the L3Cam device manufactured by Beamagine. The driver relies on the library libL3Cam 0.1.18
provided by Beamagine as part of the L3Cam SDK. For more info on the L3Cam check the L3Cam User Manual.
If you are looking for this package for ROS2, go to the l3cam_ros2 package.
This package is supported only on Linux systems and has only been tested with ROS noetic on an Ubuntu 20.04 system.
Installation
Dependencies
First, you will need to install the L3Cam SDK.
Download the package from Beamagine’s L3Cam SDK 0.1.18 release repository and install the required package depending on your hardware architecture:
sudo dpkg -i <PACKAGE>
ROS Driver
Clone this repository in your catkin workspace (e.g. catkin_ws) and build:
cd ~/catkin_ws/src && git clone https://github.com/beamaginelidar/l3cam_ros
catkin_make
Access Permission
You will need to give permission to the cfg files.
cd ~/catkin_ws/src/l3cam_ros/cfg
chmod a+x Network.cfg Lidar.cfg Polarimetric.cfg Rgb.cfg Thermal.cfg AlliedWide.cfg AlliedNarrow.cfg
Operational Advice
Jumbo frames
You will need to enable jumbo frames on your ethernet adapter by increasing the MTU (Maximum Transmission Unit) on the network interface attached to the camera.
A jumbo frame is an Ethernet frame that is larger than 1500 bytes. Most Ethernet adapters support jumbo frames, however it is usually turned off by default. Please note in order to set a 9000 byte packet size on the camera, the Ethernet adapter must support a jumbo frame size of 9000 bytes or higher.
You can check what your current MTU setting is by running the following command:
ifconfig | grep mtu
You should increase the MTU to 9000
to allow jumbo frames. If you use Network Manager, this can be done by opening the network interface settings and editing the “MTU” box under the “Identity” tab.
See the “Linux host configuration” section of the L3Cam User Manual for full details.
Receive Buffer Size
It is also recommended to increase your network default and maximum receive buffer size.
You can check what your current buffer size is:
sudo sysctl 'net.core.rmem_max'
sudo sysctl 'net.core.rmem_default'
Update the buffer size with the following commands:
sudo sh -c "echo 'net.core.rmem_default=268435456' >> /etc/sysctl.conf"
sudo sh -c "echo 'net.core.rmem_max=268435456' >> /etc/sysctl.conf"
sudo sysctl -p
Port usage
libL3Cam
uses the following ports for streaming and communications:
PROTOCOL | PORT | CONFIGURATION |
---|---|---|
TCP | 6000 (L3CAM) | Fixed |
UDP | 6050 (LIDAR) | Fixed |
UDP | 6060 (Allied Wide, Polarimetric) | Fixed |
UDP | 6020 (Allied Narrow, RGB) | Fixed |
UDP | 6030 (LWIR) | Fixed |
RTSP | 5040 (LIDAR) | Reconfigurable |
RTSP | 5030 (Allied Wide, Polarimetric) | Reconfigurable |
RTSP | 5010 (Allied Narrow, RGB) | Reconfigurable |
RTSP | 5020 (LWIR) | Reconfigurable |
TCP is used internally by libL3Cam
and is transparent to the user. However, the system host must have the required port available.
Launch
l3cam
To run the l3cam_ros driver, launch the l3cam.launch
file specifying (if wanted) if the stream launch file, the configure launch file, rviz
(for visualization GUI) and rqt_reconfigure
(for dynamic reconfigure GUI) have to be launched too. By default, the values are as follows:
```
File truncated at 100 lines see the full file
Change log for l3cam_ros
All notable changes to the l3cam_ros package will be documented in this file.
[1.0.2] - 10-07-2024
Changed
- thermalTypes changed for newThermalTypes.
- LibL3CamStatus status types with ‘_status’ suffix to avoid errors.
- Econ wide implementation
Added
- libl3cam 0.1.18 new functionalities.
- Added missing namespace prefix on messages.
Fixed
- Fixed no error on lidar configuration bug.
- Bias value left and right bug.
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
-
The lidar pointcloud_color param RGBT_FUSION (7) value is not available and will return out of range error.
[1.0.1] - 15-03-2024
Changed
- Sensors header stamps with unix epoch timestamp
- Allied cameras stream in YUV
Added
- Topic for thermal float (pixels with temperature values)
- New libl3cam thermal camera functionalities
- Device info service
Fixed
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
[1.0.0] - 2023-12-11
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
roscpp | |
rospy | |
std_msgs | |
cv_bridge | |
sensor_msgs | |
message_generation | |
image_transport | |
dynamic_reconfigure | |
catkin | |
message_runtime |
System Dependencies
Dependant Packages
Launch files
- launch/configure_l3cam.launch
-
- network_conf [default: true]
- timeout_secs [default: 60]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 33.5]
- polarimetric_auto_exposure_time_range_maximum [default: 66470.6]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: false]
- rgb_exposure_time [default: 156]
- rgb_streaming_protocol [default: 0]
- thermal_colormap [default: 1]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: false]
- thermal_streaming_protocol [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_streaming_protocol [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_streaming_protocol [default: 0]
- launch/l3cam.launch
-
- stream [default: true]
- rviz [default: false]
- configure [default: true]
- rqt_reconfigure [default: false]
- timeout_secs [default: 30]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- local_address [default: ]
- device_address [default: ]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- lidar_rtsp_pipeline [default: ]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 40]
- polarimetric_auto_exposure_time_range_maximum [default: 66470]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- polarimetric_rtsp_pipeline [default: ]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: true]
- rgb_exposure_time [default: 156]
- rgb_resolution [default: 3]
- rgb_framerate [default: 10]
- rgb_streaming_protocol [default: 0]
- rgb_rtsp_pipeline [default: ]
- thermal_colormap [default: 5]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: true]
- thermal_streaming_protocol [default: 0]
- thermal_rtsp_pipeline [default: ]
- allied_wide_black_level [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_sharpness [default: 0]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_auto_mode_region_height [default: 1028]
- allied_wide_auto_mode_region_width [default: 1232]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_max_driver_buffers_count [default: 64]
- allied_wide_streaming_protocol [default: 0]
- allied_wide_rtsp_pipeline [default: ]
- allied_narrow_black_level [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_sharpness [default: 0]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_auto_mode_region_height [default: 1544]
- allied_narrow_auto_mode_region_width [default: 2064]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_max_driver_buffers_count [default: 64]
- allied_narrow_streaming_protocol [default: 0]
- allied_narrow_rtsp_pipeline [default: ]
- launch/stream_l3cam.launch
-
- timeout_secs [default: 60]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
Messages
Services
- srv/ChangeAlliedCameraAutoExposureTimeRange.srv
- srv/ChangeAlliedCameraAutoGainRange.srv
- srv/ChangeAlliedCameraBalanceRatio.srv
- srv/ChangeAlliedCameraBalanceRatioSelector.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoRate.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/ChangeAlliedCameraExposureTime.srv
- srv/ChangeAlliedCameraGain.srv
- srv/ChangeAlliedCameraGamma.srv
- srv/ChangeAlliedCameraHue.srv
- srv/ChangeAlliedCameraIntensityAutoPrecedence.srv
- srv/ChangeAlliedCameraIntensityControllerRegion.srv
- srv/ChangeAlliedCameraIntensityControllerTarget.srv
- srv/ChangeAlliedCameraSaturation.srv
- srv/ChangeAutobiasValue.srv
- srv/ChangeBiasValue.srv
- srv/ChangeDistanceRange.srv
- srv/ChangeNetworkConfiguration.srv
- srv/ChangePointcloudColor.srv
- srv/ChangePointcloudColorRange.srv
- srv/ChangePolarimetricCameraAutoExposureTimeRange.srv
- srv/ChangePolarimetricCameraAutoGainRange.srv
- srv/ChangePolarimetricCameraBlackLevel.srv
- srv/ChangePolarimetricCameraBrightness.srv
- srv/ChangePolarimetricCameraExposureTime.srv
- srv/ChangePolarimetricCameraGain.srv
- srv/ChangePolarimetricCameraProcessType.srv
- srv/ChangeRgbCameraBrightness.srv
- srv/ChangeRgbCameraContrast.srv
- srv/ChangeRgbCameraExposureTime.srv
- srv/ChangeRgbCameraGain.srv
- srv/ChangeRgbCameraGamma.srv
- srv/ChangeRgbCameraSaturation.srv
- srv/ChangeRgbCameraSharpness.srv
- srv/ChangeRgbCameraWhiteBalance.srv
- srv/ChangeStreamingProtocol.srv
- srv/ChangeThermalCameraColormap.srv
- srv/ChangeThermalCameraProcessingPipeline.srv
- srv/ChangeThermalCameraTemperatureFilter.srv
- srv/EnableAlliedCameraAutoExposureTime.srv
- srv/EnableAlliedCameraAutoGain.srv
- srv/EnableAlliedCameraAutoWhiteBalance.srv
- srv/EnableAutoBias.srv
- srv/EnablePolarimetricCameraAutoExposureTime.srv
- srv/EnablePolarimetricCameraAutoGain.srv
- srv/EnablePolarimetricCameraStreamProcessedImage.srv
- srv/EnableRgbCameraAutoExposureTime.srv
- srv/EnableRgbCameraAutoWhiteBalance.srv
- srv/EnableThermalCameraTemperatureDataUdp.srv
- srv/EnableThermalCameraTemperatureFilter.srv
- srv/FindDevices.srv
- srv/GetAlliedCameraAutoExposureTime.srv
- srv/GetAlliedCameraAutoExposureTimeRange.srv
- srv/GetAlliedCameraAutoGain.srv
- srv/GetAlliedCameraAutoGainRange.srv
- srv/GetAlliedCameraAutoModeRegion.srv
- srv/GetAlliedCameraAutoWhiteBalance.srv
- srv/GetAlliedCameraBalanceRatio.srv
- srv/GetAlliedCameraBalanceRatioSelector.srv
- srv/GetAlliedCameraBalanceWhiteAutoRate.srv
- srv/GetAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/GetAlliedCameraBlackLevel.srv
- srv/GetAlliedCameraExposureTime.srv
- srv/GetAlliedCameraGain.srv
- srv/GetAlliedCameraGamma.srv
- srv/GetAlliedCameraHue.srv
- srv/GetAlliedCameraIntensityAutoPrecedence.srv
- srv/GetAlliedCameraIntensityControllerRegion.srv
- srv/GetAlliedCameraIntensityControllerTarget.srv
- srv/GetAlliedCameraMaxDriverBuffersCount.srv
- srv/GetAlliedCameraSaturation.srv
- srv/GetAlliedCameraSharpness.srv
- srv/GetAutobiasValue.srv
- srv/GetDeviceInfo.srv
- srv/GetDeviceStatus.srv
- srv/GetDeviceTemperatures.srv
- srv/GetLocalServerAddress.srv
- srv/GetNetworkConfiguration.srv
- srv/GetRtspPipeline.srv
- srv/GetSensorsAvailable.srv
- srv/GetVersion.srv
- srv/Initialize.srv
- srv/LibL3camStatus.srv
- srv/PowerOffDevice.srv
- srv/SensorDisconnected.srv
- srv/SetBiasShortRange.srv
- srv/SetPolarimetricCameraDefaultSettings.srv
- srv/SetRgbCameraDefaultSettings.srv
- srv/StartDevice.srv
- srv/StartStream.srv
- srv/StopDevice.srv
- srv/StopStream.srv
- srv/Terminate.srv
Plugins
Recent questions tagged l3cam_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.0.2 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/beamaginelidar/l3cam_ros.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-26 |
Dev Status | DEVELOPED |
CI status | Continuous Integration |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Beamagine
Authors
- Beamagine
l3cam_ros
This package is an ROS driver for the L3Cam device manufactured by Beamagine. The driver relies on the library libL3Cam 0.1.18
provided by Beamagine as part of the L3Cam SDK. For more info on the L3Cam check the L3Cam User Manual.
If you are looking for this package for ROS2, go to the l3cam_ros2 package.
This package is supported only on Linux systems and has only been tested with ROS noetic on an Ubuntu 20.04 system.
Installation
Dependencies
First, you will need to install the L3Cam SDK.
Download the package from Beamagine’s L3Cam SDK 0.1.18 release repository and install the required package depending on your hardware architecture:
sudo dpkg -i <PACKAGE>
ROS Driver
Clone this repository in your catkin workspace (e.g. catkin_ws) and build:
cd ~/catkin_ws/src && git clone https://github.com/beamaginelidar/l3cam_ros
catkin_make
Access Permission
You will need to give permission to the cfg files.
cd ~/catkin_ws/src/l3cam_ros/cfg
chmod a+x Network.cfg Lidar.cfg Polarimetric.cfg Rgb.cfg Thermal.cfg AlliedWide.cfg AlliedNarrow.cfg
Operational Advice
Jumbo frames
You will need to enable jumbo frames on your ethernet adapter by increasing the MTU (Maximum Transmission Unit) on the network interface attached to the camera.
A jumbo frame is an Ethernet frame that is larger than 1500 bytes. Most Ethernet adapters support jumbo frames, however it is usually turned off by default. Please note in order to set a 9000 byte packet size on the camera, the Ethernet adapter must support a jumbo frame size of 9000 bytes or higher.
You can check what your current MTU setting is by running the following command:
ifconfig | grep mtu
You should increase the MTU to 9000
to allow jumbo frames. If you use Network Manager, this can be done by opening the network interface settings and editing the “MTU” box under the “Identity” tab.
See the “Linux host configuration” section of the L3Cam User Manual for full details.
Receive Buffer Size
It is also recommended to increase your network default and maximum receive buffer size.
You can check what your current buffer size is:
sudo sysctl 'net.core.rmem_max'
sudo sysctl 'net.core.rmem_default'
Update the buffer size with the following commands:
sudo sh -c "echo 'net.core.rmem_default=268435456' >> /etc/sysctl.conf"
sudo sh -c "echo 'net.core.rmem_max=268435456' >> /etc/sysctl.conf"
sudo sysctl -p
Port usage
libL3Cam
uses the following ports for streaming and communications:
PROTOCOL | PORT | CONFIGURATION |
---|---|---|
TCP | 6000 (L3CAM) | Fixed |
UDP | 6050 (LIDAR) | Fixed |
UDP | 6060 (Allied Wide, Polarimetric) | Fixed |
UDP | 6020 (Allied Narrow, RGB) | Fixed |
UDP | 6030 (LWIR) | Fixed |
RTSP | 5040 (LIDAR) | Reconfigurable |
RTSP | 5030 (Allied Wide, Polarimetric) | Reconfigurable |
RTSP | 5010 (Allied Narrow, RGB) | Reconfigurable |
RTSP | 5020 (LWIR) | Reconfigurable |
TCP is used internally by libL3Cam
and is transparent to the user. However, the system host must have the required port available.
Launch
l3cam
To run the l3cam_ros driver, launch the l3cam.launch
file specifying (if wanted) if the stream launch file, the configure launch file, rviz
(for visualization GUI) and rqt_reconfigure
(for dynamic reconfigure GUI) have to be launched too. By default, the values are as follows:
```
File truncated at 100 lines see the full file
Change log for l3cam_ros
All notable changes to the l3cam_ros package will be documented in this file.
[1.0.2] - 10-07-2024
Changed
- thermalTypes changed for newThermalTypes.
- LibL3CamStatus status types with ‘_status’ suffix to avoid errors.
- Econ wide implementation
Added
- libl3cam 0.1.18 new functionalities.
- Added missing namespace prefix on messages.
Fixed
- Fixed no error on lidar configuration bug.
- Bias value left and right bug.
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
-
The lidar pointcloud_color param RGBT_FUSION (7) value is not available and will return out of range error.
[1.0.1] - 15-03-2024
Changed
- Sensors header stamps with unix epoch timestamp
- Allied cameras stream in YUV
Added
- Topic for thermal float (pixels with temperature values)
- New libl3cam thermal camera functionalities
- Device info service
Fixed
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
[1.0.0] - 2023-12-11
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
roscpp | |
rospy | |
std_msgs | |
cv_bridge | |
sensor_msgs | |
message_generation | |
image_transport | |
dynamic_reconfigure | |
catkin | |
message_runtime |
System Dependencies
Dependant Packages
Launch files
- launch/configure_l3cam.launch
-
- network_conf [default: true]
- timeout_secs [default: 60]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 33.5]
- polarimetric_auto_exposure_time_range_maximum [default: 66470.6]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: false]
- rgb_exposure_time [default: 156]
- rgb_streaming_protocol [default: 0]
- thermal_colormap [default: 1]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: false]
- thermal_streaming_protocol [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_streaming_protocol [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_streaming_protocol [default: 0]
- launch/l3cam.launch
-
- stream [default: true]
- rviz [default: false]
- configure [default: true]
- rqt_reconfigure [default: false]
- timeout_secs [default: 30]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- local_address [default: ]
- device_address [default: ]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- lidar_rtsp_pipeline [default: ]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 40]
- polarimetric_auto_exposure_time_range_maximum [default: 66470]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- polarimetric_rtsp_pipeline [default: ]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: true]
- rgb_exposure_time [default: 156]
- rgb_resolution [default: 3]
- rgb_framerate [default: 10]
- rgb_streaming_protocol [default: 0]
- rgb_rtsp_pipeline [default: ]
- thermal_colormap [default: 5]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: true]
- thermal_streaming_protocol [default: 0]
- thermal_rtsp_pipeline [default: ]
- allied_wide_black_level [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_sharpness [default: 0]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_auto_mode_region_height [default: 1028]
- allied_wide_auto_mode_region_width [default: 1232]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_max_driver_buffers_count [default: 64]
- allied_wide_streaming_protocol [default: 0]
- allied_wide_rtsp_pipeline [default: ]
- allied_narrow_black_level [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_sharpness [default: 0]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_auto_mode_region_height [default: 1544]
- allied_narrow_auto_mode_region_width [default: 2064]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_max_driver_buffers_count [default: 64]
- allied_narrow_streaming_protocol [default: 0]
- allied_narrow_rtsp_pipeline [default: ]
- launch/stream_l3cam.launch
-
- timeout_secs [default: 60]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
Messages
Services
- srv/ChangeAlliedCameraAutoExposureTimeRange.srv
- srv/ChangeAlliedCameraAutoGainRange.srv
- srv/ChangeAlliedCameraBalanceRatio.srv
- srv/ChangeAlliedCameraBalanceRatioSelector.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoRate.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/ChangeAlliedCameraExposureTime.srv
- srv/ChangeAlliedCameraGain.srv
- srv/ChangeAlliedCameraGamma.srv
- srv/ChangeAlliedCameraHue.srv
- srv/ChangeAlliedCameraIntensityAutoPrecedence.srv
- srv/ChangeAlliedCameraIntensityControllerRegion.srv
- srv/ChangeAlliedCameraIntensityControllerTarget.srv
- srv/ChangeAlliedCameraSaturation.srv
- srv/ChangeAutobiasValue.srv
- srv/ChangeBiasValue.srv
- srv/ChangeDistanceRange.srv
- srv/ChangeNetworkConfiguration.srv
- srv/ChangePointcloudColor.srv
- srv/ChangePointcloudColorRange.srv
- srv/ChangePolarimetricCameraAutoExposureTimeRange.srv
- srv/ChangePolarimetricCameraAutoGainRange.srv
- srv/ChangePolarimetricCameraBlackLevel.srv
- srv/ChangePolarimetricCameraBrightness.srv
- srv/ChangePolarimetricCameraExposureTime.srv
- srv/ChangePolarimetricCameraGain.srv
- srv/ChangePolarimetricCameraProcessType.srv
- srv/ChangeRgbCameraBrightness.srv
- srv/ChangeRgbCameraContrast.srv
- srv/ChangeRgbCameraExposureTime.srv
- srv/ChangeRgbCameraGain.srv
- srv/ChangeRgbCameraGamma.srv
- srv/ChangeRgbCameraSaturation.srv
- srv/ChangeRgbCameraSharpness.srv
- srv/ChangeRgbCameraWhiteBalance.srv
- srv/ChangeStreamingProtocol.srv
- srv/ChangeThermalCameraColormap.srv
- srv/ChangeThermalCameraProcessingPipeline.srv
- srv/ChangeThermalCameraTemperatureFilter.srv
- srv/EnableAlliedCameraAutoExposureTime.srv
- srv/EnableAlliedCameraAutoGain.srv
- srv/EnableAlliedCameraAutoWhiteBalance.srv
- srv/EnableAutoBias.srv
- srv/EnablePolarimetricCameraAutoExposureTime.srv
- srv/EnablePolarimetricCameraAutoGain.srv
- srv/EnablePolarimetricCameraStreamProcessedImage.srv
- srv/EnableRgbCameraAutoExposureTime.srv
- srv/EnableRgbCameraAutoWhiteBalance.srv
- srv/EnableThermalCameraTemperatureDataUdp.srv
- srv/EnableThermalCameraTemperatureFilter.srv
- srv/FindDevices.srv
- srv/GetAlliedCameraAutoExposureTime.srv
- srv/GetAlliedCameraAutoExposureTimeRange.srv
- srv/GetAlliedCameraAutoGain.srv
- srv/GetAlliedCameraAutoGainRange.srv
- srv/GetAlliedCameraAutoModeRegion.srv
- srv/GetAlliedCameraAutoWhiteBalance.srv
- srv/GetAlliedCameraBalanceRatio.srv
- srv/GetAlliedCameraBalanceRatioSelector.srv
- srv/GetAlliedCameraBalanceWhiteAutoRate.srv
- srv/GetAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/GetAlliedCameraBlackLevel.srv
- srv/GetAlliedCameraExposureTime.srv
- srv/GetAlliedCameraGain.srv
- srv/GetAlliedCameraGamma.srv
- srv/GetAlliedCameraHue.srv
- srv/GetAlliedCameraIntensityAutoPrecedence.srv
- srv/GetAlliedCameraIntensityControllerRegion.srv
- srv/GetAlliedCameraIntensityControllerTarget.srv
- srv/GetAlliedCameraMaxDriverBuffersCount.srv
- srv/GetAlliedCameraSaturation.srv
- srv/GetAlliedCameraSharpness.srv
- srv/GetAutobiasValue.srv
- srv/GetDeviceInfo.srv
- srv/GetDeviceStatus.srv
- srv/GetDeviceTemperatures.srv
- srv/GetLocalServerAddress.srv
- srv/GetNetworkConfiguration.srv
- srv/GetRtspPipeline.srv
- srv/GetSensorsAvailable.srv
- srv/GetVersion.srv
- srv/Initialize.srv
- srv/LibL3camStatus.srv
- srv/PowerOffDevice.srv
- srv/SensorDisconnected.srv
- srv/SetBiasShortRange.srv
- srv/SetPolarimetricCameraDefaultSettings.srv
- srv/SetRgbCameraDefaultSettings.srv
- srv/StartDevice.srv
- srv/StartStream.srv
- srv/StopDevice.srv
- srv/StopStream.srv
- srv/Terminate.srv
Plugins
Recent questions tagged l3cam_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.0.2 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/beamaginelidar/l3cam_ros.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-26 |
Dev Status | DEVELOPED |
CI status | Continuous Integration |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Beamagine
Authors
- Beamagine
l3cam_ros
This package is an ROS driver for the L3Cam device manufactured by Beamagine. The driver relies on the library libL3Cam 0.1.18
provided by Beamagine as part of the L3Cam SDK. For more info on the L3Cam check the L3Cam User Manual.
If you are looking for this package for ROS2, go to the l3cam_ros2 package.
This package is supported only on Linux systems and has only been tested with ROS noetic on an Ubuntu 20.04 system.
Installation
Dependencies
First, you will need to install the L3Cam SDK.
Download the package from Beamagine’s L3Cam SDK 0.1.18 release repository and install the required package depending on your hardware architecture:
sudo dpkg -i <PACKAGE>
ROS Driver
Clone this repository in your catkin workspace (e.g. catkin_ws) and build:
cd ~/catkin_ws/src && git clone https://github.com/beamaginelidar/l3cam_ros
catkin_make
Access Permission
You will need to give permission to the cfg files.
cd ~/catkin_ws/src/l3cam_ros/cfg
chmod a+x Network.cfg Lidar.cfg Polarimetric.cfg Rgb.cfg Thermal.cfg AlliedWide.cfg AlliedNarrow.cfg
Operational Advice
Jumbo frames
You will need to enable jumbo frames on your ethernet adapter by increasing the MTU (Maximum Transmission Unit) on the network interface attached to the camera.
A jumbo frame is an Ethernet frame that is larger than 1500 bytes. Most Ethernet adapters support jumbo frames, however it is usually turned off by default. Please note in order to set a 9000 byte packet size on the camera, the Ethernet adapter must support a jumbo frame size of 9000 bytes or higher.
You can check what your current MTU setting is by running the following command:
ifconfig | grep mtu
You should increase the MTU to 9000
to allow jumbo frames. If you use Network Manager, this can be done by opening the network interface settings and editing the “MTU” box under the “Identity” tab.
See the “Linux host configuration” section of the L3Cam User Manual for full details.
Receive Buffer Size
It is also recommended to increase your network default and maximum receive buffer size.
You can check what your current buffer size is:
sudo sysctl 'net.core.rmem_max'
sudo sysctl 'net.core.rmem_default'
Update the buffer size with the following commands:
sudo sh -c "echo 'net.core.rmem_default=268435456' >> /etc/sysctl.conf"
sudo sh -c "echo 'net.core.rmem_max=268435456' >> /etc/sysctl.conf"
sudo sysctl -p
Port usage
libL3Cam
uses the following ports for streaming and communications:
PROTOCOL | PORT | CONFIGURATION |
---|---|---|
TCP | 6000 (L3CAM) | Fixed |
UDP | 6050 (LIDAR) | Fixed |
UDP | 6060 (Allied Wide, Polarimetric) | Fixed |
UDP | 6020 (Allied Narrow, RGB) | Fixed |
UDP | 6030 (LWIR) | Fixed |
RTSP | 5040 (LIDAR) | Reconfigurable |
RTSP | 5030 (Allied Wide, Polarimetric) | Reconfigurable |
RTSP | 5010 (Allied Narrow, RGB) | Reconfigurable |
RTSP | 5020 (LWIR) | Reconfigurable |
TCP is used internally by libL3Cam
and is transparent to the user. However, the system host must have the required port available.
Launch
l3cam
To run the l3cam_ros driver, launch the l3cam.launch
file specifying (if wanted) if the stream launch file, the configure launch file, rviz
(for visualization GUI) and rqt_reconfigure
(for dynamic reconfigure GUI) have to be launched too. By default, the values are as follows:
```
File truncated at 100 lines see the full file
Change log for l3cam_ros
All notable changes to the l3cam_ros package will be documented in this file.
[1.0.2] - 10-07-2024
Changed
- thermalTypes changed for newThermalTypes.
- LibL3CamStatus status types with ‘_status’ suffix to avoid errors.
- Econ wide implementation
Added
- libl3cam 0.1.18 new functionalities.
- Added missing namespace prefix on messages.
Fixed
- Fixed no error on lidar configuration bug.
- Bias value left and right bug.
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
-
The lidar pointcloud_color param RGBT_FUSION (7) value is not available and will return out of range error.
[1.0.1] - 15-03-2024
Changed
- Sensors header stamps with unix epoch timestamp
- Allied cameras stream in YUV
Added
- Topic for thermal float (pixels with temperature values)
- New libl3cam thermal camera functionalities
- Device info service
Fixed
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
[1.0.0] - 2023-12-11
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
roscpp | |
rospy | |
std_msgs | |
cv_bridge | |
sensor_msgs | |
message_generation | |
image_transport | |
dynamic_reconfigure | |
catkin | |
message_runtime |
System Dependencies
Dependant Packages
Launch files
- launch/configure_l3cam.launch
-
- network_conf [default: true]
- timeout_secs [default: 60]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 33.5]
- polarimetric_auto_exposure_time_range_maximum [default: 66470.6]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: false]
- rgb_exposure_time [default: 156]
- rgb_streaming_protocol [default: 0]
- thermal_colormap [default: 1]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: false]
- thermal_streaming_protocol [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_streaming_protocol [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_streaming_protocol [default: 0]
- launch/l3cam.launch
-
- stream [default: true]
- rviz [default: false]
- configure [default: true]
- rqt_reconfigure [default: false]
- timeout_secs [default: 30]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- local_address [default: ]
- device_address [default: ]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- lidar_rtsp_pipeline [default: ]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 40]
- polarimetric_auto_exposure_time_range_maximum [default: 66470]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- polarimetric_rtsp_pipeline [default: ]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: true]
- rgb_exposure_time [default: 156]
- rgb_resolution [default: 3]
- rgb_framerate [default: 10]
- rgb_streaming_protocol [default: 0]
- rgb_rtsp_pipeline [default: ]
- thermal_colormap [default: 5]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: true]
- thermal_streaming_protocol [default: 0]
- thermal_rtsp_pipeline [default: ]
- allied_wide_black_level [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_sharpness [default: 0]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_auto_mode_region_height [default: 1028]
- allied_wide_auto_mode_region_width [default: 1232]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_max_driver_buffers_count [default: 64]
- allied_wide_streaming_protocol [default: 0]
- allied_wide_rtsp_pipeline [default: ]
- allied_narrow_black_level [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_sharpness [default: 0]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_auto_mode_region_height [default: 1544]
- allied_narrow_auto_mode_region_width [default: 2064]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_max_driver_buffers_count [default: 64]
- allied_narrow_streaming_protocol [default: 0]
- allied_narrow_rtsp_pipeline [default: ]
- launch/stream_l3cam.launch
-
- timeout_secs [default: 60]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
Messages
Services
- srv/ChangeAlliedCameraAutoExposureTimeRange.srv
- srv/ChangeAlliedCameraAutoGainRange.srv
- srv/ChangeAlliedCameraBalanceRatio.srv
- srv/ChangeAlliedCameraBalanceRatioSelector.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoRate.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/ChangeAlliedCameraExposureTime.srv
- srv/ChangeAlliedCameraGain.srv
- srv/ChangeAlliedCameraGamma.srv
- srv/ChangeAlliedCameraHue.srv
- srv/ChangeAlliedCameraIntensityAutoPrecedence.srv
- srv/ChangeAlliedCameraIntensityControllerRegion.srv
- srv/ChangeAlliedCameraIntensityControllerTarget.srv
- srv/ChangeAlliedCameraSaturation.srv
- srv/ChangeAutobiasValue.srv
- srv/ChangeBiasValue.srv
- srv/ChangeDistanceRange.srv
- srv/ChangeNetworkConfiguration.srv
- srv/ChangePointcloudColor.srv
- srv/ChangePointcloudColorRange.srv
- srv/ChangePolarimetricCameraAutoExposureTimeRange.srv
- srv/ChangePolarimetricCameraAutoGainRange.srv
- srv/ChangePolarimetricCameraBlackLevel.srv
- srv/ChangePolarimetricCameraBrightness.srv
- srv/ChangePolarimetricCameraExposureTime.srv
- srv/ChangePolarimetricCameraGain.srv
- srv/ChangePolarimetricCameraProcessType.srv
- srv/ChangeRgbCameraBrightness.srv
- srv/ChangeRgbCameraContrast.srv
- srv/ChangeRgbCameraExposureTime.srv
- srv/ChangeRgbCameraGain.srv
- srv/ChangeRgbCameraGamma.srv
- srv/ChangeRgbCameraSaturation.srv
- srv/ChangeRgbCameraSharpness.srv
- srv/ChangeRgbCameraWhiteBalance.srv
- srv/ChangeStreamingProtocol.srv
- srv/ChangeThermalCameraColormap.srv
- srv/ChangeThermalCameraProcessingPipeline.srv
- srv/ChangeThermalCameraTemperatureFilter.srv
- srv/EnableAlliedCameraAutoExposureTime.srv
- srv/EnableAlliedCameraAutoGain.srv
- srv/EnableAlliedCameraAutoWhiteBalance.srv
- srv/EnableAutoBias.srv
- srv/EnablePolarimetricCameraAutoExposureTime.srv
- srv/EnablePolarimetricCameraAutoGain.srv
- srv/EnablePolarimetricCameraStreamProcessedImage.srv
- srv/EnableRgbCameraAutoExposureTime.srv
- srv/EnableRgbCameraAutoWhiteBalance.srv
- srv/EnableThermalCameraTemperatureDataUdp.srv
- srv/EnableThermalCameraTemperatureFilter.srv
- srv/FindDevices.srv
- srv/GetAlliedCameraAutoExposureTime.srv
- srv/GetAlliedCameraAutoExposureTimeRange.srv
- srv/GetAlliedCameraAutoGain.srv
- srv/GetAlliedCameraAutoGainRange.srv
- srv/GetAlliedCameraAutoModeRegion.srv
- srv/GetAlliedCameraAutoWhiteBalance.srv
- srv/GetAlliedCameraBalanceRatio.srv
- srv/GetAlliedCameraBalanceRatioSelector.srv
- srv/GetAlliedCameraBalanceWhiteAutoRate.srv
- srv/GetAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/GetAlliedCameraBlackLevel.srv
- srv/GetAlliedCameraExposureTime.srv
- srv/GetAlliedCameraGain.srv
- srv/GetAlliedCameraGamma.srv
- srv/GetAlliedCameraHue.srv
- srv/GetAlliedCameraIntensityAutoPrecedence.srv
- srv/GetAlliedCameraIntensityControllerRegion.srv
- srv/GetAlliedCameraIntensityControllerTarget.srv
- srv/GetAlliedCameraMaxDriverBuffersCount.srv
- srv/GetAlliedCameraSaturation.srv
- srv/GetAlliedCameraSharpness.srv
- srv/GetAutobiasValue.srv
- srv/GetDeviceInfo.srv
- srv/GetDeviceStatus.srv
- srv/GetDeviceTemperatures.srv
- srv/GetLocalServerAddress.srv
- srv/GetNetworkConfiguration.srv
- srv/GetRtspPipeline.srv
- srv/GetSensorsAvailable.srv
- srv/GetVersion.srv
- srv/Initialize.srv
- srv/LibL3camStatus.srv
- srv/PowerOffDevice.srv
- srv/SensorDisconnected.srv
- srv/SetBiasShortRange.srv
- srv/SetPolarimetricCameraDefaultSettings.srv
- srv/SetRgbCameraDefaultSettings.srv
- srv/StartDevice.srv
- srv/StartStream.srv
- srv/StopDevice.srv
- srv/StopStream.srv
- srv/Terminate.srv
Plugins
Recent questions tagged l3cam_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.0.2 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/beamaginelidar/l3cam_ros.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-26 |
Dev Status | DEVELOPED |
CI status | Continuous Integration |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Beamagine
Authors
- Beamagine
l3cam_ros
This package is an ROS driver for the L3Cam device manufactured by Beamagine. The driver relies on the library libL3Cam 0.1.18
provided by Beamagine as part of the L3Cam SDK. For more info on the L3Cam check the L3Cam User Manual.
If you are looking for this package for ROS2, go to the l3cam_ros2 package.
This package is supported only on Linux systems and has only been tested with ROS noetic on an Ubuntu 20.04 system.
Installation
Dependencies
First, you will need to install the L3Cam SDK.
Download the package from Beamagine’s L3Cam SDK 0.1.18 release repository and install the required package depending on your hardware architecture:
sudo dpkg -i <PACKAGE>
ROS Driver
Clone this repository in your catkin workspace (e.g. catkin_ws) and build:
cd ~/catkin_ws/src && git clone https://github.com/beamaginelidar/l3cam_ros
catkin_make
Access Permission
You will need to give permission to the cfg files.
cd ~/catkin_ws/src/l3cam_ros/cfg
chmod a+x Network.cfg Lidar.cfg Polarimetric.cfg Rgb.cfg Thermal.cfg AlliedWide.cfg AlliedNarrow.cfg
Operational Advice
Jumbo frames
You will need to enable jumbo frames on your ethernet adapter by increasing the MTU (Maximum Transmission Unit) on the network interface attached to the camera.
A jumbo frame is an Ethernet frame that is larger than 1500 bytes. Most Ethernet adapters support jumbo frames, however it is usually turned off by default. Please note in order to set a 9000 byte packet size on the camera, the Ethernet adapter must support a jumbo frame size of 9000 bytes or higher.
You can check what your current MTU setting is by running the following command:
ifconfig | grep mtu
You should increase the MTU to 9000
to allow jumbo frames. If you use Network Manager, this can be done by opening the network interface settings and editing the “MTU” box under the “Identity” tab.
See the “Linux host configuration” section of the L3Cam User Manual for full details.
Receive Buffer Size
It is also recommended to increase your network default and maximum receive buffer size.
You can check what your current buffer size is:
sudo sysctl 'net.core.rmem_max'
sudo sysctl 'net.core.rmem_default'
Update the buffer size with the following commands:
sudo sh -c "echo 'net.core.rmem_default=268435456' >> /etc/sysctl.conf"
sudo sh -c "echo 'net.core.rmem_max=268435456' >> /etc/sysctl.conf"
sudo sysctl -p
Port usage
libL3Cam
uses the following ports for streaming and communications:
PROTOCOL | PORT | CONFIGURATION |
---|---|---|
TCP | 6000 (L3CAM) | Fixed |
UDP | 6050 (LIDAR) | Fixed |
UDP | 6060 (Allied Wide, Polarimetric) | Fixed |
UDP | 6020 (Allied Narrow, RGB) | Fixed |
UDP | 6030 (LWIR) | Fixed |
RTSP | 5040 (LIDAR) | Reconfigurable |
RTSP | 5030 (Allied Wide, Polarimetric) | Reconfigurable |
RTSP | 5010 (Allied Narrow, RGB) | Reconfigurable |
RTSP | 5020 (LWIR) | Reconfigurable |
TCP is used internally by libL3Cam
and is transparent to the user. However, the system host must have the required port available.
Launch
l3cam
To run the l3cam_ros driver, launch the l3cam.launch
file specifying (if wanted) if the stream launch file, the configure launch file, rviz
(for visualization GUI) and rqt_reconfigure
(for dynamic reconfigure GUI) have to be launched too. By default, the values are as follows:
```
File truncated at 100 lines see the full file
Change log for l3cam_ros
All notable changes to the l3cam_ros package will be documented in this file.
[1.0.2] - 10-07-2024
Changed
- thermalTypes changed for newThermalTypes.
- LibL3CamStatus status types with ‘_status’ suffix to avoid errors.
- Econ wide implementation
Added
- libl3cam 0.1.18 new functionalities.
- Added missing namespace prefix on messages.
Fixed
- Fixed no error on lidar configuration bug.
- Bias value left and right bug.
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
-
The lidar pointcloud_color param RGBT_FUSION (7) value is not available and will return out of range error.
[1.0.1] - 15-03-2024
Changed
- Sensors header stamps with unix epoch timestamp
- Allied cameras stream in YUV
Added
- Topic for thermal float (pixels with temperature values)
- New libl3cam thermal camera functionalities
- Device info service
Fixed
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
[1.0.0] - 2023-12-11
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
roscpp | |
rospy | |
std_msgs | |
cv_bridge | |
sensor_msgs | |
message_generation | |
image_transport | |
dynamic_reconfigure | |
catkin | |
message_runtime |
System Dependencies
Dependant Packages
Launch files
- launch/configure_l3cam.launch
-
- network_conf [default: true]
- timeout_secs [default: 60]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 33.5]
- polarimetric_auto_exposure_time_range_maximum [default: 66470.6]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: false]
- rgb_exposure_time [default: 156]
- rgb_streaming_protocol [default: 0]
- thermal_colormap [default: 1]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: false]
- thermal_streaming_protocol [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_streaming_protocol [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_streaming_protocol [default: 0]
- launch/l3cam.launch
-
- stream [default: true]
- rviz [default: false]
- configure [default: true]
- rqt_reconfigure [default: false]
- timeout_secs [default: 30]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- local_address [default: ]
- device_address [default: ]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- lidar_rtsp_pipeline [default: ]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 40]
- polarimetric_auto_exposure_time_range_maximum [default: 66470]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- polarimetric_rtsp_pipeline [default: ]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: true]
- rgb_exposure_time [default: 156]
- rgb_resolution [default: 3]
- rgb_framerate [default: 10]
- rgb_streaming_protocol [default: 0]
- rgb_rtsp_pipeline [default: ]
- thermal_colormap [default: 5]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: true]
- thermal_streaming_protocol [default: 0]
- thermal_rtsp_pipeline [default: ]
- allied_wide_black_level [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_sharpness [default: 0]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_auto_mode_region_height [default: 1028]
- allied_wide_auto_mode_region_width [default: 1232]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_max_driver_buffers_count [default: 64]
- allied_wide_streaming_protocol [default: 0]
- allied_wide_rtsp_pipeline [default: ]
- allied_narrow_black_level [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_sharpness [default: 0]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_auto_mode_region_height [default: 1544]
- allied_narrow_auto_mode_region_width [default: 2064]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_max_driver_buffers_count [default: 64]
- allied_narrow_streaming_protocol [default: 0]
- allied_narrow_rtsp_pipeline [default: ]
- launch/stream_l3cam.launch
-
- timeout_secs [default: 60]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
Messages
Services
- srv/ChangeAlliedCameraAutoExposureTimeRange.srv
- srv/ChangeAlliedCameraAutoGainRange.srv
- srv/ChangeAlliedCameraBalanceRatio.srv
- srv/ChangeAlliedCameraBalanceRatioSelector.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoRate.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/ChangeAlliedCameraExposureTime.srv
- srv/ChangeAlliedCameraGain.srv
- srv/ChangeAlliedCameraGamma.srv
- srv/ChangeAlliedCameraHue.srv
- srv/ChangeAlliedCameraIntensityAutoPrecedence.srv
- srv/ChangeAlliedCameraIntensityControllerRegion.srv
- srv/ChangeAlliedCameraIntensityControllerTarget.srv
- srv/ChangeAlliedCameraSaturation.srv
- srv/ChangeAutobiasValue.srv
- srv/ChangeBiasValue.srv
- srv/ChangeDistanceRange.srv
- srv/ChangeNetworkConfiguration.srv
- srv/ChangePointcloudColor.srv
- srv/ChangePointcloudColorRange.srv
- srv/ChangePolarimetricCameraAutoExposureTimeRange.srv
- srv/ChangePolarimetricCameraAutoGainRange.srv
- srv/ChangePolarimetricCameraBlackLevel.srv
- srv/ChangePolarimetricCameraBrightness.srv
- srv/ChangePolarimetricCameraExposureTime.srv
- srv/ChangePolarimetricCameraGain.srv
- srv/ChangePolarimetricCameraProcessType.srv
- srv/ChangeRgbCameraBrightness.srv
- srv/ChangeRgbCameraContrast.srv
- srv/ChangeRgbCameraExposureTime.srv
- srv/ChangeRgbCameraGain.srv
- srv/ChangeRgbCameraGamma.srv
- srv/ChangeRgbCameraSaturation.srv
- srv/ChangeRgbCameraSharpness.srv
- srv/ChangeRgbCameraWhiteBalance.srv
- srv/ChangeStreamingProtocol.srv
- srv/ChangeThermalCameraColormap.srv
- srv/ChangeThermalCameraProcessingPipeline.srv
- srv/ChangeThermalCameraTemperatureFilter.srv
- srv/EnableAlliedCameraAutoExposureTime.srv
- srv/EnableAlliedCameraAutoGain.srv
- srv/EnableAlliedCameraAutoWhiteBalance.srv
- srv/EnableAutoBias.srv
- srv/EnablePolarimetricCameraAutoExposureTime.srv
- srv/EnablePolarimetricCameraAutoGain.srv
- srv/EnablePolarimetricCameraStreamProcessedImage.srv
- srv/EnableRgbCameraAutoExposureTime.srv
- srv/EnableRgbCameraAutoWhiteBalance.srv
- srv/EnableThermalCameraTemperatureDataUdp.srv
- srv/EnableThermalCameraTemperatureFilter.srv
- srv/FindDevices.srv
- srv/GetAlliedCameraAutoExposureTime.srv
- srv/GetAlliedCameraAutoExposureTimeRange.srv
- srv/GetAlliedCameraAutoGain.srv
- srv/GetAlliedCameraAutoGainRange.srv
- srv/GetAlliedCameraAutoModeRegion.srv
- srv/GetAlliedCameraAutoWhiteBalance.srv
- srv/GetAlliedCameraBalanceRatio.srv
- srv/GetAlliedCameraBalanceRatioSelector.srv
- srv/GetAlliedCameraBalanceWhiteAutoRate.srv
- srv/GetAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/GetAlliedCameraBlackLevel.srv
- srv/GetAlliedCameraExposureTime.srv
- srv/GetAlliedCameraGain.srv
- srv/GetAlliedCameraGamma.srv
- srv/GetAlliedCameraHue.srv
- srv/GetAlliedCameraIntensityAutoPrecedence.srv
- srv/GetAlliedCameraIntensityControllerRegion.srv
- srv/GetAlliedCameraIntensityControllerTarget.srv
- srv/GetAlliedCameraMaxDriverBuffersCount.srv
- srv/GetAlliedCameraSaturation.srv
- srv/GetAlliedCameraSharpness.srv
- srv/GetAutobiasValue.srv
- srv/GetDeviceInfo.srv
- srv/GetDeviceStatus.srv
- srv/GetDeviceTemperatures.srv
- srv/GetLocalServerAddress.srv
- srv/GetNetworkConfiguration.srv
- srv/GetRtspPipeline.srv
- srv/GetSensorsAvailable.srv
- srv/GetVersion.srv
- srv/Initialize.srv
- srv/LibL3camStatus.srv
- srv/PowerOffDevice.srv
- srv/SensorDisconnected.srv
- srv/SetBiasShortRange.srv
- srv/SetPolarimetricCameraDefaultSettings.srv
- srv/SetRgbCameraDefaultSettings.srv
- srv/StartDevice.srv
- srv/StartStream.srv
- srv/StopDevice.srv
- srv/StopStream.srv
- srv/Terminate.srv
Plugins
Recent questions tagged l3cam_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.0.2 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/beamaginelidar/l3cam_ros.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-26 |
Dev Status | DEVELOPED |
CI status | Continuous Integration |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Beamagine
Authors
- Beamagine
l3cam_ros
This package is an ROS driver for the L3Cam device manufactured by Beamagine. The driver relies on the library libL3Cam 0.1.18
provided by Beamagine as part of the L3Cam SDK. For more info on the L3Cam check the L3Cam User Manual.
If you are looking for this package for ROS2, go to the l3cam_ros2 package.
This package is supported only on Linux systems and has only been tested with ROS noetic on an Ubuntu 20.04 system.
Installation
Dependencies
First, you will need to install the L3Cam SDK.
Download the package from Beamagine’s L3Cam SDK 0.1.18 release repository and install the required package depending on your hardware architecture:
sudo dpkg -i <PACKAGE>
ROS Driver
Clone this repository in your catkin workspace (e.g. catkin_ws) and build:
cd ~/catkin_ws/src && git clone https://github.com/beamaginelidar/l3cam_ros
catkin_make
Access Permission
You will need to give permission to the cfg files.
cd ~/catkin_ws/src/l3cam_ros/cfg
chmod a+x Network.cfg Lidar.cfg Polarimetric.cfg Rgb.cfg Thermal.cfg AlliedWide.cfg AlliedNarrow.cfg
Operational Advice
Jumbo frames
You will need to enable jumbo frames on your ethernet adapter by increasing the MTU (Maximum Transmission Unit) on the network interface attached to the camera.
A jumbo frame is an Ethernet frame that is larger than 1500 bytes. Most Ethernet adapters support jumbo frames, however it is usually turned off by default. Please note in order to set a 9000 byte packet size on the camera, the Ethernet adapter must support a jumbo frame size of 9000 bytes or higher.
You can check what your current MTU setting is by running the following command:
ifconfig | grep mtu
You should increase the MTU to 9000
to allow jumbo frames. If you use Network Manager, this can be done by opening the network interface settings and editing the “MTU” box under the “Identity” tab.
See the “Linux host configuration” section of the L3Cam User Manual for full details.
Receive Buffer Size
It is also recommended to increase your network default and maximum receive buffer size.
You can check what your current buffer size is:
sudo sysctl 'net.core.rmem_max'
sudo sysctl 'net.core.rmem_default'
Update the buffer size with the following commands:
sudo sh -c "echo 'net.core.rmem_default=268435456' >> /etc/sysctl.conf"
sudo sh -c "echo 'net.core.rmem_max=268435456' >> /etc/sysctl.conf"
sudo sysctl -p
Port usage
libL3Cam
uses the following ports for streaming and communications:
PROTOCOL | PORT | CONFIGURATION |
---|---|---|
TCP | 6000 (L3CAM) | Fixed |
UDP | 6050 (LIDAR) | Fixed |
UDP | 6060 (Allied Wide, Polarimetric) | Fixed |
UDP | 6020 (Allied Narrow, RGB) | Fixed |
UDP | 6030 (LWIR) | Fixed |
RTSP | 5040 (LIDAR) | Reconfigurable |
RTSP | 5030 (Allied Wide, Polarimetric) | Reconfigurable |
RTSP | 5010 (Allied Narrow, RGB) | Reconfigurable |
RTSP | 5020 (LWIR) | Reconfigurable |
TCP is used internally by libL3Cam
and is transparent to the user. However, the system host must have the required port available.
Launch
l3cam
To run the l3cam_ros driver, launch the l3cam.launch
file specifying (if wanted) if the stream launch file, the configure launch file, rviz
(for visualization GUI) and rqt_reconfigure
(for dynamic reconfigure GUI) have to be launched too. By default, the values are as follows:
```
File truncated at 100 lines see the full file
Change log for l3cam_ros
All notable changes to the l3cam_ros package will be documented in this file.
[1.0.2] - 10-07-2024
Changed
- thermalTypes changed for newThermalTypes.
- LibL3CamStatus status types with ‘_status’ suffix to avoid errors.
- Econ wide implementation
Added
- libl3cam 0.1.18 new functionalities.
- Added missing namespace prefix on messages.
Fixed
- Fixed no error on lidar configuration bug.
- Bias value left and right bug.
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
-
The lidar pointcloud_color param RGBT_FUSION (7) value is not available and will return out of range error.
[1.0.1] - 15-03-2024
Changed
- Sensors header stamps with unix epoch timestamp
- Allied cameras stream in YUV
Added
- Topic for thermal float (pixels with temperature values)
- New libl3cam thermal camera functionalities
- Device info service
Fixed
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
[1.0.0] - 2023-12-11
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
roscpp | |
rospy | |
std_msgs | |
cv_bridge | |
sensor_msgs | |
message_generation | |
image_transport | |
dynamic_reconfigure | |
catkin | |
message_runtime |
System Dependencies
Dependant Packages
Launch files
- launch/configure_l3cam.launch
-
- network_conf [default: true]
- timeout_secs [default: 60]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 33.5]
- polarimetric_auto_exposure_time_range_maximum [default: 66470.6]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: false]
- rgb_exposure_time [default: 156]
- rgb_streaming_protocol [default: 0]
- thermal_colormap [default: 1]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: false]
- thermal_streaming_protocol [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_streaming_protocol [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_streaming_protocol [default: 0]
- launch/l3cam.launch
-
- stream [default: true]
- rviz [default: false]
- configure [default: true]
- rqt_reconfigure [default: false]
- timeout_secs [default: 30]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- local_address [default: ]
- device_address [default: ]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- lidar_rtsp_pipeline [default: ]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 40]
- polarimetric_auto_exposure_time_range_maximum [default: 66470]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- polarimetric_rtsp_pipeline [default: ]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: true]
- rgb_exposure_time [default: 156]
- rgb_resolution [default: 3]
- rgb_framerate [default: 10]
- rgb_streaming_protocol [default: 0]
- rgb_rtsp_pipeline [default: ]
- thermal_colormap [default: 5]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: true]
- thermal_streaming_protocol [default: 0]
- thermal_rtsp_pipeline [default: ]
- allied_wide_black_level [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_sharpness [default: 0]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_auto_mode_region_height [default: 1028]
- allied_wide_auto_mode_region_width [default: 1232]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_max_driver_buffers_count [default: 64]
- allied_wide_streaming_protocol [default: 0]
- allied_wide_rtsp_pipeline [default: ]
- allied_narrow_black_level [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_sharpness [default: 0]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_auto_mode_region_height [default: 1544]
- allied_narrow_auto_mode_region_width [default: 2064]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_max_driver_buffers_count [default: 64]
- allied_narrow_streaming_protocol [default: 0]
- allied_narrow_rtsp_pipeline [default: ]
- launch/stream_l3cam.launch
-
- timeout_secs [default: 60]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
Messages
Services
- srv/ChangeAlliedCameraAutoExposureTimeRange.srv
- srv/ChangeAlliedCameraAutoGainRange.srv
- srv/ChangeAlliedCameraBalanceRatio.srv
- srv/ChangeAlliedCameraBalanceRatioSelector.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoRate.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/ChangeAlliedCameraExposureTime.srv
- srv/ChangeAlliedCameraGain.srv
- srv/ChangeAlliedCameraGamma.srv
- srv/ChangeAlliedCameraHue.srv
- srv/ChangeAlliedCameraIntensityAutoPrecedence.srv
- srv/ChangeAlliedCameraIntensityControllerRegion.srv
- srv/ChangeAlliedCameraIntensityControllerTarget.srv
- srv/ChangeAlliedCameraSaturation.srv
- srv/ChangeAutobiasValue.srv
- srv/ChangeBiasValue.srv
- srv/ChangeDistanceRange.srv
- srv/ChangeNetworkConfiguration.srv
- srv/ChangePointcloudColor.srv
- srv/ChangePointcloudColorRange.srv
- srv/ChangePolarimetricCameraAutoExposureTimeRange.srv
- srv/ChangePolarimetricCameraAutoGainRange.srv
- srv/ChangePolarimetricCameraBlackLevel.srv
- srv/ChangePolarimetricCameraBrightness.srv
- srv/ChangePolarimetricCameraExposureTime.srv
- srv/ChangePolarimetricCameraGain.srv
- srv/ChangePolarimetricCameraProcessType.srv
- srv/ChangeRgbCameraBrightness.srv
- srv/ChangeRgbCameraContrast.srv
- srv/ChangeRgbCameraExposureTime.srv
- srv/ChangeRgbCameraGain.srv
- srv/ChangeRgbCameraGamma.srv
- srv/ChangeRgbCameraSaturation.srv
- srv/ChangeRgbCameraSharpness.srv
- srv/ChangeRgbCameraWhiteBalance.srv
- srv/ChangeStreamingProtocol.srv
- srv/ChangeThermalCameraColormap.srv
- srv/ChangeThermalCameraProcessingPipeline.srv
- srv/ChangeThermalCameraTemperatureFilter.srv
- srv/EnableAlliedCameraAutoExposureTime.srv
- srv/EnableAlliedCameraAutoGain.srv
- srv/EnableAlliedCameraAutoWhiteBalance.srv
- srv/EnableAutoBias.srv
- srv/EnablePolarimetricCameraAutoExposureTime.srv
- srv/EnablePolarimetricCameraAutoGain.srv
- srv/EnablePolarimetricCameraStreamProcessedImage.srv
- srv/EnableRgbCameraAutoExposureTime.srv
- srv/EnableRgbCameraAutoWhiteBalance.srv
- srv/EnableThermalCameraTemperatureDataUdp.srv
- srv/EnableThermalCameraTemperatureFilter.srv
- srv/FindDevices.srv
- srv/GetAlliedCameraAutoExposureTime.srv
- srv/GetAlliedCameraAutoExposureTimeRange.srv
- srv/GetAlliedCameraAutoGain.srv
- srv/GetAlliedCameraAutoGainRange.srv
- srv/GetAlliedCameraAutoModeRegion.srv
- srv/GetAlliedCameraAutoWhiteBalance.srv
- srv/GetAlliedCameraBalanceRatio.srv
- srv/GetAlliedCameraBalanceRatioSelector.srv
- srv/GetAlliedCameraBalanceWhiteAutoRate.srv
- srv/GetAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/GetAlliedCameraBlackLevel.srv
- srv/GetAlliedCameraExposureTime.srv
- srv/GetAlliedCameraGain.srv
- srv/GetAlliedCameraGamma.srv
- srv/GetAlliedCameraHue.srv
- srv/GetAlliedCameraIntensityAutoPrecedence.srv
- srv/GetAlliedCameraIntensityControllerRegion.srv
- srv/GetAlliedCameraIntensityControllerTarget.srv
- srv/GetAlliedCameraMaxDriverBuffersCount.srv
- srv/GetAlliedCameraSaturation.srv
- srv/GetAlliedCameraSharpness.srv
- srv/GetAutobiasValue.srv
- srv/GetDeviceInfo.srv
- srv/GetDeviceStatus.srv
- srv/GetDeviceTemperatures.srv
- srv/GetLocalServerAddress.srv
- srv/GetNetworkConfiguration.srv
- srv/GetRtspPipeline.srv
- srv/GetSensorsAvailable.srv
- srv/GetVersion.srv
- srv/Initialize.srv
- srv/LibL3camStatus.srv
- srv/PowerOffDevice.srv
- srv/SensorDisconnected.srv
- srv/SetBiasShortRange.srv
- srv/SetPolarimetricCameraDefaultSettings.srv
- srv/SetRgbCameraDefaultSettings.srv
- srv/StartDevice.srv
- srv/StartStream.srv
- srv/StopDevice.srv
- srv/StopStream.srv
- srv/Terminate.srv
Plugins
Recent questions tagged l3cam_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.0.2 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/beamaginelidar/l3cam_ros.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-26 |
Dev Status | DEVELOPED |
CI status | Continuous Integration |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Beamagine
Authors
- Beamagine
l3cam_ros
This package is an ROS driver for the L3Cam device manufactured by Beamagine. The driver relies on the library libL3Cam 0.1.18
provided by Beamagine as part of the L3Cam SDK. For more info on the L3Cam check the L3Cam User Manual.
If you are looking for this package for ROS2, go to the l3cam_ros2 package.
This package is supported only on Linux systems and has only been tested with ROS noetic on an Ubuntu 20.04 system.
Installation
Dependencies
First, you will need to install the L3Cam SDK.
Download the package from Beamagine’s L3Cam SDK 0.1.18 release repository and install the required package depending on your hardware architecture:
sudo dpkg -i <PACKAGE>
ROS Driver
Clone this repository in your catkin workspace (e.g. catkin_ws) and build:
cd ~/catkin_ws/src && git clone https://github.com/beamaginelidar/l3cam_ros
catkin_make
Access Permission
You will need to give permission to the cfg files.
cd ~/catkin_ws/src/l3cam_ros/cfg
chmod a+x Network.cfg Lidar.cfg Polarimetric.cfg Rgb.cfg Thermal.cfg AlliedWide.cfg AlliedNarrow.cfg
Operational Advice
Jumbo frames
You will need to enable jumbo frames on your ethernet adapter by increasing the MTU (Maximum Transmission Unit) on the network interface attached to the camera.
A jumbo frame is an Ethernet frame that is larger than 1500 bytes. Most Ethernet adapters support jumbo frames, however it is usually turned off by default. Please note in order to set a 9000 byte packet size on the camera, the Ethernet adapter must support a jumbo frame size of 9000 bytes or higher.
You can check what your current MTU setting is by running the following command:
ifconfig | grep mtu
You should increase the MTU to 9000
to allow jumbo frames. If you use Network Manager, this can be done by opening the network interface settings and editing the “MTU” box under the “Identity” tab.
See the “Linux host configuration” section of the L3Cam User Manual for full details.
Receive Buffer Size
It is also recommended to increase your network default and maximum receive buffer size.
You can check what your current buffer size is:
sudo sysctl 'net.core.rmem_max'
sudo sysctl 'net.core.rmem_default'
Update the buffer size with the following commands:
sudo sh -c "echo 'net.core.rmem_default=268435456' >> /etc/sysctl.conf"
sudo sh -c "echo 'net.core.rmem_max=268435456' >> /etc/sysctl.conf"
sudo sysctl -p
Port usage
libL3Cam
uses the following ports for streaming and communications:
PROTOCOL | PORT | CONFIGURATION |
---|---|---|
TCP | 6000 (L3CAM) | Fixed |
UDP | 6050 (LIDAR) | Fixed |
UDP | 6060 (Allied Wide, Polarimetric) | Fixed |
UDP | 6020 (Allied Narrow, RGB) | Fixed |
UDP | 6030 (LWIR) | Fixed |
RTSP | 5040 (LIDAR) | Reconfigurable |
RTSP | 5030 (Allied Wide, Polarimetric) | Reconfigurable |
RTSP | 5010 (Allied Narrow, RGB) | Reconfigurable |
RTSP | 5020 (LWIR) | Reconfigurable |
TCP is used internally by libL3Cam
and is transparent to the user. However, the system host must have the required port available.
Launch
l3cam
To run the l3cam_ros driver, launch the l3cam.launch
file specifying (if wanted) if the stream launch file, the configure launch file, rviz
(for visualization GUI) and rqt_reconfigure
(for dynamic reconfigure GUI) have to be launched too. By default, the values are as follows:
```
File truncated at 100 lines see the full file
Change log for l3cam_ros
All notable changes to the l3cam_ros package will be documented in this file.
[1.0.2] - 10-07-2024
Changed
- thermalTypes changed for newThermalTypes.
- LibL3CamStatus status types with ‘_status’ suffix to avoid errors.
- Econ wide implementation
Added
- libl3cam 0.1.18 new functionalities.
- Added missing namespace prefix on messages.
Fixed
- Fixed no error on lidar configuration bug.
- Bias value left and right bug.
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
-
The lidar pointcloud_color param RGBT_FUSION (7) value is not available and will return out of range error.
[1.0.1] - 15-03-2024
Changed
- Sensors header stamps with unix epoch timestamp
- Allied cameras stream in YUV
Added
- Topic for thermal float (pixels with temperature values)
- New libl3cam thermal camera functionalities
- Device info service
Fixed
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
[1.0.0] - 2023-12-11
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
roscpp | |
rospy | |
std_msgs | |
cv_bridge | |
sensor_msgs | |
message_generation | |
image_transport | |
dynamic_reconfigure | |
catkin | |
message_runtime |
System Dependencies
Dependant Packages
Launch files
- launch/configure_l3cam.launch
-
- network_conf [default: true]
- timeout_secs [default: 60]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 33.5]
- polarimetric_auto_exposure_time_range_maximum [default: 66470.6]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: false]
- rgb_exposure_time [default: 156]
- rgb_streaming_protocol [default: 0]
- thermal_colormap [default: 1]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: false]
- thermal_streaming_protocol [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_streaming_protocol [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_streaming_protocol [default: 0]
- launch/l3cam.launch
-
- stream [default: true]
- rviz [default: false]
- configure [default: true]
- rqt_reconfigure [default: false]
- timeout_secs [default: 30]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- local_address [default: ]
- device_address [default: ]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- lidar_rtsp_pipeline [default: ]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 40]
- polarimetric_auto_exposure_time_range_maximum [default: 66470]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- polarimetric_rtsp_pipeline [default: ]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: true]
- rgb_exposure_time [default: 156]
- rgb_resolution [default: 3]
- rgb_framerate [default: 10]
- rgb_streaming_protocol [default: 0]
- rgb_rtsp_pipeline [default: ]
- thermal_colormap [default: 5]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: true]
- thermal_streaming_protocol [default: 0]
- thermal_rtsp_pipeline [default: ]
- allied_wide_black_level [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_sharpness [default: 0]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_auto_mode_region_height [default: 1028]
- allied_wide_auto_mode_region_width [default: 1232]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_max_driver_buffers_count [default: 64]
- allied_wide_streaming_protocol [default: 0]
- allied_wide_rtsp_pipeline [default: ]
- allied_narrow_black_level [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_sharpness [default: 0]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_auto_mode_region_height [default: 1544]
- allied_narrow_auto_mode_region_width [default: 2064]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_max_driver_buffers_count [default: 64]
- allied_narrow_streaming_protocol [default: 0]
- allied_narrow_rtsp_pipeline [default: ]
- launch/stream_l3cam.launch
-
- timeout_secs [default: 60]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
Messages
Services
- srv/ChangeAlliedCameraAutoExposureTimeRange.srv
- srv/ChangeAlliedCameraAutoGainRange.srv
- srv/ChangeAlliedCameraBalanceRatio.srv
- srv/ChangeAlliedCameraBalanceRatioSelector.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoRate.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/ChangeAlliedCameraExposureTime.srv
- srv/ChangeAlliedCameraGain.srv
- srv/ChangeAlliedCameraGamma.srv
- srv/ChangeAlliedCameraHue.srv
- srv/ChangeAlliedCameraIntensityAutoPrecedence.srv
- srv/ChangeAlliedCameraIntensityControllerRegion.srv
- srv/ChangeAlliedCameraIntensityControllerTarget.srv
- srv/ChangeAlliedCameraSaturation.srv
- srv/ChangeAutobiasValue.srv
- srv/ChangeBiasValue.srv
- srv/ChangeDistanceRange.srv
- srv/ChangeNetworkConfiguration.srv
- srv/ChangePointcloudColor.srv
- srv/ChangePointcloudColorRange.srv
- srv/ChangePolarimetricCameraAutoExposureTimeRange.srv
- srv/ChangePolarimetricCameraAutoGainRange.srv
- srv/ChangePolarimetricCameraBlackLevel.srv
- srv/ChangePolarimetricCameraBrightness.srv
- srv/ChangePolarimetricCameraExposureTime.srv
- srv/ChangePolarimetricCameraGain.srv
- srv/ChangePolarimetricCameraProcessType.srv
- srv/ChangeRgbCameraBrightness.srv
- srv/ChangeRgbCameraContrast.srv
- srv/ChangeRgbCameraExposureTime.srv
- srv/ChangeRgbCameraGain.srv
- srv/ChangeRgbCameraGamma.srv
- srv/ChangeRgbCameraSaturation.srv
- srv/ChangeRgbCameraSharpness.srv
- srv/ChangeRgbCameraWhiteBalance.srv
- srv/ChangeStreamingProtocol.srv
- srv/ChangeThermalCameraColormap.srv
- srv/ChangeThermalCameraProcessingPipeline.srv
- srv/ChangeThermalCameraTemperatureFilter.srv
- srv/EnableAlliedCameraAutoExposureTime.srv
- srv/EnableAlliedCameraAutoGain.srv
- srv/EnableAlliedCameraAutoWhiteBalance.srv
- srv/EnableAutoBias.srv
- srv/EnablePolarimetricCameraAutoExposureTime.srv
- srv/EnablePolarimetricCameraAutoGain.srv
- srv/EnablePolarimetricCameraStreamProcessedImage.srv
- srv/EnableRgbCameraAutoExposureTime.srv
- srv/EnableRgbCameraAutoWhiteBalance.srv
- srv/EnableThermalCameraTemperatureDataUdp.srv
- srv/EnableThermalCameraTemperatureFilter.srv
- srv/FindDevices.srv
- srv/GetAlliedCameraAutoExposureTime.srv
- srv/GetAlliedCameraAutoExposureTimeRange.srv
- srv/GetAlliedCameraAutoGain.srv
- srv/GetAlliedCameraAutoGainRange.srv
- srv/GetAlliedCameraAutoModeRegion.srv
- srv/GetAlliedCameraAutoWhiteBalance.srv
- srv/GetAlliedCameraBalanceRatio.srv
- srv/GetAlliedCameraBalanceRatioSelector.srv
- srv/GetAlliedCameraBalanceWhiteAutoRate.srv
- srv/GetAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/GetAlliedCameraBlackLevel.srv
- srv/GetAlliedCameraExposureTime.srv
- srv/GetAlliedCameraGain.srv
- srv/GetAlliedCameraGamma.srv
- srv/GetAlliedCameraHue.srv
- srv/GetAlliedCameraIntensityAutoPrecedence.srv
- srv/GetAlliedCameraIntensityControllerRegion.srv
- srv/GetAlliedCameraIntensityControllerTarget.srv
- srv/GetAlliedCameraMaxDriverBuffersCount.srv
- srv/GetAlliedCameraSaturation.srv
- srv/GetAlliedCameraSharpness.srv
- srv/GetAutobiasValue.srv
- srv/GetDeviceInfo.srv
- srv/GetDeviceStatus.srv
- srv/GetDeviceTemperatures.srv
- srv/GetLocalServerAddress.srv
- srv/GetNetworkConfiguration.srv
- srv/GetRtspPipeline.srv
- srv/GetSensorsAvailable.srv
- srv/GetVersion.srv
- srv/Initialize.srv
- srv/LibL3camStatus.srv
- srv/PowerOffDevice.srv
- srv/SensorDisconnected.srv
- srv/SetBiasShortRange.srv
- srv/SetPolarimetricCameraDefaultSettings.srv
- srv/SetRgbCameraDefaultSettings.srv
- srv/StartDevice.srv
- srv/StartStream.srv
- srv/StopDevice.srv
- srv/StopStream.srv
- srv/Terminate.srv
Plugins
Recent questions tagged l3cam_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.0.2 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/beamaginelidar/l3cam_ros.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-26 |
Dev Status | DEVELOPED |
CI status | Continuous Integration |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Beamagine
Authors
- Beamagine
l3cam_ros
This package is an ROS driver for the L3Cam device manufactured by Beamagine. The driver relies on the library libL3Cam 0.1.18
provided by Beamagine as part of the L3Cam SDK. For more info on the L3Cam check the L3Cam User Manual.
If you are looking for this package for ROS2, go to the l3cam_ros2 package.
This package is supported only on Linux systems and has only been tested with ROS noetic on an Ubuntu 20.04 system.
Installation
Dependencies
First, you will need to install the L3Cam SDK.
Download the package from Beamagine’s L3Cam SDK 0.1.18 release repository and install the required package depending on your hardware architecture:
sudo dpkg -i <PACKAGE>
ROS Driver
Clone this repository in your catkin workspace (e.g. catkin_ws) and build:
cd ~/catkin_ws/src && git clone https://github.com/beamaginelidar/l3cam_ros
catkin_make
Access Permission
You will need to give permission to the cfg files.
cd ~/catkin_ws/src/l3cam_ros/cfg
chmod a+x Network.cfg Lidar.cfg Polarimetric.cfg Rgb.cfg Thermal.cfg AlliedWide.cfg AlliedNarrow.cfg
Operational Advice
Jumbo frames
You will need to enable jumbo frames on your ethernet adapter by increasing the MTU (Maximum Transmission Unit) on the network interface attached to the camera.
A jumbo frame is an Ethernet frame that is larger than 1500 bytes. Most Ethernet adapters support jumbo frames, however it is usually turned off by default. Please note in order to set a 9000 byte packet size on the camera, the Ethernet adapter must support a jumbo frame size of 9000 bytes or higher.
You can check what your current MTU setting is by running the following command:
ifconfig | grep mtu
You should increase the MTU to 9000
to allow jumbo frames. If you use Network Manager, this can be done by opening the network interface settings and editing the “MTU” box under the “Identity” tab.
See the “Linux host configuration” section of the L3Cam User Manual for full details.
Receive Buffer Size
It is also recommended to increase your network default and maximum receive buffer size.
You can check what your current buffer size is:
sudo sysctl 'net.core.rmem_max'
sudo sysctl 'net.core.rmem_default'
Update the buffer size with the following commands:
sudo sh -c "echo 'net.core.rmem_default=268435456' >> /etc/sysctl.conf"
sudo sh -c "echo 'net.core.rmem_max=268435456' >> /etc/sysctl.conf"
sudo sysctl -p
Port usage
libL3Cam
uses the following ports for streaming and communications:
PROTOCOL | PORT | CONFIGURATION |
---|---|---|
TCP | 6000 (L3CAM) | Fixed |
UDP | 6050 (LIDAR) | Fixed |
UDP | 6060 (Allied Wide, Polarimetric) | Fixed |
UDP | 6020 (Allied Narrow, RGB) | Fixed |
UDP | 6030 (LWIR) | Fixed |
RTSP | 5040 (LIDAR) | Reconfigurable |
RTSP | 5030 (Allied Wide, Polarimetric) | Reconfigurable |
RTSP | 5010 (Allied Narrow, RGB) | Reconfigurable |
RTSP | 5020 (LWIR) | Reconfigurable |
TCP is used internally by libL3Cam
and is transparent to the user. However, the system host must have the required port available.
Launch
l3cam
To run the l3cam_ros driver, launch the l3cam.launch
file specifying (if wanted) if the stream launch file, the configure launch file, rviz
(for visualization GUI) and rqt_reconfigure
(for dynamic reconfigure GUI) have to be launched too. By default, the values are as follows:
```
File truncated at 100 lines see the full file
Change log for l3cam_ros
All notable changes to the l3cam_ros package will be documented in this file.
[1.0.2] - 10-07-2024
Changed
- thermalTypes changed for newThermalTypes.
- LibL3CamStatus status types with ‘_status’ suffix to avoid errors.
- Econ wide implementation
Added
- libl3cam 0.1.18 new functionalities.
- Added missing namespace prefix on messages.
Fixed
- Fixed no error on lidar configuration bug.
- Bias value left and right bug.
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
-
The lidar pointcloud_color param RGBT_FUSION (7) value is not available and will return out of range error.
[1.0.1] - 15-03-2024
Changed
- Sensors header stamps with unix epoch timestamp
- Allied cameras stream in YUV
Added
- Topic for thermal float (pixels with temperature values)
- New libl3cam thermal camera functionalities
- Device info service
Fixed
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
[1.0.0] - 2023-12-11
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
roscpp | |
rospy | |
std_msgs | |
cv_bridge | |
sensor_msgs | |
message_generation | |
image_transport | |
dynamic_reconfigure | |
catkin | |
message_runtime |
System Dependencies
Dependant Packages
Launch files
- launch/configure_l3cam.launch
-
- network_conf [default: true]
- timeout_secs [default: 60]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 33.5]
- polarimetric_auto_exposure_time_range_maximum [default: 66470.6]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: false]
- rgb_exposure_time [default: 156]
- rgb_streaming_protocol [default: 0]
- thermal_colormap [default: 1]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: false]
- thermal_streaming_protocol [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_streaming_protocol [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_streaming_protocol [default: 0]
- launch/l3cam.launch
-
- stream [default: true]
- rviz [default: false]
- configure [default: true]
- rqt_reconfigure [default: false]
- timeout_secs [default: 30]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- local_address [default: ]
- device_address [default: ]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- lidar_rtsp_pipeline [default: ]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 40]
- polarimetric_auto_exposure_time_range_maximum [default: 66470]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- polarimetric_rtsp_pipeline [default: ]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: true]
- rgb_exposure_time [default: 156]
- rgb_resolution [default: 3]
- rgb_framerate [default: 10]
- rgb_streaming_protocol [default: 0]
- rgb_rtsp_pipeline [default: ]
- thermal_colormap [default: 5]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: true]
- thermal_streaming_protocol [default: 0]
- thermal_rtsp_pipeline [default: ]
- allied_wide_black_level [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_sharpness [default: 0]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_auto_mode_region_height [default: 1028]
- allied_wide_auto_mode_region_width [default: 1232]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_max_driver_buffers_count [default: 64]
- allied_wide_streaming_protocol [default: 0]
- allied_wide_rtsp_pipeline [default: ]
- allied_narrow_black_level [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_sharpness [default: 0]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_auto_mode_region_height [default: 1544]
- allied_narrow_auto_mode_region_width [default: 2064]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_max_driver_buffers_count [default: 64]
- allied_narrow_streaming_protocol [default: 0]
- allied_narrow_rtsp_pipeline [default: ]
- launch/stream_l3cam.launch
-
- timeout_secs [default: 60]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
Messages
Services
- srv/ChangeAlliedCameraAutoExposureTimeRange.srv
- srv/ChangeAlliedCameraAutoGainRange.srv
- srv/ChangeAlliedCameraBalanceRatio.srv
- srv/ChangeAlliedCameraBalanceRatioSelector.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoRate.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/ChangeAlliedCameraExposureTime.srv
- srv/ChangeAlliedCameraGain.srv
- srv/ChangeAlliedCameraGamma.srv
- srv/ChangeAlliedCameraHue.srv
- srv/ChangeAlliedCameraIntensityAutoPrecedence.srv
- srv/ChangeAlliedCameraIntensityControllerRegion.srv
- srv/ChangeAlliedCameraIntensityControllerTarget.srv
- srv/ChangeAlliedCameraSaturation.srv
- srv/ChangeAutobiasValue.srv
- srv/ChangeBiasValue.srv
- srv/ChangeDistanceRange.srv
- srv/ChangeNetworkConfiguration.srv
- srv/ChangePointcloudColor.srv
- srv/ChangePointcloudColorRange.srv
- srv/ChangePolarimetricCameraAutoExposureTimeRange.srv
- srv/ChangePolarimetricCameraAutoGainRange.srv
- srv/ChangePolarimetricCameraBlackLevel.srv
- srv/ChangePolarimetricCameraBrightness.srv
- srv/ChangePolarimetricCameraExposureTime.srv
- srv/ChangePolarimetricCameraGain.srv
- srv/ChangePolarimetricCameraProcessType.srv
- srv/ChangeRgbCameraBrightness.srv
- srv/ChangeRgbCameraContrast.srv
- srv/ChangeRgbCameraExposureTime.srv
- srv/ChangeRgbCameraGain.srv
- srv/ChangeRgbCameraGamma.srv
- srv/ChangeRgbCameraSaturation.srv
- srv/ChangeRgbCameraSharpness.srv
- srv/ChangeRgbCameraWhiteBalance.srv
- srv/ChangeStreamingProtocol.srv
- srv/ChangeThermalCameraColormap.srv
- srv/ChangeThermalCameraProcessingPipeline.srv
- srv/ChangeThermalCameraTemperatureFilter.srv
- srv/EnableAlliedCameraAutoExposureTime.srv
- srv/EnableAlliedCameraAutoGain.srv
- srv/EnableAlliedCameraAutoWhiteBalance.srv
- srv/EnableAutoBias.srv
- srv/EnablePolarimetricCameraAutoExposureTime.srv
- srv/EnablePolarimetricCameraAutoGain.srv
- srv/EnablePolarimetricCameraStreamProcessedImage.srv
- srv/EnableRgbCameraAutoExposureTime.srv
- srv/EnableRgbCameraAutoWhiteBalance.srv
- srv/EnableThermalCameraTemperatureDataUdp.srv
- srv/EnableThermalCameraTemperatureFilter.srv
- srv/FindDevices.srv
- srv/GetAlliedCameraAutoExposureTime.srv
- srv/GetAlliedCameraAutoExposureTimeRange.srv
- srv/GetAlliedCameraAutoGain.srv
- srv/GetAlliedCameraAutoGainRange.srv
- srv/GetAlliedCameraAutoModeRegion.srv
- srv/GetAlliedCameraAutoWhiteBalance.srv
- srv/GetAlliedCameraBalanceRatio.srv
- srv/GetAlliedCameraBalanceRatioSelector.srv
- srv/GetAlliedCameraBalanceWhiteAutoRate.srv
- srv/GetAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/GetAlliedCameraBlackLevel.srv
- srv/GetAlliedCameraExposureTime.srv
- srv/GetAlliedCameraGain.srv
- srv/GetAlliedCameraGamma.srv
- srv/GetAlliedCameraHue.srv
- srv/GetAlliedCameraIntensityAutoPrecedence.srv
- srv/GetAlliedCameraIntensityControllerRegion.srv
- srv/GetAlliedCameraIntensityControllerTarget.srv
- srv/GetAlliedCameraMaxDriverBuffersCount.srv
- srv/GetAlliedCameraSaturation.srv
- srv/GetAlliedCameraSharpness.srv
- srv/GetAutobiasValue.srv
- srv/GetDeviceInfo.srv
- srv/GetDeviceStatus.srv
- srv/GetDeviceTemperatures.srv
- srv/GetLocalServerAddress.srv
- srv/GetNetworkConfiguration.srv
- srv/GetRtspPipeline.srv
- srv/GetSensorsAvailable.srv
- srv/GetVersion.srv
- srv/Initialize.srv
- srv/LibL3camStatus.srv
- srv/PowerOffDevice.srv
- srv/SensorDisconnected.srv
- srv/SetBiasShortRange.srv
- srv/SetPolarimetricCameraDefaultSettings.srv
- srv/SetRgbCameraDefaultSettings.srv
- srv/StartDevice.srv
- srv/StartStream.srv
- srv/StopDevice.srv
- srv/StopStream.srv
- srv/Terminate.srv
Plugins
Recent questions tagged l3cam_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.0.2 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/beamaginelidar/l3cam_ros.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-26 |
Dev Status | DEVELOPED |
CI status | Continuous Integration |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Beamagine
Authors
- Beamagine
l3cam_ros
This package is an ROS driver for the L3Cam device manufactured by Beamagine. The driver relies on the library libL3Cam 0.1.18
provided by Beamagine as part of the L3Cam SDK. For more info on the L3Cam check the L3Cam User Manual.
If you are looking for this package for ROS2, go to the l3cam_ros2 package.
This package is supported only on Linux systems and has only been tested with ROS noetic on an Ubuntu 20.04 system.
Installation
Dependencies
First, you will need to install the L3Cam SDK.
Download the package from Beamagine’s L3Cam SDK 0.1.18 release repository and install the required package depending on your hardware architecture:
sudo dpkg -i <PACKAGE>
ROS Driver
Clone this repository in your catkin workspace (e.g. catkin_ws) and build:
cd ~/catkin_ws/src && git clone https://github.com/beamaginelidar/l3cam_ros
catkin_make
Access Permission
You will need to give permission to the cfg files.
cd ~/catkin_ws/src/l3cam_ros/cfg
chmod a+x Network.cfg Lidar.cfg Polarimetric.cfg Rgb.cfg Thermal.cfg AlliedWide.cfg AlliedNarrow.cfg
Operational Advice
Jumbo frames
You will need to enable jumbo frames on your ethernet adapter by increasing the MTU (Maximum Transmission Unit) on the network interface attached to the camera.
A jumbo frame is an Ethernet frame that is larger than 1500 bytes. Most Ethernet adapters support jumbo frames, however it is usually turned off by default. Please note in order to set a 9000 byte packet size on the camera, the Ethernet adapter must support a jumbo frame size of 9000 bytes or higher.
You can check what your current MTU setting is by running the following command:
ifconfig | grep mtu
You should increase the MTU to 9000
to allow jumbo frames. If you use Network Manager, this can be done by opening the network interface settings and editing the “MTU” box under the “Identity” tab.
See the “Linux host configuration” section of the L3Cam User Manual for full details.
Receive Buffer Size
It is also recommended to increase your network default and maximum receive buffer size.
You can check what your current buffer size is:
sudo sysctl 'net.core.rmem_max'
sudo sysctl 'net.core.rmem_default'
Update the buffer size with the following commands:
sudo sh -c "echo 'net.core.rmem_default=268435456' >> /etc/sysctl.conf"
sudo sh -c "echo 'net.core.rmem_max=268435456' >> /etc/sysctl.conf"
sudo sysctl -p
Port usage
libL3Cam
uses the following ports for streaming and communications:
PROTOCOL | PORT | CONFIGURATION |
---|---|---|
TCP | 6000 (L3CAM) | Fixed |
UDP | 6050 (LIDAR) | Fixed |
UDP | 6060 (Allied Wide, Polarimetric) | Fixed |
UDP | 6020 (Allied Narrow, RGB) | Fixed |
UDP | 6030 (LWIR) | Fixed |
RTSP | 5040 (LIDAR) | Reconfigurable |
RTSP | 5030 (Allied Wide, Polarimetric) | Reconfigurable |
RTSP | 5010 (Allied Narrow, RGB) | Reconfigurable |
RTSP | 5020 (LWIR) | Reconfigurable |
TCP is used internally by libL3Cam
and is transparent to the user. However, the system host must have the required port available.
Launch
l3cam
To run the l3cam_ros driver, launch the l3cam.launch
file specifying (if wanted) if the stream launch file, the configure launch file, rviz
(for visualization GUI) and rqt_reconfigure
(for dynamic reconfigure GUI) have to be launched too. By default, the values are as follows:
```
File truncated at 100 lines see the full file
Change log for l3cam_ros
All notable changes to the l3cam_ros package will be documented in this file.
[1.0.2] - 10-07-2024
Changed
- thermalTypes changed for newThermalTypes.
- LibL3CamStatus status types with ‘_status’ suffix to avoid errors.
- Econ wide implementation
Added
- libl3cam 0.1.18 new functionalities.
- Added missing namespace prefix on messages.
Fixed
- Fixed no error on lidar configuration bug.
- Bias value left and right bug.
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
-
The lidar pointcloud_color param RGBT_FUSION (7) value is not available and will return out of range error.
[1.0.1] - 15-03-2024
Changed
- Sensors header stamps with unix epoch timestamp
- Allied cameras stream in YUV
Added
- Topic for thermal float (pixels with temperature values)
- New libl3cam thermal camera functionalities
- Device info service
Fixed
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
[1.0.0] - 2023-12-11
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
roscpp | |
rospy | |
std_msgs | |
cv_bridge | |
sensor_msgs | |
message_generation | |
image_transport | |
dynamic_reconfigure | |
catkin | |
message_runtime |
System Dependencies
Dependant Packages
Launch files
- launch/configure_l3cam.launch
-
- network_conf [default: true]
- timeout_secs [default: 60]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 33.5]
- polarimetric_auto_exposure_time_range_maximum [default: 66470.6]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: false]
- rgb_exposure_time [default: 156]
- rgb_streaming_protocol [default: 0]
- thermal_colormap [default: 1]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: false]
- thermal_streaming_protocol [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_streaming_protocol [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_streaming_protocol [default: 0]
- launch/l3cam.launch
-
- stream [default: true]
- rviz [default: false]
- configure [default: true]
- rqt_reconfigure [default: false]
- timeout_secs [default: 30]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- local_address [default: ]
- device_address [default: ]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- lidar_rtsp_pipeline [default: ]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 40]
- polarimetric_auto_exposure_time_range_maximum [default: 66470]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- polarimetric_rtsp_pipeline [default: ]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: true]
- rgb_exposure_time [default: 156]
- rgb_resolution [default: 3]
- rgb_framerate [default: 10]
- rgb_streaming_protocol [default: 0]
- rgb_rtsp_pipeline [default: ]
- thermal_colormap [default: 5]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: true]
- thermal_streaming_protocol [default: 0]
- thermal_rtsp_pipeline [default: ]
- allied_wide_black_level [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_sharpness [default: 0]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_auto_mode_region_height [default: 1028]
- allied_wide_auto_mode_region_width [default: 1232]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_max_driver_buffers_count [default: 64]
- allied_wide_streaming_protocol [default: 0]
- allied_wide_rtsp_pipeline [default: ]
- allied_narrow_black_level [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_sharpness [default: 0]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_auto_mode_region_height [default: 1544]
- allied_narrow_auto_mode_region_width [default: 2064]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_max_driver_buffers_count [default: 64]
- allied_narrow_streaming_protocol [default: 0]
- allied_narrow_rtsp_pipeline [default: ]
- launch/stream_l3cam.launch
-
- timeout_secs [default: 60]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
Messages
Services
- srv/ChangeAlliedCameraAutoExposureTimeRange.srv
- srv/ChangeAlliedCameraAutoGainRange.srv
- srv/ChangeAlliedCameraBalanceRatio.srv
- srv/ChangeAlliedCameraBalanceRatioSelector.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoRate.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/ChangeAlliedCameraExposureTime.srv
- srv/ChangeAlliedCameraGain.srv
- srv/ChangeAlliedCameraGamma.srv
- srv/ChangeAlliedCameraHue.srv
- srv/ChangeAlliedCameraIntensityAutoPrecedence.srv
- srv/ChangeAlliedCameraIntensityControllerRegion.srv
- srv/ChangeAlliedCameraIntensityControllerTarget.srv
- srv/ChangeAlliedCameraSaturation.srv
- srv/ChangeAutobiasValue.srv
- srv/ChangeBiasValue.srv
- srv/ChangeDistanceRange.srv
- srv/ChangeNetworkConfiguration.srv
- srv/ChangePointcloudColor.srv
- srv/ChangePointcloudColorRange.srv
- srv/ChangePolarimetricCameraAutoExposureTimeRange.srv
- srv/ChangePolarimetricCameraAutoGainRange.srv
- srv/ChangePolarimetricCameraBlackLevel.srv
- srv/ChangePolarimetricCameraBrightness.srv
- srv/ChangePolarimetricCameraExposureTime.srv
- srv/ChangePolarimetricCameraGain.srv
- srv/ChangePolarimetricCameraProcessType.srv
- srv/ChangeRgbCameraBrightness.srv
- srv/ChangeRgbCameraContrast.srv
- srv/ChangeRgbCameraExposureTime.srv
- srv/ChangeRgbCameraGain.srv
- srv/ChangeRgbCameraGamma.srv
- srv/ChangeRgbCameraSaturation.srv
- srv/ChangeRgbCameraSharpness.srv
- srv/ChangeRgbCameraWhiteBalance.srv
- srv/ChangeStreamingProtocol.srv
- srv/ChangeThermalCameraColormap.srv
- srv/ChangeThermalCameraProcessingPipeline.srv
- srv/ChangeThermalCameraTemperatureFilter.srv
- srv/EnableAlliedCameraAutoExposureTime.srv
- srv/EnableAlliedCameraAutoGain.srv
- srv/EnableAlliedCameraAutoWhiteBalance.srv
- srv/EnableAutoBias.srv
- srv/EnablePolarimetricCameraAutoExposureTime.srv
- srv/EnablePolarimetricCameraAutoGain.srv
- srv/EnablePolarimetricCameraStreamProcessedImage.srv
- srv/EnableRgbCameraAutoExposureTime.srv
- srv/EnableRgbCameraAutoWhiteBalance.srv
- srv/EnableThermalCameraTemperatureDataUdp.srv
- srv/EnableThermalCameraTemperatureFilter.srv
- srv/FindDevices.srv
- srv/GetAlliedCameraAutoExposureTime.srv
- srv/GetAlliedCameraAutoExposureTimeRange.srv
- srv/GetAlliedCameraAutoGain.srv
- srv/GetAlliedCameraAutoGainRange.srv
- srv/GetAlliedCameraAutoModeRegion.srv
- srv/GetAlliedCameraAutoWhiteBalance.srv
- srv/GetAlliedCameraBalanceRatio.srv
- srv/GetAlliedCameraBalanceRatioSelector.srv
- srv/GetAlliedCameraBalanceWhiteAutoRate.srv
- srv/GetAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/GetAlliedCameraBlackLevel.srv
- srv/GetAlliedCameraExposureTime.srv
- srv/GetAlliedCameraGain.srv
- srv/GetAlliedCameraGamma.srv
- srv/GetAlliedCameraHue.srv
- srv/GetAlliedCameraIntensityAutoPrecedence.srv
- srv/GetAlliedCameraIntensityControllerRegion.srv
- srv/GetAlliedCameraIntensityControllerTarget.srv
- srv/GetAlliedCameraMaxDriverBuffersCount.srv
- srv/GetAlliedCameraSaturation.srv
- srv/GetAlliedCameraSharpness.srv
- srv/GetAutobiasValue.srv
- srv/GetDeviceInfo.srv
- srv/GetDeviceStatus.srv
- srv/GetDeviceTemperatures.srv
- srv/GetLocalServerAddress.srv
- srv/GetNetworkConfiguration.srv
- srv/GetRtspPipeline.srv
- srv/GetSensorsAvailable.srv
- srv/GetVersion.srv
- srv/Initialize.srv
- srv/LibL3camStatus.srv
- srv/PowerOffDevice.srv
- srv/SensorDisconnected.srv
- srv/SetBiasShortRange.srv
- srv/SetPolarimetricCameraDefaultSettings.srv
- srv/SetRgbCameraDefaultSettings.srv
- srv/StartDevice.srv
- srv/StartStream.srv
- srv/StopDevice.srv
- srv/StopStream.srv
- srv/Terminate.srv
Plugins
Recent questions tagged l3cam_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.0.2 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/beamaginelidar/l3cam_ros.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-26 |
Dev Status | DEVELOPED |
CI status | Continuous Integration |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Beamagine
Authors
- Beamagine
l3cam_ros
This package is an ROS driver for the L3Cam device manufactured by Beamagine. The driver relies on the library libL3Cam 0.1.18
provided by Beamagine as part of the L3Cam SDK. For more info on the L3Cam check the L3Cam User Manual.
If you are looking for this package for ROS2, go to the l3cam_ros2 package.
This package is supported only on Linux systems and has only been tested with ROS noetic on an Ubuntu 20.04 system.
Installation
Dependencies
First, you will need to install the L3Cam SDK.
Download the package from Beamagine’s L3Cam SDK 0.1.18 release repository and install the required package depending on your hardware architecture:
sudo dpkg -i <PACKAGE>
ROS Driver
Clone this repository in your catkin workspace (e.g. catkin_ws) and build:
cd ~/catkin_ws/src && git clone https://github.com/beamaginelidar/l3cam_ros
catkin_make
Access Permission
You will need to give permission to the cfg files.
cd ~/catkin_ws/src/l3cam_ros/cfg
chmod a+x Network.cfg Lidar.cfg Polarimetric.cfg Rgb.cfg Thermal.cfg AlliedWide.cfg AlliedNarrow.cfg
Operational Advice
Jumbo frames
You will need to enable jumbo frames on your ethernet adapter by increasing the MTU (Maximum Transmission Unit) on the network interface attached to the camera.
A jumbo frame is an Ethernet frame that is larger than 1500 bytes. Most Ethernet adapters support jumbo frames, however it is usually turned off by default. Please note in order to set a 9000 byte packet size on the camera, the Ethernet adapter must support a jumbo frame size of 9000 bytes or higher.
You can check what your current MTU setting is by running the following command:
ifconfig | grep mtu
You should increase the MTU to 9000
to allow jumbo frames. If you use Network Manager, this can be done by opening the network interface settings and editing the “MTU” box under the “Identity” tab.
See the “Linux host configuration” section of the L3Cam User Manual for full details.
Receive Buffer Size
It is also recommended to increase your network default and maximum receive buffer size.
You can check what your current buffer size is:
sudo sysctl 'net.core.rmem_max'
sudo sysctl 'net.core.rmem_default'
Update the buffer size with the following commands:
sudo sh -c "echo 'net.core.rmem_default=268435456' >> /etc/sysctl.conf"
sudo sh -c "echo 'net.core.rmem_max=268435456' >> /etc/sysctl.conf"
sudo sysctl -p
Port usage
libL3Cam
uses the following ports for streaming and communications:
PROTOCOL | PORT | CONFIGURATION |
---|---|---|
TCP | 6000 (L3CAM) | Fixed |
UDP | 6050 (LIDAR) | Fixed |
UDP | 6060 (Allied Wide, Polarimetric) | Fixed |
UDP | 6020 (Allied Narrow, RGB) | Fixed |
UDP | 6030 (LWIR) | Fixed |
RTSP | 5040 (LIDAR) | Reconfigurable |
RTSP | 5030 (Allied Wide, Polarimetric) | Reconfigurable |
RTSP | 5010 (Allied Narrow, RGB) | Reconfigurable |
RTSP | 5020 (LWIR) | Reconfigurable |
TCP is used internally by libL3Cam
and is transparent to the user. However, the system host must have the required port available.
Launch
l3cam
To run the l3cam_ros driver, launch the l3cam.launch
file specifying (if wanted) if the stream launch file, the configure launch file, rviz
(for visualization GUI) and rqt_reconfigure
(for dynamic reconfigure GUI) have to be launched too. By default, the values are as follows:
```
File truncated at 100 lines see the full file
Change log for l3cam_ros
All notable changes to the l3cam_ros package will be documented in this file.
[1.0.2] - 10-07-2024
Changed
- thermalTypes changed for newThermalTypes.
- LibL3CamStatus status types with ‘_status’ suffix to avoid errors.
- Econ wide implementation
Added
- libl3cam 0.1.18 new functionalities.
- Added missing namespace prefix on messages.
Fixed
- Fixed no error on lidar configuration bug.
- Bias value left and right bug.
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
-
The lidar pointcloud_color param RGBT_FUSION (7) value is not available and will return out of range error.
[1.0.1] - 15-03-2024
Changed
- Sensors header stamps with unix epoch timestamp
- Allied cameras stream in YUV
Added
- Topic for thermal float (pixels with temperature values)
- New libl3cam thermal camera functionalities
- Device info service
Fixed
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
[1.0.0] - 2023-12-11
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
roscpp | |
rospy | |
std_msgs | |
cv_bridge | |
sensor_msgs | |
message_generation | |
image_transport | |
dynamic_reconfigure | |
catkin | |
message_runtime |
System Dependencies
Dependant Packages
Launch files
- launch/configure_l3cam.launch
-
- network_conf [default: true]
- timeout_secs [default: 60]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 33.5]
- polarimetric_auto_exposure_time_range_maximum [default: 66470.6]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: false]
- rgb_exposure_time [default: 156]
- rgb_streaming_protocol [default: 0]
- thermal_colormap [default: 1]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: false]
- thermal_streaming_protocol [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_streaming_protocol [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_streaming_protocol [default: 0]
- launch/l3cam.launch
-
- stream [default: true]
- rviz [default: false]
- configure [default: true]
- rqt_reconfigure [default: false]
- timeout_secs [default: 30]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- local_address [default: ]
- device_address [default: ]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- lidar_rtsp_pipeline [default: ]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 40]
- polarimetric_auto_exposure_time_range_maximum [default: 66470]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- polarimetric_rtsp_pipeline [default: ]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: true]
- rgb_exposure_time [default: 156]
- rgb_resolution [default: 3]
- rgb_framerate [default: 10]
- rgb_streaming_protocol [default: 0]
- rgb_rtsp_pipeline [default: ]
- thermal_colormap [default: 5]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: true]
- thermal_streaming_protocol [default: 0]
- thermal_rtsp_pipeline [default: ]
- allied_wide_black_level [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_sharpness [default: 0]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_auto_mode_region_height [default: 1028]
- allied_wide_auto_mode_region_width [default: 1232]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_max_driver_buffers_count [default: 64]
- allied_wide_streaming_protocol [default: 0]
- allied_wide_rtsp_pipeline [default: ]
- allied_narrow_black_level [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_sharpness [default: 0]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_auto_mode_region_height [default: 1544]
- allied_narrow_auto_mode_region_width [default: 2064]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_max_driver_buffers_count [default: 64]
- allied_narrow_streaming_protocol [default: 0]
- allied_narrow_rtsp_pipeline [default: ]
- launch/stream_l3cam.launch
-
- timeout_secs [default: 60]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
Messages
Services
- srv/ChangeAlliedCameraAutoExposureTimeRange.srv
- srv/ChangeAlliedCameraAutoGainRange.srv
- srv/ChangeAlliedCameraBalanceRatio.srv
- srv/ChangeAlliedCameraBalanceRatioSelector.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoRate.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/ChangeAlliedCameraExposureTime.srv
- srv/ChangeAlliedCameraGain.srv
- srv/ChangeAlliedCameraGamma.srv
- srv/ChangeAlliedCameraHue.srv
- srv/ChangeAlliedCameraIntensityAutoPrecedence.srv
- srv/ChangeAlliedCameraIntensityControllerRegion.srv
- srv/ChangeAlliedCameraIntensityControllerTarget.srv
- srv/ChangeAlliedCameraSaturation.srv
- srv/ChangeAutobiasValue.srv
- srv/ChangeBiasValue.srv
- srv/ChangeDistanceRange.srv
- srv/ChangeNetworkConfiguration.srv
- srv/ChangePointcloudColor.srv
- srv/ChangePointcloudColorRange.srv
- srv/ChangePolarimetricCameraAutoExposureTimeRange.srv
- srv/ChangePolarimetricCameraAutoGainRange.srv
- srv/ChangePolarimetricCameraBlackLevel.srv
- srv/ChangePolarimetricCameraBrightness.srv
- srv/ChangePolarimetricCameraExposureTime.srv
- srv/ChangePolarimetricCameraGain.srv
- srv/ChangePolarimetricCameraProcessType.srv
- srv/ChangeRgbCameraBrightness.srv
- srv/ChangeRgbCameraContrast.srv
- srv/ChangeRgbCameraExposureTime.srv
- srv/ChangeRgbCameraGain.srv
- srv/ChangeRgbCameraGamma.srv
- srv/ChangeRgbCameraSaturation.srv
- srv/ChangeRgbCameraSharpness.srv
- srv/ChangeRgbCameraWhiteBalance.srv
- srv/ChangeStreamingProtocol.srv
- srv/ChangeThermalCameraColormap.srv
- srv/ChangeThermalCameraProcessingPipeline.srv
- srv/ChangeThermalCameraTemperatureFilter.srv
- srv/EnableAlliedCameraAutoExposureTime.srv
- srv/EnableAlliedCameraAutoGain.srv
- srv/EnableAlliedCameraAutoWhiteBalance.srv
- srv/EnableAutoBias.srv
- srv/EnablePolarimetricCameraAutoExposureTime.srv
- srv/EnablePolarimetricCameraAutoGain.srv
- srv/EnablePolarimetricCameraStreamProcessedImage.srv
- srv/EnableRgbCameraAutoExposureTime.srv
- srv/EnableRgbCameraAutoWhiteBalance.srv
- srv/EnableThermalCameraTemperatureDataUdp.srv
- srv/EnableThermalCameraTemperatureFilter.srv
- srv/FindDevices.srv
- srv/GetAlliedCameraAutoExposureTime.srv
- srv/GetAlliedCameraAutoExposureTimeRange.srv
- srv/GetAlliedCameraAutoGain.srv
- srv/GetAlliedCameraAutoGainRange.srv
- srv/GetAlliedCameraAutoModeRegion.srv
- srv/GetAlliedCameraAutoWhiteBalance.srv
- srv/GetAlliedCameraBalanceRatio.srv
- srv/GetAlliedCameraBalanceRatioSelector.srv
- srv/GetAlliedCameraBalanceWhiteAutoRate.srv
- srv/GetAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/GetAlliedCameraBlackLevel.srv
- srv/GetAlliedCameraExposureTime.srv
- srv/GetAlliedCameraGain.srv
- srv/GetAlliedCameraGamma.srv
- srv/GetAlliedCameraHue.srv
- srv/GetAlliedCameraIntensityAutoPrecedence.srv
- srv/GetAlliedCameraIntensityControllerRegion.srv
- srv/GetAlliedCameraIntensityControllerTarget.srv
- srv/GetAlliedCameraMaxDriverBuffersCount.srv
- srv/GetAlliedCameraSaturation.srv
- srv/GetAlliedCameraSharpness.srv
- srv/GetAutobiasValue.srv
- srv/GetDeviceInfo.srv
- srv/GetDeviceStatus.srv
- srv/GetDeviceTemperatures.srv
- srv/GetLocalServerAddress.srv
- srv/GetNetworkConfiguration.srv
- srv/GetRtspPipeline.srv
- srv/GetSensorsAvailable.srv
- srv/GetVersion.srv
- srv/Initialize.srv
- srv/LibL3camStatus.srv
- srv/PowerOffDevice.srv
- srv/SensorDisconnected.srv
- srv/SetBiasShortRange.srv
- srv/SetPolarimetricCameraDefaultSettings.srv
- srv/SetRgbCameraDefaultSettings.srv
- srv/StartDevice.srv
- srv/StartStream.srv
- srv/StopDevice.srv
- srv/StopStream.srv
- srv/Terminate.srv
Plugins
Recent questions tagged l3cam_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.0.2 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/beamaginelidar/l3cam_ros.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-26 |
Dev Status | DEVELOPED |
CI status | Continuous Integration |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Beamagine
Authors
- Beamagine
l3cam_ros
This package is an ROS driver for the L3Cam device manufactured by Beamagine. The driver relies on the library libL3Cam 0.1.18
provided by Beamagine as part of the L3Cam SDK. For more info on the L3Cam check the L3Cam User Manual.
If you are looking for this package for ROS2, go to the l3cam_ros2 package.
This package is supported only on Linux systems and has only been tested with ROS noetic on an Ubuntu 20.04 system.
Installation
Dependencies
First, you will need to install the L3Cam SDK.
Download the package from Beamagine’s L3Cam SDK 0.1.18 release repository and install the required package depending on your hardware architecture:
sudo dpkg -i <PACKAGE>
ROS Driver
Clone this repository in your catkin workspace (e.g. catkin_ws) and build:
cd ~/catkin_ws/src && git clone https://github.com/beamaginelidar/l3cam_ros
catkin_make
Access Permission
You will need to give permission to the cfg files.
cd ~/catkin_ws/src/l3cam_ros/cfg
chmod a+x Network.cfg Lidar.cfg Polarimetric.cfg Rgb.cfg Thermal.cfg AlliedWide.cfg AlliedNarrow.cfg
Operational Advice
Jumbo frames
You will need to enable jumbo frames on your ethernet adapter by increasing the MTU (Maximum Transmission Unit) on the network interface attached to the camera.
A jumbo frame is an Ethernet frame that is larger than 1500 bytes. Most Ethernet adapters support jumbo frames, however it is usually turned off by default. Please note in order to set a 9000 byte packet size on the camera, the Ethernet adapter must support a jumbo frame size of 9000 bytes or higher.
You can check what your current MTU setting is by running the following command:
ifconfig | grep mtu
You should increase the MTU to 9000
to allow jumbo frames. If you use Network Manager, this can be done by opening the network interface settings and editing the “MTU” box under the “Identity” tab.
See the “Linux host configuration” section of the L3Cam User Manual for full details.
Receive Buffer Size
It is also recommended to increase your network default and maximum receive buffer size.
You can check what your current buffer size is:
sudo sysctl 'net.core.rmem_max'
sudo sysctl 'net.core.rmem_default'
Update the buffer size with the following commands:
sudo sh -c "echo 'net.core.rmem_default=268435456' >> /etc/sysctl.conf"
sudo sh -c "echo 'net.core.rmem_max=268435456' >> /etc/sysctl.conf"
sudo sysctl -p
Port usage
libL3Cam
uses the following ports for streaming and communications:
PROTOCOL | PORT | CONFIGURATION |
---|---|---|
TCP | 6000 (L3CAM) | Fixed |
UDP | 6050 (LIDAR) | Fixed |
UDP | 6060 (Allied Wide, Polarimetric) | Fixed |
UDP | 6020 (Allied Narrow, RGB) | Fixed |
UDP | 6030 (LWIR) | Fixed |
RTSP | 5040 (LIDAR) | Reconfigurable |
RTSP | 5030 (Allied Wide, Polarimetric) | Reconfigurable |
RTSP | 5010 (Allied Narrow, RGB) | Reconfigurable |
RTSP | 5020 (LWIR) | Reconfigurable |
TCP is used internally by libL3Cam
and is transparent to the user. However, the system host must have the required port available.
Launch
l3cam
To run the l3cam_ros driver, launch the l3cam.launch
file specifying (if wanted) if the stream launch file, the configure launch file, rviz
(for visualization GUI) and rqt_reconfigure
(for dynamic reconfigure GUI) have to be launched too. By default, the values are as follows:
```
File truncated at 100 lines see the full file
Change log for l3cam_ros
All notable changes to the l3cam_ros package will be documented in this file.
[1.0.2] - 10-07-2024
Changed
- thermalTypes changed for newThermalTypes.
- LibL3CamStatus status types with ‘_status’ suffix to avoid errors.
- Econ wide implementation
Added
- libl3cam 0.1.18 new functionalities.
- Added missing namespace prefix on messages.
Fixed
- Fixed no error on lidar configuration bug.
- Bias value left and right bug.
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
-
The lidar pointcloud_color param RGBT_FUSION (7) value is not available and will return out of range error.
[1.0.1] - 15-03-2024
Changed
- Sensors header stamps with unix epoch timestamp
- Allied cameras stream in YUV
Added
- Topic for thermal float (pixels with temperature values)
- New libl3cam thermal camera functionalities
- Device info service
Fixed
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
[1.0.0] - 2023-12-11
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
roscpp | |
rospy | |
std_msgs | |
cv_bridge | |
sensor_msgs | |
message_generation | |
image_transport | |
dynamic_reconfigure | |
catkin | |
message_runtime |
System Dependencies
Dependant Packages
Launch files
- launch/configure_l3cam.launch
-
- network_conf [default: true]
- timeout_secs [default: 60]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 33.5]
- polarimetric_auto_exposure_time_range_maximum [default: 66470.6]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: false]
- rgb_exposure_time [default: 156]
- rgb_streaming_protocol [default: 0]
- thermal_colormap [default: 1]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: false]
- thermal_streaming_protocol [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_streaming_protocol [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_streaming_protocol [default: 0]
- launch/l3cam.launch
-
- stream [default: true]
- rviz [default: false]
- configure [default: true]
- rqt_reconfigure [default: false]
- timeout_secs [default: 30]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- local_address [default: ]
- device_address [default: ]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- lidar_rtsp_pipeline [default: ]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 40]
- polarimetric_auto_exposure_time_range_maximum [default: 66470]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- polarimetric_rtsp_pipeline [default: ]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: true]
- rgb_exposure_time [default: 156]
- rgb_resolution [default: 3]
- rgb_framerate [default: 10]
- rgb_streaming_protocol [default: 0]
- rgb_rtsp_pipeline [default: ]
- thermal_colormap [default: 5]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: true]
- thermal_streaming_protocol [default: 0]
- thermal_rtsp_pipeline [default: ]
- allied_wide_black_level [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_sharpness [default: 0]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_auto_mode_region_height [default: 1028]
- allied_wide_auto_mode_region_width [default: 1232]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_max_driver_buffers_count [default: 64]
- allied_wide_streaming_protocol [default: 0]
- allied_wide_rtsp_pipeline [default: ]
- allied_narrow_black_level [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_sharpness [default: 0]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_auto_mode_region_height [default: 1544]
- allied_narrow_auto_mode_region_width [default: 2064]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_max_driver_buffers_count [default: 64]
- allied_narrow_streaming_protocol [default: 0]
- allied_narrow_rtsp_pipeline [default: ]
- launch/stream_l3cam.launch
-
- timeout_secs [default: 60]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
Messages
Services
- srv/ChangeAlliedCameraAutoExposureTimeRange.srv
- srv/ChangeAlliedCameraAutoGainRange.srv
- srv/ChangeAlliedCameraBalanceRatio.srv
- srv/ChangeAlliedCameraBalanceRatioSelector.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoRate.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/ChangeAlliedCameraExposureTime.srv
- srv/ChangeAlliedCameraGain.srv
- srv/ChangeAlliedCameraGamma.srv
- srv/ChangeAlliedCameraHue.srv
- srv/ChangeAlliedCameraIntensityAutoPrecedence.srv
- srv/ChangeAlliedCameraIntensityControllerRegion.srv
- srv/ChangeAlliedCameraIntensityControllerTarget.srv
- srv/ChangeAlliedCameraSaturation.srv
- srv/ChangeAutobiasValue.srv
- srv/ChangeBiasValue.srv
- srv/ChangeDistanceRange.srv
- srv/ChangeNetworkConfiguration.srv
- srv/ChangePointcloudColor.srv
- srv/ChangePointcloudColorRange.srv
- srv/ChangePolarimetricCameraAutoExposureTimeRange.srv
- srv/ChangePolarimetricCameraAutoGainRange.srv
- srv/ChangePolarimetricCameraBlackLevel.srv
- srv/ChangePolarimetricCameraBrightness.srv
- srv/ChangePolarimetricCameraExposureTime.srv
- srv/ChangePolarimetricCameraGain.srv
- srv/ChangePolarimetricCameraProcessType.srv
- srv/ChangeRgbCameraBrightness.srv
- srv/ChangeRgbCameraContrast.srv
- srv/ChangeRgbCameraExposureTime.srv
- srv/ChangeRgbCameraGain.srv
- srv/ChangeRgbCameraGamma.srv
- srv/ChangeRgbCameraSaturation.srv
- srv/ChangeRgbCameraSharpness.srv
- srv/ChangeRgbCameraWhiteBalance.srv
- srv/ChangeStreamingProtocol.srv
- srv/ChangeThermalCameraColormap.srv
- srv/ChangeThermalCameraProcessingPipeline.srv
- srv/ChangeThermalCameraTemperatureFilter.srv
- srv/EnableAlliedCameraAutoExposureTime.srv
- srv/EnableAlliedCameraAutoGain.srv
- srv/EnableAlliedCameraAutoWhiteBalance.srv
- srv/EnableAutoBias.srv
- srv/EnablePolarimetricCameraAutoExposureTime.srv
- srv/EnablePolarimetricCameraAutoGain.srv
- srv/EnablePolarimetricCameraStreamProcessedImage.srv
- srv/EnableRgbCameraAutoExposureTime.srv
- srv/EnableRgbCameraAutoWhiteBalance.srv
- srv/EnableThermalCameraTemperatureDataUdp.srv
- srv/EnableThermalCameraTemperatureFilter.srv
- srv/FindDevices.srv
- srv/GetAlliedCameraAutoExposureTime.srv
- srv/GetAlliedCameraAutoExposureTimeRange.srv
- srv/GetAlliedCameraAutoGain.srv
- srv/GetAlliedCameraAutoGainRange.srv
- srv/GetAlliedCameraAutoModeRegion.srv
- srv/GetAlliedCameraAutoWhiteBalance.srv
- srv/GetAlliedCameraBalanceRatio.srv
- srv/GetAlliedCameraBalanceRatioSelector.srv
- srv/GetAlliedCameraBalanceWhiteAutoRate.srv
- srv/GetAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/GetAlliedCameraBlackLevel.srv
- srv/GetAlliedCameraExposureTime.srv
- srv/GetAlliedCameraGain.srv
- srv/GetAlliedCameraGamma.srv
- srv/GetAlliedCameraHue.srv
- srv/GetAlliedCameraIntensityAutoPrecedence.srv
- srv/GetAlliedCameraIntensityControllerRegion.srv
- srv/GetAlliedCameraIntensityControllerTarget.srv
- srv/GetAlliedCameraMaxDriverBuffersCount.srv
- srv/GetAlliedCameraSaturation.srv
- srv/GetAlliedCameraSharpness.srv
- srv/GetAutobiasValue.srv
- srv/GetDeviceInfo.srv
- srv/GetDeviceStatus.srv
- srv/GetDeviceTemperatures.srv
- srv/GetLocalServerAddress.srv
- srv/GetNetworkConfiguration.srv
- srv/GetRtspPipeline.srv
- srv/GetSensorsAvailable.srv
- srv/GetVersion.srv
- srv/Initialize.srv
- srv/LibL3camStatus.srv
- srv/PowerOffDevice.srv
- srv/SensorDisconnected.srv
- srv/SetBiasShortRange.srv
- srv/SetPolarimetricCameraDefaultSettings.srv
- srv/SetRgbCameraDefaultSettings.srv
- srv/StartDevice.srv
- srv/StartStream.srv
- srv/StopDevice.srv
- srv/StopStream.srv
- srv/Terminate.srv
Plugins
Recent questions tagged l3cam_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.0.2 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/beamaginelidar/l3cam_ros.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-26 |
Dev Status | DEVELOPED |
CI status | Continuous Integration |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Beamagine
Authors
- Beamagine
l3cam_ros
This package is an ROS driver for the L3Cam device manufactured by Beamagine. The driver relies on the library libL3Cam 0.1.18
provided by Beamagine as part of the L3Cam SDK. For more info on the L3Cam check the L3Cam User Manual.
If you are looking for this package for ROS2, go to the l3cam_ros2 package.
This package is supported only on Linux systems and has only been tested with ROS noetic on an Ubuntu 20.04 system.
Installation
Dependencies
First, you will need to install the L3Cam SDK.
Download the package from Beamagine’s L3Cam SDK 0.1.18 release repository and install the required package depending on your hardware architecture:
sudo dpkg -i <PACKAGE>
ROS Driver
Clone this repository in your catkin workspace (e.g. catkin_ws) and build:
cd ~/catkin_ws/src && git clone https://github.com/beamaginelidar/l3cam_ros
catkin_make
Access Permission
You will need to give permission to the cfg files.
cd ~/catkin_ws/src/l3cam_ros/cfg
chmod a+x Network.cfg Lidar.cfg Polarimetric.cfg Rgb.cfg Thermal.cfg AlliedWide.cfg AlliedNarrow.cfg
Operational Advice
Jumbo frames
You will need to enable jumbo frames on your ethernet adapter by increasing the MTU (Maximum Transmission Unit) on the network interface attached to the camera.
A jumbo frame is an Ethernet frame that is larger than 1500 bytes. Most Ethernet adapters support jumbo frames, however it is usually turned off by default. Please note in order to set a 9000 byte packet size on the camera, the Ethernet adapter must support a jumbo frame size of 9000 bytes or higher.
You can check what your current MTU setting is by running the following command:
ifconfig | grep mtu
You should increase the MTU to 9000
to allow jumbo frames. If you use Network Manager, this can be done by opening the network interface settings and editing the “MTU” box under the “Identity” tab.
See the “Linux host configuration” section of the L3Cam User Manual for full details.
Receive Buffer Size
It is also recommended to increase your network default and maximum receive buffer size.
You can check what your current buffer size is:
sudo sysctl 'net.core.rmem_max'
sudo sysctl 'net.core.rmem_default'
Update the buffer size with the following commands:
sudo sh -c "echo 'net.core.rmem_default=268435456' >> /etc/sysctl.conf"
sudo sh -c "echo 'net.core.rmem_max=268435456' >> /etc/sysctl.conf"
sudo sysctl -p
Port usage
libL3Cam
uses the following ports for streaming and communications:
PROTOCOL | PORT | CONFIGURATION |
---|---|---|
TCP | 6000 (L3CAM) | Fixed |
UDP | 6050 (LIDAR) | Fixed |
UDP | 6060 (Allied Wide, Polarimetric) | Fixed |
UDP | 6020 (Allied Narrow, RGB) | Fixed |
UDP | 6030 (LWIR) | Fixed |
RTSP | 5040 (LIDAR) | Reconfigurable |
RTSP | 5030 (Allied Wide, Polarimetric) | Reconfigurable |
RTSP | 5010 (Allied Narrow, RGB) | Reconfigurable |
RTSP | 5020 (LWIR) | Reconfigurable |
TCP is used internally by libL3Cam
and is transparent to the user. However, the system host must have the required port available.
Launch
l3cam
To run the l3cam_ros driver, launch the l3cam.launch
file specifying (if wanted) if the stream launch file, the configure launch file, rviz
(for visualization GUI) and rqt_reconfigure
(for dynamic reconfigure GUI) have to be launched too. By default, the values are as follows:
```
File truncated at 100 lines see the full file
Change log for l3cam_ros
All notable changes to the l3cam_ros package will be documented in this file.
[1.0.2] - 10-07-2024
Changed
- thermalTypes changed for newThermalTypes.
- LibL3CamStatus status types with ‘_status’ suffix to avoid errors.
- Econ wide implementation
Added
- libl3cam 0.1.18 new functionalities.
- Added missing namespace prefix on messages.
Fixed
- Fixed no error on lidar configuration bug.
- Bias value left and right bug.
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
-
The lidar pointcloud_color param RGBT_FUSION (7) value is not available and will return out of range error.
[1.0.1] - 15-03-2024
Changed
- Sensors header stamps with unix epoch timestamp
- Allied cameras stream in YUV
Added
- Topic for thermal float (pixels with temperature values)
- New libl3cam thermal camera functionalities
- Device info service
Fixed
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
[1.0.0] - 2023-12-11
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
roscpp | |
rospy | |
std_msgs | |
cv_bridge | |
sensor_msgs | |
message_generation | |
image_transport | |
dynamic_reconfigure | |
catkin | |
message_runtime |
System Dependencies
Dependant Packages
Launch files
- launch/configure_l3cam.launch
-
- network_conf [default: true]
- timeout_secs [default: 60]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 33.5]
- polarimetric_auto_exposure_time_range_maximum [default: 66470.6]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: false]
- rgb_exposure_time [default: 156]
- rgb_streaming_protocol [default: 0]
- thermal_colormap [default: 1]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: false]
- thermal_streaming_protocol [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_streaming_protocol [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_streaming_protocol [default: 0]
- launch/l3cam.launch
-
- stream [default: true]
- rviz [default: false]
- configure [default: true]
- rqt_reconfigure [default: false]
- timeout_secs [default: 30]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- local_address [default: ]
- device_address [default: ]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- lidar_rtsp_pipeline [default: ]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 40]
- polarimetric_auto_exposure_time_range_maximum [default: 66470]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- polarimetric_rtsp_pipeline [default: ]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: true]
- rgb_exposure_time [default: 156]
- rgb_resolution [default: 3]
- rgb_framerate [default: 10]
- rgb_streaming_protocol [default: 0]
- rgb_rtsp_pipeline [default: ]
- thermal_colormap [default: 5]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: true]
- thermal_streaming_protocol [default: 0]
- thermal_rtsp_pipeline [default: ]
- allied_wide_black_level [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_sharpness [default: 0]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_auto_mode_region_height [default: 1028]
- allied_wide_auto_mode_region_width [default: 1232]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_max_driver_buffers_count [default: 64]
- allied_wide_streaming_protocol [default: 0]
- allied_wide_rtsp_pipeline [default: ]
- allied_narrow_black_level [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_sharpness [default: 0]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_auto_mode_region_height [default: 1544]
- allied_narrow_auto_mode_region_width [default: 2064]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_max_driver_buffers_count [default: 64]
- allied_narrow_streaming_protocol [default: 0]
- allied_narrow_rtsp_pipeline [default: ]
- launch/stream_l3cam.launch
-
- timeout_secs [default: 60]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
Messages
Services
- srv/ChangeAlliedCameraAutoExposureTimeRange.srv
- srv/ChangeAlliedCameraAutoGainRange.srv
- srv/ChangeAlliedCameraBalanceRatio.srv
- srv/ChangeAlliedCameraBalanceRatioSelector.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoRate.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/ChangeAlliedCameraExposureTime.srv
- srv/ChangeAlliedCameraGain.srv
- srv/ChangeAlliedCameraGamma.srv
- srv/ChangeAlliedCameraHue.srv
- srv/ChangeAlliedCameraIntensityAutoPrecedence.srv
- srv/ChangeAlliedCameraIntensityControllerRegion.srv
- srv/ChangeAlliedCameraIntensityControllerTarget.srv
- srv/ChangeAlliedCameraSaturation.srv
- srv/ChangeAutobiasValue.srv
- srv/ChangeBiasValue.srv
- srv/ChangeDistanceRange.srv
- srv/ChangeNetworkConfiguration.srv
- srv/ChangePointcloudColor.srv
- srv/ChangePointcloudColorRange.srv
- srv/ChangePolarimetricCameraAutoExposureTimeRange.srv
- srv/ChangePolarimetricCameraAutoGainRange.srv
- srv/ChangePolarimetricCameraBlackLevel.srv
- srv/ChangePolarimetricCameraBrightness.srv
- srv/ChangePolarimetricCameraExposureTime.srv
- srv/ChangePolarimetricCameraGain.srv
- srv/ChangePolarimetricCameraProcessType.srv
- srv/ChangeRgbCameraBrightness.srv
- srv/ChangeRgbCameraContrast.srv
- srv/ChangeRgbCameraExposureTime.srv
- srv/ChangeRgbCameraGain.srv
- srv/ChangeRgbCameraGamma.srv
- srv/ChangeRgbCameraSaturation.srv
- srv/ChangeRgbCameraSharpness.srv
- srv/ChangeRgbCameraWhiteBalance.srv
- srv/ChangeStreamingProtocol.srv
- srv/ChangeThermalCameraColormap.srv
- srv/ChangeThermalCameraProcessingPipeline.srv
- srv/ChangeThermalCameraTemperatureFilter.srv
- srv/EnableAlliedCameraAutoExposureTime.srv
- srv/EnableAlliedCameraAutoGain.srv
- srv/EnableAlliedCameraAutoWhiteBalance.srv
- srv/EnableAutoBias.srv
- srv/EnablePolarimetricCameraAutoExposureTime.srv
- srv/EnablePolarimetricCameraAutoGain.srv
- srv/EnablePolarimetricCameraStreamProcessedImage.srv
- srv/EnableRgbCameraAutoExposureTime.srv
- srv/EnableRgbCameraAutoWhiteBalance.srv
- srv/EnableThermalCameraTemperatureDataUdp.srv
- srv/EnableThermalCameraTemperatureFilter.srv
- srv/FindDevices.srv
- srv/GetAlliedCameraAutoExposureTime.srv
- srv/GetAlliedCameraAutoExposureTimeRange.srv
- srv/GetAlliedCameraAutoGain.srv
- srv/GetAlliedCameraAutoGainRange.srv
- srv/GetAlliedCameraAutoModeRegion.srv
- srv/GetAlliedCameraAutoWhiteBalance.srv
- srv/GetAlliedCameraBalanceRatio.srv
- srv/GetAlliedCameraBalanceRatioSelector.srv
- srv/GetAlliedCameraBalanceWhiteAutoRate.srv
- srv/GetAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/GetAlliedCameraBlackLevel.srv
- srv/GetAlliedCameraExposureTime.srv
- srv/GetAlliedCameraGain.srv
- srv/GetAlliedCameraGamma.srv
- srv/GetAlliedCameraHue.srv
- srv/GetAlliedCameraIntensityAutoPrecedence.srv
- srv/GetAlliedCameraIntensityControllerRegion.srv
- srv/GetAlliedCameraIntensityControllerTarget.srv
- srv/GetAlliedCameraMaxDriverBuffersCount.srv
- srv/GetAlliedCameraSaturation.srv
- srv/GetAlliedCameraSharpness.srv
- srv/GetAutobiasValue.srv
- srv/GetDeviceInfo.srv
- srv/GetDeviceStatus.srv
- srv/GetDeviceTemperatures.srv
- srv/GetLocalServerAddress.srv
- srv/GetNetworkConfiguration.srv
- srv/GetRtspPipeline.srv
- srv/GetSensorsAvailable.srv
- srv/GetVersion.srv
- srv/Initialize.srv
- srv/LibL3camStatus.srv
- srv/PowerOffDevice.srv
- srv/SensorDisconnected.srv
- srv/SetBiasShortRange.srv
- srv/SetPolarimetricCameraDefaultSettings.srv
- srv/SetRgbCameraDefaultSettings.srv
- srv/StartDevice.srv
- srv/StartStream.srv
- srv/StopDevice.srv
- srv/StopStream.srv
- srv/Terminate.srv
Plugins
Recent questions tagged l3cam_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.0.2 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/beamaginelidar/l3cam_ros.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-26 |
Dev Status | DEVELOPED |
CI status | Continuous Integration |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Beamagine
Authors
- Beamagine
l3cam_ros
This package is an ROS driver for the L3Cam device manufactured by Beamagine. The driver relies on the library libL3Cam 0.1.18
provided by Beamagine as part of the L3Cam SDK. For more info on the L3Cam check the L3Cam User Manual.
If you are looking for this package for ROS2, go to the l3cam_ros2 package.
This package is supported only on Linux systems and has only been tested with ROS noetic on an Ubuntu 20.04 system.
Installation
Dependencies
First, you will need to install the L3Cam SDK.
Download the package from Beamagine’s L3Cam SDK 0.1.18 release repository and install the required package depending on your hardware architecture:
sudo dpkg -i <PACKAGE>
ROS Driver
Clone this repository in your catkin workspace (e.g. catkin_ws) and build:
cd ~/catkin_ws/src && git clone https://github.com/beamaginelidar/l3cam_ros
catkin_make
Access Permission
You will need to give permission to the cfg files.
cd ~/catkin_ws/src/l3cam_ros/cfg
chmod a+x Network.cfg Lidar.cfg Polarimetric.cfg Rgb.cfg Thermal.cfg AlliedWide.cfg AlliedNarrow.cfg
Operational Advice
Jumbo frames
You will need to enable jumbo frames on your ethernet adapter by increasing the MTU (Maximum Transmission Unit) on the network interface attached to the camera.
A jumbo frame is an Ethernet frame that is larger than 1500 bytes. Most Ethernet adapters support jumbo frames, however it is usually turned off by default. Please note in order to set a 9000 byte packet size on the camera, the Ethernet adapter must support a jumbo frame size of 9000 bytes or higher.
You can check what your current MTU setting is by running the following command:
ifconfig | grep mtu
You should increase the MTU to 9000
to allow jumbo frames. If you use Network Manager, this can be done by opening the network interface settings and editing the “MTU” box under the “Identity” tab.
See the “Linux host configuration” section of the L3Cam User Manual for full details.
Receive Buffer Size
It is also recommended to increase your network default and maximum receive buffer size.
You can check what your current buffer size is:
sudo sysctl 'net.core.rmem_max'
sudo sysctl 'net.core.rmem_default'
Update the buffer size with the following commands:
sudo sh -c "echo 'net.core.rmem_default=268435456' >> /etc/sysctl.conf"
sudo sh -c "echo 'net.core.rmem_max=268435456' >> /etc/sysctl.conf"
sudo sysctl -p
Port usage
libL3Cam
uses the following ports for streaming and communications:
PROTOCOL | PORT | CONFIGURATION |
---|---|---|
TCP | 6000 (L3CAM) | Fixed |
UDP | 6050 (LIDAR) | Fixed |
UDP | 6060 (Allied Wide, Polarimetric) | Fixed |
UDP | 6020 (Allied Narrow, RGB) | Fixed |
UDP | 6030 (LWIR) | Fixed |
RTSP | 5040 (LIDAR) | Reconfigurable |
RTSP | 5030 (Allied Wide, Polarimetric) | Reconfigurable |
RTSP | 5010 (Allied Narrow, RGB) | Reconfigurable |
RTSP | 5020 (LWIR) | Reconfigurable |
TCP is used internally by libL3Cam
and is transparent to the user. However, the system host must have the required port available.
Launch
l3cam
To run the l3cam_ros driver, launch the l3cam.launch
file specifying (if wanted) if the stream launch file, the configure launch file, rviz
(for visualization GUI) and rqt_reconfigure
(for dynamic reconfigure GUI) have to be launched too. By default, the values are as follows:
```
File truncated at 100 lines see the full file
Change log for l3cam_ros
All notable changes to the l3cam_ros package will be documented in this file.
[1.0.2] - 10-07-2024
Changed
- thermalTypes changed for newThermalTypes.
- LibL3CamStatus status types with ‘_status’ suffix to avoid errors.
- Econ wide implementation
Added
- libl3cam 0.1.18 new functionalities.
- Added missing namespace prefix on messages.
Fixed
- Fixed no error on lidar configuration bug.
- Bias value left and right bug.
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
-
The lidar pointcloud_color param RGBT_FUSION (7) value is not available and will return out of range error.
[1.0.1] - 15-03-2024
Changed
- Sensors header stamps with unix epoch timestamp
- Allied cameras stream in YUV
Added
- Topic for thermal float (pixels with temperature values)
- New libl3cam thermal camera functionalities
- Device info service
Fixed
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
[1.0.0] - 2023-12-11
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
roscpp | |
rospy | |
std_msgs | |
cv_bridge | |
sensor_msgs | |
message_generation | |
image_transport | |
dynamic_reconfigure | |
catkin | |
message_runtime |
System Dependencies
Dependant Packages
Launch files
- launch/configure_l3cam.launch
-
- network_conf [default: true]
- timeout_secs [default: 60]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 33.5]
- polarimetric_auto_exposure_time_range_maximum [default: 66470.6]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: false]
- rgb_exposure_time [default: 156]
- rgb_streaming_protocol [default: 0]
- thermal_colormap [default: 1]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: false]
- thermal_streaming_protocol [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_streaming_protocol [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_streaming_protocol [default: 0]
- launch/l3cam.launch
-
- stream [default: true]
- rviz [default: false]
- configure [default: true]
- rqt_reconfigure [default: false]
- timeout_secs [default: 30]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- local_address [default: ]
- device_address [default: ]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- lidar_rtsp_pipeline [default: ]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 40]
- polarimetric_auto_exposure_time_range_maximum [default: 66470]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- polarimetric_rtsp_pipeline [default: ]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: true]
- rgb_exposure_time [default: 156]
- rgb_resolution [default: 3]
- rgb_framerate [default: 10]
- rgb_streaming_protocol [default: 0]
- rgb_rtsp_pipeline [default: ]
- thermal_colormap [default: 5]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: true]
- thermal_streaming_protocol [default: 0]
- thermal_rtsp_pipeline [default: ]
- allied_wide_black_level [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_sharpness [default: 0]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_auto_mode_region_height [default: 1028]
- allied_wide_auto_mode_region_width [default: 1232]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_max_driver_buffers_count [default: 64]
- allied_wide_streaming_protocol [default: 0]
- allied_wide_rtsp_pipeline [default: ]
- allied_narrow_black_level [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_sharpness [default: 0]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_auto_mode_region_height [default: 1544]
- allied_narrow_auto_mode_region_width [default: 2064]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_max_driver_buffers_count [default: 64]
- allied_narrow_streaming_protocol [default: 0]
- allied_narrow_rtsp_pipeline [default: ]
- launch/stream_l3cam.launch
-
- timeout_secs [default: 60]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
Messages
Services
- srv/ChangeAlliedCameraAutoExposureTimeRange.srv
- srv/ChangeAlliedCameraAutoGainRange.srv
- srv/ChangeAlliedCameraBalanceRatio.srv
- srv/ChangeAlliedCameraBalanceRatioSelector.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoRate.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/ChangeAlliedCameraExposureTime.srv
- srv/ChangeAlliedCameraGain.srv
- srv/ChangeAlliedCameraGamma.srv
- srv/ChangeAlliedCameraHue.srv
- srv/ChangeAlliedCameraIntensityAutoPrecedence.srv
- srv/ChangeAlliedCameraIntensityControllerRegion.srv
- srv/ChangeAlliedCameraIntensityControllerTarget.srv
- srv/ChangeAlliedCameraSaturation.srv
- srv/ChangeAutobiasValue.srv
- srv/ChangeBiasValue.srv
- srv/ChangeDistanceRange.srv
- srv/ChangeNetworkConfiguration.srv
- srv/ChangePointcloudColor.srv
- srv/ChangePointcloudColorRange.srv
- srv/ChangePolarimetricCameraAutoExposureTimeRange.srv
- srv/ChangePolarimetricCameraAutoGainRange.srv
- srv/ChangePolarimetricCameraBlackLevel.srv
- srv/ChangePolarimetricCameraBrightness.srv
- srv/ChangePolarimetricCameraExposureTime.srv
- srv/ChangePolarimetricCameraGain.srv
- srv/ChangePolarimetricCameraProcessType.srv
- srv/ChangeRgbCameraBrightness.srv
- srv/ChangeRgbCameraContrast.srv
- srv/ChangeRgbCameraExposureTime.srv
- srv/ChangeRgbCameraGain.srv
- srv/ChangeRgbCameraGamma.srv
- srv/ChangeRgbCameraSaturation.srv
- srv/ChangeRgbCameraSharpness.srv
- srv/ChangeRgbCameraWhiteBalance.srv
- srv/ChangeStreamingProtocol.srv
- srv/ChangeThermalCameraColormap.srv
- srv/ChangeThermalCameraProcessingPipeline.srv
- srv/ChangeThermalCameraTemperatureFilter.srv
- srv/EnableAlliedCameraAutoExposureTime.srv
- srv/EnableAlliedCameraAutoGain.srv
- srv/EnableAlliedCameraAutoWhiteBalance.srv
- srv/EnableAutoBias.srv
- srv/EnablePolarimetricCameraAutoExposureTime.srv
- srv/EnablePolarimetricCameraAutoGain.srv
- srv/EnablePolarimetricCameraStreamProcessedImage.srv
- srv/EnableRgbCameraAutoExposureTime.srv
- srv/EnableRgbCameraAutoWhiteBalance.srv
- srv/EnableThermalCameraTemperatureDataUdp.srv
- srv/EnableThermalCameraTemperatureFilter.srv
- srv/FindDevices.srv
- srv/GetAlliedCameraAutoExposureTime.srv
- srv/GetAlliedCameraAutoExposureTimeRange.srv
- srv/GetAlliedCameraAutoGain.srv
- srv/GetAlliedCameraAutoGainRange.srv
- srv/GetAlliedCameraAutoModeRegion.srv
- srv/GetAlliedCameraAutoWhiteBalance.srv
- srv/GetAlliedCameraBalanceRatio.srv
- srv/GetAlliedCameraBalanceRatioSelector.srv
- srv/GetAlliedCameraBalanceWhiteAutoRate.srv
- srv/GetAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/GetAlliedCameraBlackLevel.srv
- srv/GetAlliedCameraExposureTime.srv
- srv/GetAlliedCameraGain.srv
- srv/GetAlliedCameraGamma.srv
- srv/GetAlliedCameraHue.srv
- srv/GetAlliedCameraIntensityAutoPrecedence.srv
- srv/GetAlliedCameraIntensityControllerRegion.srv
- srv/GetAlliedCameraIntensityControllerTarget.srv
- srv/GetAlliedCameraMaxDriverBuffersCount.srv
- srv/GetAlliedCameraSaturation.srv
- srv/GetAlliedCameraSharpness.srv
- srv/GetAutobiasValue.srv
- srv/GetDeviceInfo.srv
- srv/GetDeviceStatus.srv
- srv/GetDeviceTemperatures.srv
- srv/GetLocalServerAddress.srv
- srv/GetNetworkConfiguration.srv
- srv/GetRtspPipeline.srv
- srv/GetSensorsAvailable.srv
- srv/GetVersion.srv
- srv/Initialize.srv
- srv/LibL3camStatus.srv
- srv/PowerOffDevice.srv
- srv/SensorDisconnected.srv
- srv/SetBiasShortRange.srv
- srv/SetPolarimetricCameraDefaultSettings.srv
- srv/SetRgbCameraDefaultSettings.srv
- srv/StartDevice.srv
- srv/StartStream.srv
- srv/StopDevice.srv
- srv/StopStream.srv
- srv/Terminate.srv
Plugins
Recent questions tagged l3cam_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.0.2 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/beamaginelidar/l3cam_ros.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-26 |
Dev Status | DEVELOPED |
CI status | Continuous Integration |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Beamagine
Authors
- Beamagine
l3cam_ros
This package is an ROS driver for the L3Cam device manufactured by Beamagine. The driver relies on the library libL3Cam 0.1.18
provided by Beamagine as part of the L3Cam SDK. For more info on the L3Cam check the L3Cam User Manual.
If you are looking for this package for ROS2, go to the l3cam_ros2 package.
This package is supported only on Linux systems and has only been tested with ROS noetic on an Ubuntu 20.04 system.
Installation
Dependencies
First, you will need to install the L3Cam SDK.
Download the package from Beamagine’s L3Cam SDK 0.1.18 release repository and install the required package depending on your hardware architecture:
sudo dpkg -i <PACKAGE>
ROS Driver
Clone this repository in your catkin workspace (e.g. catkin_ws) and build:
cd ~/catkin_ws/src && git clone https://github.com/beamaginelidar/l3cam_ros
catkin_make
Access Permission
You will need to give permission to the cfg files.
cd ~/catkin_ws/src/l3cam_ros/cfg
chmod a+x Network.cfg Lidar.cfg Polarimetric.cfg Rgb.cfg Thermal.cfg AlliedWide.cfg AlliedNarrow.cfg
Operational Advice
Jumbo frames
You will need to enable jumbo frames on your ethernet adapter by increasing the MTU (Maximum Transmission Unit) on the network interface attached to the camera.
A jumbo frame is an Ethernet frame that is larger than 1500 bytes. Most Ethernet adapters support jumbo frames, however it is usually turned off by default. Please note in order to set a 9000 byte packet size on the camera, the Ethernet adapter must support a jumbo frame size of 9000 bytes or higher.
You can check what your current MTU setting is by running the following command:
ifconfig | grep mtu
You should increase the MTU to 9000
to allow jumbo frames. If you use Network Manager, this can be done by opening the network interface settings and editing the “MTU” box under the “Identity” tab.
See the “Linux host configuration” section of the L3Cam User Manual for full details.
Receive Buffer Size
It is also recommended to increase your network default and maximum receive buffer size.
You can check what your current buffer size is:
sudo sysctl 'net.core.rmem_max'
sudo sysctl 'net.core.rmem_default'
Update the buffer size with the following commands:
sudo sh -c "echo 'net.core.rmem_default=268435456' >> /etc/sysctl.conf"
sudo sh -c "echo 'net.core.rmem_max=268435456' >> /etc/sysctl.conf"
sudo sysctl -p
Port usage
libL3Cam
uses the following ports for streaming and communications:
PROTOCOL | PORT | CONFIGURATION |
---|---|---|
TCP | 6000 (L3CAM) | Fixed |
UDP | 6050 (LIDAR) | Fixed |
UDP | 6060 (Allied Wide, Polarimetric) | Fixed |
UDP | 6020 (Allied Narrow, RGB) | Fixed |
UDP | 6030 (LWIR) | Fixed |
RTSP | 5040 (LIDAR) | Reconfigurable |
RTSP | 5030 (Allied Wide, Polarimetric) | Reconfigurable |
RTSP | 5010 (Allied Narrow, RGB) | Reconfigurable |
RTSP | 5020 (LWIR) | Reconfigurable |
TCP is used internally by libL3Cam
and is transparent to the user. However, the system host must have the required port available.
Launch
l3cam
To run the l3cam_ros driver, launch the l3cam.launch
file specifying (if wanted) if the stream launch file, the configure launch file, rviz
(for visualization GUI) and rqt_reconfigure
(for dynamic reconfigure GUI) have to be launched too. By default, the values are as follows:
```
File truncated at 100 lines see the full file
Change log for l3cam_ros
All notable changes to the l3cam_ros package will be documented in this file.
[1.0.2] - 10-07-2024
Changed
- thermalTypes changed for newThermalTypes.
- LibL3CamStatus status types with ‘_status’ suffix to avoid errors.
- Econ wide implementation
Added
- libl3cam 0.1.18 new functionalities.
- Added missing namespace prefix on messages.
Fixed
- Fixed no error on lidar configuration bug.
- Bias value left and right bug.
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
-
The lidar pointcloud_color param RGBT_FUSION (7) value is not available and will return out of range error.
[1.0.1] - 15-03-2024
Changed
- Sensors header stamps with unix epoch timestamp
- Allied cameras stream in YUV
Added
- Topic for thermal float (pixels with temperature values)
- New libl3cam thermal camera functionalities
- Device info service
Fixed
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
[1.0.0] - 2023-12-11
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
roscpp | |
rospy | |
std_msgs | |
cv_bridge | |
sensor_msgs | |
message_generation | |
image_transport | |
dynamic_reconfigure | |
catkin | |
message_runtime |
System Dependencies
Dependant Packages
Launch files
- launch/configure_l3cam.launch
-
- network_conf [default: true]
- timeout_secs [default: 60]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 33.5]
- polarimetric_auto_exposure_time_range_maximum [default: 66470.6]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: false]
- rgb_exposure_time [default: 156]
- rgb_streaming_protocol [default: 0]
- thermal_colormap [default: 1]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: false]
- thermal_streaming_protocol [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_streaming_protocol [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_streaming_protocol [default: 0]
- launch/l3cam.launch
-
- stream [default: true]
- rviz [default: false]
- configure [default: true]
- rqt_reconfigure [default: false]
- timeout_secs [default: 30]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- local_address [default: ]
- device_address [default: ]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- lidar_rtsp_pipeline [default: ]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 40]
- polarimetric_auto_exposure_time_range_maximum [default: 66470]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- polarimetric_rtsp_pipeline [default: ]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: true]
- rgb_exposure_time [default: 156]
- rgb_resolution [default: 3]
- rgb_framerate [default: 10]
- rgb_streaming_protocol [default: 0]
- rgb_rtsp_pipeline [default: ]
- thermal_colormap [default: 5]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: true]
- thermal_streaming_protocol [default: 0]
- thermal_rtsp_pipeline [default: ]
- allied_wide_black_level [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_sharpness [default: 0]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_auto_mode_region_height [default: 1028]
- allied_wide_auto_mode_region_width [default: 1232]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_max_driver_buffers_count [default: 64]
- allied_wide_streaming_protocol [default: 0]
- allied_wide_rtsp_pipeline [default: ]
- allied_narrow_black_level [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_sharpness [default: 0]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_auto_mode_region_height [default: 1544]
- allied_narrow_auto_mode_region_width [default: 2064]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_max_driver_buffers_count [default: 64]
- allied_narrow_streaming_protocol [default: 0]
- allied_narrow_rtsp_pipeline [default: ]
- launch/stream_l3cam.launch
-
- timeout_secs [default: 60]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
Messages
Services
- srv/ChangeAlliedCameraAutoExposureTimeRange.srv
- srv/ChangeAlliedCameraAutoGainRange.srv
- srv/ChangeAlliedCameraBalanceRatio.srv
- srv/ChangeAlliedCameraBalanceRatioSelector.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoRate.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/ChangeAlliedCameraExposureTime.srv
- srv/ChangeAlliedCameraGain.srv
- srv/ChangeAlliedCameraGamma.srv
- srv/ChangeAlliedCameraHue.srv
- srv/ChangeAlliedCameraIntensityAutoPrecedence.srv
- srv/ChangeAlliedCameraIntensityControllerRegion.srv
- srv/ChangeAlliedCameraIntensityControllerTarget.srv
- srv/ChangeAlliedCameraSaturation.srv
- srv/ChangeAutobiasValue.srv
- srv/ChangeBiasValue.srv
- srv/ChangeDistanceRange.srv
- srv/ChangeNetworkConfiguration.srv
- srv/ChangePointcloudColor.srv
- srv/ChangePointcloudColorRange.srv
- srv/ChangePolarimetricCameraAutoExposureTimeRange.srv
- srv/ChangePolarimetricCameraAutoGainRange.srv
- srv/ChangePolarimetricCameraBlackLevel.srv
- srv/ChangePolarimetricCameraBrightness.srv
- srv/ChangePolarimetricCameraExposureTime.srv
- srv/ChangePolarimetricCameraGain.srv
- srv/ChangePolarimetricCameraProcessType.srv
- srv/ChangeRgbCameraBrightness.srv
- srv/ChangeRgbCameraContrast.srv
- srv/ChangeRgbCameraExposureTime.srv
- srv/ChangeRgbCameraGain.srv
- srv/ChangeRgbCameraGamma.srv
- srv/ChangeRgbCameraSaturation.srv
- srv/ChangeRgbCameraSharpness.srv
- srv/ChangeRgbCameraWhiteBalance.srv
- srv/ChangeStreamingProtocol.srv
- srv/ChangeThermalCameraColormap.srv
- srv/ChangeThermalCameraProcessingPipeline.srv
- srv/ChangeThermalCameraTemperatureFilter.srv
- srv/EnableAlliedCameraAutoExposureTime.srv
- srv/EnableAlliedCameraAutoGain.srv
- srv/EnableAlliedCameraAutoWhiteBalance.srv
- srv/EnableAutoBias.srv
- srv/EnablePolarimetricCameraAutoExposureTime.srv
- srv/EnablePolarimetricCameraAutoGain.srv
- srv/EnablePolarimetricCameraStreamProcessedImage.srv
- srv/EnableRgbCameraAutoExposureTime.srv
- srv/EnableRgbCameraAutoWhiteBalance.srv
- srv/EnableThermalCameraTemperatureDataUdp.srv
- srv/EnableThermalCameraTemperatureFilter.srv
- srv/FindDevices.srv
- srv/GetAlliedCameraAutoExposureTime.srv
- srv/GetAlliedCameraAutoExposureTimeRange.srv
- srv/GetAlliedCameraAutoGain.srv
- srv/GetAlliedCameraAutoGainRange.srv
- srv/GetAlliedCameraAutoModeRegion.srv
- srv/GetAlliedCameraAutoWhiteBalance.srv
- srv/GetAlliedCameraBalanceRatio.srv
- srv/GetAlliedCameraBalanceRatioSelector.srv
- srv/GetAlliedCameraBalanceWhiteAutoRate.srv
- srv/GetAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/GetAlliedCameraBlackLevel.srv
- srv/GetAlliedCameraExposureTime.srv
- srv/GetAlliedCameraGain.srv
- srv/GetAlliedCameraGamma.srv
- srv/GetAlliedCameraHue.srv
- srv/GetAlliedCameraIntensityAutoPrecedence.srv
- srv/GetAlliedCameraIntensityControllerRegion.srv
- srv/GetAlliedCameraIntensityControllerTarget.srv
- srv/GetAlliedCameraMaxDriverBuffersCount.srv
- srv/GetAlliedCameraSaturation.srv
- srv/GetAlliedCameraSharpness.srv
- srv/GetAutobiasValue.srv
- srv/GetDeviceInfo.srv
- srv/GetDeviceStatus.srv
- srv/GetDeviceTemperatures.srv
- srv/GetLocalServerAddress.srv
- srv/GetNetworkConfiguration.srv
- srv/GetRtspPipeline.srv
- srv/GetSensorsAvailable.srv
- srv/GetVersion.srv
- srv/Initialize.srv
- srv/LibL3camStatus.srv
- srv/PowerOffDevice.srv
- srv/SensorDisconnected.srv
- srv/SetBiasShortRange.srv
- srv/SetPolarimetricCameraDefaultSettings.srv
- srv/SetRgbCameraDefaultSettings.srv
- srv/StartDevice.srv
- srv/StartStream.srv
- srv/StopDevice.srv
- srv/StopStream.srv
- srv/Terminate.srv
Plugins
Recent questions tagged l3cam_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.0.2 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/beamaginelidar/l3cam_ros.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-26 |
Dev Status | DEVELOPED |
CI status | Continuous Integration |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Beamagine
Authors
- Beamagine
l3cam_ros
This package is an ROS driver for the L3Cam device manufactured by Beamagine. The driver relies on the library libL3Cam 0.1.18
provided by Beamagine as part of the L3Cam SDK. For more info on the L3Cam check the L3Cam User Manual.
If you are looking for this package for ROS2, go to the l3cam_ros2 package.
This package is supported only on Linux systems and has only been tested with ROS noetic on an Ubuntu 20.04 system.
Installation
Dependencies
First, you will need to install the L3Cam SDK.
Download the package from Beamagine’s L3Cam SDK 0.1.18 release repository and install the required package depending on your hardware architecture:
sudo dpkg -i <PACKAGE>
ROS Driver
Clone this repository in your catkin workspace (e.g. catkin_ws) and build:
cd ~/catkin_ws/src && git clone https://github.com/beamaginelidar/l3cam_ros
catkin_make
Access Permission
You will need to give permission to the cfg files.
cd ~/catkin_ws/src/l3cam_ros/cfg
chmod a+x Network.cfg Lidar.cfg Polarimetric.cfg Rgb.cfg Thermal.cfg AlliedWide.cfg AlliedNarrow.cfg
Operational Advice
Jumbo frames
You will need to enable jumbo frames on your ethernet adapter by increasing the MTU (Maximum Transmission Unit) on the network interface attached to the camera.
A jumbo frame is an Ethernet frame that is larger than 1500 bytes. Most Ethernet adapters support jumbo frames, however it is usually turned off by default. Please note in order to set a 9000 byte packet size on the camera, the Ethernet adapter must support a jumbo frame size of 9000 bytes or higher.
You can check what your current MTU setting is by running the following command:
ifconfig | grep mtu
You should increase the MTU to 9000
to allow jumbo frames. If you use Network Manager, this can be done by opening the network interface settings and editing the “MTU” box under the “Identity” tab.
See the “Linux host configuration” section of the L3Cam User Manual for full details.
Receive Buffer Size
It is also recommended to increase your network default and maximum receive buffer size.
You can check what your current buffer size is:
sudo sysctl 'net.core.rmem_max'
sudo sysctl 'net.core.rmem_default'
Update the buffer size with the following commands:
sudo sh -c "echo 'net.core.rmem_default=268435456' >> /etc/sysctl.conf"
sudo sh -c "echo 'net.core.rmem_max=268435456' >> /etc/sysctl.conf"
sudo sysctl -p
Port usage
libL3Cam
uses the following ports for streaming and communications:
PROTOCOL | PORT | CONFIGURATION |
---|---|---|
TCP | 6000 (L3CAM) | Fixed |
UDP | 6050 (LIDAR) | Fixed |
UDP | 6060 (Allied Wide, Polarimetric) | Fixed |
UDP | 6020 (Allied Narrow, RGB) | Fixed |
UDP | 6030 (LWIR) | Fixed |
RTSP | 5040 (LIDAR) | Reconfigurable |
RTSP | 5030 (Allied Wide, Polarimetric) | Reconfigurable |
RTSP | 5010 (Allied Narrow, RGB) | Reconfigurable |
RTSP | 5020 (LWIR) | Reconfigurable |
TCP is used internally by libL3Cam
and is transparent to the user. However, the system host must have the required port available.
Launch
l3cam
To run the l3cam_ros driver, launch the l3cam.launch
file specifying (if wanted) if the stream launch file, the configure launch file, rviz
(for visualization GUI) and rqt_reconfigure
(for dynamic reconfigure GUI) have to be launched too. By default, the values are as follows:
```
File truncated at 100 lines see the full file
Change log for l3cam_ros
All notable changes to the l3cam_ros package will be documented in this file.
[1.0.2] - 10-07-2024
Changed
- thermalTypes changed for newThermalTypes.
- LibL3CamStatus status types with ‘_status’ suffix to avoid errors.
- Econ wide implementation
Added
- libl3cam 0.1.18 new functionalities.
- Added missing namespace prefix on messages.
Fixed
- Fixed no error on lidar configuration bug.
- Bias value left and right bug.
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
-
The lidar pointcloud_color param RGBT_FUSION (7) value is not available and will return out of range error.
[1.0.1] - 15-03-2024
Changed
- Sensors header stamps with unix epoch timestamp
- Allied cameras stream in YUV
Added
- Topic for thermal float (pixels with temperature values)
- New libl3cam thermal camera functionalities
- Device info service
Fixed
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
[1.0.0] - 2023-12-11
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
roscpp | |
rospy | |
std_msgs | |
cv_bridge | |
sensor_msgs | |
message_generation | |
image_transport | |
dynamic_reconfigure | |
catkin | |
message_runtime |
System Dependencies
Dependant Packages
Launch files
- launch/configure_l3cam.launch
-
- network_conf [default: true]
- timeout_secs [default: 60]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 33.5]
- polarimetric_auto_exposure_time_range_maximum [default: 66470.6]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: false]
- rgb_exposure_time [default: 156]
- rgb_streaming_protocol [default: 0]
- thermal_colormap [default: 1]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: false]
- thermal_streaming_protocol [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_streaming_protocol [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_streaming_protocol [default: 0]
- launch/l3cam.launch
-
- stream [default: true]
- rviz [default: false]
- configure [default: true]
- rqt_reconfigure [default: false]
- timeout_secs [default: 30]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- local_address [default: ]
- device_address [default: ]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- lidar_rtsp_pipeline [default: ]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 40]
- polarimetric_auto_exposure_time_range_maximum [default: 66470]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- polarimetric_rtsp_pipeline [default: ]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: true]
- rgb_exposure_time [default: 156]
- rgb_resolution [default: 3]
- rgb_framerate [default: 10]
- rgb_streaming_protocol [default: 0]
- rgb_rtsp_pipeline [default: ]
- thermal_colormap [default: 5]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: true]
- thermal_streaming_protocol [default: 0]
- thermal_rtsp_pipeline [default: ]
- allied_wide_black_level [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_sharpness [default: 0]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_auto_mode_region_height [default: 1028]
- allied_wide_auto_mode_region_width [default: 1232]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_max_driver_buffers_count [default: 64]
- allied_wide_streaming_protocol [default: 0]
- allied_wide_rtsp_pipeline [default: ]
- allied_narrow_black_level [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_sharpness [default: 0]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_auto_mode_region_height [default: 1544]
- allied_narrow_auto_mode_region_width [default: 2064]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_max_driver_buffers_count [default: 64]
- allied_narrow_streaming_protocol [default: 0]
- allied_narrow_rtsp_pipeline [default: ]
- launch/stream_l3cam.launch
-
- timeout_secs [default: 60]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
Messages
Services
- srv/ChangeAlliedCameraAutoExposureTimeRange.srv
- srv/ChangeAlliedCameraAutoGainRange.srv
- srv/ChangeAlliedCameraBalanceRatio.srv
- srv/ChangeAlliedCameraBalanceRatioSelector.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoRate.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/ChangeAlliedCameraExposureTime.srv
- srv/ChangeAlliedCameraGain.srv
- srv/ChangeAlliedCameraGamma.srv
- srv/ChangeAlliedCameraHue.srv
- srv/ChangeAlliedCameraIntensityAutoPrecedence.srv
- srv/ChangeAlliedCameraIntensityControllerRegion.srv
- srv/ChangeAlliedCameraIntensityControllerTarget.srv
- srv/ChangeAlliedCameraSaturation.srv
- srv/ChangeAutobiasValue.srv
- srv/ChangeBiasValue.srv
- srv/ChangeDistanceRange.srv
- srv/ChangeNetworkConfiguration.srv
- srv/ChangePointcloudColor.srv
- srv/ChangePointcloudColorRange.srv
- srv/ChangePolarimetricCameraAutoExposureTimeRange.srv
- srv/ChangePolarimetricCameraAutoGainRange.srv
- srv/ChangePolarimetricCameraBlackLevel.srv
- srv/ChangePolarimetricCameraBrightness.srv
- srv/ChangePolarimetricCameraExposureTime.srv
- srv/ChangePolarimetricCameraGain.srv
- srv/ChangePolarimetricCameraProcessType.srv
- srv/ChangeRgbCameraBrightness.srv
- srv/ChangeRgbCameraContrast.srv
- srv/ChangeRgbCameraExposureTime.srv
- srv/ChangeRgbCameraGain.srv
- srv/ChangeRgbCameraGamma.srv
- srv/ChangeRgbCameraSaturation.srv
- srv/ChangeRgbCameraSharpness.srv
- srv/ChangeRgbCameraWhiteBalance.srv
- srv/ChangeStreamingProtocol.srv
- srv/ChangeThermalCameraColormap.srv
- srv/ChangeThermalCameraProcessingPipeline.srv
- srv/ChangeThermalCameraTemperatureFilter.srv
- srv/EnableAlliedCameraAutoExposureTime.srv
- srv/EnableAlliedCameraAutoGain.srv
- srv/EnableAlliedCameraAutoWhiteBalance.srv
- srv/EnableAutoBias.srv
- srv/EnablePolarimetricCameraAutoExposureTime.srv
- srv/EnablePolarimetricCameraAutoGain.srv
- srv/EnablePolarimetricCameraStreamProcessedImage.srv
- srv/EnableRgbCameraAutoExposureTime.srv
- srv/EnableRgbCameraAutoWhiteBalance.srv
- srv/EnableThermalCameraTemperatureDataUdp.srv
- srv/EnableThermalCameraTemperatureFilter.srv
- srv/FindDevices.srv
- srv/GetAlliedCameraAutoExposureTime.srv
- srv/GetAlliedCameraAutoExposureTimeRange.srv
- srv/GetAlliedCameraAutoGain.srv
- srv/GetAlliedCameraAutoGainRange.srv
- srv/GetAlliedCameraAutoModeRegion.srv
- srv/GetAlliedCameraAutoWhiteBalance.srv
- srv/GetAlliedCameraBalanceRatio.srv
- srv/GetAlliedCameraBalanceRatioSelector.srv
- srv/GetAlliedCameraBalanceWhiteAutoRate.srv
- srv/GetAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/GetAlliedCameraBlackLevel.srv
- srv/GetAlliedCameraExposureTime.srv
- srv/GetAlliedCameraGain.srv
- srv/GetAlliedCameraGamma.srv
- srv/GetAlliedCameraHue.srv
- srv/GetAlliedCameraIntensityAutoPrecedence.srv
- srv/GetAlliedCameraIntensityControllerRegion.srv
- srv/GetAlliedCameraIntensityControllerTarget.srv
- srv/GetAlliedCameraMaxDriverBuffersCount.srv
- srv/GetAlliedCameraSaturation.srv
- srv/GetAlliedCameraSharpness.srv
- srv/GetAutobiasValue.srv
- srv/GetDeviceInfo.srv
- srv/GetDeviceStatus.srv
- srv/GetDeviceTemperatures.srv
- srv/GetLocalServerAddress.srv
- srv/GetNetworkConfiguration.srv
- srv/GetRtspPipeline.srv
- srv/GetSensorsAvailable.srv
- srv/GetVersion.srv
- srv/Initialize.srv
- srv/LibL3camStatus.srv
- srv/PowerOffDevice.srv
- srv/SensorDisconnected.srv
- srv/SetBiasShortRange.srv
- srv/SetPolarimetricCameraDefaultSettings.srv
- srv/SetRgbCameraDefaultSettings.srv
- srv/StartDevice.srv
- srv/StartStream.srv
- srv/StopDevice.srv
- srv/StopStream.srv
- srv/Terminate.srv
Plugins
Recent questions tagged l3cam_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.0.2 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/beamaginelidar/l3cam_ros.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-26 |
Dev Status | DEVELOPED |
CI status | Continuous Integration |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Beamagine
Authors
- Beamagine
l3cam_ros
This package is an ROS driver for the L3Cam device manufactured by Beamagine. The driver relies on the library libL3Cam 0.1.18
provided by Beamagine as part of the L3Cam SDK. For more info on the L3Cam check the L3Cam User Manual.
If you are looking for this package for ROS2, go to the l3cam_ros2 package.
This package is supported only on Linux systems and has only been tested with ROS noetic on an Ubuntu 20.04 system.
Installation
Dependencies
First, you will need to install the L3Cam SDK.
Download the package from Beamagine’s L3Cam SDK 0.1.18 release repository and install the required package depending on your hardware architecture:
sudo dpkg -i <PACKAGE>
ROS Driver
Clone this repository in your catkin workspace (e.g. catkin_ws) and build:
cd ~/catkin_ws/src && git clone https://github.com/beamaginelidar/l3cam_ros
catkin_make
Access Permission
You will need to give permission to the cfg files.
cd ~/catkin_ws/src/l3cam_ros/cfg
chmod a+x Network.cfg Lidar.cfg Polarimetric.cfg Rgb.cfg Thermal.cfg AlliedWide.cfg AlliedNarrow.cfg
Operational Advice
Jumbo frames
You will need to enable jumbo frames on your ethernet adapter by increasing the MTU (Maximum Transmission Unit) on the network interface attached to the camera.
A jumbo frame is an Ethernet frame that is larger than 1500 bytes. Most Ethernet adapters support jumbo frames, however it is usually turned off by default. Please note in order to set a 9000 byte packet size on the camera, the Ethernet adapter must support a jumbo frame size of 9000 bytes or higher.
You can check what your current MTU setting is by running the following command:
ifconfig | grep mtu
You should increase the MTU to 9000
to allow jumbo frames. If you use Network Manager, this can be done by opening the network interface settings and editing the “MTU” box under the “Identity” tab.
See the “Linux host configuration” section of the L3Cam User Manual for full details.
Receive Buffer Size
It is also recommended to increase your network default and maximum receive buffer size.
You can check what your current buffer size is:
sudo sysctl 'net.core.rmem_max'
sudo sysctl 'net.core.rmem_default'
Update the buffer size with the following commands:
sudo sh -c "echo 'net.core.rmem_default=268435456' >> /etc/sysctl.conf"
sudo sh -c "echo 'net.core.rmem_max=268435456' >> /etc/sysctl.conf"
sudo sysctl -p
Port usage
libL3Cam
uses the following ports for streaming and communications:
PROTOCOL | PORT | CONFIGURATION |
---|---|---|
TCP | 6000 (L3CAM) | Fixed |
UDP | 6050 (LIDAR) | Fixed |
UDP | 6060 (Allied Wide, Polarimetric) | Fixed |
UDP | 6020 (Allied Narrow, RGB) | Fixed |
UDP | 6030 (LWIR) | Fixed |
RTSP | 5040 (LIDAR) | Reconfigurable |
RTSP | 5030 (Allied Wide, Polarimetric) | Reconfigurable |
RTSP | 5010 (Allied Narrow, RGB) | Reconfigurable |
RTSP | 5020 (LWIR) | Reconfigurable |
TCP is used internally by libL3Cam
and is transparent to the user. However, the system host must have the required port available.
Launch
l3cam
To run the l3cam_ros driver, launch the l3cam.launch
file specifying (if wanted) if the stream launch file, the configure launch file, rviz
(for visualization GUI) and rqt_reconfigure
(for dynamic reconfigure GUI) have to be launched too. By default, the values are as follows:
```
File truncated at 100 lines see the full file
Change log for l3cam_ros
All notable changes to the l3cam_ros package will be documented in this file.
[1.0.2] - 10-07-2024
Changed
- thermalTypes changed for newThermalTypes.
- LibL3CamStatus status types with ‘_status’ suffix to avoid errors.
- Econ wide implementation
Added
- libl3cam 0.1.18 new functionalities.
- Added missing namespace prefix on messages.
Fixed
- Fixed no error on lidar configuration bug.
- Bias value left and right bug.
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
-
The lidar pointcloud_color param RGBT_FUSION (7) value is not available and will return out of range error.
[1.0.1] - 15-03-2024
Changed
- Sensors header stamps with unix epoch timestamp
- Allied cameras stream in YUV
Added
- Topic for thermal float (pixels with temperature values)
- New libl3cam thermal camera functionalities
- Device info service
Fixed
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
[1.0.0] - 2023-12-11
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
roscpp | |
rospy | |
std_msgs | |
cv_bridge | |
sensor_msgs | |
message_generation | |
image_transport | |
dynamic_reconfigure | |
catkin | |
message_runtime |
System Dependencies
Dependant Packages
Launch files
- launch/configure_l3cam.launch
-
- network_conf [default: true]
- timeout_secs [default: 60]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 33.5]
- polarimetric_auto_exposure_time_range_maximum [default: 66470.6]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: false]
- rgb_exposure_time [default: 156]
- rgb_streaming_protocol [default: 0]
- thermal_colormap [default: 1]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: false]
- thermal_streaming_protocol [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_streaming_protocol [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_streaming_protocol [default: 0]
- launch/l3cam.launch
-
- stream [default: true]
- rviz [default: false]
- configure [default: true]
- rqt_reconfigure [default: false]
- timeout_secs [default: 30]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- local_address [default: ]
- device_address [default: ]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- lidar_rtsp_pipeline [default: ]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 40]
- polarimetric_auto_exposure_time_range_maximum [default: 66470]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- polarimetric_rtsp_pipeline [default: ]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: true]
- rgb_exposure_time [default: 156]
- rgb_resolution [default: 3]
- rgb_framerate [default: 10]
- rgb_streaming_protocol [default: 0]
- rgb_rtsp_pipeline [default: ]
- thermal_colormap [default: 5]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: true]
- thermal_streaming_protocol [default: 0]
- thermal_rtsp_pipeline [default: ]
- allied_wide_black_level [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_sharpness [default: 0]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_auto_mode_region_height [default: 1028]
- allied_wide_auto_mode_region_width [default: 1232]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_max_driver_buffers_count [default: 64]
- allied_wide_streaming_protocol [default: 0]
- allied_wide_rtsp_pipeline [default: ]
- allied_narrow_black_level [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_sharpness [default: 0]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_auto_mode_region_height [default: 1544]
- allied_narrow_auto_mode_region_width [default: 2064]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_max_driver_buffers_count [default: 64]
- allied_narrow_streaming_protocol [default: 0]
- allied_narrow_rtsp_pipeline [default: ]
- launch/stream_l3cam.launch
-
- timeout_secs [default: 60]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
Messages
Services
- srv/ChangeAlliedCameraAutoExposureTimeRange.srv
- srv/ChangeAlliedCameraAutoGainRange.srv
- srv/ChangeAlliedCameraBalanceRatio.srv
- srv/ChangeAlliedCameraBalanceRatioSelector.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoRate.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/ChangeAlliedCameraExposureTime.srv
- srv/ChangeAlliedCameraGain.srv
- srv/ChangeAlliedCameraGamma.srv
- srv/ChangeAlliedCameraHue.srv
- srv/ChangeAlliedCameraIntensityAutoPrecedence.srv
- srv/ChangeAlliedCameraIntensityControllerRegion.srv
- srv/ChangeAlliedCameraIntensityControllerTarget.srv
- srv/ChangeAlliedCameraSaturation.srv
- srv/ChangeAutobiasValue.srv
- srv/ChangeBiasValue.srv
- srv/ChangeDistanceRange.srv
- srv/ChangeNetworkConfiguration.srv
- srv/ChangePointcloudColor.srv
- srv/ChangePointcloudColorRange.srv
- srv/ChangePolarimetricCameraAutoExposureTimeRange.srv
- srv/ChangePolarimetricCameraAutoGainRange.srv
- srv/ChangePolarimetricCameraBlackLevel.srv
- srv/ChangePolarimetricCameraBrightness.srv
- srv/ChangePolarimetricCameraExposureTime.srv
- srv/ChangePolarimetricCameraGain.srv
- srv/ChangePolarimetricCameraProcessType.srv
- srv/ChangeRgbCameraBrightness.srv
- srv/ChangeRgbCameraContrast.srv
- srv/ChangeRgbCameraExposureTime.srv
- srv/ChangeRgbCameraGain.srv
- srv/ChangeRgbCameraGamma.srv
- srv/ChangeRgbCameraSaturation.srv
- srv/ChangeRgbCameraSharpness.srv
- srv/ChangeRgbCameraWhiteBalance.srv
- srv/ChangeStreamingProtocol.srv
- srv/ChangeThermalCameraColormap.srv
- srv/ChangeThermalCameraProcessingPipeline.srv
- srv/ChangeThermalCameraTemperatureFilter.srv
- srv/EnableAlliedCameraAutoExposureTime.srv
- srv/EnableAlliedCameraAutoGain.srv
- srv/EnableAlliedCameraAutoWhiteBalance.srv
- srv/EnableAutoBias.srv
- srv/EnablePolarimetricCameraAutoExposureTime.srv
- srv/EnablePolarimetricCameraAutoGain.srv
- srv/EnablePolarimetricCameraStreamProcessedImage.srv
- srv/EnableRgbCameraAutoExposureTime.srv
- srv/EnableRgbCameraAutoWhiteBalance.srv
- srv/EnableThermalCameraTemperatureDataUdp.srv
- srv/EnableThermalCameraTemperatureFilter.srv
- srv/FindDevices.srv
- srv/GetAlliedCameraAutoExposureTime.srv
- srv/GetAlliedCameraAutoExposureTimeRange.srv
- srv/GetAlliedCameraAutoGain.srv
- srv/GetAlliedCameraAutoGainRange.srv
- srv/GetAlliedCameraAutoModeRegion.srv
- srv/GetAlliedCameraAutoWhiteBalance.srv
- srv/GetAlliedCameraBalanceRatio.srv
- srv/GetAlliedCameraBalanceRatioSelector.srv
- srv/GetAlliedCameraBalanceWhiteAutoRate.srv
- srv/GetAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/GetAlliedCameraBlackLevel.srv
- srv/GetAlliedCameraExposureTime.srv
- srv/GetAlliedCameraGain.srv
- srv/GetAlliedCameraGamma.srv
- srv/GetAlliedCameraHue.srv
- srv/GetAlliedCameraIntensityAutoPrecedence.srv
- srv/GetAlliedCameraIntensityControllerRegion.srv
- srv/GetAlliedCameraIntensityControllerTarget.srv
- srv/GetAlliedCameraMaxDriverBuffersCount.srv
- srv/GetAlliedCameraSaturation.srv
- srv/GetAlliedCameraSharpness.srv
- srv/GetAutobiasValue.srv
- srv/GetDeviceInfo.srv
- srv/GetDeviceStatus.srv
- srv/GetDeviceTemperatures.srv
- srv/GetLocalServerAddress.srv
- srv/GetNetworkConfiguration.srv
- srv/GetRtspPipeline.srv
- srv/GetSensorsAvailable.srv
- srv/GetVersion.srv
- srv/Initialize.srv
- srv/LibL3camStatus.srv
- srv/PowerOffDevice.srv
- srv/SensorDisconnected.srv
- srv/SetBiasShortRange.srv
- srv/SetPolarimetricCameraDefaultSettings.srv
- srv/SetRgbCameraDefaultSettings.srv
- srv/StartDevice.srv
- srv/StartStream.srv
- srv/StopDevice.srv
- srv/StopStream.srv
- srv/Terminate.srv
Plugins
Recent questions tagged l3cam_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.0.2 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/beamaginelidar/l3cam_ros.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-26 |
Dev Status | DEVELOPED |
CI status | Continuous Integration |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Beamagine
Authors
- Beamagine
l3cam_ros
This package is an ROS driver for the L3Cam device manufactured by Beamagine. The driver relies on the library libL3Cam 0.1.18
provided by Beamagine as part of the L3Cam SDK. For more info on the L3Cam check the L3Cam User Manual.
If you are looking for this package for ROS2, go to the l3cam_ros2 package.
This package is supported only on Linux systems and has only been tested with ROS noetic on an Ubuntu 20.04 system.
Installation
Dependencies
First, you will need to install the L3Cam SDK.
Download the package from Beamagine’s L3Cam SDK 0.1.18 release repository and install the required package depending on your hardware architecture:
sudo dpkg -i <PACKAGE>
ROS Driver
Clone this repository in your catkin workspace (e.g. catkin_ws) and build:
cd ~/catkin_ws/src && git clone https://github.com/beamaginelidar/l3cam_ros
catkin_make
Access Permission
You will need to give permission to the cfg files.
cd ~/catkin_ws/src/l3cam_ros/cfg
chmod a+x Network.cfg Lidar.cfg Polarimetric.cfg Rgb.cfg Thermal.cfg AlliedWide.cfg AlliedNarrow.cfg
Operational Advice
Jumbo frames
You will need to enable jumbo frames on your ethernet adapter by increasing the MTU (Maximum Transmission Unit) on the network interface attached to the camera.
A jumbo frame is an Ethernet frame that is larger than 1500 bytes. Most Ethernet adapters support jumbo frames, however it is usually turned off by default. Please note in order to set a 9000 byte packet size on the camera, the Ethernet adapter must support a jumbo frame size of 9000 bytes or higher.
You can check what your current MTU setting is by running the following command:
ifconfig | grep mtu
You should increase the MTU to 9000
to allow jumbo frames. If you use Network Manager, this can be done by opening the network interface settings and editing the “MTU” box under the “Identity” tab.
See the “Linux host configuration” section of the L3Cam User Manual for full details.
Receive Buffer Size
It is also recommended to increase your network default and maximum receive buffer size.
You can check what your current buffer size is:
sudo sysctl 'net.core.rmem_max'
sudo sysctl 'net.core.rmem_default'
Update the buffer size with the following commands:
sudo sh -c "echo 'net.core.rmem_default=268435456' >> /etc/sysctl.conf"
sudo sh -c "echo 'net.core.rmem_max=268435456' >> /etc/sysctl.conf"
sudo sysctl -p
Port usage
libL3Cam
uses the following ports for streaming and communications:
PROTOCOL | PORT | CONFIGURATION |
---|---|---|
TCP | 6000 (L3CAM) | Fixed |
UDP | 6050 (LIDAR) | Fixed |
UDP | 6060 (Allied Wide, Polarimetric) | Fixed |
UDP | 6020 (Allied Narrow, RGB) | Fixed |
UDP | 6030 (LWIR) | Fixed |
RTSP | 5040 (LIDAR) | Reconfigurable |
RTSP | 5030 (Allied Wide, Polarimetric) | Reconfigurable |
RTSP | 5010 (Allied Narrow, RGB) | Reconfigurable |
RTSP | 5020 (LWIR) | Reconfigurable |
TCP is used internally by libL3Cam
and is transparent to the user. However, the system host must have the required port available.
Launch
l3cam
To run the l3cam_ros driver, launch the l3cam.launch
file specifying (if wanted) if the stream launch file, the configure launch file, rviz
(for visualization GUI) and rqt_reconfigure
(for dynamic reconfigure GUI) have to be launched too. By default, the values are as follows:
```
File truncated at 100 lines see the full file
Change log for l3cam_ros
All notable changes to the l3cam_ros package will be documented in this file.
[1.0.2] - 10-07-2024
Changed
- thermalTypes changed for newThermalTypes.
- LibL3CamStatus status types with ‘_status’ suffix to avoid errors.
- Econ wide implementation
Added
- libl3cam 0.1.18 new functionalities.
- Added missing namespace prefix on messages.
Fixed
- Fixed no error on lidar configuration bug.
- Bias value left and right bug.
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
-
The lidar pointcloud_color param RGBT_FUSION (7) value is not available and will return out of range error.
[1.0.1] - 15-03-2024
Changed
- Sensors header stamps with unix epoch timestamp
- Allied cameras stream in YUV
Added
- Topic for thermal float (pixels with temperature values)
- New libl3cam thermal camera functionalities
- Device info service
Fixed
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
[1.0.0] - 2023-12-11
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
roscpp | |
rospy | |
std_msgs | |
cv_bridge | |
sensor_msgs | |
message_generation | |
image_transport | |
dynamic_reconfigure | |
catkin | |
message_runtime |
System Dependencies
Dependant Packages
Launch files
- launch/configure_l3cam.launch
-
- network_conf [default: true]
- timeout_secs [default: 60]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 33.5]
- polarimetric_auto_exposure_time_range_maximum [default: 66470.6]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: false]
- rgb_exposure_time [default: 156]
- rgb_streaming_protocol [default: 0]
- thermal_colormap [default: 1]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: false]
- thermal_streaming_protocol [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_streaming_protocol [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_streaming_protocol [default: 0]
- launch/l3cam.launch
-
- stream [default: true]
- rviz [default: false]
- configure [default: true]
- rqt_reconfigure [default: false]
- timeout_secs [default: 30]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- local_address [default: ]
- device_address [default: ]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- lidar_rtsp_pipeline [default: ]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 40]
- polarimetric_auto_exposure_time_range_maximum [default: 66470]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- polarimetric_rtsp_pipeline [default: ]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: true]
- rgb_exposure_time [default: 156]
- rgb_resolution [default: 3]
- rgb_framerate [default: 10]
- rgb_streaming_protocol [default: 0]
- rgb_rtsp_pipeline [default: ]
- thermal_colormap [default: 5]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: true]
- thermal_streaming_protocol [default: 0]
- thermal_rtsp_pipeline [default: ]
- allied_wide_black_level [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_sharpness [default: 0]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_auto_mode_region_height [default: 1028]
- allied_wide_auto_mode_region_width [default: 1232]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_max_driver_buffers_count [default: 64]
- allied_wide_streaming_protocol [default: 0]
- allied_wide_rtsp_pipeline [default: ]
- allied_narrow_black_level [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_sharpness [default: 0]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_auto_mode_region_height [default: 1544]
- allied_narrow_auto_mode_region_width [default: 2064]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_max_driver_buffers_count [default: 64]
- allied_narrow_streaming_protocol [default: 0]
- allied_narrow_rtsp_pipeline [default: ]
- launch/stream_l3cam.launch
-
- timeout_secs [default: 60]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
Messages
Services
- srv/ChangeAlliedCameraAutoExposureTimeRange.srv
- srv/ChangeAlliedCameraAutoGainRange.srv
- srv/ChangeAlliedCameraBalanceRatio.srv
- srv/ChangeAlliedCameraBalanceRatioSelector.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoRate.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/ChangeAlliedCameraExposureTime.srv
- srv/ChangeAlliedCameraGain.srv
- srv/ChangeAlliedCameraGamma.srv
- srv/ChangeAlliedCameraHue.srv
- srv/ChangeAlliedCameraIntensityAutoPrecedence.srv
- srv/ChangeAlliedCameraIntensityControllerRegion.srv
- srv/ChangeAlliedCameraIntensityControllerTarget.srv
- srv/ChangeAlliedCameraSaturation.srv
- srv/ChangeAutobiasValue.srv
- srv/ChangeBiasValue.srv
- srv/ChangeDistanceRange.srv
- srv/ChangeNetworkConfiguration.srv
- srv/ChangePointcloudColor.srv
- srv/ChangePointcloudColorRange.srv
- srv/ChangePolarimetricCameraAutoExposureTimeRange.srv
- srv/ChangePolarimetricCameraAutoGainRange.srv
- srv/ChangePolarimetricCameraBlackLevel.srv
- srv/ChangePolarimetricCameraBrightness.srv
- srv/ChangePolarimetricCameraExposureTime.srv
- srv/ChangePolarimetricCameraGain.srv
- srv/ChangePolarimetricCameraProcessType.srv
- srv/ChangeRgbCameraBrightness.srv
- srv/ChangeRgbCameraContrast.srv
- srv/ChangeRgbCameraExposureTime.srv
- srv/ChangeRgbCameraGain.srv
- srv/ChangeRgbCameraGamma.srv
- srv/ChangeRgbCameraSaturation.srv
- srv/ChangeRgbCameraSharpness.srv
- srv/ChangeRgbCameraWhiteBalance.srv
- srv/ChangeStreamingProtocol.srv
- srv/ChangeThermalCameraColormap.srv
- srv/ChangeThermalCameraProcessingPipeline.srv
- srv/ChangeThermalCameraTemperatureFilter.srv
- srv/EnableAlliedCameraAutoExposureTime.srv
- srv/EnableAlliedCameraAutoGain.srv
- srv/EnableAlliedCameraAutoWhiteBalance.srv
- srv/EnableAutoBias.srv
- srv/EnablePolarimetricCameraAutoExposureTime.srv
- srv/EnablePolarimetricCameraAutoGain.srv
- srv/EnablePolarimetricCameraStreamProcessedImage.srv
- srv/EnableRgbCameraAutoExposureTime.srv
- srv/EnableRgbCameraAutoWhiteBalance.srv
- srv/EnableThermalCameraTemperatureDataUdp.srv
- srv/EnableThermalCameraTemperatureFilter.srv
- srv/FindDevices.srv
- srv/GetAlliedCameraAutoExposureTime.srv
- srv/GetAlliedCameraAutoExposureTimeRange.srv
- srv/GetAlliedCameraAutoGain.srv
- srv/GetAlliedCameraAutoGainRange.srv
- srv/GetAlliedCameraAutoModeRegion.srv
- srv/GetAlliedCameraAutoWhiteBalance.srv
- srv/GetAlliedCameraBalanceRatio.srv
- srv/GetAlliedCameraBalanceRatioSelector.srv
- srv/GetAlliedCameraBalanceWhiteAutoRate.srv
- srv/GetAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/GetAlliedCameraBlackLevel.srv
- srv/GetAlliedCameraExposureTime.srv
- srv/GetAlliedCameraGain.srv
- srv/GetAlliedCameraGamma.srv
- srv/GetAlliedCameraHue.srv
- srv/GetAlliedCameraIntensityAutoPrecedence.srv
- srv/GetAlliedCameraIntensityControllerRegion.srv
- srv/GetAlliedCameraIntensityControllerTarget.srv
- srv/GetAlliedCameraMaxDriverBuffersCount.srv
- srv/GetAlliedCameraSaturation.srv
- srv/GetAlliedCameraSharpness.srv
- srv/GetAutobiasValue.srv
- srv/GetDeviceInfo.srv
- srv/GetDeviceStatus.srv
- srv/GetDeviceTemperatures.srv
- srv/GetLocalServerAddress.srv
- srv/GetNetworkConfiguration.srv
- srv/GetRtspPipeline.srv
- srv/GetSensorsAvailable.srv
- srv/GetVersion.srv
- srv/Initialize.srv
- srv/LibL3camStatus.srv
- srv/PowerOffDevice.srv
- srv/SensorDisconnected.srv
- srv/SetBiasShortRange.srv
- srv/SetPolarimetricCameraDefaultSettings.srv
- srv/SetRgbCameraDefaultSettings.srv
- srv/StartDevice.srv
- srv/StartStream.srv
- srv/StopDevice.srv
- srv/StopStream.srv
- srv/Terminate.srv
Plugins
Recent questions tagged l3cam_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.0.2 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/beamaginelidar/l3cam_ros.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-26 |
Dev Status | DEVELOPED |
CI status | Continuous Integration |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Beamagine
Authors
- Beamagine
l3cam_ros
This package is an ROS driver for the L3Cam device manufactured by Beamagine. The driver relies on the library libL3Cam 0.1.18
provided by Beamagine as part of the L3Cam SDK. For more info on the L3Cam check the L3Cam User Manual.
If you are looking for this package for ROS2, go to the l3cam_ros2 package.
This package is supported only on Linux systems and has only been tested with ROS noetic on an Ubuntu 20.04 system.
Installation
Dependencies
First, you will need to install the L3Cam SDK.
Download the package from Beamagine’s L3Cam SDK 0.1.18 release repository and install the required package depending on your hardware architecture:
sudo dpkg -i <PACKAGE>
ROS Driver
Clone this repository in your catkin workspace (e.g. catkin_ws) and build:
cd ~/catkin_ws/src && git clone https://github.com/beamaginelidar/l3cam_ros
catkin_make
Access Permission
You will need to give permission to the cfg files.
cd ~/catkin_ws/src/l3cam_ros/cfg
chmod a+x Network.cfg Lidar.cfg Polarimetric.cfg Rgb.cfg Thermal.cfg AlliedWide.cfg AlliedNarrow.cfg
Operational Advice
Jumbo frames
You will need to enable jumbo frames on your ethernet adapter by increasing the MTU (Maximum Transmission Unit) on the network interface attached to the camera.
A jumbo frame is an Ethernet frame that is larger than 1500 bytes. Most Ethernet adapters support jumbo frames, however it is usually turned off by default. Please note in order to set a 9000 byte packet size on the camera, the Ethernet adapter must support a jumbo frame size of 9000 bytes or higher.
You can check what your current MTU setting is by running the following command:
ifconfig | grep mtu
You should increase the MTU to 9000
to allow jumbo frames. If you use Network Manager, this can be done by opening the network interface settings and editing the “MTU” box under the “Identity” tab.
See the “Linux host configuration” section of the L3Cam User Manual for full details.
Receive Buffer Size
It is also recommended to increase your network default and maximum receive buffer size.
You can check what your current buffer size is:
sudo sysctl 'net.core.rmem_max'
sudo sysctl 'net.core.rmem_default'
Update the buffer size with the following commands:
sudo sh -c "echo 'net.core.rmem_default=268435456' >> /etc/sysctl.conf"
sudo sh -c "echo 'net.core.rmem_max=268435456' >> /etc/sysctl.conf"
sudo sysctl -p
Port usage
libL3Cam
uses the following ports for streaming and communications:
PROTOCOL | PORT | CONFIGURATION |
---|---|---|
TCP | 6000 (L3CAM) | Fixed |
UDP | 6050 (LIDAR) | Fixed |
UDP | 6060 (Allied Wide, Polarimetric) | Fixed |
UDP | 6020 (Allied Narrow, RGB) | Fixed |
UDP | 6030 (LWIR) | Fixed |
RTSP | 5040 (LIDAR) | Reconfigurable |
RTSP | 5030 (Allied Wide, Polarimetric) | Reconfigurable |
RTSP | 5010 (Allied Narrow, RGB) | Reconfigurable |
RTSP | 5020 (LWIR) | Reconfigurable |
TCP is used internally by libL3Cam
and is transparent to the user. However, the system host must have the required port available.
Launch
l3cam
To run the l3cam_ros driver, launch the l3cam.launch
file specifying (if wanted) if the stream launch file, the configure launch file, rviz
(for visualization GUI) and rqt_reconfigure
(for dynamic reconfigure GUI) have to be launched too. By default, the values are as follows:
```
File truncated at 100 lines see the full file
Change log for l3cam_ros
All notable changes to the l3cam_ros package will be documented in this file.
[1.0.2] - 10-07-2024
Changed
- thermalTypes changed for newThermalTypes.
- LibL3CamStatus status types with ‘_status’ suffix to avoid errors.
- Econ wide implementation
Added
- libl3cam 0.1.18 new functionalities.
- Added missing namespace prefix on messages.
Fixed
- Fixed no error on lidar configuration bug.
- Bias value left and right bug.
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
-
The lidar pointcloud_color param RGBT_FUSION (7) value is not available and will return out of range error.
[1.0.1] - 15-03-2024
Changed
- Sensors header stamps with unix epoch timestamp
- Allied cameras stream in YUV
Added
- Topic for thermal float (pixels with temperature values)
- New libl3cam thermal camera functionalities
- Device info service
Fixed
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
[1.0.0] - 2023-12-11
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
roscpp | |
rospy | |
std_msgs | |
cv_bridge | |
sensor_msgs | |
message_generation | |
image_transport | |
dynamic_reconfigure | |
catkin | |
message_runtime |
System Dependencies
Dependant Packages
Launch files
- launch/configure_l3cam.launch
-
- network_conf [default: true]
- timeout_secs [default: 60]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 33.5]
- polarimetric_auto_exposure_time_range_maximum [default: 66470.6]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: false]
- rgb_exposure_time [default: 156]
- rgb_streaming_protocol [default: 0]
- thermal_colormap [default: 1]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: false]
- thermal_streaming_protocol [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_streaming_protocol [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_streaming_protocol [default: 0]
- launch/l3cam.launch
-
- stream [default: true]
- rviz [default: false]
- configure [default: true]
- rqt_reconfigure [default: false]
- timeout_secs [default: 30]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- local_address [default: ]
- device_address [default: ]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- lidar_rtsp_pipeline [default: ]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 40]
- polarimetric_auto_exposure_time_range_maximum [default: 66470]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- polarimetric_rtsp_pipeline [default: ]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: true]
- rgb_exposure_time [default: 156]
- rgb_resolution [default: 3]
- rgb_framerate [default: 10]
- rgb_streaming_protocol [default: 0]
- rgb_rtsp_pipeline [default: ]
- thermal_colormap [default: 5]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: true]
- thermal_streaming_protocol [default: 0]
- thermal_rtsp_pipeline [default: ]
- allied_wide_black_level [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_sharpness [default: 0]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_auto_mode_region_height [default: 1028]
- allied_wide_auto_mode_region_width [default: 1232]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_max_driver_buffers_count [default: 64]
- allied_wide_streaming_protocol [default: 0]
- allied_wide_rtsp_pipeline [default: ]
- allied_narrow_black_level [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_sharpness [default: 0]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_auto_mode_region_height [default: 1544]
- allied_narrow_auto_mode_region_width [default: 2064]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_max_driver_buffers_count [default: 64]
- allied_narrow_streaming_protocol [default: 0]
- allied_narrow_rtsp_pipeline [default: ]
- launch/stream_l3cam.launch
-
- timeout_secs [default: 60]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
Messages
Services
- srv/ChangeAlliedCameraAutoExposureTimeRange.srv
- srv/ChangeAlliedCameraAutoGainRange.srv
- srv/ChangeAlliedCameraBalanceRatio.srv
- srv/ChangeAlliedCameraBalanceRatioSelector.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoRate.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/ChangeAlliedCameraExposureTime.srv
- srv/ChangeAlliedCameraGain.srv
- srv/ChangeAlliedCameraGamma.srv
- srv/ChangeAlliedCameraHue.srv
- srv/ChangeAlliedCameraIntensityAutoPrecedence.srv
- srv/ChangeAlliedCameraIntensityControllerRegion.srv
- srv/ChangeAlliedCameraIntensityControllerTarget.srv
- srv/ChangeAlliedCameraSaturation.srv
- srv/ChangeAutobiasValue.srv
- srv/ChangeBiasValue.srv
- srv/ChangeDistanceRange.srv
- srv/ChangeNetworkConfiguration.srv
- srv/ChangePointcloudColor.srv
- srv/ChangePointcloudColorRange.srv
- srv/ChangePolarimetricCameraAutoExposureTimeRange.srv
- srv/ChangePolarimetricCameraAutoGainRange.srv
- srv/ChangePolarimetricCameraBlackLevel.srv
- srv/ChangePolarimetricCameraBrightness.srv
- srv/ChangePolarimetricCameraExposureTime.srv
- srv/ChangePolarimetricCameraGain.srv
- srv/ChangePolarimetricCameraProcessType.srv
- srv/ChangeRgbCameraBrightness.srv
- srv/ChangeRgbCameraContrast.srv
- srv/ChangeRgbCameraExposureTime.srv
- srv/ChangeRgbCameraGain.srv
- srv/ChangeRgbCameraGamma.srv
- srv/ChangeRgbCameraSaturation.srv
- srv/ChangeRgbCameraSharpness.srv
- srv/ChangeRgbCameraWhiteBalance.srv
- srv/ChangeStreamingProtocol.srv
- srv/ChangeThermalCameraColormap.srv
- srv/ChangeThermalCameraProcessingPipeline.srv
- srv/ChangeThermalCameraTemperatureFilter.srv
- srv/EnableAlliedCameraAutoExposureTime.srv
- srv/EnableAlliedCameraAutoGain.srv
- srv/EnableAlliedCameraAutoWhiteBalance.srv
- srv/EnableAutoBias.srv
- srv/EnablePolarimetricCameraAutoExposureTime.srv
- srv/EnablePolarimetricCameraAutoGain.srv
- srv/EnablePolarimetricCameraStreamProcessedImage.srv
- srv/EnableRgbCameraAutoExposureTime.srv
- srv/EnableRgbCameraAutoWhiteBalance.srv
- srv/EnableThermalCameraTemperatureDataUdp.srv
- srv/EnableThermalCameraTemperatureFilter.srv
- srv/FindDevices.srv
- srv/GetAlliedCameraAutoExposureTime.srv
- srv/GetAlliedCameraAutoExposureTimeRange.srv
- srv/GetAlliedCameraAutoGain.srv
- srv/GetAlliedCameraAutoGainRange.srv
- srv/GetAlliedCameraAutoModeRegion.srv
- srv/GetAlliedCameraAutoWhiteBalance.srv
- srv/GetAlliedCameraBalanceRatio.srv
- srv/GetAlliedCameraBalanceRatioSelector.srv
- srv/GetAlliedCameraBalanceWhiteAutoRate.srv
- srv/GetAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/GetAlliedCameraBlackLevel.srv
- srv/GetAlliedCameraExposureTime.srv
- srv/GetAlliedCameraGain.srv
- srv/GetAlliedCameraGamma.srv
- srv/GetAlliedCameraHue.srv
- srv/GetAlliedCameraIntensityAutoPrecedence.srv
- srv/GetAlliedCameraIntensityControllerRegion.srv
- srv/GetAlliedCameraIntensityControllerTarget.srv
- srv/GetAlliedCameraMaxDriverBuffersCount.srv
- srv/GetAlliedCameraSaturation.srv
- srv/GetAlliedCameraSharpness.srv
- srv/GetAutobiasValue.srv
- srv/GetDeviceInfo.srv
- srv/GetDeviceStatus.srv
- srv/GetDeviceTemperatures.srv
- srv/GetLocalServerAddress.srv
- srv/GetNetworkConfiguration.srv
- srv/GetRtspPipeline.srv
- srv/GetSensorsAvailable.srv
- srv/GetVersion.srv
- srv/Initialize.srv
- srv/LibL3camStatus.srv
- srv/PowerOffDevice.srv
- srv/SensorDisconnected.srv
- srv/SetBiasShortRange.srv
- srv/SetPolarimetricCameraDefaultSettings.srv
- srv/SetRgbCameraDefaultSettings.srv
- srv/StartDevice.srv
- srv/StartStream.srv
- srv/StopDevice.srv
- srv/StopStream.srv
- srv/Terminate.srv
Plugins
Recent questions tagged l3cam_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.0.2 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/beamaginelidar/l3cam_ros.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-26 |
Dev Status | DEVELOPED |
CI status | Continuous Integration |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Beamagine
Authors
- Beamagine
l3cam_ros
This package is an ROS driver for the L3Cam device manufactured by Beamagine. The driver relies on the library libL3Cam 0.1.18
provided by Beamagine as part of the L3Cam SDK. For more info on the L3Cam check the L3Cam User Manual.
If you are looking for this package for ROS2, go to the l3cam_ros2 package.
This package is supported only on Linux systems and has only been tested with ROS noetic on an Ubuntu 20.04 system.
Installation
Dependencies
First, you will need to install the L3Cam SDK.
Download the package from Beamagine’s L3Cam SDK 0.1.18 release repository and install the required package depending on your hardware architecture:
sudo dpkg -i <PACKAGE>
ROS Driver
Clone this repository in your catkin workspace (e.g. catkin_ws) and build:
cd ~/catkin_ws/src && git clone https://github.com/beamaginelidar/l3cam_ros
catkin_make
Access Permission
You will need to give permission to the cfg files.
cd ~/catkin_ws/src/l3cam_ros/cfg
chmod a+x Network.cfg Lidar.cfg Polarimetric.cfg Rgb.cfg Thermal.cfg AlliedWide.cfg AlliedNarrow.cfg
Operational Advice
Jumbo frames
You will need to enable jumbo frames on your ethernet adapter by increasing the MTU (Maximum Transmission Unit) on the network interface attached to the camera.
A jumbo frame is an Ethernet frame that is larger than 1500 bytes. Most Ethernet adapters support jumbo frames, however it is usually turned off by default. Please note in order to set a 9000 byte packet size on the camera, the Ethernet adapter must support a jumbo frame size of 9000 bytes or higher.
You can check what your current MTU setting is by running the following command:
ifconfig | grep mtu
You should increase the MTU to 9000
to allow jumbo frames. If you use Network Manager, this can be done by opening the network interface settings and editing the “MTU” box under the “Identity” tab.
See the “Linux host configuration” section of the L3Cam User Manual for full details.
Receive Buffer Size
It is also recommended to increase your network default and maximum receive buffer size.
You can check what your current buffer size is:
sudo sysctl 'net.core.rmem_max'
sudo sysctl 'net.core.rmem_default'
Update the buffer size with the following commands:
sudo sh -c "echo 'net.core.rmem_default=268435456' >> /etc/sysctl.conf"
sudo sh -c "echo 'net.core.rmem_max=268435456' >> /etc/sysctl.conf"
sudo sysctl -p
Port usage
libL3Cam
uses the following ports for streaming and communications:
PROTOCOL | PORT | CONFIGURATION |
---|---|---|
TCP | 6000 (L3CAM) | Fixed |
UDP | 6050 (LIDAR) | Fixed |
UDP | 6060 (Allied Wide, Polarimetric) | Fixed |
UDP | 6020 (Allied Narrow, RGB) | Fixed |
UDP | 6030 (LWIR) | Fixed |
RTSP | 5040 (LIDAR) | Reconfigurable |
RTSP | 5030 (Allied Wide, Polarimetric) | Reconfigurable |
RTSP | 5010 (Allied Narrow, RGB) | Reconfigurable |
RTSP | 5020 (LWIR) | Reconfigurable |
TCP is used internally by libL3Cam
and is transparent to the user. However, the system host must have the required port available.
Launch
l3cam
To run the l3cam_ros driver, launch the l3cam.launch
file specifying (if wanted) if the stream launch file, the configure launch file, rviz
(for visualization GUI) and rqt_reconfigure
(for dynamic reconfigure GUI) have to be launched too. By default, the values are as follows:
```
File truncated at 100 lines see the full file
Change log for l3cam_ros
All notable changes to the l3cam_ros package will be documented in this file.
[1.0.2] - 10-07-2024
Changed
- thermalTypes changed for newThermalTypes.
- LibL3CamStatus status types with ‘_status’ suffix to avoid errors.
- Econ wide implementation
Added
- libl3cam 0.1.18 new functionalities.
- Added missing namespace prefix on messages.
Fixed
- Fixed no error on lidar configuration bug.
- Bias value left and right bug.
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
-
The lidar pointcloud_color param RGBT_FUSION (7) value is not available and will return out of range error.
[1.0.1] - 15-03-2024
Changed
- Sensors header stamps with unix epoch timestamp
- Allied cameras stream in YUV
Added
- Topic for thermal float (pixels with temperature values)
- New libl3cam thermal camera functionalities
- Device info service
Fixed
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
[1.0.0] - 2023-12-11
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
roscpp | |
rospy | |
std_msgs | |
cv_bridge | |
sensor_msgs | |
message_generation | |
image_transport | |
dynamic_reconfigure | |
catkin | |
message_runtime |
System Dependencies
Dependant Packages
Launch files
- launch/configure_l3cam.launch
-
- network_conf [default: true]
- timeout_secs [default: 60]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 33.5]
- polarimetric_auto_exposure_time_range_maximum [default: 66470.6]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: false]
- rgb_exposure_time [default: 156]
- rgb_streaming_protocol [default: 0]
- thermal_colormap [default: 1]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: false]
- thermal_streaming_protocol [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_streaming_protocol [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_streaming_protocol [default: 0]
- launch/l3cam.launch
-
- stream [default: true]
- rviz [default: false]
- configure [default: true]
- rqt_reconfigure [default: false]
- timeout_secs [default: 30]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- local_address [default: ]
- device_address [default: ]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- lidar_rtsp_pipeline [default: ]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 40]
- polarimetric_auto_exposure_time_range_maximum [default: 66470]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- polarimetric_rtsp_pipeline [default: ]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: true]
- rgb_exposure_time [default: 156]
- rgb_resolution [default: 3]
- rgb_framerate [default: 10]
- rgb_streaming_protocol [default: 0]
- rgb_rtsp_pipeline [default: ]
- thermal_colormap [default: 5]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: true]
- thermal_streaming_protocol [default: 0]
- thermal_rtsp_pipeline [default: ]
- allied_wide_black_level [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_sharpness [default: 0]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_auto_mode_region_height [default: 1028]
- allied_wide_auto_mode_region_width [default: 1232]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_max_driver_buffers_count [default: 64]
- allied_wide_streaming_protocol [default: 0]
- allied_wide_rtsp_pipeline [default: ]
- allied_narrow_black_level [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_sharpness [default: 0]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_auto_mode_region_height [default: 1544]
- allied_narrow_auto_mode_region_width [default: 2064]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_max_driver_buffers_count [default: 64]
- allied_narrow_streaming_protocol [default: 0]
- allied_narrow_rtsp_pipeline [default: ]
- launch/stream_l3cam.launch
-
- timeout_secs [default: 60]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
Messages
Services
- srv/ChangeAlliedCameraAutoExposureTimeRange.srv
- srv/ChangeAlliedCameraAutoGainRange.srv
- srv/ChangeAlliedCameraBalanceRatio.srv
- srv/ChangeAlliedCameraBalanceRatioSelector.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoRate.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/ChangeAlliedCameraExposureTime.srv
- srv/ChangeAlliedCameraGain.srv
- srv/ChangeAlliedCameraGamma.srv
- srv/ChangeAlliedCameraHue.srv
- srv/ChangeAlliedCameraIntensityAutoPrecedence.srv
- srv/ChangeAlliedCameraIntensityControllerRegion.srv
- srv/ChangeAlliedCameraIntensityControllerTarget.srv
- srv/ChangeAlliedCameraSaturation.srv
- srv/ChangeAutobiasValue.srv
- srv/ChangeBiasValue.srv
- srv/ChangeDistanceRange.srv
- srv/ChangeNetworkConfiguration.srv
- srv/ChangePointcloudColor.srv
- srv/ChangePointcloudColorRange.srv
- srv/ChangePolarimetricCameraAutoExposureTimeRange.srv
- srv/ChangePolarimetricCameraAutoGainRange.srv
- srv/ChangePolarimetricCameraBlackLevel.srv
- srv/ChangePolarimetricCameraBrightness.srv
- srv/ChangePolarimetricCameraExposureTime.srv
- srv/ChangePolarimetricCameraGain.srv
- srv/ChangePolarimetricCameraProcessType.srv
- srv/ChangeRgbCameraBrightness.srv
- srv/ChangeRgbCameraContrast.srv
- srv/ChangeRgbCameraExposureTime.srv
- srv/ChangeRgbCameraGain.srv
- srv/ChangeRgbCameraGamma.srv
- srv/ChangeRgbCameraSaturation.srv
- srv/ChangeRgbCameraSharpness.srv
- srv/ChangeRgbCameraWhiteBalance.srv
- srv/ChangeStreamingProtocol.srv
- srv/ChangeThermalCameraColormap.srv
- srv/ChangeThermalCameraProcessingPipeline.srv
- srv/ChangeThermalCameraTemperatureFilter.srv
- srv/EnableAlliedCameraAutoExposureTime.srv
- srv/EnableAlliedCameraAutoGain.srv
- srv/EnableAlliedCameraAutoWhiteBalance.srv
- srv/EnableAutoBias.srv
- srv/EnablePolarimetricCameraAutoExposureTime.srv
- srv/EnablePolarimetricCameraAutoGain.srv
- srv/EnablePolarimetricCameraStreamProcessedImage.srv
- srv/EnableRgbCameraAutoExposureTime.srv
- srv/EnableRgbCameraAutoWhiteBalance.srv
- srv/EnableThermalCameraTemperatureDataUdp.srv
- srv/EnableThermalCameraTemperatureFilter.srv
- srv/FindDevices.srv
- srv/GetAlliedCameraAutoExposureTime.srv
- srv/GetAlliedCameraAutoExposureTimeRange.srv
- srv/GetAlliedCameraAutoGain.srv
- srv/GetAlliedCameraAutoGainRange.srv
- srv/GetAlliedCameraAutoModeRegion.srv
- srv/GetAlliedCameraAutoWhiteBalance.srv
- srv/GetAlliedCameraBalanceRatio.srv
- srv/GetAlliedCameraBalanceRatioSelector.srv
- srv/GetAlliedCameraBalanceWhiteAutoRate.srv
- srv/GetAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/GetAlliedCameraBlackLevel.srv
- srv/GetAlliedCameraExposureTime.srv
- srv/GetAlliedCameraGain.srv
- srv/GetAlliedCameraGamma.srv
- srv/GetAlliedCameraHue.srv
- srv/GetAlliedCameraIntensityAutoPrecedence.srv
- srv/GetAlliedCameraIntensityControllerRegion.srv
- srv/GetAlliedCameraIntensityControllerTarget.srv
- srv/GetAlliedCameraMaxDriverBuffersCount.srv
- srv/GetAlliedCameraSaturation.srv
- srv/GetAlliedCameraSharpness.srv
- srv/GetAutobiasValue.srv
- srv/GetDeviceInfo.srv
- srv/GetDeviceStatus.srv
- srv/GetDeviceTemperatures.srv
- srv/GetLocalServerAddress.srv
- srv/GetNetworkConfiguration.srv
- srv/GetRtspPipeline.srv
- srv/GetSensorsAvailable.srv
- srv/GetVersion.srv
- srv/Initialize.srv
- srv/LibL3camStatus.srv
- srv/PowerOffDevice.srv
- srv/SensorDisconnected.srv
- srv/SetBiasShortRange.srv
- srv/SetPolarimetricCameraDefaultSettings.srv
- srv/SetRgbCameraDefaultSettings.srv
- srv/StartDevice.srv
- srv/StartStream.srv
- srv/StopDevice.srv
- srv/StopStream.srv
- srv/Terminate.srv
Plugins
Recent questions tagged l3cam_ros at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.0.2 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/beamaginelidar/l3cam_ros.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-26 |
Dev Status | DEVELOPED |
CI status | Continuous Integration |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Beamagine
Authors
- Beamagine
l3cam_ros
This package is an ROS driver for the L3Cam device manufactured by Beamagine. The driver relies on the library libL3Cam 0.1.18
provided by Beamagine as part of the L3Cam SDK. For more info on the L3Cam check the L3Cam User Manual.
If you are looking for this package for ROS2, go to the l3cam_ros2 package.
This package is supported only on Linux systems and has only been tested with ROS noetic on an Ubuntu 20.04 system.
Installation
Dependencies
First, you will need to install the L3Cam SDK.
Download the package from Beamagine’s L3Cam SDK 0.1.18 release repository and install the required package depending on your hardware architecture:
sudo dpkg -i <PACKAGE>
ROS Driver
Clone this repository in your catkin workspace (e.g. catkin_ws) and build:
cd ~/catkin_ws/src && git clone https://github.com/beamaginelidar/l3cam_ros
catkin_make
Access Permission
You will need to give permission to the cfg files.
cd ~/catkin_ws/src/l3cam_ros/cfg
chmod a+x Network.cfg Lidar.cfg Polarimetric.cfg Rgb.cfg Thermal.cfg AlliedWide.cfg AlliedNarrow.cfg
Operational Advice
Jumbo frames
You will need to enable jumbo frames on your ethernet adapter by increasing the MTU (Maximum Transmission Unit) on the network interface attached to the camera.
A jumbo frame is an Ethernet frame that is larger than 1500 bytes. Most Ethernet adapters support jumbo frames, however it is usually turned off by default. Please note in order to set a 9000 byte packet size on the camera, the Ethernet adapter must support a jumbo frame size of 9000 bytes or higher.
You can check what your current MTU setting is by running the following command:
ifconfig | grep mtu
You should increase the MTU to 9000
to allow jumbo frames. If you use Network Manager, this can be done by opening the network interface settings and editing the “MTU” box under the “Identity” tab.
See the “Linux host configuration” section of the L3Cam User Manual for full details.
Receive Buffer Size
It is also recommended to increase your network default and maximum receive buffer size.
You can check what your current buffer size is:
sudo sysctl 'net.core.rmem_max'
sudo sysctl 'net.core.rmem_default'
Update the buffer size with the following commands:
sudo sh -c "echo 'net.core.rmem_default=268435456' >> /etc/sysctl.conf"
sudo sh -c "echo 'net.core.rmem_max=268435456' >> /etc/sysctl.conf"
sudo sysctl -p
Port usage
libL3Cam
uses the following ports for streaming and communications:
PROTOCOL | PORT | CONFIGURATION |
---|---|---|
TCP | 6000 (L3CAM) | Fixed |
UDP | 6050 (LIDAR) | Fixed |
UDP | 6060 (Allied Wide, Polarimetric) | Fixed |
UDP | 6020 (Allied Narrow, RGB) | Fixed |
UDP | 6030 (LWIR) | Fixed |
RTSP | 5040 (LIDAR) | Reconfigurable |
RTSP | 5030 (Allied Wide, Polarimetric) | Reconfigurable |
RTSP | 5010 (Allied Narrow, RGB) | Reconfigurable |
RTSP | 5020 (LWIR) | Reconfigurable |
TCP is used internally by libL3Cam
and is transparent to the user. However, the system host must have the required port available.
Launch
l3cam
To run the l3cam_ros driver, launch the l3cam.launch
file specifying (if wanted) if the stream launch file, the configure launch file, rviz
(for visualization GUI) and rqt_reconfigure
(for dynamic reconfigure GUI) have to be launched too. By default, the values are as follows:
```
File truncated at 100 lines see the full file
Change log for l3cam_ros
All notable changes to the l3cam_ros package will be documented in this file.
[1.0.2] - 10-07-2024
Changed
- thermalTypes changed for newThermalTypes.
- LibL3CamStatus status types with ‘_status’ suffix to avoid errors.
- Econ wide implementation
Added
- libl3cam 0.1.18 new functionalities.
- Added missing namespace prefix on messages.
Fixed
- Fixed no error on lidar configuration bug.
- Bias value left and right bug.
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
-
The lidar pointcloud_color param RGBT_FUSION (7) value is not available and will return out of range error.
[1.0.1] - 15-03-2024
Changed
- Sensors header stamps with unix epoch timestamp
- Allied cameras stream in YUV
Added
- Topic for thermal float (pixels with temperature values)
- New libl3cam thermal camera functionalities
- Device info service
Fixed
Removed
Known Bugs
Issues
-
When changing a parameter from a configuration node, if the parameter could not be changed, it will be set to its previous value. This might not directly take effect on the
rqt_reconfigure
node and might lead to misunderstandings. Please check for any RCLCPP messages, any parameter that could not be changed will be informed. You can refresh the actual values of a configuration node inrqt_reconfigure
by hiding and showing again the node parameters. -
The following parameters might not match the real value as they depend on another parameter to be able to be set, and getters for sensors parameters, except allied cameras, are not supported yet.
-
bias_value_right
depends onauto_bias
. -
bias_value_left
depends onauto_bias
. -
polarimetric_camera_auto_gain_range_minimum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_gain_range_maximum
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_gain
depends onpolarimetric_camera_auto_gain
. -
polarimetric_camera_auto_exposure_time_range_minimum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_auto_exposure_time_range_maximum
depends onpolarimetric_camera_auto_exposure_time
. -
polarimetric_camera_exposure_time
depends onpolarimetric_camera_auto_exposure_time
. -
rgb_camera_white_balance
depends onrgb_camera_auto_white_balance
. -
rgb_camera_exposure_time
depends onrgb_camera_auto_exposure_time
.
-
-
The following parameters will change when the parameter they depend on changes. These changes might not be shown directly in
rqt_reconfigure
, so you might have to hide and show the parameter’s node.-
allied_wide_camera_exposure_time
changes whenallied_wide_camera_auto_exposure_time
is set to false. -
allied_wide_camera_gain
changes whenallied_wide_camera_auto_gain
is set to false. -
allied_narrow_camera_exposure_time
changes whenallied_narrow_camera_auto_exposure_time
is set to false. -
allied_narrow_camera_gain
changes whenallied_narrow_camera_auto_gain
is set to false.
-
-
Some error codes returned from the library are returned as uint interpreted as int.
[1.0.0] - 2023-12-11
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
roscpp | |
rospy | |
std_msgs | |
cv_bridge | |
sensor_msgs | |
message_generation | |
image_transport | |
dynamic_reconfigure | |
catkin | |
message_runtime |
System Dependencies
Dependant Packages
Launch files
- launch/configure_l3cam.launch
-
- network_conf [default: true]
- timeout_secs [default: 60]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 33.5]
- polarimetric_auto_exposure_time_range_maximum [default: 66470.6]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: false]
- rgb_exposure_time [default: 156]
- rgb_streaming_protocol [default: 0]
- thermal_colormap [default: 1]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: false]
- thermal_streaming_protocol [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_streaming_protocol [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_streaming_protocol [default: 0]
- launch/l3cam.launch
-
- stream [default: true]
- rviz [default: false]
- configure [default: true]
- rqt_reconfigure [default: false]
- timeout_secs [default: 30]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- local_address [default: ]
- device_address [default: ]
- pointcloud_color [default: 0]
- pointcloud_color_range_minimum [default: 0]
- pointcloud_color_range_maximum [default: 300000]
- distance_range_minimum [default: 1500]
- distance_range_maximum [default: 300000]
- bias_short_range [default: false]
- auto_bias [default: true]
- bias_value_right [default: 1580]
- bias_value_left [default: 1380]
- autobias_value_right [default: 50]
- autobias_value_left [default: 50]
- lidar_streaming_protocol [default: 0]
- lidar_rtsp_pipeline [default: ]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
- polarimetric_brightness [default: 127]
- polarimetric_black_level [default: 6.0]
- polarimetric_auto_gain [default: true]
- polarimetric_auto_gain_range_minimum [default: 0.0]
- polarimetric_auto_gain_range_maximum [default: 48.0]
- polarimetric_gain [default: 24.0]
- polarimetric_auto_exposure_time [default: true]
- polarimetric_auto_exposure_time_range_minimum [default: 40]
- polarimetric_auto_exposure_time_range_maximum [default: 66470]
- polarimetric_exposure_time [default: 33.5]
- polarimetric_streaming_protocol [default: 0]
- polarimetric_rtsp_pipeline [default: ]
- rgb_brightness [default: 0]
- rgb_contrast [default: 10]
- rgb_saturation [default: 16]
- rgb_sharpness [default: 16]
- rgb_gamma [default: 220]
- rgb_gain [default: 0]
- rgb_auto_white_balance [default: true]
- rgb_white_balance [default: 5000]
- rgb_auto_exposure_time [default: true]
- rgb_exposure_time [default: 156]
- rgb_resolution [default: 3]
- rgb_framerate [default: 10]
- rgb_streaming_protocol [default: 0]
- rgb_rtsp_pipeline [default: ]
- thermal_colormap [default: 5]
- thermal_temperature_filter [default: false]
- thermal_temperature_filter_min [default: 0]
- thermal_temperature_filter_max [default: 50]
- thermal_processing_pipeline [default: 1]
- thermal_temperature_data_udp [default: true]
- thermal_streaming_protocol [default: 0]
- thermal_rtsp_pipeline [default: ]
- allied_wide_black_level [default: 0]
- allied_wide_exposure_time [default: 4992.4]
- allied_wide_auto_exposure_time [default: false]
- allied_wide_auto_exposure_time_range_min [default: 87.6]
- allied_wide_auto_exposure_time_range_max [default: 8999990.0]
- allied_wide_gain [default: 0]
- allied_wide_auto_gain [default: false]
- allied_wide_auto_gain_range_min [default: 0]
- allied_wide_auto_gain_range_max [default: 48]
- allied_wide_gamma [default: 1]
- allied_wide_saturation [default: 1]
- allied_wide_sharpness [default: 0]
- allied_wide_hue [default: 0]
- allied_wide_intensity_auto_precedence [default: 0]
- allied_wide_auto_white_balance [default: false]
- allied_wide_balance_ratio_selector [default: 0]
- allied_wide_balance_ratio [default: 2.4]
- allied_wide_balance_white_auto_rate [default: 100]
- allied_wide_balance_white_auto_tolerance [default: 5]
- allied_wide_auto_mode_region_height [default: 1028]
- allied_wide_auto_mode_region_width [default: 1232]
- allied_wide_intensity_controller_region [default: 0]
- allied_wide_intensity_controller_target [default: 50]
- allied_wide_max_driver_buffers_count [default: 64]
- allied_wide_streaming_protocol [default: 0]
- allied_wide_rtsp_pipeline [default: ]
- allied_narrow_black_level [default: 0]
- allied_narrow_exposure_time [default: 4992.4]
- allied_narrow_auto_exposure_time [default: false]
- allied_narrow_auto_exposure_time_range_min [default: 87.6]
- allied_narrow_auto_exposure_time_range_max [default: 8999990.0]
- allied_narrow_gain [default: 0]
- allied_narrow_auto_gain [default: false]
- allied_narrow_auto_gain_range_min [default: 0]
- allied_narrow_auto_gain_range_max [default: 48]
- allied_narrow_gamma [default: 1]
- allied_narrow_saturation [default: 1]
- allied_narrow_sharpness [default: 0]
- allied_narrow_hue [default: 0]
- allied_narrow_intensity_auto_precedence [default: 0]
- allied_narrow_auto_white_balance [default: false]
- allied_narrow_balance_ratio_selector [default: 0]
- allied_narrow_balance_ratio [default: 2.4]
- allied_narrow_balance_white_auto_rate [default: 100]
- allied_narrow_balance_white_auto_tolerance [default: 5]
- allied_narrow_auto_mode_region_height [default: 1544]
- allied_narrow_auto_mode_region_width [default: 2064]
- allied_narrow_intensity_controller_region [default: 0]
- allied_narrow_intensity_controller_target [default: 50]
- allied_narrow_max_driver_buffers_count [default: 64]
- allied_narrow_streaming_protocol [default: 0]
- allied_narrow_rtsp_pipeline [default: ]
- launch/stream_l3cam.launch
-
- timeout_secs [default: 60]
- lidar_topic [default: /PC2_lidar]
- polarimetric_topic [default: /img_polarimetric]
- rgb_topic [default: /img_rgb]
- thermal_topic [default: /img_thermal]
- allied_wide_topic [default: /img_wide]
- allied_narrow_topic [default: /img_narrow]
- polarimetric_stream_processed_image [default: true]
- polarimetric_process_type [default: 4]
Messages
Services
- srv/ChangeAlliedCameraAutoExposureTimeRange.srv
- srv/ChangeAlliedCameraAutoGainRange.srv
- srv/ChangeAlliedCameraBalanceRatio.srv
- srv/ChangeAlliedCameraBalanceRatioSelector.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoRate.srv
- srv/ChangeAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/ChangeAlliedCameraExposureTime.srv
- srv/ChangeAlliedCameraGain.srv
- srv/ChangeAlliedCameraGamma.srv
- srv/ChangeAlliedCameraHue.srv
- srv/ChangeAlliedCameraIntensityAutoPrecedence.srv
- srv/ChangeAlliedCameraIntensityControllerRegion.srv
- srv/ChangeAlliedCameraIntensityControllerTarget.srv
- srv/ChangeAlliedCameraSaturation.srv
- srv/ChangeAutobiasValue.srv
- srv/ChangeBiasValue.srv
- srv/ChangeDistanceRange.srv
- srv/ChangeNetworkConfiguration.srv
- srv/ChangePointcloudColor.srv
- srv/ChangePointcloudColorRange.srv
- srv/ChangePolarimetricCameraAutoExposureTimeRange.srv
- srv/ChangePolarimetricCameraAutoGainRange.srv
- srv/ChangePolarimetricCameraBlackLevel.srv
- srv/ChangePolarimetricCameraBrightness.srv
- srv/ChangePolarimetricCameraExposureTime.srv
- srv/ChangePolarimetricCameraGain.srv
- srv/ChangePolarimetricCameraProcessType.srv
- srv/ChangeRgbCameraBrightness.srv
- srv/ChangeRgbCameraContrast.srv
- srv/ChangeRgbCameraExposureTime.srv
- srv/ChangeRgbCameraGain.srv
- srv/ChangeRgbCameraGamma.srv
- srv/ChangeRgbCameraSaturation.srv
- srv/ChangeRgbCameraSharpness.srv
- srv/ChangeRgbCameraWhiteBalance.srv
- srv/ChangeStreamingProtocol.srv
- srv/ChangeThermalCameraColormap.srv
- srv/ChangeThermalCameraProcessingPipeline.srv
- srv/ChangeThermalCameraTemperatureFilter.srv
- srv/EnableAlliedCameraAutoExposureTime.srv
- srv/EnableAlliedCameraAutoGain.srv
- srv/EnableAlliedCameraAutoWhiteBalance.srv
- srv/EnableAutoBias.srv
- srv/EnablePolarimetricCameraAutoExposureTime.srv
- srv/EnablePolarimetricCameraAutoGain.srv
- srv/EnablePolarimetricCameraStreamProcessedImage.srv
- srv/EnableRgbCameraAutoExposureTime.srv
- srv/EnableRgbCameraAutoWhiteBalance.srv
- srv/EnableThermalCameraTemperatureDataUdp.srv
- srv/EnableThermalCameraTemperatureFilter.srv
- srv/FindDevices.srv
- srv/GetAlliedCameraAutoExposureTime.srv
- srv/GetAlliedCameraAutoExposureTimeRange.srv
- srv/GetAlliedCameraAutoGain.srv
- srv/GetAlliedCameraAutoGainRange.srv
- srv/GetAlliedCameraAutoModeRegion.srv
- srv/GetAlliedCameraAutoWhiteBalance.srv
- srv/GetAlliedCameraBalanceRatio.srv
- srv/GetAlliedCameraBalanceRatioSelector.srv
- srv/GetAlliedCameraBalanceWhiteAutoRate.srv
- srv/GetAlliedCameraBalanceWhiteAutoTolerance.srv
- srv/GetAlliedCameraBlackLevel.srv
- srv/GetAlliedCameraExposureTime.srv
- srv/GetAlliedCameraGain.srv
- srv/GetAlliedCameraGamma.srv
- srv/GetAlliedCameraHue.srv
- srv/GetAlliedCameraIntensityAutoPrecedence.srv
- srv/GetAlliedCameraIntensityControllerRegion.srv
- srv/GetAlliedCameraIntensityControllerTarget.srv
- srv/GetAlliedCameraMaxDriverBuffersCount.srv
- srv/GetAlliedCameraSaturation.srv
- srv/GetAlliedCameraSharpness.srv
- srv/GetAutobiasValue.srv
- srv/GetDeviceInfo.srv
- srv/GetDeviceStatus.srv
- srv/GetDeviceTemperatures.srv
- srv/GetLocalServerAddress.srv
- srv/GetNetworkConfiguration.srv
- srv/GetRtspPipeline.srv
- srv/GetSensorsAvailable.srv
- srv/GetVersion.srv
- srv/Initialize.srv
- srv/LibL3camStatus.srv
- srv/PowerOffDevice.srv
- srv/SensorDisconnected.srv
- srv/SetBiasShortRange.srv
- srv/SetPolarimetricCameraDefaultSettings.srv
- srv/SetRgbCameraDefaultSettings.srv
- srv/StartDevice.srv
- srv/StartStream.srv
- srv/StopDevice.srv
- srv/StopStream.srv
- srv/Terminate.srv