有没有办法强制机器人已经本地化?

Is there a way I can force the robots to be already localized?

我希望在启动程序时机器人已经本地化。有什么方法可以让我不必手动移动机器人并定位它吗?

我有两个机器人,为了用第二个机器人探索,我必须先定位它,这会花费很多时间。当我定位它时,另一个机器人探索了整个地图。

谢谢

来自documentation of amcl, the localization node listens for the initial pose on the topic initialpose, with message type geometry_msgs/PoseWithCovarianceStamped。这指定了 amcl 最初从哪个定位估计开始 运行。如您所见,除了姿态估计的均值之外,您还可以提供一个完整的协方差矩阵来说明姿态估计的不确定性。

这个初始姿势在内部设置了一些默认值,但要解决您的问题,您要做的是发布一条关于上述主题的消息,告诉 amcl 以您指定的初始姿势开始。

您可以使用 rostopic pub, or through rviz: see e.g. documentation and this Q&A 通过命令行执行此操作以获取更多信息。


我才想起来甚至可以直接指定初始位姿估计为startup parameters for amcl,见initial_pose_x等类似参数。例如,如果您可以在启动节点之前在启动文件中修复这些参数,这是合适的。