今天是除夕了,本年的最后一天,在这里,祝大家新年快乐!!!
本篇文章主要是对最近编写的一个ROS人机交互软件的介绍,希望大家多提意见和建议,谢谢。
该软件的结构如下图所示:
整个软件被分为6个界面,主要分为设置、建图导航、键盘控制、单点导航、巡航模式等页面。其中建图导航包含rviz组件,具备显示功能。整个软件还具备保存设置功能,只需第一次开机设置。
开始界面比较简单,就显示了一张图片,如下图所示:
设置界面,主要包括连接ros master、设置启动功能按钮命令、自定义单点导航按钮名称、显示调试信息等模块。具体如下图所示:
具体如下图所示:
可以有以下几种连接方式:
(1)自己编辑Ros Master Url、本机IP。
(2)选择Use environment variables,使用已经设置的环境变量。
(3)选择Remeber settings on startup,软件启动自动连接Ros Master
以上方式可以组合使用,前提是本设置的url,必须正常启动了roscore,才能连接成功。
连接成功的状态如下图所示:
具体如下图所示:
在对应的编辑框中,写入对应按钮执行的命令,本编辑框具备保存设置功能,只需设置一次。
对应按钮的机制,就是打开一个新的终端,然后将这些命令写入执行。
可以使用roslaunch、rosrun 、bash等多种方式,可玩性比较大。
具体如下图所示:
这里自定义按钮名称,对应的是单点导航页面的按钮,可以自定义按钮名称就比较人性化和通用一点。对应如下图所示:
自定义按钮名称模块也具备保存设置的功能,可以随时根据需求更改按钮名称。
开机连接ros master之后界面如下所示:
点击新建地图按钮,启动设置页面设置的启动建图界面的命令之后,如下图所示:
点击保存地图按钮,启动设置页面设置的保存地图的命令之后,按照你编写的shell文件或者是启动map_server保存地图,可自定义。
点击编辑地图按钮,MAP编辑器下如所示:
编辑地图示例如下图所示:
单点设置主要设置单点导航模式的每个按钮的导航位姿,具体如下图所示:
单点选择用来选择对应按钮、单点设置按钮用来设置导航位姿。
左键按下单点设置按钮,拖动选择位姿方向,释放设置完成,会显示一个带数字的绿色箭头,如上图所示。
具备保存设置功能,只需第一次开机设置,以后开机使用第一次设置的导航点,也可以更改导航点设置。
多点设置主要设置多点导航模式的导航位姿序列,具体如下图所示:
左键按下多点设置按钮,拖动选择位姿方向,释放设置完成,会显示一个带数字的红色箭头;当设置两个或者两个以上的导航点时,将会绘制导航路径,如上图所示。
具备保存设置功能,只需第一次开机设置,以后开机使用第一次设置的导航点,也可以更改导航点设置。
返航点设置主要设置返航按钮的导航位姿,具体如下图所示:
左键按下返航点设置按钮,拖动选择位姿方向,释放设置完成,会显示一个带Return Pose的蓝色箭头,如上图所示。
具备保存设置功能,只需第一次开机设置,以后开机使用第一次设置的导航点,也可以更改导航点设置。
发布cmd_vel话题,具体如下图所示:
该键盘控制节点和常用的键盘控制功能包使用完全一致。
发布导航目标,具体如下图所示:
启动导航按钮:比如启动move_base + amcl,完全自定义,可根据自己的shell脚本自行更改。
停止导航按钮:比如取消当前导航目标,或者关闭move_base,完全自定义,可根据自己的shell脚本自行更改。
返航原点按钮:根据返航点发布导航目标。
单点导航按钮:根据单点设置的导航点发布导航目标。
开辟新线程,发布巡航导航点,具体如下图所示:
巡航次数编辑框:单位次,可以设置巡航的次数。
停留时间编辑框:单位秒,可以设置到达任一导航点,停留的时间。
下一站选择:若选择,但到达每一个导航点,必须点击下一站按钮,才能继续巡航,若不选择,反之。
启动导航按钮:比如启动move_base + amcl,完全自定义,可根据自己的shell脚本自行更改。
停止导航按钮:比如取消当前导航目标,或者关闭move_base,完全自定义,可根据自己的shell脚本自行更改。
下一站按钮:发送下一站信号。
返航原点按钮:根据返航点发布导航目标。
该软件的编写,采用ROS + QT编程实现。上述描述功能都已经实现,当然只是针对我自己的需求,还有不少功能没有写,比如摄像头图像显示等等。如果您同样对该ROS人机交互软件感兴趣,有需求,希望与我积极交流。
https://github.com/chengyangkj/Ros_Qt5_Gui_App