Para incorporar un sensor LIDAR a nuestro robot es necesario añadir a su modelo, en el archivo que contiene la información URDF, el siguiente código XML que proporciona la información necesaria a Gazebo. En él se define un nuevo sensor de tipo ray, indicando el link del modelo al que está unido, las características del sensor, el plugin a cargar que en este caso es libgazebo_ros_ray_sensor.so y su configuración.
<gazebo reference="link_${name}">
<sensor type="ray" name="${name}" >
<always_on>true</always_on>
<update_rate>15</update_rate>
<ray>
<scan>
<horizontal>
<samples>640</samples>
<resolution>1</resolution>
<min_angle>0.00</min_angle>
<max_angle>6.28</max_angle>
</horizontal>
</scan>
<range>
<min>0.2</min>
<max>30.0</max>
<resolution>0.05</resolution>
</range>
<noise>
<type>gaussian</type>
<mean>0.0</mean>
<stddev>0.02</stddev>
</noise>
</ray>
<plugin name="lidar_controller" filename="libgazebo_ros_ray_sensor.so">
<ros>
<namespace>my_robot</namespace>
<remapping>~/out:=scan</remapping>
</ros>
<output_type>sensor_msgs/LaserScan</output_type>
<frame_name>link_${name}</frame_name>
</plugin>
</sensor>
</gazebo>
Para que funcione también tendremos que proporcionar un valor a la propiedad name, lo que podemos hacer por ejemplo incluyendo la siguiente línea XACRO que le asigna el valor “my_lidar”.
<xacro:property name="name" value="my_lidar" />
O si lo preferimos podemos directamente sustituir en el código ${name} por la cadena de texto que queramos.
El significado de las distintas etiquetas que aparecen en el código XML asociadas a la configuración del sensor LIDAR y del plugin se indica a continuación.
header:
stamp:
sec: 2038
nanosec: 132000000
frame_id: lidar
angle_min: 0.7850000262260437
angle_max: 2.3550000190734863
angle_increment: 0.004373258911073208
time_increment: 0.0
scan_time: 0.0
range_min: 0.11999999731779099
range_max: 3.5
ranges:
- .inf
- .inf
- .inf
- .inf
- .inf
- .inf
- .inf
- .inf
- .inf
- .inf
- 0.6356969475746155
- 0.6196209788322449
- 0.6120960116386414
- 0.5995888710021973
- 0.5964055061340332
- 0.5879242420196533
- 0.5600863099098206
- 0.5669693946838379
- 0.5543314218521118
- 0.5464122295379639
- '...'
intensities:
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- '...'
---
Una vez incluido el sensor LIDAR en nuestro modelo, si lo mostramos en Gazebo nos debe aparecer, según los nombres que hemos asignado en nuestro código, un nodo /my_robot/lidar_controller y un topic /my_robot/scan.



