
行知SLAM:机器人及自动驾驶
文章平均质量分 83
本专栏将从事机器人定位算法工作所用的C++、ROS、SLAM理论及开源算法进行系统总结,希望带领大家系统入门SLAM,了解工作中真正的SLAM。
行知SLAM
笔者自985硕士毕业后,在机器人算法领域已经深耕7年多啦。大家可以在同名【公众号】“机器人及自动驾驶”获取实时技术文章及思维导图pdf版本,并找到星球伙伴一起学习进步。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
第1章 机器人SLAM定位入门最全知识体系及资料推荐入门
机器人SLAM知识体系:多而杂。原创 2020-05-14 18:21:22 · 5677 阅读 · 0 评论 -
自动驾驶中 BEV 与 BEVFusion是什么,该如何学习?
自动驾驶技术中,BEV(鸟瞰图)感知为环境感知和定位提供了统一视角。BEV通过多传感器数据融合,将摄像头、激光雷达等信息转换为全局鸟瞰图,解决了传统2D感知的遮挡问题,提升了目标检测精度。BEVFusion框架进一步优化了多模态数据融合,增强系统鲁棒性。目前特斯拉等车企已广泛应用BEV技术。学习BEV需掌握传感器原理、深度学习和坐标变换等知识,并通过开源项目实践。BEV技术将持续推动自动驾驶发展,是实现安全高效自动驾驶的重要支撑。原创 2025-06-06 11:21:09 · 740 阅读 · 0 评论 -
PCL中常用树结构(二叉树、KD树、八叉树)的原理与应用
通过理解这些树结构的数学原理和应用场景,你可以在PCL开发中更高效地处理点云数据,提升算法性能。点云数据通常包含海量三维坐标点(如激光雷达一次扫描可达百万级点),直接处理效率极低。原创 2025-05-26 10:51:19 · 605 阅读 · 0 评论 -
机器人操作系统ROS代码实战:tf::TransformBroadcaster用于发布坐标系变换信息的工具
是 ROS(机器人操作系统)里用于发布坐标系变换信息的工具。借助它,你能够把一个坐标系相对于另一个坐标系的位置和姿态信息发布到 树中,从而让其他节点能够获取并使用这些变换信息。以下是关于它的详细使用总结:要使用 ,就得包含对应的头文件:2. 定义 对象在代码里定义一个 对象,通常将其定义为类的成员变量或者局部变量:3. 构建变换信息在发布变换信息之前,需要构建一个 对象,该对象涵盖了坐标系之间的平移和旋转信息:这里的 、、 是平移量,、、 是欧拉角。使用 对象的 方法来发布变换信息:原创 2025-05-26 10:46:46 · 326 阅读 · 0 评论 -
组合导航GPGGA、GPRMC和RTCM详细解释
GPGGA、GPRMC 和 RTCM 是在卫星导航领域中常用的概念原创 2025-05-14 14:13:31 · 1183 阅读 · 0 评论 -
激光雷达硬件时间同步PPS、EventOut和GPRMC介绍及区别介绍
在激光雷达硬件时间同步中,PPS(秒脉冲信号)和GPRMC(全球定位系统推荐最小数据)信号共同作用,实现精确的时间同步。P原创 2025-05-09 09:40:55 · 486 阅读 · 0 评论 -
组合导航INS欧拉角如何转为四元数?以及azimuth角度为什么要取负号?附代码实例
假设载体坐标系的坐标轴定义如下(符合右手准则):y轴为前向(即正常航行的方向),z轴为天向(即向上方向),x轴为右向。在载体姿态发生变化时,欧拉角中三个连续的转动过程分别为:第一次转动的角度是偏航角ψ(yaw),也称航向角(heading)或方位角(azimuth),其旋转轴为z轴;第二次转动的角度是俯仰角θ(pitch),也称仰角(elevation),其旋转轴为x轴;第三次转动的角度是滚动角ϕ(roll),也称侧倾角(bank),其旋转轴为y轴。原创 2025-04-17 17:23:30 · 915 阅读 · 0 评论 -
机器人及自动驾驶导航定位社区成立开篇介绍
计算机基础(ubuntu、vscode、git、vim、grep、bash等工具命令工程使用)、C++语言(CMakeLists、标准库等)、第三方开源库(ROS、PCL、Eigen、Ceres、G2O、OpenCV)及SLAM开源框架(ORB-SLAM3、LOAM等)、数学理论知识、机器人及自动驾驶行业定位(组合导航、IMU、UWB定位)原理及代码实战分享。因此,重新成立了本付费社群,一来可以拦截贴小广告的人,二来也更加有动力分享更多的高质量知识给大家。本知识星球主要面向工作实战应用,主要帮助。原创 2025-03-20 16:46:26 · 453 阅读 · 0 评论 -
GTSAM库介绍及代码实例
GTSAM(Georgia Tech Smoothing and Mapping library)是一个用于解决机器人领域中平滑与映射问题的C++库。它主要应用于同时定位与地图构建(SLAM)、视觉里程计、传感器融合等任务。该库提供了高效的非线性优化算法,能够处理大规模的优化问题,并且支持增量式求解,可在新数据到来时快速更新估计结果,从而满足实时性要求。:实现增量平滑与映射第二代算法,用于实时、增量式地求解非线性优化问题。适用于需要快速处理新测量数据并更新估计的实时SLAM场景。原创 2025-02-20 15:21:44 · 374 阅读 · 0 评论 -
1 《c++学习记录》之命名空间/构造函数概念总结
###1.30 周二1.using std::cout;iostream.h是c语言的,可以不用std,使用new创建一个堆分配内存,在new后面跟一个要分配的对象类型,编译器根据这个类型来分配内存。int *pp=new int3.Human *p=new human 104mianp-> 访问成员函数###1.31周三1.构造函数的函数头进行初始化ractangle():length(3),width(4){函数要执行的功能}2.对每个成员变量的初始化工作原创 2020-05-13 17:06:46 · 280 阅读 · 0 评论 -
6.c++之运算符重载
星期四, 17. 五月 2018 03:35下午####运算符重载重载前置自身构造函数void operator++(){++n;}++i;创建临时对象class num{num operatorr++(){ ++n; num t; t.set(n); return t;}}int main(){ num i; num x=++i;}**创建无名临时对象:**返回带有参数的构造函数。这种方法不可取取消创建临时对象:利用this指针const num &am原创 2020-05-13 17:15:23 · 182 阅读 · 0 评论 -
1.C++双冒号总结
::总结1.作用域符号::前面一般是类名称,后面一般是该类的成员名称,C++为例避免不同的类有名称相同的成员而采用作用域的方式进行区分如:A,B表示两个类,在A,B中都有成员member。那么A::member就表示类A中的成员memberB::member就表示类B中的成员member2.是C++里的“作用域分解运算符比如声明了一个类A,类A里声明了一个成员函数voidf(),但没有在类的声明里给出f的定义,那么在类外定义f时,就要写成voidA::f(),表示这个f()函数是类A的成员函数原创 2020-05-13 17:07:45 · 275 阅读 · 0 评论 -
7.虚函数
2018.6.5 11:131.指向对象的指针father *pfather=new son;//new son 构造了一个子类对象,在构造子类对象之前先构造父类对象,所以会先调用父类构造函数,然后调用子类构造函数pfather指针指向的是父类对象。son *p=new son.//指向子类对象的指针delete p;完整代码#include <iostream> using namespace std; class father{ public: father原创 2020-05-13 17:16:25 · 294 阅读 · 0 评论 -
5.c++学习记录之深入函数(5.11)
###深入函数#####星期五, 11. 五月 2018 10:44上午成员变量的初始化与赋值1成员变量的赋值retangle(int l,int w){length=l,width=w;}//成员变量的赋值retangle a(3,4);//对象a在创建的时候调用了构造函数,构造函数通过接收参数l,w将3,4传递到函数体中,然后分别赋给了私有成员变量length和width,完成了对成员变量的赋值工作.>2.成员变量的初始化ractangle():length(3),width(4){原创 2020-05-13 17:15:00 · 191 阅读 · 0 评论 -
5.c++学习记录之复制构造函数
浅层复制构造函数:容易导致迷途指针问题A(const A&a)深层复制构造函数A(const A &&A){x=new int;x=(a.x);}//作用是将旧对象的成员指针X指向的空间处的数据赋给新对象的成员指针x指向的空间。复制的是指针指向空间处的数据而不是指针保存的地址,这样由于两个对象的成员指针分别保存两块内存区域的地址,指向不同的内存空间。运算符重载在成员函数实现自加...原创 2020-05-13 17:14:19 · 237 阅读 · 0 评论 -
3.c++学习记录指针总结(2018年5月7日)
指针学习总结内联函数const 成员函数构造函数:可以创建多个构造函数.析构函数:没有返回值 不能有参数 只能有一个堆栈进栈顺序:被调用函数下一行的内存地址,其次是函数的参数,多个参数按照从右往左的顺序,最后是函数的局部变量.用指针创建堆中空间用关键字new创建一个堆并分配内存int *p;p=new int;//分配4个字节的空间int *p=new int*p=4//将4赋给存储区用指针删除堆中空间int *p=new int;delete p;//这原创 2020-05-13 17:12:28 · 196 阅读 · 0 评论 -
4.1c++学习记录之传递对象
c++学习记录之引用2018年5月9日14:39###传递对象**按值来传递对象:**默认调用复制构造函数class A{ ... A(); A(A&); ~A();}A func(A one);int main(){ A a; func(a); return 0;}A func(A one){ return one;}**按地址传递:**没有调用复制构造函数,也就没有输出复制构造函数的信息.int main() {原创 2020-05-13 17:13:14 · 280 阅读 · 0 评论 -
4.c++学习记录之引用及函数传递
*星期二, 08. 五月 2018 09:10上午*引用引用就是别名.int &rnum=num;.//rnum就是num的别名,对rnum的操作就是对numde 操作引用就是别名常量,别名是外号,属于谁就是谁的,不可更改;别名的值是数据,数据是可以修改的.引用对象Human Mike;Human &rMike=Mike;//定义对象Mike的别名rMike但我们不能定义一个类的别名,因为类Human是一个类型,他没有具体的内存地址.Human &am原创 2020-05-13 17:13:51 · 163 阅读 · 0 评论 -
3.1c++学习记录之const总结
const总结常量:const double PI=3.14;const 成员函数:void print()const{return x};常量指针:int a=2;int *const p=&a;//它 的值不可以改变,但是指向的值是可以改变的,常量指针必须初始化A *const p=new A;指向常量的指针该指针指向的整型变量是不可以修改的,但是该指针可以被修改const int *p;const A* P=new A;P=P+1;指向常量的常指针原创 2020-05-13 17:10:02 · 178 阅读 · 0 评论 -
CMKAE总结
CMKAE总结cmake:生成一个makefile文件。 make:根据这个makefile文件的内容编译整个工程。 cmake . :在当前目录调用cmake进行分析mkdir build cd buildcmake ..:对上一称文件夹,也就是代码所在的文件夹进行编译.这样cmake产生的中间文件就会在build文件夹中,与源代码分开。cy.cpp#includ...原创 2018-08-21 22:03:41 · 672 阅读 · 0 评论 -
第5.2章 一文彻底学会SLAM优化库之G20
SLAM的后端一般分为两种处理方法,一种是以扩展卡尔曼滤波(EKF)为代表的滤波方法,一种是以图优化为代表的非线性优化方法。不过,目前SLAM研究的主流热点几乎都是基于图优化的。原创 2022-10-15 10:32:48 · 633 阅读 · 1 评论 -
第5.3章 机器人SLAM优化库之Eigen入门总结
Eigen学习记录 Eigen库由Ubuntu软件源中提供,通过apt命令可以很方便的安装Eigen。 sudo apt-get install libeigen3-dev Eigen与其他库不同,它是一个由头文件搭建起来的库,Eigen头文件的默认安装位置在“/usr/include/eigen3/”中。我们在使用时,只需引入Eigen头文件,不需要链接它的库文件,在...原创 2018-08-22 22:19:01 · 588 阅读 · 1 评论