Navigation学习总结------第一阶段,完成于2019年1月

Navigation----2D学习笔记

2D导航包,从里程计,传感器流和目标姿势中获取信息,并发送安全速度命令到机器人。

 

1、相关网站

(1)基本导航调整指南,虽然不全面,但是适合入门的看看:

http://wiki.ros.org/navigation/Tutorials/Navigation%20Tuning%20Guide

(2)机器人导航堆栈的设置和配置,这才是真正的配置教程

http://wiki.ros.org/navigation/Tutorials/RobotSetup

(3)rviz是个强大的可视化工具,这个是rviz的配套使用教程,可以看看2D位置,静态地图,等等一些重要的信息

http://wiki.ros.org/navigation/Tutorials/Using%20rviz%20with%20the%20Navigation%20Stack

(4)通过ROS发布测距信息,主要是介绍odom和base_link之间的tf转换

http://wiki.ros.org/navigation/Tutorials/RobotSetup/Odom

(5)在ROS上发布传感器流,提供了通过ROS 发送两种类型的传感器流,sensor_msgs / LaserScan消息和sensor_msgs / PointCloud消息的示例

扫描二维码关注公众号,回复: 4889435 查看本文章

http://wiki.ros.org/navigation/Tutorials/RobotSetup/Sensors

(6)官网首页,上面有各个包的解释

http://wiki.ros.org/navigation?distro=lunar

(7)我很推荐在官网上读各个包,比如这个base_local_planner这个包,上面不仅有包的参数介绍,可以教你怎么去调试参数,而且还有源代码,在源代码的界面上,还可以直接找到参数的定义,例如,如果你不清楚PoseStamp这是个什么东西,你直接点击这个名字,网站会自动跳转到它的定义文件下。

http://wiki.ros.org/base_local_planner?distro=lunar

(8)msgs文件大全,要是哪个msgs不记得了,直接在这里找就行了

http://wiki.ros.org/common_msgs?distro=melodic

2、除了navigation以外的包

(1)键盘控制包:简单,很早就看完了,实现最基本的ROS通信功能

(2)电机底层包:以差动机器人为基础,建立数学模型,我看那个建模过程好复杂,把各种机械结构都考虑到,最后的功能就是给一个线速度和角速度,这个包能给机器人cmd_vel这个节点,下达对应的速度指令。简单来说就是,程序让机器人前进速度是2m/s,那么实际的机器人就得是2m/s。因为键盘给机器人指令的效果是正常的,所以这个包没什么问题,很好用。

(3)Slam_gmapping包:实现建图的功能,这部分的代码我没看,因为那个项目的建图效果很好,所以这个暂时不作为研究重点。

这个包的使用方法

http://wiki.ros.org/slam_gmapping/Tutorials/MappingFromLoggedData

这个包的参数

http://wiki.ros.org/gmapping

3、学习经历

Navigation的包大大小小10几个,我最开始学的时候从amcl这个包开始看,我把粒子滤波看懂了,还买了概率机器人这本书,过程很艰难啊,网上找视频,书上跟着看,最后也算是知道蒙特卡洛定位的原理了。为了让自己的成果保存下来,我把自己的笔记写在了csdn的博客上。

话说回来这个代码,开始一行一行的看amcl,虽然有一些C++的底子,但是很多概念都是我之前没有接触的,比如线程,锁,断言等等。我没有退缩,真的是一行一行的看,期间遇到没见过的类定义,我就在官网找,结果在costmap_2d,map_server还有其他几个包之间来回跳,导致我陷入深深的细节中,无法自拔,很混沌,即便如此,我还是每一行都弄明白了。我当时连续看了4天,然后准备休息几天再看,等我再回过头来看amcl,大脑一片空白。。。。。。。。都忘了,主要就是忘了这个类是干嘛的,那个类是干嘛的,整个navigation这个包给我的感受就是太复杂了,太大了。

怠惰了几天,觉得自己该修改一下作战规划,要不然暂时整明白了所有的文件,到头来还是忘。

下一步以了解框架为目的。我以官网和慕课上的教程为主,把每个包的参数过了一遍(虽然现在都忘了),把每个包的学习记录整理在每个包文件下的Readme.txt文件下(这个文件我写的不规范,恐怕只有我自己能看懂),同时我也把一些好的博主的文章的链接放在了Readme下。在这里我还是推荐看官网的包介绍,参数讲的很详细,个别参数看不懂可以看网上博主的文章。

现在这阶段我已经完成了,每个包都是干什么的我已经弄明白了,整体的一个导航框架我也看懂了,怎么调试参数我也看了,下一阶段就是接着看代码吧,力求细致,跟我当初看amcl一样,终极目标就是把这个包每个地方都看懂,感觉巨难无比,但是至少心中有个框架了。寒假的时间是不够的,在开学的时候(大四下)打算一边做实物,一边看代码。

下学期我干的事情大概可以想象出来了:调试导航包的参数,比如全局规划,局部规划等等,然后看调试现象,直到把导航的功能弄好为止。

具体的思路:我看了那个项目的实际效果,建图没毛病,我会从定位(amcl)的相关参数入手,然后再调试路径规划。

 

 

 

 

 

 

2019年1月

 

猜你喜欢

转载自blog.csdn.net/qq_34754836/article/details/86359375