|
@@ -112,7 +112,14 @@ float64[9] linear_acceleration_covariance # Row major x, y z
|
|
|
|
|
|
有了上节课的经验,我们可以很轻松的添加IMU传感器,但是还有一个需要注意的地方,为了更真实的模拟IMU传感器,我们需要给我们的仿真IMU传感器加点料。
|
|
|
|
|
|
-加什么?加点高斯噪声,高斯噪声包含
|
|
|
+加什么?加点高斯噪声,高斯噪声只需要指定平均值和标准差两个参数即可,不过因为IMU传感器的特殊性,我们还需要给模型添加两个偏差参数,分别是 `平均值偏差`和`标准差偏差`。
|
|
|
+
|
|
|
+有关Gazebo仿真和噪声模型更深入的介绍可以参考小鱼发的两篇推文:
|
|
|
+
|
|
|
+- [Gazebo仿真进阶教程之传感器高斯噪声(一)](https://mp.weixin.qq.com/s/0-OEATkyfMf6wEyrP5csGw)
|
|
|
+- [Gazebo仿真进阶教程之传感器高斯噪声(二)](https://mp.weixin.qq.com/s/5k1SEGdASjUMbwWdSpf1PQ)
|
|
|
+
|
|
|
+下面是IMU传感器的URDF配置代码,大家结合文章对应可以理解一下,IMU对应的插件库`libgazebo_ros_imu_sensor.so`
|
|
|
|
|
|
```
|
|
|
<gazebo reference="imu_link">
|
|
@@ -185,62 +192,99 @@ float64[9] linear_acceleration_covariance # Row major x, y z
|
|
|
</gazebo>
|
|
|
```
|
|
|
|
|
|
-
|
|
|
+将上面的代码加到`fishbot_gazebo.urdf`中,接着我们就可以进行测试了。
|
|
|
|
|
|
## 4.编译测试
|
|
|
|
|
|
-```
|
|
|
-http://gazebosim.org/tutorials?tut=sensor_noise&cat=sensors
|
|
|
-```
|
|
|
+编译
|
|
|
|
|
|
+```shell
|
|
|
+colcon build
|
|
|
+```
|
|
|
|
|
|
+运行
|
|
|
|
|
|
```
|
|
|
-ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args --remap cmd_vel:=/fishbot/cmd_vel
|
|
|
+ros2 launch fishbot_description gazebo.launch.py
|
|
|
```
|
|
|
|
|
|
+CLI看话题
|
|
|
|
|
|
+```
|
|
|
+ros2 topic list
|
|
|
+ros2 topic info /imu
|
|
|
+```
|
|
|
|
|
|
+```
|
|
|
+ros2 topic echo /imu
|
|
|
+```
|
|
|
|
|
|
+输出:
|
|
|
|
|
|
+```
|
|
|
+header:
|
|
|
+ stamp:
|
|
|
+ sec: 150
|
|
|
+ nanosec: 599000000
|
|
|
+ frame_id: base_footprint
|
|
|
+orientation:
|
|
|
+ x: 3.434713830866392e-07
|
|
|
+ y: 7.119913105768616e-06
|
|
|
+ z: -0.00028312437320413914
|
|
|
+ w: 0.9999999598948884
|
|
|
+orientation_covariance:
|
|
|
+- 0.0
|
|
|
+- 0.0
|
|
|
+- 0.0
|
|
|
+- 0.0
|
|
|
+- 0.0
|
|
|
+- 0.0
|
|
|
+- 0.0
|
|
|
+- 0.0
|
|
|
+- 0.0
|
|
|
+angular_velocity:
|
|
|
+ x: -0.00013597855247901325
|
|
|
+ y: 0.0006306135617081868
|
|
|
+ z: -0.00015794894627685146
|
|
|
+angular_velocity_covariance:
|
|
|
+- 4.0e-08
|
|
|
+- 0.0
|
|
|
+- 0.0
|
|
|
+- 0.0
|
|
|
+- 4.0e-08
|
|
|
+- 0.0
|
|
|
+- 0.0
|
|
|
+- 0.0
|
|
|
+- 4.0e-08
|
|
|
+linear_acceleration:
|
|
|
+ x: 0.08679200038530369
|
|
|
+ y: 0.07753419258567491
|
|
|
+ z: 9.687910969061628
|
|
|
+linear_acceleration_covariance:
|
|
|
+- 0.00028900000000000003
|
|
|
+- 0.0
|
|
|
+- 0.0
|
|
|
+- 0.0
|
|
|
+- 0.00028900000000000003
|
|
|
+- 0.0
|
|
|
+- 0.0
|
|
|
+- 0.0
|
|
|
+- 0.00028900000000000003
|
|
|
+```
|
|
|
|
|
|
+用rqt可视化:
|
|
|
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
|
+## 5.总结
|
|
|
|
|
|
+本节我们对IMU传感器进行介绍,并通过gazbeo的imu插件完成了fishbot的IMU数据的输出。
|
|
|
|
|
|
+最后还有小练习等着你:
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+1. 再次启动遥控节点,控制fishbot,观察IMU传感器的数据变化
|
|
|
|
|
|
|
|
|
|