在demo数据包上运行cartographer
现在Cartographer和Cartographer的Ros包已经都安装好了,你可以下载官方的数据集到指定的目录(比如在Deutsches Museum用背包采集的2D和3D
数据),然后使用roslauch来启动demo。
注:launch文件会自动同时启动roscore和rviz。
当你想运行cartographer_ros,你可能先要使用source install_isolated/setup.bash来加载你的ros运行环境。install_isolated换成你自己的安装路径即可。一般ubuntu系统只要source setup.bash就可以,其他版本可能source setup.zsh。
Deutsches Museum数据集(著名的德意志国家图书馆)
下载2D激光数据包,也可以从这里获取 百度云盘 提取码: ng5b
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag
然后运行2d激光的demo
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag
下载3D激光数据包,
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_3d/with_intensities/b3-2016-04-05-14-14-00.bag
然后运行3D激光的demo
roslaunch cartographer_ros demo_backpack_3d.launch bag_filename:=${HOME}/Downloads/b3-2016-04-05-14-14-00.bag
Pure localization(纯定位)
这里纯定位demo使用2个数据包,一个数据包用于建图,第2个数据包用来运行纯定位。这里解释一下,一般我们机器人来到一个未知环境,首先需要探索并先建立地图,然后我们才能使用建立好地图用来定位自己的信息。这里纯定位的“纯”是相对于建图来说,纯定位的时候地图是已知的,使用之前建立好的地图进行纯粹的定位功能,所以这个demo并不像建图一样占用大量的cpu。
下载2d数据包,下面是2条指令,下载2个数据包
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/b2-2016-04-05-14-44-52.bag
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/b2-2016-04-27-12-31-41.bag
生成地图(等待cartographer_offline_node完成建图后,会生成pbstream地图文件),然后再运行纯定位demo
使用离线数据包建图
roslaunch cartographer_ros offline_backpack_3d.launch bag_filenames:=${HOME}/Downloads/b3-2016-04-05-13-54-42.bag
使用生成的地图进行定位
roslaunch cartographer_ros demo_backpack_3d_localization.launch \load_state_filename:=${HOME}/Downloads/b3-2016-04-05-13-54-42.bag.pbstream \bag_filename:=${HOME}/Downloads/b3-2016-04-05-15-52-20.bag
Static landmarks(静态路标)
这个demo是个大杀器,我们知道很多场景是不断变化的,那么我们之前建立的激光地图可能就会失效,那我们频繁的更新激光地图是不是太麻烦,所以我们人为的设置一些路标,就可以大大提高我们定位时的稳定性,实际测试效果也很好。
静态路标可以使用二维码(可以贴在地上、也可以贴在墙上,根据自己的相机安装位置不同决定)、反光柱、反光贴纸、反光柱组合等,有些还会使用自定义的激光特征。
一种贴在地面的二维码,可以配套使用使用海康、大华agv读码器。
反光柱
下载数据包
# Download the landmarks example bag.
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/mir/landmarks_demo_uncalibrated.bag
运行landmark的demo
# Launch the landmarks demo.
roslaunch cartographer_mir offline_mir_100_rviz.launch bag_filename:=${HOME}/Downloads/landmarks_demo_uncalibrated.bag
Revo LDS
下载并运行一个低成本激光雷达的demo,这个数据来自一个叫做Neato Robotics的吸尘机器人的Revo的激光雷达。这也是carto的亮点,他可以在精度比较差的激光雷达上稳定运行,证明了carto算法的通用性和高效性,并不挑硬件和精度。
下载数据
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/revo_lds/cartographer_paper_revo_lds.bag
运行demo
roslaunch cartographer_ros demo_revo_lds.launch bag_filename:=${HOME}/Downloads/cartographer_paper_revo_lds.bag
还有一些数据集并没有突出亮点,我们就不一一举例了。然后我们下面采集自己的数据集合并测试运行cartograher。
测试自己的数据集
简单一下几个步骤
- 根据传感器的frame_id,创建自己机器人的模型文件,即urdf文件。
- 然后在对应的launch文件中修改使用自己的urdf文件。
- 运行demo就可以了。
这里分享我自己的一些数据包 网页地址
一般来说精度好一些的激光雷达(比如倍加福R2000、sick等)和陀螺仪(100以上都可以)运行时用默认的lua参数就可以。
效果如图