自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (4)
  • 收藏
  • 关注

原创 Cartographer行人点云过滤建图

任务动机:使用cartographer在人群密集的环境中建立相对干净的地图。任务描述:在使用cartographer建图时,存在环境中行人较多,或者建图时机器人周围人员一直跟随,导致最终建图后地图上存在许多行人噪点,本文主要从点云原始数据过滤解决这一问题。1. Cartographer原有的功能过滤行人Cartographer在构建submap以及整体map时,实质是对栅格地图概率的更新,每一个node在栅格概率上的累加,可以去除建图时一般移动物体所产生的噪点。例如建图时,前面走过几个行人,甚至

2021-03-11 10:13:58 2969 9

原创 Cartographer之基于运动阈值筛选约束的方法

任务动机:合理地筛选运动约束,提高cartographer后端优化的实时性。任务描述:针对传统cartographer后端对nodes和submaps之间的约束关系筛选不均衡的情况,提出一种基于运动阈值筛选约束的方法。该方法可以筛除重复和无效的约束,使得有效的约束插入到优化队列进行位姿优化,进而提高Cartographer建图的实时性。1. Cartographer回环检测和后端优化在前端匹配完成后,调用InsertToSubmap()函数,将scan插入匹配完成的submap。然后调用pose

2021-02-02 11:38:53 1527 5

原创 ORB-SLAM辅助Cartographer重定位建图效果改进系列—第二篇

任务动机:根和据暴露的问题,视觉重定位模块更新了第二个版本。与之前相比主要有如下改进:1. 使用两种定位模式(基于地图和基于BOW)实现稳定定位; 2. 定位频率保持5Hz左右; 3. 只需要激光板回传优化后的低频轨迹即可。任务描述:整理开发产出包括功能描述、接口描述、配置文档、重要参数描述到文档。描述:基于雷达SLAM输出轨迹真值的视觉全局定位。定位有两种模式:基于特征地图定位和基于关键帧定位。优先基于特征地图定位,在特征地图稀疏或没有成功建立特征地图的区域使用基于关键帧定位。..

2021-01-17 11:20:49 4269 5

原创 odom&imu融合用于Cartographer建图

任务动机:使用odom&imu融合用于Cartographer建图,提高Cartographer建图时的匹配精度,同时降低运算消耗。任务描述:使用odom&imu融合用于Cartographer建图,实验对比验证融合对建图匹配精度的影响。1. odom的作用里程计是记录机器人与起始位置相对pose的模块,同时它还提供了机器人实时的线速度、角速度以及这些状态量的不确定性。一个精准的里程计对于建图和定位性能的提高有着重要作用。它不仅可以提供先验位姿,提高建图时的匹配精度,还可以降低运

2021-01-04 10:06:51 9465 11

原创 ORB-SLAM辅助Cartographer重定位建图效果改进

任务动机:开发程序实现ORB-SLAM辅助Cartographer在无结构环境下进行全局重定位,Cartographer通过调参删除相似地图帧后,一方面降低了建图的数据量,但另一方面造成了ORB-SLAM匹配特征点的不足,本文项目用于解决这个问题。任务描述:相关开发步骤和效果整理到文档。室外轨迹建图与重定位视频链接链接:https://pan.baidu.com/s/1TaJZWyNK4RwcRW6cbYthkg 提取码:rbo7 建图:绿线部...

2021-01-03 08:47:28 2880 2

原创 openEuler 20.09安装方法

任务动机:安装openEuler 20.09,整理安装步骤,熟悉其默认Linux内核和rootfs,为后续在openEuler 20.09面向RK3399的移植做准备。任务描述:安装openEuler 20.09,整理安装步骤到文档。1. 下载openEuler20.09镜像下载链接:https://repo.openeuler.org/openEuler-20.09/ISO/步骤2: 查看官方的安装指南https://openeuler.org/zh/docs/20.09/docs/I

2020-12-26 16:19:18 2076

原创 双联杆型画图XY机械臂

任务动机:自研开发双联杆型画图XY机械臂,后续准备在openEuler 20.03 LTS上进行部署和使用。任务描述:自研开发双联杆型画图XY机械臂,总结步骤,将用于下一步的移植完善。1. 硬件实现代码传送链接2.项目简介 突然有了一个想法,如果不用第三个电机,只用两个电机、两根硬联杆实现画正弦波、三角波和任意图形?(不用第三个电机也能做出来)。于是,有了以下思路:在两个电机上安装两个活动联杆,然后联杆之间插入一支笔,如图所示: A点:放笔的地方 L1、...

2020-12-26 13:40:44 500

原创 openEuler 20.03 LTS的第一个4.19内核RK3399移植版发布

任务动机:openEuler 20.03 LTS的4.19内核版本移植开发取得阶段性成果,发布第一个版本。该版本已在FireflyRK3399和OrangePi RK3399开发板上验证成功。任务描述:openEuler 20.03 LTS的4.19内核版本移植开发取得阶段性成果,发布第一个版本,提供刷机镜像下载地址和刷写方法,欢迎试用。试用反馈,将用于下一步的移植完善。下载地址: https://pan.baidu.com/s/1rdKS0ZsAfUTMJoB4LPhXFA 提取码: qszd..

2020-12-08 07:32:17 2117

原创 多设备ROS复合通信环境部署与测试

多设备ROS复合通信环境部署与测试1.准备阶段2.使用设备3.开发板之间的网络架设4.ROS架设任务动机:模拟机器人的实际使用情况:两块开发板使用usb-net连接后,用PC机通过ROS进行远程的操作任务描述:在两块开发板之间建立基于usb-net的通信,然后通过静态路由将两个开发板都映射到网络上1.准备阶段在实际的机器人开发中,某些功能有限的小型开发板为了节约成本可能不具备网络连接的功能,这种情况下,我们可以通过有线连接功能有限的开发板和功能完整的开发板,再设置静态路由后。通过功能完整的开发板

2020-12-06 22:33:36 183

原创 已有地图的直线特征检测

任务动机:检测已有地图中的直线特征,以此为参照,旋转地图至“合理”的方向。任务描述:栅格地图开始建立的时候,地图方向由机器人的位置决定,为了能在任意位置启动,得到一个人类看图习惯的地图,需要将地图进行一个旋转。1. 前言 在使用激光构建地图时,形成的地图在rviz中一般如下图...

2020-12-04 18:10:08 1182 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 654

原创 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 4446 10

原创 用USB代替网络通讯(2)—自制开发板上实现的解决故障过程

任务动机:在自制RK3399开发板上实现基于openEuler的usbnet任务描述:在两个RK3399板子上分别烧录openEuler系统,编译内核实现usbnet的通信。通过比较不同开发板的电路设计原理图,内核源码,定位故障原因;通过修改硬件电路和内核,解决故障。1. 自制开发板的踩坑与解决 这次准备测试两个RK3399之间使用usbnet进行直接通信,如果测试成功,那么将来开发机器人系统的话就可以省下网卡和网络接口了!正好同隔壁组那边有一个基于RK3399定制的板子,这次借过...

2020-11-22 14:03:08 1013

原创 openEuler 20.03 LTS面向RK3399移植系列(4)—可运行在Firefly-Rk-3399上的openEuler镜像制作步骤

任务动机:根据openEuler社区任务要求,制作可运行在Firefly-Rk-3399上的openEuler镜像。任务描述:开发完成后,总结制作步骤形成文档。1. 制作rootfs镜像1.1 环境:装有openeuler系统的树莓派 参考https://gitee.com/openeuler/raspberrypi1.2 远程连接树莓派 确保树莓派与本地在同一局域网内:(树莓派通过网线与本地机连到同一路由器) (1)查看ip地址...

2020-11-03 10:30:30 1290 4

原创 Cartographer前端之多分辨率map匹配

任务动机:提高Cartographer前端匹配建图方法的鲁棒性。任务描述:针对Cartographer前端匹配中Ceres优化时初始值不准确的情形,构造多分辨率map,使当前帧点云分别和多分辨率map匹配,计算得到准确的位姿变换矩阵,进而提升建图的鲁棒性。1. Cartographer前端 Cartographer前端:当前帧点云和栅格地图通过使用扫描匹配(scan_match)方法进行位姿估计。扫描匹配就是想办法把当前帧点云和栅格地图对齐,对齐过程中的旋转和平移就是它们的相对位姿...

2020-11-02 17:12:14 2644 3

原创 Cartographer Standalone移植(2)—第一个版本

任务动机:实现Cartographer与Cartographer_ros剥离,剥离后的Cartographer可以在不启动roscore的情况下正常建图,同时可与ROS进行通讯。任务描述:分步安装验证后,将步骤合并成安装脚本。 在经历过无数踩坑以后,发现直接移植cartographer_ros不是一个快速、可靠的办法。虽然官网提示cartogrpher_ros是开发cartographer一个不错的示例。但是在后来的研究中,发现自己写的程序无法完全实现cartographer_ros的...

2020-10-27 15:08:00 865 9

原创 用USB代替网络通讯,实现Cartographer上位机与下位机之间的消息传递

任务动机:用USB代替网络通讯,实现Cartographer上位机与下位机之间的消息传递。任务描述:根据任务动机,研究移植研发思路,形成文档。1. 在Toybrick-rk3399prod上编译linux-kernel 这是个漫长且无聊的过程,因为有关这方面的教程少之又少,在本人无数次踩坑下终于搞定。感兴趣的小伙伴可以打开官方教程链接体验下想找教程却没有教程然后砸电脑未遂的心情。1.1 编译原理 在RK3399prod里面,Linux的kernel和rootf...

2020-10-27 09:59:47 1005

原创 单目摄像头外参标定

任务动机:标定单目摄像头外参,为导航使用ORB-SLAM视觉全局定位二次开发做准备。任务描述:1. 简介 在之前的内参标定中,我们已经得到了相机内参的参数,于是便可以进行外参标定。本文所讲的外参标定就是摄像机与机器人坐标系间的位姿标定,因此我们需要用到激光雷达和相机来确定其位姿关系。标定的大致流程是在一个场景内容丰富的环境中,启动激光雷达SLAM,启动摄像机图像采集并控制机器人走几圈,形成一个闭环并对比单目摄像机的ORB-SLAM保存ORB-SLAM的位姿输出结果和激光雷达SLAM...

2020-09-30 14:58:12 2333 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 1272 2

原创 openEuler 20.03 LTS面向RK3399移植系列(4)—验证和问题分析openEuler 20.03 LTS面向Firefly RK3399的第一个版本

任务动机:验证openEuler 20.03 LTS面向Firefly RK3399的第一个版本(Linuxkernel 4.4),分析现存问题,提炼下一步移植工作的需求。任务描述:按照《openEuler 20.03 LTS面向RK3399移植系列(3》文档步骤,制作rootfs和boot镜像文件,烧写到Firefly RK3399开发板上,验证板上硬件驱动和操作系统功能的可用性,整理过程和相关命令,记录到文档。在 《openEuler 20.03 LTS面向RK3399移植系列(3)》 中,我们.

2020-09-30 11:23:44 686

原创 openEuler 20.03 LTS面向RK3399移植系列(3)—openEuler 20.03 LTS面向Firefly RK3399的第一个版本(Linux kernel 4.4)

任务动机:完成openEuler面向RK3399开发板的移植。任务描述:按照固件烧写准备,固件获取,固件打包和烧写的步骤实现openEuler面向RK3399开发板的移植,整理过程和相关命令记录到文档。1. 制作openEuler的rootfs.img1.1 开发环境树莓派--openEuler系统openEuler 20.03 LTS 的内测版本镜像,下载。1.2 具体操作1.2.1 ssh远程连接树莓派确定树莓派IP ssh连接1.2.2 制作rootfs.img

2020-09-25 17:45:03 1777 1

原创 ros_comm for openEuler20.03 LTS验证

任务动机:ros_comm包括了ROS中间件的计算图层通信包。ros_comm的rpm包制作是ROS面向openEuler操作系统移植的里程碑任务之一。任务描述:列出已完成移植的ros包的获取方式和安装方法,为安装验证提供资源和验证方法。1. 可供下载的包需要快速安装ros_comm的读者,可以直接使用列表最后一个ros_comm包。名称 链接 catkin http://121.36.3.168:82/home:/davidhan:/branches:/openEuler:

2020-09-10 15:51:47 239

原创 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 4042 5

原创 openEuler 20.03 LTS面向RK3399移植系列(2)—初战Firefly RK3399

1. 固件烧写准备 ​Firefly RK3399的打包固件升级工具AndroidTool中,包含一个rockdev的文件夹,打包固件是会用到该文件夹下的几个工具(mkupdate.bat、AFPTool.exe、RKImageMaker.exe)。​ Firefly RK3399升级固件所需的各部分文件包括:MiniLoaderAll.bin、parameter.txt uboot.img trust.img kernel.img resource.img等。在接下来部分将逐一介绍每个文...

2020-08-31 13:35:10 1848 3

原创 Cartographer中对激光雷达运动畸变的处理方法分析

任务动机:梳理cartographer处理激光雷达运动畸变的原理,并针对特殊数据特性的雷达数据做相应适配,进而提升建图效果。任务描述:查阅cartographer源码中激光雷达运动畸变的处理流程,对比分析实际使用中特定激光雷达数据处理时可能产生的问题。针对于不同的实际问题作相应修改后,进行对比建图实验验证。1. 激光雷达运动畸变的原因 一帧激光点云由多个激光点组成,而这些激光点不是同一时刻产生的,所以在雷达运动过程中,一帧内的各个激光点基准不同,就会产生运动畸变。例如:当机器人旋转...

2020-08-27 12:38:02 6585 12

原创 单目摄像头的内外参标定

任务动机:基于ORB-SLAM3+单目广角摄像头进行二次开发,辅助激光导航实现机器人全局重定位。需要对单目摄像头进行内参和外参标定。任务描述:1)镜头畸变和内参标定用棋盘格标定2)摄像机与机器人坐标系间的位姿标定在线数据采集:找一个场景内容丰富的环境 启动激光雷达SLAM,启动摄像机图像采集 录制ros bag(最好录制全部,如果空间不够,可以只选激光雷达,摄像机图像,tf) 控制机器人走几圈+走走八字离线处理:播放bag,启动单目摄像机的ORB-SLAM 保存ORB-SLAM的位姿输出

2020-08-25 18:59:55 2841 1

原创 openEuler移植ROS gmapping和navigation

任务动机:面向openEuler的ROS移植工作需要移植先进、主流的算法包,Cartographer就是其中之一。任务描述:编译ROS gmapping和navigation1. 环境要求操作系统版本:openEuler 20.03 LTS 内核版本:4.19.90-2003.4.0.0036 板卡(树莓派、RK3399)已经安装了 ROS Melodic,假设ROS安装在/root/devel_isolated下(如果安装在其他目录,需要修改下面的相应地方) 板卡联网,假设板卡ip是19

2020-08-11 15:58:10 562

原创 openEuler 20.03 LTS面向RK3399移植系列(1)—内核和资源镜像的编译和制作

任务动机:openEuler 20.03 LTS面向RK3399移植任务描述:1. 安装编译环境1.1 安装开发包sudo apt-get install build-essential lzop libncurses5-dev libssl-dev如果使用的是 64 位的 Ubuntu,还需要安装sudo apt-get install libc6:i3861.2 安装mkbootimg工具git clone https://github.com/neo-tech

2020-08-11 15:26:08 2084 1

原创 RK3399 USB RNIDS/gagnet实战

任务目的:实现开发基于rk3399开发板的usb虚拟网卡功能。任务描述:开发基于rk3399开发板的cartographer激光SLAM建图模块,需要定制价格最低、最小化的rk3399开发板,删除板上以太网卡和无线网卡,在不改变网络通讯程序的基础上,使用usb虚拟网卡进行数据传输。因此需要实现满足以上要求的最低价解决方案。1. 现有解决方案对比分析经过调研,发现AX88179和RTL8153(USB转网口芯片)两种方法能满足任务要求。本报告中的数据来源于AX88179和RTL8153官方文档

2020-08-11 11:18:54 4665 2

原创 openEuler ROS RPM构建踩坑记

任务动机:ROS没有OpenEuler的二进制安装源,为了方便OpenEuler用户快捷的通过源的方式进行ROS安装,需要制作ROS面向OpenEuler的RPM安装源。任务描述:1.OBS上构建工程,生成RPM包的方法我做了一个比较详细的过程视频,欢迎大家参考openEuler构建之OBS使用指导https://www.bilibili.com/video/BV1YK411H7E2?from=search&seid=181208753015556484082. ROSR..

2020-08-03 14:06:30 515

原创 Firefly-RK3399刷写Ubuntu16.04镜像并升级固件

任务动机:了解Firefly-RK3399移植Ubuntu16.04的过程,为向Firefly-RK3399移植OpenEuler操作系统做准备。任务描述:在Firefly-RK3399上编译和移植Linux内核和Ubuntu16.04 rootfs,升级固件。1. Firefly-RK3399刷写官方ubuntu16.04系统下载ubuntu16.04镜像:http://www.t-firefly.com/doc/download/page/id/3.html,选择ubuntu(GPT),..

2020-08-03 12:47:32 10127 3

原创 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 3386 9

原创 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 1456 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 3342 4

原创 Cartographer的前端参数设置和效果分析

任务动机:分别对cartographer的前端和后端进行运行时间分析,以确定cartographer的性能瓶颈和指导需要调整的参数。任务描述:关掉后端,测试前端的运行时间。 然后再打开后端,测试整体运行时间,分析瓶颈是在前端还是在后端,以及每个阶段里面的耗时地方。1. cartographer算法流程介绍1.1 数据预处理LaserScan数据的运动补偿options.num_subdivisions_per_laser_scan = 10 // 一帧scan数据被拆

2020-07-17 10:02:38 4868 6

原创 openEuler下移植ROS Melodic运行时环境

1. 环境操作系统版本:openEuler 20.03 LTS内核版本:4.19.90-2003.4.0.0036硬件:raspberrypi4+16G SSD最新镜像openEuler 20.03 LTS 的内测版本镜像,下载。openEuler 20.03 + ROS Melodic Desktopfull + SLAM + Navigation raspberrypi4镜像,下载。提取码781g刷镜像(第2条命令可能不自动跳出终止,不影响使用。拷贝完成的标志是15G的分区能

2020-07-13 12:08:36 2783 2

harryzhangabc-cartographer_standalone-master.zip

实现Cartographer与Cartographer_ros剥离,剥离后的Cartographer可以在不启动roscore的情况下正常建图,同时可与ROS进行通讯。

2020-11-03

ros_comm-1.14.6-1.oe1.aarch64.rpm

ros_comm包括了ROS中间件的计算图层通信包。ros_comm的rpm包制作是ROS面向openEuler操作系统移植的里程碑任务之一。 请使用sudo rpm -ivh ros_comm-1.14.6-1.oe1.aarch64.rpm进行安装,安装环境:openEuler 20.03 LTS aarch64

2020-09-11

speed0.266Trun1.7z

Cartographer中对激光雷达运动畸变的处理方法分析使用自录制bag包,需下载解压后使用。 任务动机:梳理cartographer处理激光雷达运动畸变的原理,并针对特殊数据特性的雷达数据做相应适配,进而提升建图效果。 任务描述:查阅cartographer源码中激光雷达运动畸变的处理流程,对比分析实际使用中特定激光雷达数据处理时可能产生的问题。针对于不同的实际问题作相应修改后,进行对比建图实验验证。

2020-09-08

cartographer-melodic-devel.zip

快速完成基于Ubuntu18.04的Cartographer以及Cartographer_ros安装脚本。 Cartographer由谷歌一直在维护,从之前的tf1到现在melodic版本上的tf2_ros都有更新支持。而且cartographer所依赖的库也在一直更新,包括abseil-cpp,ceres-solver,protobuf等,其依赖的版本混乱,并不能相互兼容。经过测试,在2019年的某个版本解决好依赖问题之后,同样的方法在2020年clone新的官方代码就编译出错了。并且官方只更新代码,并没有对安装文档进行对应的更新,

2020-09-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除