自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 深蓝视觉slam

三维旋转矩阵特殊正交群SO(3)特殊欧式群SE(3)正式定义:ps:这里对群的定义是针对SO3和SE3的特定的,只要满足一种集合加上一种运算的代数结构都可为群,例如{Z,+}也为群,但不是李群了同时请思考为什么旋转矩阵的加法为什么不是群?首先什么是旋转矩阵来着?旋转矩阵要满足下面性质:行列式为1,且是正交矩阵,不存在R1+R2或者T1+T2还满足这个性质,但是存在R1R2或者T1T2还满足这个性质的(可以看作做了两次旋转)。那么李群是什么?李群是指具有连续(光滑)性质的群。

2024-07-16 22:42:10 625

原创 深蓝slam作业

此处的Eigen::Matrix<double,9,1> X_ = A.colPivHouseholderQr().solve(b);使用来解方程Ax=b的;函数 A.colPivHouseholderQr().solve(b)。就是一个解这个函数的的函数。第二节解决Odom_Calib.cpp中solve函数:中有一个这样的代码。svd分解的意思是将矩阵携程由三个部分相乘的形式。第三节:运动畸变去除。

2024-06-05 14:49:08 239 1

原创 深蓝激光slam

已知数据:1.已知当前 帧激光的起始时间 𝑡𝑠,𝑡𝑒2.两个激光束间 的时Δ𝑡3.里程 计数据按照时间顺序存储在一个队列 中4.最早的里程计数据时间戳 <𝑡𝑠5.最早的里程计数据时间戳 >𝑡𝑒。他要做的就是1.求解当前帧激光数据中每一个点对应的机器人位姿,即求解{ 𝑡𝑠,𝑡𝑠+Δ𝑡,⋯,𝑡𝑒}时刻的机器人位姿。2.根据求解的位姿把所有的激光点转换到同一坐标系下。3.重新封装成一帧激光数据,发布出去。过程:1.求解ts,te时刻的位姿ps,pe。

2024-06-05 14:48:56 673 1

原创 深蓝课程所学

里程计是一种用于测量移动机器人位置和方向变化的技术,通常通过传感器(如轮速编码器)来收集运动数据。然而,由于各种因素(如轮胎磨损、地面摩擦等)可能导致里程计的误差积累,因此需要定期进行标定以确保准确性。在进行里程计标定时,通常会使用一系列已知位置的参考点或地标,并通过比较机器人测量的位置与实际位置之间的差异来调整里程计参数。这个过程可以是自动化的,也可以是手动的,取决于系统的要求和可用的技术。运动模型大致分为两种:一、两轮差分底盘的运动学模型,二、三轮全向底盘运动模型。差分模型与运动解算(

2024-06-03 10:30:14 285

原创 五月汇报学习

在移动机器人图和导航的时候,电机上的轮式里程计可以参与其中,例如建图时候可以利用lua参数文件配置cartographer算法,从而进行使用里程计数据,从而达到更加精确的建图效果,相同的imu也是如此,同样可以提高建图的精确性,但这两者都是可选可不选。另外在导航的过程中,轮式里程计必不可少,因为里程计可以让小车运动的过程中知道自己所走的路程,以及更新自己在地图上所在区域。接收里程计数据可以通过mircroros服务,直接通过wifi连接并且传输。

2024-06-02 10:05:16 703

原创 树莓派操作

注意:修改完参数后需要重新启动Nav2才能生效。此外,修改导航膨胀半径可能会影响到导航的性能,需要根据实际情况进行调整。ssh传输文件夹的格式(在本地终端运行)window远程桌面接在同一个网络。在ubuntu将电脑和树莓派连接。

2024-05-16 22:24:42 210

原创 4月学习

通过仿真的方法,对slam(Simultaneous Localization And Mapping)建图以及Cartographer有初步的了解,Cartographer就是一个系统,能够帮助我们进行建图的一个工具,Cartographer参数是使用lua文件来描述的,这个lua文件在我们使用Cartographer时,我们需要去进行修改里面的参数,以达到我们想要的功能。参数又分为前端参数和后端参数,通过对参数的配置,可以修改雷达的各种功能,包括是否使用gps,是否使用里程计数据,是否使用IMU数据。

2024-04-16 11:02:45 237

原创 3.19学习

urdf的创建,需要创立一个文件夹,在他的下面创建一个urdf文件,如果遇到修改后的urdf文件无法正常显示时,重新打开vscode再次运行,或者在install目录下找相应的包的share然后去查看对应的东西是否一致。这是小鱼的一段代码实例,前面的导入库步骤照抄,不需要再配置其他文件,这些库是系统自带的。RVIZ2,数据可视化工具,将各种调试机器人的数据(例如图像数据,三维数据,TF数据,机器人模型数据),以一种可视化的方式,呈现出来,在后期的坐标变换中有着大作用。相关指令看小鱼文档。

2024-04-02 19:19:12 685 1

原创 参数与Action

参数与动作是两种通信方式,与话题,服务构成四种通信方式。参数是一个配置值,可以认为就是对一个节点的设置。在实际应用之中可以用来动态地设置或改变节点的内容。参数的组成部分有名字和值来组成,名字的数据类型是字符串,值的数据类型有bool,int64,float64,string,byte。当我们打开一个节点时可以利用下列代码在另外一个终端中查看节点有那些参数(设置) 当我们打开乌龟模拟器后输入这个命令后,可以看到里面的background_b,background_g;都是对该模拟器这个展示出来乌龟的这个

2024-02-25 17:32:21 875 1

原创 ROS2(c++)

概念:概念:节点:ROS中的每个节点应负责单个模块用途(例如,一个节点用于控制车轮电机,一个用于控制激光测距仪等)。每个节点都可以通过主题、服务、操作或参数向其他节点发送和接收数据。工作空间:工作空间可以类比于VS中的SolutionDir,是一个目录,包含build、install、log、src四个子文件夹,src保存源码。功能包:功能包可以理解为存节点的地方,在ROS2中根据编译方式的不同,可以分为:ament_python,适用于python程序cmake,适用于C++

2024-02-06 15:04:10 1030

原创 c++类与封装中的继承与多态

这算是一个普通的计算器实现和多态的计算器的实现,我们可以看出来,普通的源码计算器代码量比较小,但是如果想要对源码进行修改或者增添其他功能,就需要找到最开始的代码然后进行修改。当我们在子类中创建了一个父类指针指向一个new的对象时,我们想要delete掉这个new出来的对象时,父类的指针析构时,不会调用子类中的析构函数,造成了内存泄漏。我们可以看到,在上面的两个案例中,我们的父类的原函数实际上没有实现,都是使用子类的函数,那么我们就可以将这个函数设计成一个纯虚函数。另外要想实现父类的纯虚析构函数也是可以的。

2023-12-30 18:03:37 905

原创 第二周学习

目的是为了在进行拷贝构造函数时,不进行系统自带的浅拷贝,以免程序有存在的隐患,即当创建了一个Person类的对象p1,p2时进行p1=p2时,系统虽然会对两个对象进行拷贝,数据也一样,但是利用了。另外,如果子类中出现了和父类同名的成员函数,子类的成员函数会隐藏掉父类中所有的同名成员函数,如果想访问到父类中的同名成员函数,需加作用域。由于某个类含有另外一个类的特性或者说是共同点,为了避免麻烦再次输入该相同的部分,所以可以利用继承,将这两个类以父类子类的形式进行继承操作,使得子类具有父类的某种特性。

2023-12-24 15:22:40 43 1

原创 类与封装第一周学习

第一周类与封装学习了许多知识点,主要学习内容是了解了许多由c++带来新的概念,c++与c,大体相同,但又有所不同,例如最简单打印函数printf与cout,c++的表达更加的简介,但不能很细致,例如c++要实现%.2f,c++的cout无法实现,还是要借助printf函数。浅拷贝:首先先观察浅拷贝的结果(如下程序),从输出结果可以看出,a2是对a1进行的浅拷贝,只是拷贝了数组arr指针的本身,因为当对a1数组进行修改时,a2的数组也受到了影响,因为两个所指向的内存空间一致。类中含有类成员函数,成员。

2023-12-17 13:50:37 44 1

空空如也

空空如也

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

TA关注的人

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