《动手学ROS2》10.4 Cartographer介绍与安装
《动手学ROS2》10.4 Cartographer介绍与安装
本系列教程作者:小鱼
公众号:鱼香ROS
QQ交流群:139707339
教学视频地址:小鱼的B站
完整文档地址:鱼香ROS官网
版权声明:如非允许禁止转载与商业用途。
10.4 Cartographer介绍与安装
1.Cartographer介绍
Cartographer是Google开源的一个可跨多个平台和传感器配置以2D和3D形式提供实时同时定位和建图(SLAM)的系统。
github地址:https://github.com/cartographer-project/cartographer 文档地址:https://google-cartographer.readthedocs.io/en/latest
在小鱼呆过的机器人公司里,建图最终方案都是采用了Cartographer,甚至花费大量人力物力对Cartographer算法进行裁剪,这足以表明Cartographer算法的优越性。
Cartographer系统架构概述(简单看看即可,如果大家后面确定研究方向是SLAM可以深入学习):
简单的可以看到左边的可选的输入有深度信息、里程计信息、IMU数据、固定Frame姿态。
2.Carttographer安装
2.1 apt安装
sudo apt install ros-foxy-cartographerCopy to clipboardErrorCopied
需要注意我们不是直接使用cartographer
,而是通过cartographer-ros
功能包进行相关操作,所以我们还需要安装下cartographer-ros
sudo apt install ros-foxy-cartographer-rosCopy to clipboardErrorCopied
2.2 源码安装
小鱼比较推荐源码安装的方式,毕竟是以学习为目的,我们后面要稍微看一下源码。
git clone https://ghproxy.com/https://github.com/ros2/cartographer.git -b foxy
git clone https://ghproxy.com/https://github.com/ros2/cartographer_ros.git -b dashingCopy to clipboardErrorCopied
安装依赖
这里我们使用rosdepc进行依赖的安装,rosdepc指令找不到可以先运行下面的一键安装命令,选择一键配置rosdep即可。
wget http://fishros.com/install -O fishros && . fishrosCopy to clipboardErrorCopied
接着在fishbot_ws下运行下面这个命令进行依赖的安装。
rosdepc 是小鱼制作的国内版rosdep,是一个用于安装依赖的工具。该工具的安装可以采用一键安装进行,选项编号为3。安装完成后运行一次rodepc update即可使用。
rosdepc install -r --from-paths src --ignore-src --rosdistro $ROS_DISTRO -yCopy to clipboardErrorCopied
编译
这里有一个新的命令–packages-up-to,意思是其所有依赖后再编译该包
colcon build --packages-up-to cartographer_rosCopy to clipboardErrorCopied
2.3 测试是否安装成功
如果是源码编译请先source下工作空间后再使用下面指令查看是否安装成功;
ros2 pkg list | grep cartographerCopy to clipboardErrorCopied
cartographer_ros
cartographer_ros_msgsCopy to clipboardErrorCopied
可能你会好奇为什么没有cartographer,因为cartographer包的编译类型原因造成的,不过没关系,cartographer_ros依赖于cartographer,所以有cartographer_ros一定有cartographer。
3.Cartographer参数配置
作为一个优秀的开源库,Cartographer提供了很多可以配置的参数,虽然灵活性提高了,但同时也提高了使用难度(需要对参数进行调节配置),所以有必要在正式使用前对参数进行基本的介绍。
因为我们主要使用其进行2D的建图定位,所以我们只需要关注2D相关的参数。
Cartographer参数是使用lua文件来描述的,不会lua也没关系,我们只是改改参数而已。
小鱼提示:lua中的注释采用 – 开头
3.1 前端参数
src/cartographer_core/cartographer/configuration_files/trajectory_builder_2d.lua
请你打开这个文件自行浏览,小鱼对其中我们可能会在初次建图配置的参数进行介绍。
-- 是否使用IMU数据use_imu_data = true, -- 深度数据最小范围min_range = 0.,-- 深度数据最大范围max_range = 30.,-- 传感器数据超出有效范围最大值时,按此值来处理missing_data_ray_length = 5.,-- 是否使用实时回环检测来进行前端的扫描匹配use_online_correlative_scan_matching = true-- 运动过滤,检测运动变化,避免机器人静止时插入数据motion_filter.max_angle_radiansCopy to clipboardErrorCopied
3.2 后端参数
路径src/cartographer_core/cartographer/configuration_files/pose_graph.lua
--Fast csm的最低分数,高于此分数才进行优化。
constraint_builder.min_score = 0.65
--全局定位最小分数,低于此分数则认为目前全局定位不准确
constraint_builder.global_localization_min_score = 0.7Copy to clipboardErrorCopied
3.3 Carotgrapher_ROS参数配置
该部分参数主要是用于和ROS2进行通信和数据收发的配置,比如配置从哪个话题读取里程记数据,从哪个话题来获取深度信息(雷达)。
路径:src/cartographer_core/cartographer_ros/cartographer_ros/configuration_files/backpack_2d.lua
include "map_builder.lua"
include "trajectory_builder.lua"options = {map_builder = MAP_BUILDER,trajectory_builder = TRAJECTORY_BUILDER,-- 用来发布子地图的ROS坐标系ID,位姿的父坐标系,通常是map。map_frame = "map",-- SLAM算法跟随的坐标系IDtracking_frame = "base_link",-- 将发布map到published_frame之间的tfpublished_frame = "base_link",-- 位于“published_frame ”和“map_frame”之间,用来发布本地SLAM结果(非闭环),通常是“odom”odom_frame = "odom",-- 是否提供里程计provide_odom_frame = true,-- 只发布二维位姿态(不包含俯仰角)publish_frame_projected_to_2d = false,-- 是否使用里程计数据use_odometry = false,-- 是否使用GPS定位use_nav_sat = false,-- 是否使用路标use_landmarks = false,-- 订阅的laser scan topics的个数num_laser_scans = 0,-- 订阅多回波技术laser scan topics的个数num_multi_echo_laser_scans = 1,-- 分割雷达数据的个数num_subdivisions_per_laser_scan = 10,-- 订阅的点云topics的个数num_point_clouds = 0,-- 使用tf2查找变换的超时秒数lookup_transform_timeout_sec = 0.2,-- 发布submap的周期间隔submap_publish_period_sec = 0.3,-- 发布姿态的周期间隔pose_publish_period_sec = 5e-3,-- 轨迹发布周期间隔trajectory_publish_period_sec = 30e-3,-- 测距仪的采样率rangefinder_sampling_ratio = 1.,--里程记数据采样率odometry_sampling_ratio = 1.,-- 固定的frame位姿采样率fixed_frame_pose_sampling_ratio = 1.,-- IMU数据采样率imu_sampling_ratio = 1.,-- 路标采样率landmarks_sampling_ratio = 1.,
}Copy to clipboardErrorCopied
4.总结
本节我们简单的介绍了Cartographer以及二进制和源码安装的方法,并对参数进行介绍。
下一节我们就开始为fishbot配置cartographer,接着就可以使用fishbot进行建图了。
《动手学ROS2》10.4 Cartographer介绍与安装相关推荐
- 《动手学ROS2》10.7 Nav2导航框架介绍与安装
<动手学ROS2>10.7 Nav2导航框架介绍与安装 本系列教程作者:小鱼 公众号:鱼香ROS QQ交流群:139707339 教学视频地址:小鱼的B站 完整文档地址:鱼香ROS官网 版 ...
- 《动手学ROS2》第十章章节介绍 机器人导航NAV2
本系列教程作者:小鱼 公众号:鱼香ROS QQ交流群:139707339 教学视频地址:小鱼的B站 完整文档地址:鱼香ROS官网 版权声明:如非允许禁止转载与商业用途. 第十章 机器人导航NAV2 千 ...
- 《动手学ROS2》10.6导航地图概述
<动手学ROS2>10.6导航地图概述 本系列教程作者:小鱼 公众号:鱼香ROS QQ交流群:139707339 教学视频地址:小鱼的B站 完整文档地址:鱼香ROS官网 版权声明:如非允许 ...
- 《动手学ROS2》9.5为FishBot添加添加激光雷达传感器
<动手学ROS2>9.5为FishBot添加添加激光雷达传感器 本系列教程作者:小鱼 公众号:鱼香ROS QQ交流群:139707339 教学视频地址:小鱼的B站 完整文档地址:鱼香ROS ...
- 关于动手学深度学习扩展包d2l的安装
关于动手学深度学习扩展包d2l的安装 方式一 方式二 方式一 下载离线安装包直接放置 d2l_python是动手学深度学习PyTorch中的包,所以他的安装使用离线安装. 链接: [https://g ...
- 动手学深度学习——深度学习介绍及软件安装
动手学深度学习是李沐教授在哔哩哔哩上发布的专栏视频,专栏链接如下: https://space.bilibili.com/1567748478/channel/seriesdetail?sid=358 ...
- 《动手学ROS2》4.7ROS2服务介绍
本系列教程作者:小鱼 公众号:鱼香ROS QQ交流群:139707339 教学视频地址:小鱼的B站 完整文档地址:鱼香ROS官网 版权声明:如非允许禁止转载与商业用途. 4.4 ROS2服务介绍 大家 ...
- 《动手学ROS2》4.6ROS2自定义话题接口
本系列教程作者:小鱼 公众号:鱼香ROS QQ交流群:139707339 教学视频地址:小鱼的B站 完整文档地址:鱼香ROS官网 版权声明:如非允许禁止转载与商业用途. 4.3.2 自定义话题接口 本 ...
- 《动手学ROS2》4.3ROS2话题通信(C++)
本系列教程作者:小鱼 公众号:鱼香ROS QQ交流群:139707339 教学视频地址:小鱼的B站 完整文档地址:鱼香ROS官网 版权声明:如非允许禁止转载与商业用途. 4.2.2 ROS2话题通信( ...
最新文章
- 比特币现金足球:BCH驱动的多人世界杯应用
- 编写OD插件将IDA中分析出来的函数名导入到OD中
- Maven问题总结 - 2
- win7+ubuntu20.04双系统+easybcd安装以及Reached target Reboot卡住问题
- htmlcss实例小项目_小程序websocket心跳库——websocket-heartbeat-miniprogram
- zabbix java api
- java在捕获异常并弹窗_Java捕获异常的问题
- 最简单的三层实例【插入据
- 让Myeclipse10支持Mac OSX – Retina显示屏
- SnowNLP包情感分析
- (翻译)简化模式(Reduce)
- 【跟我学Puppet】1.5 Puppet 3.7 使用Hiera定义配置
- layui.css如何使用,Layui新手教程
- tp link拨号失败 服务器无响应,【求救】K2提示“等待PPP客户端连接”拨号失败...
- 在线客服api是什么?
- 你懂SOLID原则吗?
- Js实现购物车加减,价格计算等功能
- 视频格式转换器哪个好?怎样使用?
- xposed的总开关
- 我们是ikun,为坤坤加油(简单的python反序列化、爬虫、越权、支付漏洞)