opt文件夹下没有ros_ubuntu16.04下ROS操作系统学习笔记(二)

做SLAM的硬件要求(不一定是必须的,看包和库的依赖):
(1):差分轮式机器人,可以使用Twist速度指令控制,需要线速度和角速度。
(2):需要激光雷达、深度摄像头等测距设备,可以获取环境深度信息。
(3):最好使用正方形和圆形的机器人,其他外形的机器人虽然可以正常使用,但是效果可能不佳。机器人的深度信息里面需要包含什么内容。可以通过以下命令来对其进行查看
rosmsg show sensor_msgs/LaserScan

7d803390b7985e05bfddfd8f9cecf9cc.png


最上面三行包括序列、时间戳、坐标系。下面的话就是一些关于激光雷达的数据:angle_min:可检测范围的起始角度。angle_max:可检测范围的终止角度,与angle_min组成激光雷达的可检测范围。像从-180度到+180度就是360度的范围。angle_increment:相邻数据帧之间的角度步长。time_increment:采集到相邻数据帧之间的时间步长,当传感器处于相对运动状态时进行补偿使用。scan_time:采集一帧数据所需的时间。range_min:最近可检测深度的阈值。range_max:最远可检测深度的阈值。ranges:一帧深度数据的存储数组(深度数据的具体内容)。
最后面的intensities代表的是激光的反光属性,等等的这样一些性质。一般的低成本雷达在强度这一块是用不到的。高端的雷达才会使用它做辅助判断。
除了激光雷达,深度摄像头也是可以采集深度信息的,像kinetic这样的摄像头就可以。在ros里面depthimage_to_laserscan功能包就能把三维点云数据转换成二维的激光雷达数据。但是深度摄像头的精度不高。机器人里面的里程计信息
你可以通过下面的命令查看一下里程计信息:
rosmsg show nav_msgs/Odometry

9eb5b018d62ff5053a4a3a7be46f340c.png


里面主要包含两个内容,一个是pose,一个是twist。
pose:机器人当前位置坐标,包括机器人的XYZ三轴位置与方向参数,以及用于校正误差的协防差矩阵。里面有位置信息position和姿态信息orientation。
twist:机器人当前的运动状态,包括XYZ三轴的线速度与角速度,以及用于校正误差的协防差矩阵。
在这里的话,我们主要以仿真环境来演示效果:
代码的包在教学视频的文件里面有,我们打开一个终端运行以下命令:
roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch
运行成功之后会打开下面这样的一个界面:

f2f339968689edc53eaed85b210a5f26.png


接下来我们看一下一些SLAM的功能包:Gmapping功能包:
基于激光雷达的功能包,采用Rao-Blackwellized粒子滤波算法创建二维栅格地图。调用gmapping功能包的时候需要给它三个信息的输入:(1):深度信息。(2):IMU信息。(3)里程计信息。gmapping的算法来自于OpenSlam的开源算法。输出是nav_msgs/OccupancyGrid这样的栅格地图。
我们可以通过以下方式对其进行安装:
sudo apt-get install ros-kinetic-gmapping

36047a4140285ff0aa93464c5d01bf60.png


gmapping里面有一个核心的节点,我们要使用gmapping建图的话我们就需要去启动这个核心的节点。启动的方式是使用.launch文件来启动的。因为这里面有很多参数需要去配置。改变这个参数能够改变我们建图的效果。但是如果我们只是为了能够使用建图功能的话,我们可以去参考turtlebot机器人的建图功能就可以了。我们可以去roswiki上面看一下功能包的使用方法。
输入以下命令:
roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch
roslaunch mbot_navigation gmapping_demo.launch
roslaunch mbot_teleop mbot_teleop.launch

5563477a0ccd27294d86f679d6ecbeff.png


建图完成之后效果如下:

281f28f0ede7b8a819fac1b8e0ad4fbe.png


我们可以通过下面这个命令来将地图保存:
rosrun map_server map_saver -f cloister_gmappingg

e6d608b9e6900b3a8dd7fb29204ae8af.png


可能会没有安装功能包,所以我们需要安装功能包:
git clone https://github.com/ros-planning/navigation.git
之后回到工作空间目录下面catkin_make。
可能会需要依赖:
sudo apt-get install ros-kinetic-tf2-sensor-msgs
这种安装方式不会使得你出现以下这种错误:
[rosrun] Couldn't find executable named map_save below /opt/ros/kinetic/share/map_server
保存之后会有两个文件:

0d2fcbb9f99f04a6ddc94b7fab1269c1.png


第一个是一张图片,第二个是一些说明文件:

9433c71aa97db002a025fa1cbf988dea.png


第一个是图片的名称,第二个是图片的分辨率,0.05米,origin代表的是机器人的位置,下一次导航的时候可以把机器人放到这个位置。Hector_slam功能包:
基于激光雷达建图,采用高斯牛顿方法,是二维栅格地图,不需要里程计数据,输出地图话题。可以通过以下命令对其进行安装:
sudo apt-get install ros-kinetic-hector-slam

7ebc968d533fd1f3702a4f546f14706a.png


接下来我们来启动演示一下:
roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch
roslaunch mbot_navigation hector_demo.launch
roslaunch mbot_teleop mbot_teleop.launch

473d2305f6c3c676c220b59a999fc372.png


效果如下:

7cd8ca3e070a2daf33359414fd17df9d.png


但是这种方法如果机器人运动的速度过大的话就会使得建图出现偏差。建图过程中特征点比较多的话,建图效果会比较好。Cartographer功能包:
这个功能包是2016年10月5日谷歌开源的基于图网络的优化方法,是一种二维或三维条件下的定位及建图功能,设计的目的是在计算资源有限的情况下,实时获取相对较高精度的2D地图,主要是基于激光雷达,后面会支持更多传感器和机器人平台,同时不断增加新的功能。安装
安装工具:
sudo apt-get update
sudo apt-get install -y python-wstool python-rosdep ninja-build
创建一个名字为google_ws的文件夹作为我们的工作空间:
wstool init src wstool merge -t src https://raw.githubusercontent.com/googlecartographer/cartographer_ros/master/cartographer_ros.rosinstall wstool update -t src
上面第二步可能会有网络问题,我们可以到src目录下面ctrl+h打开隐藏文件夹,修改里面第三个包的下载地址: https://github.com/ceres-solver/ceres-solver.git

de8f893b90aa33e04613246f8e955a4f.png

53e022345f754c39ca5d93f58b4bc982.png


下载功能包:
src/cartographer/scripts/install_proto3.sh

747c05bc3592f31039c45711514adc2d.png


lsb_release -a
查看自己的ubuntu版本号:
rosdep update rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y --os=ubuntu:xenial
这里我之前由于没有加后面这个os报错如下,加了之后就没有了:
ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
cartographer: No definition of [eigen] for OS version []
ceres-solver: No definition of [eigen] for OS version []
编译功能包:
catkin_make_isolated --install --use-ninja source install_isolated/setup.bash #当前终端有效

5c6407b1c591ade8c383c6831ad0e9bc.png


接下来我们可以演示一下效果:
下载 2D SLAM Demo:
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag
启动 2D SLAM Demo:
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag
下载 3D SLAM Demo:
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_3d/with_intensities/b3-2016-04-05-14-14-00.bag
启动 3D SLAM Demo:
roslaunch cartographer_ros demo_backpack_3d.launch bag_filename:=${HOME}/Downloads/b3-2016-04-05-14-14-00.bag
下载PR2 Demo:
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/pr2/2011-09-15-08-32-46.bag
启动PR2 :roslaunch cartographer_ros demo_pr2.launch bag_filename:=~/Downloads/2011-09-15-08-32-46.bagORB_SLAM功能包
基于特征点的实时单目SLAM系统,实时解算摄像机的移动轨迹,构建三维点云地图,不仅适用与手持设备获取的一组连续图像,也可以应用于汽车行驶过程中获取的连续图像。
安装:
安装工具&下载源码:
sudo apt-get install libboost-all-dev libblas-dev liblapack-dev
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
安装eigen3.2
去官网下载:http://eigen.tuxfamily.org/index.php?title=Main_Page
解压源码包,并进入目录:
mkdir build
cd build
cmake ..
make
sudo make install
编译安装Pangolin
sudo apt-get install libglew-dev
sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake ..
cmake --build .
编译g2o:
cd ~/ORB_SLAM2/Thirdparty/g2o/
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
编译DBoW2:
cd ~/ORB_SLAM2/Thirdparty/DBoW2/
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
编译ORM_SLAM:
cd ~/ORB_SLAM2
chmod +x build.sh
./build.sh
在make -j4这一步的时候,如果你遇到了error: ‘usleep’ was not declared in this scope,这种问题的话,你需要找到出错的文件,添加头文件:
#include <unistd.h>
Examples/Monocular/http://mono_euroc.cc Examples/Monocular/http://mono_kitti.cc Examples/Monocular/http://mono_tum.cc Examples/RGB-D/http://rgbd_tum.cc Examples/Stereo/http://stereo_euroc.cc Examples/Stereo/http://stereo_kitti.cc src/http://LocalMapping.cc src/http://LoopClosing.cc src/http://System.cc src/http://Tracking.cc src/http://Viewer.cc
爆炸,我之前装的是opencv3,装不上去,不想卸载,也不想装两个版本opencv,以后再说。https://github.com/raulmur/ORB_SLAM2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值