为RViz添加多目标点顺序导航的插件

文章目录

  • 前言
  • 1 概述
  • 2 使用插件
    • 2.1 下载并编译
    • 2.1 添加插件
    • 2.3 运行
    • 2.4 插件的属性和参数
      • 属性
      • 参数
  • 总结


前言

使用RViz运行ROS Navigation时,可以通过2D Navi Goal对机器人下发单个导航目标点。在某些运用场景,比如自动值守,需要同时下发多个导航目标点,随后机器人能够按顺序遍历各目标点。该需求目前在RViz中暂时没有对应功能,本文对作者开发的一个多目标点导航的插件做功能介绍,实现过程留在github由读者参考


1 概述

本文将多目标点导航的插件命名为“Navi_waypoints”,其导出属性为Display插件,其用户输入交互界面也由Display创建并添加。这里没有直接使用属性为Panel的插件是考虑用户可以修改显示的属性。关于RViz中插件属性Display及Panel的说明,读者可参阅我们之前的博文《为RViz创建自定义的显示插件》。

Navi_waypoints插件功能支持用户自由添加多个导航目标点,所添加的目标点位置及航向角可以通过Interactive Marker以图形化交互的方式进行修改;在自动值守的场景下,打开循环Loop模式,能够实现多目标点的首尾闭合,从而循环导航的功能;同时,用户能设置各导航目标点之间是连续还是停顿;考虑复用的便捷性,为用户提供将目标导航点存储为yaml格式文件,在下次重复使用时可以直接加载

2 使用插件

2.1 下载并编译

进入 ROS 的工作目录,这里假设工作目录命名为 catkin_workspace:

cd ~/catkin_workspace/src
git clone https://github.com/xinjuezou-whi/whi_rviz_plugins.git

随后通过 rosdep 检查并安装所需依赖:

rosdep install --from-paths . --ignore-src --rosdistro $ROS_DISTRO

最后编译,编译完成记得为终端添加工作目录:

catkin build
source ~/catkin_workspace/devel/setup.bash

2.1 添加插件

编译完成后在 RViz 的Navigation环境中就能添加Navi_waypoints插件运行,点击"Add"按钮,在弹出的插件对话框中找到“whi_rviz_plugins/Navi_waypoints”:
为RViz添加多目标点顺序导航的插件_第1张图片

随后,RViz的Display中将出现插件Navi_waypoints及其对应属性,同时添加waypoints的面板:
为RViz添加多目标点顺序导航的插件_第2张图片

2.3 运行

点击插件Panel上的Add添加可交互操作的目标导航点,添加后使用Interactive Marker的交互功能调整合适的导航位置:

在交互调整目标导航点时,首先需要将RViz的状态由“Move Camera”调整到“Interact”,否则只能交互调整地图角度和位置

一旦添加了合适的导航目标,点击“Execute”即可开始多目标的导航过程,勾选Loop可以实现多点导航的循环执行:

2.4 插件的属性和参数

属性

属性包括Interactive Marker的大小、高度、颜色;目标点预计到达时间信息的显示与否、字体大小、颜色。其中Interactive Marker的高度可以着重关注,这是因为在Navigation运用中RViz的视角显示默认固定为Top-Down的角度,各类导航信息,比如激光点云、地图、机器人模型等等都投影重叠到了XY平面,在这种重叠下,用户很难选中Interactive Marker对其进行交互操作。因此,设置了其高度属性,通过该属性保证Interactive Marker的目标点始终在其他信息之上,从而保证用户能够选中并交互,其默认值为1.0米

参数

参数Point/Stop Span用户设置各目标导航点之间的停顿时间,其范围为-10800到10800秒,即正负3小时。负值的含义为在当前目标点达到的xx秒之前,用其下一个目标打断并继续,从而实现两相邻目标点间无停顿的连续运动;正值则表示两个相邻目标点间需要等待的时间

Point Span生效于除最后一个点外,其余相邻目标点间的停顿时间;当在循环模式Loop下,Stop Span生效于最后一个目标点和第一个目标点间的停顿时间


总结

当需要将用户自定义信息在RViz进行显示或者交互时,通过自定义RViz插件的方式实现,本文说明了一个能够支持多目标导航点的插件,可以丰富Navigation的运用功能,希望通过本文对有类似需求的读者提供一个参考

本文说明的插件package,可以完整的在github下载,如果文中出现了描述错误以及不清晰的地方,欢迎指正,共同交流:[email protected]

你可能感兴趣的:(ROS,plugins,RViz,机器人,自动驾驶,人工智能)