如何在 hector_localization 堆栈中设置参数以融合 IMU 和气压计(压力传感器)?

Posted

技术标签:

【中文标题】如何在 hector_localization 堆栈中设置参数以融合 IMU 和气压计(压力传感器)?【英文标题】:How to set up parameter in hector_localization stack to fuse IMU and Barometer (Pressure sensor)? 【发布时间】:2021-11-21 10:28:19 【问题描述】:

我正在检查hector_localization 堆栈,它提供了机器人或平台的完整 6DOF 位姿。它使用各种传感器源,这些传感器源使用扩展卡尔曼滤波器进行融合。惯性测量单元 (IMU) 的加速度和角速率用作主要测量值,也支持气压传感器。我检查了这是这个的发射

<?xml version="1.0"?>
<launch>
  <node pkg="hector_pose_estimation" type="pose_estimation" name="hector_pose_estimation" />
  <node pkg="rviz" type="rviz" name="hector_pose_estimation_rviz" args="-d $(find hector_pose_estimation)/rviz_cfg/hector_pose_estimation.rviz" />
</launch>

但找不到设置hector_pose_estimation 节点和启动文件以获取IMU 和压力(气压计)数据作为输入的热方式。有什么帮助吗?

谢谢

【问题讨论】:

【参考方案1】:

您必须将 hector 期望的输入主题重新映射到您的系统正在输出的主题。查看this page 获取完整的主题和参数列表。最后,您的启动文件应该看起来像这样。请注意,您需要输入自己的主题名称。

<?xml version="1.0"?>
<launch>
  <node pkg="hector_pose_estimation" type="pose_estimation" name="hector_pose_estimation">
    <remap from="raw_imu" to="/your_imu_topic" />
    <remap from="pressure_height" to="/your_barometric_topic" />
  </node>
  <node pkg="rviz" type="rviz" name="hector_pose_estimation_rviz" args="-d $(find hector_pose_estimation)/rviz_cfg/hector_pose_estimation.rviz" />
</launch>

【讨论】:

太棒了,谢谢检查。您提供的链接是关于 rosbag 的。看不到有关主题和参数的任何内容。请您再检查一下链接吗? @Bob9710 那是我的错,我同时回答了rosbag 的问题。链接现在正确。 是的。现在好了。谢谢 我在使用这个启动文件&lt;?xml version="1.0"?&gt; &lt;launch&gt; &lt;node pkg="hector_pose_estimation" type="pose_estimation" name="hector_pose_estimation"&gt; &lt;remap from="raw_imu" to="/rexrov2/imu" /&gt; &lt;remap from="pressure_height" to="/rexrov2/pressure" /&gt; &lt;/node&gt; &lt;/launch&gt;时遇到了这个错误我得到的错误是`客户端[/hector_pose_estimation]希望主题/rexrov2/pressure有数据类型/md5sum [geometry_msgs/PointStamped/c63aecb41bfdfd6b7e1fac37c7cbe7bf],但我们的版本有 [sensor_msgs/FluidPressure` 与我的压力传感器一起使用这么热? 我修复了压力问题,但现在 TF 不正确。如何将 imu 数据融合到 hector_pose_estimation 中 /height 主题的 tf 和 z 值?我打开一个新问题。请问可以查吗?

以上是关于如何在 hector_localization 堆栈中设置参数以融合 IMU 和气压计(压力传感器)?的主要内容,如果未能解决你的问题,请参考以下文章

如何在c函数中访问堆起始地址和堆基地址

算法——堆排序(大根堆--升序)

如何在堆中分配值类型数组?

如何在我的 C++ 程序中检测和估计堆碎片?

如何关闭容错堆?

值类型数组如何存储在 .NET 对象堆中?