ROS-使用命令发布导航目标点(publish point)

手动发布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" 
rostopic pub -1 /clicked_point geometry_msgs/PointStamped "header:
  seq: 0 
  stamp:
    secs: 0
    nsecs: 0
  frame_id: 'map'
point:
  x: -4.0
  y: 0.0
  z: 0.0" 
rostopic pub -1 /clicked_point geometry_msgs/PointStamped "header:
  seq: 0
  stamp:
    secs: 0
    nsecs: 0
  frame_id: 'map'
point:
  x: -3.0
  y: 0.0
  z: 0.0" 
rostopic pub -1 /clicked_point geometry_msgs/PointStamped "header:
  seq: 0
  stamp:
    secs: 0
    nsecs: 0
  frame_id: 'map'
point:
  x: -2.7
  y: 0.0
  z: 0.0" 

疑惑

为何发布的publish point 两点的距离大些时,move_base不会发布“/move_base/goal”话题,即模型不会动起来??距离小的时候就可以??
解答:

因为我的全局规划路径使用的waypoint,在全局规划路径的配置中,设置了这个距离参数,可以调整的!!

补充

对于评论讲的发布/clicked_point话题之后模型并没有动起来,解释如下:

我们要让move_base订阅clicked_point话题,怎么实现呢?这里可以使用开源的全局算法waypoint-global-planner(https://github.com/gkouros/waypoint-global-planner);

在move_base调用就可以了!!

示例:
move_base.launch:

<launch>

<node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen" clear_params="true">
<rosparam file="$(find my_navigation)/config/costmap_common_params.yaml" command="load" ns="global_costmap" />
<rosparam file="$(find my_navigation)/config/costmap_common_params.yaml" command="load" ns="local_costmap" />
<rosparam file="$(find my_navigation)/config/local_costmap_params.yaml" command="load" />
<rosparam file="$(find my_navigation)/config/global_costmap_params.yaml" command="load" />

<!--global_planner-->
<rosparam file="$(find my_navigation)/config/base_global_planner_params.yaml" command="load" />

</node>

  
</launch>

base_global_planner_params.yaml:

base_global_planner: "waypoint_global_planner/WaypointGlobalPlanner"
#planner_frequency: 0.0 #此为move_base参数
#planner_patience: 1.0 #此为move_base参数,在move_base_params.yaml中也进行了设定

WaypointGlobalPlanner:
  # epsilon: 1e-1  # distance threshold for final waypoint
  epsilon: 0.5  # distance threshold for final waypoint  
  waypoints_per_meter: 10  # number of waypoints per meter for the interpolation of the path
  • 16
    点赞
  • 157
    收藏
    觉得还不错? 一键收藏
  • 23
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值