为RViz添加多目标点顺序导航的插件 您所在的位置:网站首页 自动点击插件怎么关闭设置界面 为RViz添加多目标点顺序导航的插件

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

2024-07-06 08:58| 来源: 网络整理| 查看: 265

文章目录 前言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格式文件,在下次重复使用时可以直接加载 在这里插入图片描述

从版本00.09开始,该插件支持多机控制,且支持多机waypoints的同时控制: 在这里插入图片描述

2 使用插件 2.1 下载并编译

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

cd ~/catkin_workspace/src git clone https://github.com/xinjuezou-whi/whi_interfaces.git 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的Display中将出现插件Navi_waypoints及其对应属性,同时添加waypoints的面板: 在这里插入图片描述

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]



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有