算法
文章平均质量分 90
火种源码
这个作者很懒,什么都没留下…
展开
-
Cartographer行人点云过滤建图
任务动机:使用cartographer在人群密集的环境中建立相对干净的地图。任务描述:在使用cartographer建图时,存在环境中行人较多,或者建图时机器人周围人员一直跟随,导致最终建图后地图上存在许多行人噪点,本文主要从点云原始数据过滤解决这一问题。1. Cartographer原有的功能过滤行人Cartographer在构建submap以及整体map时,实质是对栅格地图概率的更新,每一个node在栅格概率上的累加,可以去除建图时一般移动物体所产生的噪点。例如建图时,前面走过几个行人,甚至原创 2021-03-11 10:13:58 · 2842 阅读 · 9 评论 -
Cartographer之基于运动阈值筛选约束的方法
任务动机:合理地筛选运动约束,提高cartographer后端优化的实时性。任务描述:针对传统cartographer后端对nodes和submaps之间的约束关系筛选不均衡的情况,提出一种基于运动阈值筛选约束的方法。该方法可以筛除重复和无效的约束,使得有效的约束插入到优化队列进行位姿优化,进而提高Cartographer建图的实时性。1. Cartographer回环检测和后端优化在前端匹配完成后,调用InsertToSubmap()函数,将scan插入匹配完成的submap。然后调用pose原创 2021-02-02 11:38:53 · 1465 阅读 · 5 评论 -
ORB-SLAM辅助Cartographer重定位建图效果改进系列—第二篇
任务动机:根和据暴露的问题,视觉重定位模块更新了第二个版本。与之前相比主要有如下改进:1. 使用两种定位模式(基于地图和基于BOW)实现稳定定位; 2. 定位频率保持5Hz左右; 3. 只需要激光板回传优化后的低频轨迹即可。任务描述:整理开发产出包括功能描述、接口描述、配置文档、重要参数描述到文档。描述:基于雷达SLAM输出轨迹真值的视觉全局定位。定位有两种模式:基于特征地图定位和基于关键帧定位。优先基于特征地图定位,在特征地图稀疏或没有成功建立特征地图的区域使用基于关键帧定位。..原创 2021-01-17 11:20:49 · 4142 阅读 · 5 评论 -
odom&imu融合用于Cartographer建图
任务动机:使用odom&imu融合用于Cartographer建图,提高Cartographer建图时的匹配精度,同时降低运算消耗。任务描述:使用odom&imu融合用于Cartographer建图,实验对比验证融合对建图匹配精度的影响。1. odom的作用里程计是记录机器人与起始位置相对pose的模块,同时它还提供了机器人实时的线速度、角速度以及这些状态量的不确定性。一个精准的里程计对于建图和定位性能的提高有着重要作用。它不仅可以提供先验位姿,提高建图时的匹配精度,还可以降低运原创 2021-01-04 10:06:51 · 9012 阅读 · 11 评论 -
ORB-SLAM辅助Cartographer重定位建图效果改进
任务动机:开发程序实现ORB-SLAM辅助Cartographer在无结构环境下进行全局重定位,Cartographer通过调参删除相似地图帧后,一方面降低了建图的数据量,但另一方面造成了ORB-SLAM匹配特征点的不足,本文项目用于解决这个问题。任务描述:相关开发步骤和效果整理到文档。室外轨迹建图与重定位视频链接链接:https://pan.baidu.com/s/1TaJZWyNK4RwcRW6cbYthkg 提取码:rbo7 建图:绿线部...原创 2021-01-03 08:47:28 · 2812 阅读 · 2 评论 -
双联杆型画图XY机械臂
任务动机:自研开发双联杆型画图XY机械臂,后续准备在openEuler 20.03 LTS上进行部署和使用。任务描述:自研开发双联杆型画图XY机械臂,总结步骤,将用于下一步的移植完善。1. 硬件实现代码传送链接2.项目简介 突然有了一个想法,如果不用第三个电机,只用两个电机、两根硬联杆实现画正弦波、三角波和任意图形?(不用第三个电机也能做出来)。于是,有了以下思路:在两个电机上安装两个活动联杆,然后联杆之间插入一支笔,如图所示: A点:放笔的地方 L1、...原创 2020-12-26 13:40:44 · 479 阅读 · 0 评论 -
已有地图的直线特征检测
任务动机:检测已有地图中的直线特征,以此为参照,旋转地图至“合理”的方向。任务描述:栅格地图开始建立的时候,地图方向由机器人的位置决定,为了能在任意位置启动,得到一个人类看图习惯的地图,需要将地图进行一个旋转。1. 前言 在使用激光构建地图时,形成的地图在rviz中一般如下图...原创 2020-12-04 18:10:08 · 1148 阅读 · 1 评论 -
ROS多网络设备通信部署
任务动机:实现ROS基于多网络设备通信部署,完成多块边缘计算ROS开发板使用WIFI和以太网的方式与导航板的ROS通信。任务描述:根据原英文文档,部署ROS基于多网络设备通信,测试验证后形成文档。原英文文档:https://risc.readthedocs.io/2-ros-network-wifi-ethernet.html1.前言 在某些应用程序中,可能需要使用(不只一台计算机)而是通过以太网电缆连接多台计算机,然后将它们连接到远程 WiFi 路由器。这种情况出现在 ER...原创 2020-11-30 12:31:13 · 629 阅读 · 0 评论 -
Cartographer的纯定位模式在低性能处理器上的应用适配
任务动机:使用Cartographer在已有地图准确定位。任务描述:使用Cartographer建立地图,在已有地图上开启纯定位模式,使其在性能较低的处理器上依然可以实时定位。1. 前言 Cartographer纯定位模式在lua中配置,官方配置在back_pack_2d_localization.lua中设置include "backpack_2d.lua"TRAJECTORY_BUILDER.pure_localization = truePOSE_GRAP...原创 2020-11-26 17:34:59 · 4319 阅读 · 10 评论 -
Cartographer前端之多分辨率map匹配
任务动机:提高Cartographer前端匹配建图方法的鲁棒性。任务描述:针对Cartographer前端匹配中Ceres优化时初始值不准确的情形,构造多分辨率map,使当前帧点云分别和多分辨率map匹配,计算得到准确的位姿变换矩阵,进而提升建图的鲁棒性。1. Cartographer前端 Cartographer前端:当前帧点云和栅格地图通过使用扫描匹配(scan_match)方法进行位姿估计。扫描匹配就是想办法把当前帧点云和栅格地图对齐,对齐过程中的旋转和平移就是它们的相对位姿...原创 2020-11-02 17:12:14 · 2585 阅读 · 3 评论 -
Cartographer Standalone移植(2)—第一个版本
任务动机:实现Cartographer与Cartographer_ros剥离,剥离后的Cartographer可以在不启动roscore的情况下正常建图,同时可与ROS进行通讯。任务描述:分步安装验证后,将步骤合并成安装脚本。 在经历过无数踩坑以后,发现直接移植cartographer_ros不是一个快速、可靠的办法。虽然官网提示cartogrpher_ros是开发cartographer一个不错的示例。但是在后来的研究中,发现自己写的程序无法完全实现cartographer_ros的...原创 2020-10-27 15:08:00 · 845 阅读 · 9 评论 -
用USB代替网络通讯,实现Cartographer上位机与下位机之间的消息传递
任务动机:用USB代替网络通讯,实现Cartographer上位机与下位机之间的消息传递。任务描述:根据任务动机,研究移植研发思路,形成文档。1. 在Toybrick-rk3399prod上编译linux-kernel 这是个漫长且无聊的过程,因为有关这方面的教程少之又少,在本人无数次踩坑下终于搞定。感兴趣的小伙伴可以打开官方教程链接体验下想找教程却没有教程然后砸电脑未遂的心情。1.1 编译原理 在RK3399prod里面,Linux的kernel和rootf...原创 2020-10-27 09:59:47 · 996 阅读 · 0 评论 -
单目摄像头外参标定
任务动机:标定单目摄像头外参,为导航使用ORB-SLAM视觉全局定位二次开发做准备。任务描述:1. 简介 在之前的内参标定中,我们已经得到了相机内参的参数,于是便可以进行外参标定。本文所讲的外参标定就是摄像机与机器人坐标系间的位姿标定,因此我们需要用到激光雷达和相机来确定其位姿关系。标定的大致流程是在一个场景内容丰富的环境中,启动激光雷达SLAM,启动摄像机图像采集并控制机器人走几圈,形成一个闭环并对比单目摄像机的ORB-SLAM保存ORB-SLAM的位姿输出结果和激光雷达SLAM...原创 2020-09-30 14:58:12 · 2272 阅读 · 2 评论 -
Cartographer Standalone移植(1)—移植思路
任务动机:任务描述:1.输入/输出要求输入:激光雷达/drv/laser 输出:地图 .pgm/.pbstream 撸码工具:Visual Studio Code2. 移植思路 只安装cartographer和ceres-solver,以cartographer_ros为示例,编写一个自己的程序。3. 移植过程3.1 开始建图 在分析源码的过程中,我把所有的与ROS有关的类和相关库全部过滤。这个代码写的就像拔萝卜,开始拔以后发现...原创 2020-09-30 14:20:08 · 1253 阅读 · 2 评论 -
Ubuntu18.04快速安装Cartographer以及Cartographer_ros
任务动机:快速完成基于Ubuntu18.04的Cartographer以及Cartographer_ros安装。任务描述:分步安装验证后,将步骤合并成安装脚本。Cartographer由谷歌一直在维护,从之前的tf1到现在melodic版本上的tf2_ros都有更新支持。而且cartographer所依赖的库也在一直更新,包括abseil-cpp,ceres-solver,protobuf等,其依赖的版本混乱,并不能相互兼容。经过测试,在2019年的某个版本解决好依赖问题之后,同样的方法在2020年原创 2020-09-03 18:50:06 · 3963 阅读 · 5 评论 -
Cartographer中对激光雷达运动畸变的处理方法分析
任务动机:梳理cartographer处理激光雷达运动畸变的原理,并针对特殊数据特性的雷达数据做相应适配,进而提升建图效果。任务描述:查阅cartographer源码中激光雷达运动畸变的处理流程,对比分析实际使用中特定激光雷达数据处理时可能产生的问题。针对于不同的实际问题作相应修改后,进行对比建图实验验证。1. 激光雷达运动畸变的原因 一帧激光点云由多个激光点组成,而这些激光点不是同一时刻产生的,所以在雷达运动过程中,一帧内的各个激光点基准不同,就会产生运动畸变。例如:当机器人旋转...原创 2020-08-27 12:38:02 · 6364 阅读 · 12 评论 -
单目摄像头的内外参标定
任务动机:基于ORB-SLAM3+单目广角摄像头进行二次开发,辅助激光导航实现机器人全局重定位。需要对单目摄像头进行内参和外参标定。任务描述:1)镜头畸变和内参标定用棋盘格标定2)摄像机与机器人坐标系间的位姿标定在线数据采集:找一个场景内容丰富的环境 启动激光雷达SLAM,启动摄像机图像采集 录制ros bag(最好录制全部,如果空间不够,可以只选激光雷达,摄像机图像,tf) 控制机器人走几圈+走走八字离线处理:播放bag,启动单目摄像机的ORB-SLAM 保存ORB-SLAM的位姿输出原创 2020-08-25 18:59:55 · 2772 阅读 · 1 评论 -
Cartographer调参与系统资源使用情况分析
动机:通过Cartographer调参,达到在Rockchip rk3399开发板上实时和精度兼顾的效果。描述:Cartographer的参数众多,真实环境下需要进行大量的调整。仅通过官方文档调整仍比较繁琐。本文通过逐个调参,直观调整参数效果。1. 硬件及OS信息name type CPU RK3399 双核Cortex-A72(大核)+四核Cortex-A53(小核) Kernel 4.4.179 ROS Meloc lidar ToF bag原创 2020-07-30 18:06:21 · 3200 阅读 · 8 评论 -
Turtlebot2上的Cartographer部署与测试
任务动机:在openEuler下部署和测试cartographer,为cartographer优化创建环境。任务描述:1. 安装1.1cartographer安装我这边直接安装的是turtlebot版本,本质上与单纯的cartographer版本的区别就是多了一个turtlebot的依赖包。前面编译步骤没有区别。第一步:安装相关依赖包sudo apt-get updatesudo apt-get install -y python-wstool python-rosde..原创 2020-07-23 16:16:10 · 1436 阅读 · 3 评论 -
Cartographer的后端参数设置和效果分析
作者:张展华、林嘉琪、邸慧军、罗云翔任务动机:分析cartographer的后端相关的参数的效果和对性能的影响程度。任务描述:按照官方文档google-cartographer-ros-readthedocs-io-en-latest.pdf第23页的说明(To reduce global SLAM latency部分),在cartographer默认参数的基础上,分别调整每个参数,保存地图和任务2.1要求的位姿序列,分析参数影响。...原创 2020-07-23 10:08:39 · 3248 阅读 · 4 评论 -
Cartographer的前端参数设置和效果分析
任务动机:分别对cartographer的前端和后端进行运行时间分析,以确定cartographer的性能瓶颈和指导需要调整的参数。任务描述:关掉后端,测试前端的运行时间。 然后再打开后端,测试整体运行时间,分析瓶颈是在前端还是在后端,以及每个阶段里面的耗时地方。1. cartographer算法流程介绍1.1 数据预处理LaserScan数据的运动补偿options.num_subdivisions_per_laser_scan = 10 // 一帧scan数据被拆原创 2020-07-17 10:02:38 · 4746 阅读 · 6 评论