Skip to main content

ROS 2 driver (sensor_msgs/Range)

:::note Status, checked 2026-11-13 erdi_lrf_driver is built from source. It is not in the ROS distribution packages yet: the rosdistro pull request #55265 is open with changes requested, so apt install is not available. The package has tests against a fake serial port but has not been tested with a physical module on a robot. :::

The package publishes sensor_msgs/msg/Range on /range, so the module can feed nav2, robot_localization or your own altitude logic. Both ERDI protocol families are supported. LRF10VB is not in this driver's model list yet.

Install​

cd ~/ros2_ws/src
git clone https://github.com/ErdiTech/erdi_lrf_driver.git
cd ~/ros2_ws
rosdep install --from-paths src --ignore-src -y
colcon build --packages-select erdi_lrf_driver
source install/setup.bash
sudo usermod -aG dialout $USER # then log in again

Run​

ros2 launch erdi_lrf_driver erdi_lrf.launch.py port:=/dev/ttyUSB0 model:=LRF3000A1 rate:=10.0
ros2 topic echo /range

Parameters​

NameDefaultDescription
port/dev/ttyUSB0Serial device
modelLRF3000A1Exact model name; frame format, unit and default baud come from it
baud00 means the model's documented default
frame_iderdi_lrf_linkHeader frame
rate10.0Polling rate in Hz
min_range, max_range0.0Metres, 0 takes the model table value
field_of_view0.0Radians; for models without a published divergence set it yourself
continuousfalseStream continuously for polled models

Out-of-range readings follow REP-117: negative infinity below the minimum, positive infinity beyond the maximum or with no target, NaN for an invalid measurement.

More worked examples: erdi-lrf-ros2-examples. Repository: ErdiTech/erdi_lrf_driver.