传感器
注意: 本教程是在Gazebo Garden中使创建好的机器人动起来教程的延续。
在本教程中,我们将学习如何向我们的机器人和世界中的其他模型添加传感器。我们将使用三种不同的传感器:IMU 传感器、接触传感器和Lidar传感器。我们还将学习如何使用 gz launch 仅用一个文件启动多个任务。
IMU传感器
惯性测量单元(IMU)以四元数的形式输出机器人的方向,以及三个轴(X、Y、Z)的角速度和线加速度。我们使用 moving_robot.sdf 世界并对其进行修改。创建一个新文件 sensor_tutorial.sdf,并将 moving_robot.sdf 中的代码添加到其中。要定义 IMU 传感器,请在<world>标签下添加以下代码:
<plugin filename="gz-sim-imu-system"
name="gz::sim::systems::Imu">
</plugin>
这段代码定义了将在我们的世界中使用的 IMU 传感器插件。现在我们可以按以下方式将 IMU 传感器添加到我们的机器人中:
<sensor name="imu_sensor" type="imu">
<always_on>1</always_on>
<update_rate>1</update_rate>
<visualize>true</visualize>
<topic>imu</topic>
</sensor>
传感器通常添加到我们模型的某个链接中;我们将其添加到chassis链接下。
让我们描述一下这些标签:
<always_on>如果为 true,则传感器将始终根据更新率进行更新。<update_rate>生成传感器数据的频率。<visualize>如果为 true,则传感器将在 GUI 中可视化。<topic>发布数据的主题名称。
注意: 并非任意标签都支持所有传感器。
从IMU读取数据
要从 IMU 读取数据,请在一个终端中运行世界并按下播放按钮:
gz sim sensor_tutorial.sdf
在另一个终端中,运行:
gz topic -e -t /imu
最后一个命令监听通过 /imu 主题发送的消息。IMU 数据是如上所述的方向、角速度和线加速度。它看起来应该像这样:

使用键盘上的向上键向前移动机器人。你应该能看到传感器值发生变化。
接触传感器
让我们介绍另一种类型的传感器,接触传感器。从名称中你可以猜出,当它接触(接触)其他东西时,这个传感器会发出指示。我们将建造一个障碍物(墙)并将接触传感器添加到其中。如果机器人撞到障碍物,它将停止,以防止机器人损坏。让我们首先按照以下方式建造障碍物:
<model name='wall'>
<static>true</static>
<pose>5 0 0 0 0 0</pose><!--pose relative to the world-->
<link name='box'>
<visual name='visual'>
<geometry>
<box>
<size>0.5 10.0 2.0</size>
</box>
</geometry>
<!--let's add color to our link-->
<material>
<ambient>0.0 0.0 1.0 1</ambient>
<diffuse>0.0 0.0 1.0 1</diffuse>
<specular>0.0 0.0 1.0 1</specular>

本文介绍了在Gazebo中使用IMU、接触和Lidar传感器,以及如何通过gzlaunch一次性启动多个任务,如机器人运动和数据收集,以实现避障功能。
最低0.47元/天 解锁文章
1256





