目录
手动发布rviz中的publish point
我在利用move—base跑仿真时,是使用的rviz中的publish point按钮,在加载的地图上点一系列的目标点,让仿真车辆按照我点的轨迹去跑;在实车的情况下,如果每一次都靠手动去在rviz中创建目标点的话,我感觉实车的运行轨迹不够精确,所以想创建文件或者是在终端使用命令去发送这些点来代替手动在rviz中的创建的点。
思路方法
方法一:
因为实车搭载了Gps,首先想到的就是先使用遥控让车辆跑一下路线,记录下gps的信息,让实车回到开始位置,将gps信号转为map上的点发送给move—base。
方法二:
方法一的简化,还是利用rviz中的publish point按钮直接在地图点击一系列的点,但是要记录下点的信息,然后让实车回到初始位置去发布这些点。
实现
按照由易到难的原则,先把方法二的功能实现出来,再进一步进行优化!!
publish point的发布的话题“/clicked_point”
rostopic info /clicked_point
Type: geometry_msgs/PointStamped
Publishers:
* /rviz (http://zero:37475/)
Subscribers:
* /car/move_base (http://zero:37663/)
发现了个有趣的现象,在rviz中手动点击publish point的时,当加载的两个publish point之间距离比较小时,move_base会发布“/move_base/goal”话题,那么问题就简单了,我只需要在终端向“/cliceke_point”话题发布两个 publish point,且这两点的位置相近即可,随后move_base包会自动发布“/move_base/goal”话题,模型开始移动!!
发布“/clicked_point”内容
rostopic pub /clicked_point geometry_msgs/PointStamped \ '{header: {frame_id: "map"},point: {x: 7.79252910614,y: -0.434817790985,z: 0.00178050994873}}'
rostopic pub /clicked_point geometry_msgs/PointStamped \ '{header: {frame_id: "map"},point: {x: 8.09252910614,y: -0.434817790985,z: 0.00178050994873}}'
ok!!成功的让它跑起来了!!
使用脚本发布一系列的点
#!/bin/sh
rostopic pub -1 /clicked_point geometry_msgs/PointStamped "header:
seq: 0
stamp:
secs: 0
nsecs: 0
frame_id: 'map'
point:
x: -5.0
y: 0.0
z: 0.0"
r