SLAM

Cartographer是Google开源的一个ROS系统支持的2D和3D SLAM(simultaneous localization and mapping)库。 GitHub: https://github.com/cartographer-project/cartographer

tf2:setRPY、doTransform、getRPY

ancientcc发表了文章 0 人赞同 0 评论 2023-08-22 09:41:27

欧拉角可以分为绕定轴(外旋方式)和绕动轴(内旋方式)的变换方式。按定轴转动时,矩阵依次左乘。绕动轴转动时,矩阵依次右乘。一般来说,Ros解决问题是绕定轴。那如何区分某个函数是按定轴还是动轴?——函数名没有给出Euler时,定轴;名字中有Euler......查看全部

后期地图处理:去噪

ancientcc发表了文章 0 人赞同 0 评论 2023-07-09 19:49:04

建图时,由于算法、激光雷达等缺陷,在实际上本应不可进入区域会变成可进入。这种区域多了,会增加后面导航难度。图1 去噪前的占据栅格图对图1这张占据栅格图。标号1处放的是一张床,可建图时让出现了部分可进入,这会使得规划全局路径时选择从它这里......查看全部

计算速度cmd_vel

ancientcc发表了文章 0 人赞同 0 评论 2023-06-26 13:43:52

夹角。若没特别指明,文中夹角指的是机器人偏航角和路径之间角度。路径角度是以路径的起点和终点生成一条直线,该直线在坐标系的角度。对笔直,可归纳为两种处理。一是要去方向没有障碍物,这情况称不拐弯,这时给个较大linear_x,angular_z则是有......查看全部

Global SLAM之OptimizationProblem2D::Solve

ancientcc发表了文章 0 人赞同 0 评论 2023-06-17 20:30:17

SPA优化算法详解:以Cartographer后端为例后端优化问题求解器——optimization_problem_Cartographer后端之Ceres优化每一轮迭代时残差项至少有两种,constraints.size()个node和子图之......查看全部

Global SLAM之MapById

ancientcc发表了文章 0 人赞同 0 评论 2023-06-14 10:06:45

MapById中的IdType、DataType是两个模板参数,目前只会出现二种场景。一是node时,对应NodeId/TrajectoryNode;二是submap时,对应SubmapId/InternalSubmapData。 一、......查看全部

绑架估计(Kidnapping estimate)

ancientcc发表了文章 0 人赞同 0 评论 2023-06-03 11:08:26

分数三个来源。1)未知栅格。2)点云覆盖的栅格。3)中间点覆盖的栅格。为什么在绑架估计过程中,要阻止move_base进入恢复性操作?——设想么个场景:makePlan失败,kidnap正在position_full2,若不阻止进入恢复情操作,那......查看全部

绑架估计:修改cartographer

ancientcc发表了文章 0 人赞同 0 评论 2023-01-28 20:19:29

 一、把kidnap_pose2d做为cartographer的初始位姿如何把kidnap_pose2d应用到cartographer?想到两种方法。当前会有个cartographer_node节点正在运行,告诉这个node,把kidn......查看全部

栅格值从CorrespondenceCostValue到[-1, 100]

ancientcc发表了文章 0 人赞同 2 评论 2023-01-16 20:08:17

本文有部分转自“(02)Cartographer源码无死角解析-(44) 2D栅格地图→ProbabilityGrid 与 ProbabilityToLogOddsInteger()”。在CreateOccupanc......查看全部

子图:ActiveSubmaps2D、Submap2D

ancientcc发表了文章 0 人赞同 0 评论 2023-01-14 21:01:00

转自“(02)Cartographer源码无死角解析-(41) 2D栅格地图→ActiveSubmaps2D”图1 rviz中的子图列表一、前言LocalTrajectoryBuilder2D得到此次在odom坐标系下的点云range_......查看全部

Ceres

ancientcc发表了文章 0 人赞同 0 评论 2022-02-07 19:55:50

《视觉SLAM十四讲(第二版)》中“6.3.2 使用Ceres进行曲线拟合”有介绍Ceres,本文不少内容抄自哪里。Ceres是一个广泛使用的最小二乘问题求解库。在Ceres中,我们作为用户,只需按照一定步骤定义待解的优化问题,然后交给......查看全部

tf树、PublishLocalTrajectoryData和配置

ancientcc发表了文章 0 人赞同 0 评论 2021-12-02 14:18:43

tf是坐标变换、位姿,用于表示两个坐标系间变换值,它关联的两个坐标系有严格的前后关系。“坐标系2-->坐标系1的tf”描述了一个从坐标系2到坐标系1的tf。举个例子,“odom-->map的tf”,如果是a2是odom坐标系下坐标,a......查看全部

发布地图(map话题)

ancientcc发表了文章 0 人赞同 0 评论 2021-11-29 20:25:27

一、顶层逻辑[cartographer_node节点]Node::Node构造函数1、创建“submap_query”Server。2、创建间隔submap_publish_period_sec秒(默认0.3秒)的定时器,处理例程Node::Pu......查看全部

Global SLAM

ancientcc发表了文章 0 人赞同 0 评论 2021-11-26 09:05:24

旧图、新图。insertion_submaps存储着某个点云会画到的子图,最多两张,旧图指front,新图指back。INTRA_SUBMAP、INTER_SUBMAP。节点和子图之间约束的两种类型。节点和它画到的子图之间是INTRA_SUBMA......查看全部

概率栅格图(ProbabilityGrid)

ancientcc发表了文章 0 人赞同 0 评论 2021-11-17 21:17:40

ProbabilityGrid用于表示概率图,它是Grid2D派生类,由它构造的对象存放在ActiveSubmaps2D成员变量submaps_。刚创建的概率图有个固定尺寸,100(kInitialSubmapSize)x100,换到真实世界是2......查看全部

probability_values.h/c:占据概率相关

ancientcc发表了文章 0 人赞同 0 评论 2021-11-16 20:18:49

此文第一、第二节抄自“Cartographer源码阅读之附 1—probability_values.h/c:占据概率相关[1] ”在概率上,要解决一个问题:对于这个cell,新来了一个测量值——即传感器测得该点为occupi......查看全部

点云:从LaserScan到TimedPointCloudOriginData

ancientcc发表了文章 0 人赞同 0 评论 2021-11-08 20:21:46

单一、有序场景。指这么种场景:只有一个传感器,每次采样有一定间隔,且采集新点云帧第一个点的时间一定比旧点云最后一个点的时间晚。到TimedPointCloudOriginData,表示点云中的点用的是tracking_frame坐标系下的3d直角......查看全部

LocalTrajectoryBuilder2D::AddRangeData

ancientcc发表了文章 0 人赞同 0 评论 2021-11-08 10:00:37

本文框架来自“Cartographer源码阅读12—LocalTrajectoryBuilder2D成员函数解读”。range_data_in_local存储着odom坐标系下的点云,值格式是3D坐标。 一、LocalTrajector......查看全部

PoseExtrapolator(位姿外推器)

ancientcc发表了文章 0 人赞同 0 评论 2021-11-05 20:35:41

本文初始架构转自Cartographer源码阅读11—LocalTrajectoryBuilder2D成员变量解读PoseExtrapolator定义在/mapping/pose_extrapolator.h中。其主要作用是对IMU、里程计数据进......查看全部

使用Eigen实现四元数、欧拉角、旋转矩阵、旋转向量之间的转换

ancientcc发表了文章 0 人赞同 0 评论 2021-10-29 20:47:26

原文:使用Eigen实现四元数、欧拉角、旋转矩阵、旋转向量之间的转换Vector3.normalized的特点是当前向量是不改变的并且返回一个新的规范化的向量;Vector3.Normalize的特点是改变当前向量,也就是当前向量长度是1&nbs......查看全部

计算local_pose(odom位姿)

ancientcc发表了文章 0 人赞同 0 评论 2021-10-28 07:40:58

位姿包括平移和旋转,相比平移,旋转要复杂很多。理解了如何计算旋转,平移也就差不多得到结果了。看这篇文章时,请同时打开“LocalTrajectoryBuilder2D::AddRangeData”,函数AddRangeData可说执行了carto......查看全部

编译cairo

ancientcc发表了文章 0 人赞同 0 评论 2021-08-26 15:49:44

cartographer在绘制子图(submap)和将子图合成栅格地图(nav_msgs::OccupancyGrid)时,要使用cairo。 一、Windows下编译32位的cairo“cairo[01] Windows环境学习笔记—......查看全部

cartographer若干疑问

ancientcc发表了文章 0 人赞同 0 评论 2021-08-19 14:43:58

一、[未解决]pose_graph_2d.cc中抛出异常执行transform::operator*(...)时,参数lhs值是0xFFFFFFFF,抛出内存访问异常。这异常可能一开始就出现,也可能晃动几次激光雷达后出现。查找是谁调用transf......查看全部

编译设置如何影响cartographer性能

ancientcc发表了文章 0 人赞同 0 评论 2021-08-18 10:01:07

Optimization设置会严重影响cartographer性能。从/Od到/O2可能是50倍的性能提升。Program Database中的/Zi、None,对性能基本没影响。在windows、ubuntu(x86架构),是否使用SuiteS......查看全部

BAL(Bundle Adjustment in the Large)

ancientcc发表了文章 0 人赞同 0 评论 2021-07-04 15:53:09

英文:Bundle Adjustment in the LargeBAL是一种文本格式,SLAM可用它存储观测到的路标投影,位姿,路标的三维坐标,等等。它可作为后端非线程优化的输入,以及生成*.ply,然后用Mashlab进行查看。BAL中内容包......查看全部
Cartographer是Google开源的一个ROS系统支持的2D和3D SLAM(simultaneous localization and mapping)库。 GitHub: https://github.com/cartographer-project/cartographer