gmapping功能包源码修改(gmapping安装)
本文目录一览:
- 1、ros中为啥gmapping建图的时候模型反向运动
- 2、学习SLAM需要哪些预备知识
- 3、rgbd传感器是什么
- 4、ros是怎么利用gmapping建立地图的
- 5、gmapping用了odometry的信息吗
ros中为啥gmapping建图的时候模型反向运动
应该是定位问题,RBpf是一种有效解决同时定位和建图的算法,它将定位和建图分离,每一个粒子都携带一幅地图。
ros中gmapping建图:
准备。
1、之前在github上下载的双轮差速小车中有该小车的gmapping和键盘控制的文件可以直接用。
2、如果之前安装的不是ros的full版本还需要下载gmapping功能包。
sudo apt-get install ros-indigo-slam-gmapping。
注:官方自带的gmapping属于功能包/软件包/二进制包——ros中下载的代码分为两类:二进制和源代码,二进制不需要编译,例如apt-get;源代码需要编译才可运行。
开始。
1、启动小车。
roslaunch diff_wheeled_robot_gazebo diff_wheeled_gazebo_maze.launch。
注:这个launch文件相比一般启动小车模型多了以两句。
2、启动gmapping节点。
roslaunch diff_wheeled_robot_gazebo gmapping.launch。
3、启动rviz。
rosrun rviz rviz。
点击左侧控制板中add——by topic——map。
4、键盘控制。
roslaunch diff_wheeled_robot_control keyboard_teleop.launch。
注:以上四步需要开启4个终端。其中当键盘控制小车移动时,需要让鼠标停在键盘控制所在的终端。
5、保存地图。
建完地图后需要保存,先安装map-server。
然后保存地图。
rosrun map_server map_saver -f ~/mymap。
此时home文件下有mymap.pgm和mymap.yaml。
参考:
。
。
学习SLAM需要哪些预备知识
SLAM涵盖的东西比较多gmapping功能包源码修改,分为前端和后端两大块。前端主要是研究相邻帧的拼接,又叫配准。根据传感器不一样,有激光点云、图像、RGB-D拼接几种,其中图像配准中又分基于稀疏特征(Sparse)的和稠密(Dense)的两种。后端主要是研究地图拼接(前端)中累积误差的校正,主流就两种,基于概率学理论的贝叶斯滤波器(EKF,PF)以及基于优化的方法。EKF已经用得很少了,PF也就在2D地图SLAM(Gmapping)中用得多,大多还是用优化的方法在做。
你自己已经说了这块需要的知识,一个是数学,一个是编程。所以入门的话,也从这两块开始弄。
一、数学方面
数学的话,建议楼上说过的Thrun的《probabilistic robotics》,其实不需要全部看完,了解下概率学是如何解决机器人中的问题的,关键学习贝叶斯滤波,也是就是贝叶斯公式在各个问题(定位,SLAM)中的应用。另外,优化的话,建议先把最小二乘优化中给弄透彻,数学推导要会,因为很多问题,最后都是归结到最小二乘优化,然后就是梯度下降、求Jacobian之类的。
二、编程方面
理论的东西是比较无聊的,必须得实战。建议入门先写一发最小二乘优化,可以就做一个简单的直线拟合,不要用Matlab中的优化工具,了解数学推导最后是怎么写到代码里面的。然后,一定要玩好Matlab优化工具包,做实验最方便了。
有了一些基础之后,可以尝试玩一些现有的SLAM包,推荐两个地方,一个是,里面有各种SLAM包,主流的SLAM算法,在这一般都有源码。另外一个就是ROS了,里面有很多现成的SLAM包,像Gmapping,RGB-D SLAM,上手非常快,甚至你没有任何设备,你也可以利用ROS中的仿真环境(如Gazebo)跑。建议先试试Gmapping,百度上有很多中文教程,一开始跑这些package还是很涨成就感的,可以提高你的兴趣。
如果你是做视觉或者RGB-D,那么OpenCV和PCL是必不可少的工具。早点上手肯定没得错。
三、进阶
大体入门之后,你就需要根据你实验室研究的项目来学习了,看是用激光、相机、还是Kinect来做了,不同传感器的前端算法还是有些差距的。激光的话一般是ICP,相对简单。视觉的东西还是比较多的,楼上推荐《Multiview Geometry in Computer Vision》确实很重要,不过,gmapping功能包源码修改我觉得这同时你还应该了解特征提取、特征描述子、特征匹配这些东西。如果你们实验室做的Dense registration,那你还得学李代数那些东西(高大上啊,神马李群看好多天都看不懂啊!!!)。其实,很多算法都有开源包,你可以去ROS、一些大神博客、牛逼实验室主页中多逛逛。
rgbd传感器是什么
RGBD SLAM属于视觉SLAM中gmapping功能包源码修改的一种gmapping功能包源码修改,使用的RGBD传感器包括zed(双目立体gmapping功能包源码修改,适用于室外)、Kinect(结构光,仅限室内)、Kinect v2(TOF,主要用于室内)等。
功能包
现在有比较多的现成的功能包可以进行学习和二次开发gmapping功能包源码修改:
gmapping:
实时构建室内地图,在构建小场景地图所需的计算量较小且精度较高。相比Hector SLAM对激光雷达频率要求低、鲁棒性高(Hector 在机器人快速转向时很容易发生错误匹配,建出的地图发生错位,原因主要是优化算法容易陷入局部最小值)。
而相比Cartographer在构建小场景地图时,Gmapping不需要太多的粒子并且没有回环检测因此计算量小于Cartographer而精度并没有差太多。但是,不适合构建大场景地图,并且没有回环检测,因此在回环闭合时可能会造成地图错位,虽然增加粒子数目可以使地图闭合但是以增加计算量和内存为代价,不能像Cartographer那样构建大的地图。
hector_slam:
设计初衷Hector主要用于救灾等地面不平坦的情况,因此无法使用里程计,特点是用IMU解决gmapping功能包源码修改了激光的运动畸变问题。虽然系统不提供明确的循环关闭能力,但对于许多真实世界场景来说它足够准确。
cartographer:
累计误差较前两种算法低,能天然的输出协方差矩阵,后端优化的输入项。成本较低的雷达也能跑出不错的效果。是Google开源的一个ROS系统支持的2D和3D SLAM(simultaneous localization and mapping)库。
ros是怎么利用gmapping建立地图的
ROS的stack库分作两部分,一部分为核心部分,即main部分,简而言之就是使用下面命令,安装ROS系统时就已经安装到我们用户电脑上的那部分。$sudoapt-getinstallros-diamondback-desktop-full另一部分为选用部分,即universe部分,它不仅包括一些开源库的支持,如opencv,pcl,openni_kinect等,还有更上面以机器人功能模块命令的一些stack,例如pr2_doors,find_object,facerecognition,grasp等等,真是一个丰富的宝藏,更详细的stack包可以在官网的StackList页面查询。(.bashrc中$rosmake.(pr2_doors里面所需的package文件)
gmapping用了odometry的信息吗
你可以看看ROS官方文档,gmapping订阅的消息一个是tf一个是激光数据,而tf就是坐标转换值包含有odometry的信息,因此gmapping是用到了odometry的数据的