一起自学SLAM算法:6.1 底盘运动学模型

2023-05-16

连载文章,长期更新,欢迎关注:


写在前面

第1章-ROS入门必备知识

第2章-C++编程范式

第3章-OpenCV图像处理

第4章-机器人传感器

第5章-机器人主机

第6章-机器人底盘

        6.1 底盘运动学模型

        6.2 底盘性能指标

        6.3 典型机器人底盘搭建

第7章-SLAM中的数学基础

第8章-激光SLAM系统

第9章-视觉SLAM系统

第10章-其他SLAM系统

第11章-自主导航中的数学基础

第12章-典型自主导航系统

第13章-机器人SLAM导航综合实战


轮式机器人底盘按照转向方式的不同,可以分为两轮差速模型、四轮差速模型、阿克曼模型、全向模型等。

  • 两轮差速模型是最简单的底盘模型,通过左右两个轮子的转动速度差实现转弯。
  • 四轮差速模型跟两轮差速模型很相似,也是通过左边轮子的和右边轮子的转动速度差实现转弯,只不过是四个轮子,同一边的轮子速度是同步的,也就是左前轮和左后轮速度始终一样,右前轮和右后轮速度也始终一样。
  • 阿克曼模型就是汽车的转向模型,通过控制前面两个轮子的转向实现转弯。
  • 全向模型采用带有横滚轴的特殊轮子构造的模型,这种轮子除了能正常旋转外,轮胎接地面还可以侧向滑动,全向模型运动更灵活,底盘的运动速度的方向不受约束。

两轮差速模型、四轮差速模型、阿克曼模型也称为运动受约束模型,全向模型也称为运动不受约束模型。介绍到的这几种模型都是轮式底盘模型,除此之外还有其他一些底盘模型,比如双足底盘模型、四足底盘模型、六足底盘模型、多足与轮式复合底盘模型等,不过这些只需要了解即可,并不要求掌握。

6.1.1 两轮差速模型

两轮差速模型可以说是最简单的底盘模型,在底盘的左右两边平行安装两个由电机驱动的动力轮,考虑到至少需要3点才能稳定支撑,底盘上还需要安装用于支撑的万向轮。

最简单的就是在底盘前边装1个万向轮,后边2个动力轮,组成3轮结构,如图6-1a所示。这种结构理论上可以实现转弯半径为0的原地旋转,但是原地旋转时的速度瞬心位于两动力轮轴线中点位置,而不是底盘的几何中心,在自主导航过程中,最小避让空间为{r}'半径范围的区域,显然{r}'大于r,底盘旋转所需要的避让空间会更大。

3轮结构中,除了底盘旋转所需要的避让空间更大之外,还存在侧翻的问题,当底盘上的载重分布不均匀时,转弯时很容易翻车,改进方法是多装几个万向轮。如图6-1b所示,前后各装1个万向轮,在底盘中轴线上左右位置各装1个动力轮,组成4轮结构。也可以在底盘的4个角各装1个万向轮,在底盘中轴线上左右位置各装1个动力轮,组成6轮结构,如图6-1c所示。图6-1b和图6-1c结构的优点是原地旋转时的速度瞬心与底盘几何中心是重合的,底盘旋转所需要的避让空间可以达到理论最小,并且不容易侧翻。由于4轮和6轮结构存在接地点大于3的多点接触地面问题,也就是当地面不平坦时,有的轮子会出现悬空。为了解决多点接触地面问题,4轮和6轮结构需要在2个主动轮上加装悬挂系统,而悬挂系统将使整个底盘的结构设计变得更加复杂。

 因此,要结合实际的应用场景,合理的选择图6-1中的3种结构,在满足要求的前提下,尽量降低底盘设计复杂度。下面通过对前向运动学、逆向运动学和轮式里程计的内容分析,详细介绍两轮差速模型的原理。

图6-1  两轮差速模型

1.前向运动学

底盘中各个动力轮的速度可以由编码器值计算得到,那么通过各个轮子的速度求底盘整体的运动速度的过程,即前向运动学。已知左动力轮的线速度为V_{L},右动力轮的线速度为V_{R},动力轮的线速度可以用编码器计数值计算,如式(6-1)所示。

 底盘整体的运动速度由速度瞬心上的线速度和角速度描述,三维空间中刚体运动速度由6维向量[v_{x},v_{y},v_{z},\omega _{x},\omega _{y},\omega _{z}]描述。由于这里讨论的底盘只在二维平面上运动,并且两轮差分底盘不发生侧向滑动,底盘采用右手坐标系,底盘中只有向前的线速度v_{x}z轴的角速度\omega _{z}为非0项。通过前向运动学,在已知左、右动力轮的线速度为V_{L}V_{R},利用图6-2所示的几何关系,便可以求出底盘的整体速度v_{x}\omega _{z}

图6-2  两轮差速运动学

在很短的时间t内,底盘可以看成绕O点做圆周运动,两个圆周的半径分别为\rho\rho +d,其中d为两个轮子之间的轴距,两个轮子走过的路程分别为s_{L}s_{R}转过的角度为\varphi,底盘速度瞬心走过的路程为ss_{L}s_{R}满足式(6-2)的关系。

 将式(6-2)中的两个等式相减可以求出\varphi,利用\varphi继而可以求出s,求解如式(6-3)所示。

 由于运动时间t很小,利用极限的思想,\varphi趋近于0,s也趋近于0,那么s可以等效为底盘速度瞬心轨迹圆弧切线方向的一小段位移,有了这个近似假设条件,用s\varphi直接除以t就可以求出底盘的整体速度v_{x}\omega _{z}

2.逆向运动学

前向运动学是利用各个轮子的速度求解底盘整体的速度,逆向运动学是前向运动学的逆过程,即利用底盘整体的速度求解各个轮子的速度。逆向运动学计算就比较简单了,直接由式(6-4)做矩阵求逆运算,就能得到,如式(6-5)所示。

3.轮式里程计

机器人主机向底盘发送运动控制量v_{x}\omega _{z},经过逆向运动学公式(6-5)解算就可以得到底盘中每个轮子应该运行的目标速度,通过电机控制主板的PID算法实现每个轮子转速控制,关于轮子转速控制的详细过程,请参考4.4.3节的内容。

底盘在运动过程中,通过轮式编码器可以反馈每个轮子的转速,经过前向运动学公式(6-4)解算就可以得到底盘的整体速度v_{x}\omega _{z}了。而利用这个反馈速度v_{x}\omega _{z} ,就可以由前一时刻底盘的位姿P_{k-1}推算出当前时刻底盘的位姿P_{k},这个推算过程也叫航迹推演算法,由于底盘不是严格的质点,所以底盘的位姿代表的是底盘速度瞬心在世界坐标系的位姿。

利用轮式编码器反馈,经过航迹推演算法,得到底盘当前时刻位姿,整个过程就是机器人中常说的轮式里程计。如图4-70所示,底盘ROS驱动将里程计信息发布在话题/odom,并从话题/cmd_vel订阅速度控制信息。

很多初学者常常将轮式里程计与编码器、电机控制主板、底盘等概念混为一谈,所以需要特别注意。可以看出,轮式里程计其实是编码器、底盘运动学模型、航迹推演算法等综合出来的产物。也就是说,轮式里程计并不是某种传感器,而是利用轮式编码器计算底盘位姿的一种算法。

下面具体分析一下轮式里程计的解算过程,如图6-3所示。在机器人学中,通常采用右手坐标系,底盘的正前方为x轴正方向、底盘的正上方为z轴正方向、底盘的正左方向为y轴正方向、航向角\theta以x轴为0度角并逆时针方向增大。一般以底盘上电时刻,底盘的位姿处建立里程计坐标系(odom),随时间推移底盘的实时位姿P_{0}P_{1}P_{2}P_{3}、...、P_{n}连接起来就形成了底盘的航行轨迹。同时,底盘自身的坐标系(robot)建立在其速度瞬心处。

图6-3  两轮差速里程计

其实,建立起robot坐标系中的 v_{x}\omega _{z}速度量与odom坐标系中的底盘位姿P_{k}之间的关系,就能解算出轮式里程计。在二维平面中移动的底盘,可以用P=[X,Y,\theta ]^{T}表示底盘的坐标和航向,即底盘的位姿,那么位姿P满足式(6-6)所示的微分方程。

\dot{P}在时间t上做积分,就可以求出底盘实时的位姿,也就是里程计信息。实际情况下,需要在离散时间域上做计算,由于底盘相邻两位姿相隔时间\Delta t很小,积分运算可以用式(6-7)的累加运算来替代。

由于里程计提供底盘在odom坐标系中的位姿,而odom坐标系跟底盘上电启动时所处的地方有关,也就是说里程计中的底盘位姿是一个相对值。另外,里程计随时间的推移存在较大的累积误差,所以一般都是取不同时刻之间的里程计差值应用于其他算法之中。由于轮式里程计只能提供底盘的局部位姿,并且存在较大累积误差,所以还需要结合后面章节中的地图及SLAM重定位技术来获取全局位姿。

由式(6-1)、式(6-4)、式(6-6)和式(6-7)得知里程计值跟轮子的半径R和左右轮的轴距d有关系。由于制造安装误差的存在,参数Rd会存在一定的偏差。为了减小底盘固有参数Rd对里程计精度的影响,在首次使用底盘前需要对里程计进行标定。最常用到的标定方法是试探法,比如设定1米的直线距离,通过观察底盘实际行走直线的距离与设定距离的偏差,手动调整参数R,直到底盘直线行走的距离与设定距离吻合;参数d的标定也是类似的,比如设定360°转动角,通过观察底盘实际自转转过的角度与设定角度的偏差,手动调整参数d,直达转动角度与设定角度吻合。

6.1.2 四轮差速模型

 四轮差速模型跟两轮差速模型非常相似,并且在载重能力和越野性能上比两轮差速模型更有优势。跟两轮差速底盘一样,四轮差速底盘也是靠左右两边轮子的转速差实现转弯,只不过每一边都是两个轮子,同一边的两个轮子的转速是完全一样的,即前轮和后轮的速度是同步的,因此也把四轮差速模型称为同步驱动模型。实现前轮与后轮速度同步的方式主要有3种,分别是履带连接方式链条连接方式电控方式。履带连接方式中,是直接将前轮和后轮用履带做连接,在机械上实现前后轮速度同步,如图6-4a所示;链条连接方式中,是用链条将前轮和后轮的输出轴连接在一起,也是在机械上实现前后轮速度同步,如图6-4b所示;在玩具和简易底盘等低成本场合,为了避免设计复杂的机械结构,常常使用4个独立的电机控制4个轮子,并通过控制主板实现前轮和后轮的速度同步,这就是电控方式,如图6-4c所示。

图6-4  四轮差速模型

如图6-4a所示的履带底盘,因接触地面面积的增大而具有很好的越野性能。同时也有很大的弊端,比如履带底盘原地自转时,常常认为履带上前轮和后轮连线中点位置处为等效的接地点,这样就可以将底盘模型等效为两轮差速模型来处理。显然这种简单的等效是不靠谱的,比如当地面存在稍微的起伏时,履带与地面的接触点可能出现在任何位置,这样就会造成底盘的前向运动学和逆向运动学失效。因此在对轮式里程计精度要求较高的应用场景,很少选用履带底盘,而是非履带底盘。

如图6-4b和图6-4c所示的四轮底盘,是各个轮子单点接触地面,所以轮式里程计精度比履带底盘中的要高。在有些对底盘控制和里程计精度要求不是特别高的场合,也常常将这种四轮底盘简单等效为两轮差速模型来处理。等效的条件是轮子不发生侧向滑动,如图6-5所示,当底盘的长宽比\frac{b}{a}足够大时,也就是前、后轮距离很近,左、右轮距离很远,底盘自转时才会足够孙畅,保证轮子不发生侧向滑动。

图6-5  四轮差速模型简单等效

在实际情况中,不可能把底盘设计成长宽比很大的样子,也就是说上面的等效条件很难满足。也就是说在实际的四轮差速模型中,转弯的时候轮子会存在侧向滑动。为了得到更高精度的里程计,就需要在四轮差速模型的侧向滑动情况下,对其前向运动学、逆向运动学和轮式里程计进行讨论。

1.前向运动学

(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)

2.逆向运动学

(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)

 3.轮式里程计

(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)

4.轨迹跟踪问题

(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)

6.1.3 阿克曼模型

 四轮差速底盘具有很好的载重和越野性能,但缺点是转弯时轮子会发生一定程度的侧向滑动。虽然在侧向滑动不明显的情况下,可以用两轮差速模型来等效。无论如何,这种侧向滑动让底盘控制稳定性、里程计解算、轨迹跟踪等问题变得更加复杂。阿克曼底盘通过前轮的机械转向,让底盘中的4个轮子在基本不发生侧向滑动的情况下能顺畅的转弯。不过也有缺点,阿克曼底盘不能原地旋转,也就是最小转弯半径不为0,想像一下汽车在狭小的地方倒车入库场景就不难理解了,车辆需要反复左右调整方向盘才能将车停入指定车位。

在直线行驶时,4个车轮的轴线互相平行。在进行转弯时,需要让4个车轮只沿车轮切线方向前进而不发生侧移,以避免侧移给车轮带来的巨大磨损。即4个轮子转弯弧线必须处于共同的圆心ICR之上,这个时候前轮内侧转向角\delta _{in}会大于外侧转向角\delta _{out}。在阿克曼转向几何中,利用梯形四连杆的相等曲柄控制前轮的转向,实现\delta _{in}\delta _{out}需要的约束关系,避免车轮发生侧移,让4个车轮能顺畅地转弯,如图6-7所示。

图6-7  阿克曼转向几何

从图6-7a可以知道,转向机构是ABCD四连杆结构,A和B分别为左、右轮的销点,C和D为曲柄的连接点,曲柄AD和BC是等长的,E是后轮中轴点,在前轮转向角为0时,C、D位于ABE等腰三角形的两腰等位点上,这就是阿克曼转向梯形结构。关于阿克曼转向梯形结构如何实现 \delta _{in}\delta _{out}约束的数学原理证明,在机械原理和汽车结构研究领域已经有大量的文献可考,这里就不再赘述了,大家只需要记住阿克曼转向梯形结构设计的结论就行了。

值得注意的是,在实际应用中阿克曼有多种变种结构,如图6-8所示。

图6-8  几种常见阿克曼结构

当车辆低速行驶转弯时,轮胎受到的侧向摩擦力很小可以认为是0,这时候适合采用图6-8a所示的转向结构,其中的\delta _{in}大于\delta _{out},也称理想阿克曼结构;当高速过弯时,轮胎受到的侧向摩擦力就不能忽略了,由于内轮转向角更大,内轮也就更容易发生侧滑,这就需要适当减小内轮转向角与外轮转向角的差值,避免内轮侧滑,这时候适合采用图6-8b所示的转向结构,其中的\delta _{in}等于\delta _{out},也称平行阿克曼结构;在赛车等特殊场合,需要车辆具有极致的过弯性能,尽量缩短过弯时间以赢得比赛,这时候就需要增大外轮的侧向摩擦力,以提供更大的向心力让车辆在更小的转弯半径上完成转弯,这时候适合采用图6-8c所示的转向结构,其中的 \delta _{in}小于\delta _{out},也称反阿克曼结构。家用汽车转弯介于低速和高速之间,其转向结构介于理想阿克曼结构和平行阿克曼结构之间。而机器人运动速度相比于汽车就慢得多了,其转向结构一般都是理想阿克曼结构,因此下面的讨论将围绕理想阿克曼结构展开。

按照驱动方式的不同,阿克曼底盘又分为前驱、后驱和四驱。前驱就是利用前轮提供动力来驱动底盘运动,由于在转弯过程中,左前驱动轮和右前驱动轮的转速是不一样的,还需要用差速器将发动机输出的动力按不同的比例分配给两个驱动轮,如图6-9a所示;后驱就是利用后轮提供动力来驱动底盘运动,同样由于在转弯过程中,左后驱动轮和右后驱动轮的转速是不一样的,需要用差速器将发动机输出的动力按不同的比例分配给两个驱动轮,如图6-9b所示;四驱就是4个轮子都提供动力驱动底盘运动,除了前轮轴上的差速器和后来轴上的差速器,还需要中央差速器来解决前轮和后来转速不同的问题,如图6-9c所示。

图6-9  阿克曼底盘的驱动方式

采用不同的驱动方式,其对应的前向运动学、逆向运动学和里程计解算也将不同。由于前驱中,阿克曼转向结构和差速器都分布在前轮,设计上变得更复杂,所以在机器人中一般选择在结构设计上更加简单的后驱方式。

在汽车中,差速器是一种特殊的齿轮组结构,能根据转弯时左、右轮受到地面侧向摩擦力大小上的差别,自动将发动机输出的转速按照相应的比例分配到左、右轮上,并且发动机输出的转速M与左轮转速(ML)、右轮转速(MR)始终保持2*M=ML+MR的关系,如图6-10所示。

图6-10  通用差速器结构

考虑到差速器复杂的齿轮结构设计,在机器人底盘中,通常采用两个独立的电机驱动左右轮,并配合电机驱动板调速程序来替代纯机械式的差速器,控制前轮转向的阿克曼结构由舵机带动来实现转向,如图6-11所示。因此下面的前向运动学、逆向运动学和里程计相关内容,将在这种简易阿克曼后驱底盘中展开讲解。

图6-11  简易阿克曼后驱底盘

1.前向运动学

(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)

2.逆向运动学

(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)

3.轮式里程计

(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)

4.轨迹跟踪问题

(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)

6.1.4 全向模型

为了引出本节的全向底盘,我们需要先对底盘的自由度进行一下讨论。在二维平面上运动的底盘,可以用速度向量[v_{x},v_{y},\omega _{z}]来表示底盘的运动,v_{x}v_{y}是底盘线速度在x和y两个坐标轴方向的分量,\omega _{z}是底盘绕z轴在平面旋转的角速度。如果速度向量[v_{x},v_{y},\omega _{z}]中的三个分量之间的取值相互独立,这样的底盘运动速度不受约束,也称为不受约束底盘。在两轮差速或四轮差速底盘中,v_{x}\omega _{z}都由左、右轮速度V_{L}V_{R}计算,如式(6-4)所示,由于V_{L}V_{R}的取值是相互独立的,以 V_{L}V_{R}作为向量的基,那么v_{x}\omega _{z}点乘结果为0,也就是说 v_{x}\omega _{z}在向量基V_{L}V_{R}中是正交的,即v_{x}\omega _{z}是相互独立的。不过由于两轮差速或四轮差速底盘无法朝轮子的轴方向运动,即速度分量v_{y}始终为0,这样的底盘运动速度就受到了约束,也称为受约束底盘。在阿克曼底盘中,除了速度分量v_{y}始终为0的约束外,由于底盘最小转弯半径R_{min}不为0,那么还受到约束\frac{v_{x}}{\omega _{z}}=R,\left | R \right |\in [R_{min},+\infty )的限制,也称为受约束底盘。为了更直观地说明,将速度向量[v_{x},v_{y},\omega _{z}]的可能取值在三维空间中表示出来,如图6-14所示。

图6-14  速度向量约束

底盘的速度受到约束的原因是普通轮子不能侧向移动,只有切向移动一个自由度。如果把轮子换成包含切向和侧向两个自由度的轮子,底盘速度就不受约束,也就成了全向底盘。在业界,把这种具有两个自由度的轮子称为麦克纳姆轮,其结构是在轮表面装上滚柱,依据滚柱的不同安装方式,麦克纳姆轮又分为不同的型号。以45°方向安装滚柱的麦克纳姆轮是最常见的型号,如图6-15所示。不过由于45°安装的滚柱之间存在缝隙,轮表面截面其实是多边形,而不是理想的圆形,这就导致轮子转动过程中会上下振动。因此,这种轮子必须加装悬挂系统。

图6-15  滚柱45°型麦克纳姆轮

为了避免由于滚柱之间的缝隙而导致轮子转动过程中上下振动的问题,可以将滚柱以90°方向安装,如图6-16所示。如图6-16a所示,以90°方向安装的滚柱并排交替排列,这样轮子在转动过程中,轮轴心与地面的高度就是恒定值,就不会发生振动了。不过由于滚柱是并排交替安装的,导致轮表面接地点并不固定,在地面上走出的轨迹是矩形波形状。而轮式里程计的解算,假定左、右轮轴距d是常数,即轮表面的接地点为固定点。为了让轮表面的接地点为固定点,需要将滚柱安装在同一排面上,如图6-16b所示。这种轮子的滚柱是一大一小交叉排列的,这种轮子不可能设计的太小,安装制造也比较复杂,价格不菲。

图6-16  滚柱90°型麦克纳姆轮

将4个滚柱45°型麦克纳姆轮平行安装在底盘中,当4个轮子电机锁死时,底盘可以自锁在原地不动,如图6-17a所示。而将4个滚柱90°型麦克纳姆轮平行安装在底盘中,就无法让底盘自锁在原地不动了,当所有电机锁死时,底盘横向是可以被推动了,如果底盘停止在斜坡上,底盘会往下滑动。因此滚柱90°型麦克纳姆轮必须要成一定角度排列,如图6-17b所示。也可以按图6-17c所示排列,能少使用一个电机。

图6-17  全向底盘

图6-17b和6-17c所示底盘,无论底盘朝哪个方向移动,必定有轮子是按照非切线方向移动的,这样使得电机的动力转化效率无法发挥出来,底盘的移动速度大打折扣。因此,推荐使用图6-17a所示的全向底盘,下面就以这种全向底盘为例,对前向运动学、逆向运动学和里程计来展开讲解。

 1.前向运动学

(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)

2.逆向运动学

(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)

3.轮式里程计

(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)

6.1.5 其他模型

(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)

源码仓库

  • Github下载:github.com/xiihoo/Books_Robot_SLAM_Navigation

  • Gitee下载(国内访问速度快):gitee.com/xiihoo-robot/Books_Robot_SLAM_Navigation

参考文献

【1】 张虎,机器人SLAM导航核心技术与实战[M]. 机械工业出版社,2022.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一起自学SLAM算法:6.1 底盘运动学模型 的相关文章

  • [野火]《FreeRTOS内核实现与应用开发实战指南》视频

    野火 FreeRTOS内核实现与应用开发实战指南 哔哩哔哩 bilibili 1 正点原子 FreeRTOS 视频教程 正点原子 FreeRTOS 视频教程 哔哩哔哩 bilibili 2 正点原子FreeRTOS手把手教学 基于STM32
  • FlinkSQL CDC实现同步oracle数据到mysql

    环境准备 1 flink 1 13 0 2 oracle 11g 3 flink connector oracle cdc 2 1 0 1 oracle环境配置 首先需要安装oracle环境 xff0c 参考 https blog csdn
  • MySQL窗口函数OVER()

    下面的讲解将基于这个employee2表 mysql gt SELECT FROM employee2 43 43 43 43 43 43 id name age salary dept id 43 43 43 43 43 43 3 小肖
  • ubuntu安装mysql详细过程

    1 安装mysql server sudo apt install mysql server 2 登录 sudo mysql u root p 两点要注意 添加sudo password中 任意密码都能登录 3 修改登录密码 ALTER U
  • 修改docker容器端口映射的方法

    大家都知道docker run可以指定端口映射 xff0c 但是容器一旦生成 xff0c 就没有一个命令可以直接修改 通常间接的办法是 xff0c 保存镜像 xff0c 再创建一个新的容器 xff0c 在创建时指定新的端口映射 有没有办法不
  • 【操作系统入门到成神系列 五】CPU 是如何执行任务的

    作者简介 xff1a 大家好 xff0c 我是 xff0c 独角兽企业的Java开发工程师 xff0c Java领域新星创作者 个人公众号 xff1a xff08 回复 技术书籍 可获千本电子书籍 xff09 系列专栏 xff1a Java
  • 群晖docker镜像源更换为阿里云镜像源

    群晖硬件 xff1a DS218 43 系统版本 xff1a DSM 7 0 41890 docker版本 xff1a 20 10 3 1233 前言 xff1a 除了群晖自带的应用之外 xff0c docker里也拥有及其丰富的软件 xf
  • 学好Windows编程要看的书籍

    本文是接着前面的学好C 43 43 要阅读的书籍而写的 xff0c 如果想了解C 43 43 的学习的话请先看学好C 43 43 要阅读的书籍 xff1a http blog csdn net a809146548 article deta
  • Git分支与标签(干货!!!)

    目录 一 Git分支 分支的概念 xff1a 分支的类别 xff1a 分支策略 xff1a 分支命令 xff1a git操作之pull拉取远程指定分支以及push推送到远程指定分支 xff1a 1 pull操作 2 push操作 二 Tag
  • 单片机结构及一些寄存器

    SCM 将通用微计算机基本功能部件集成在一块芯片上构成的一种专用微计算机系统 SCM 61 CPU 43 OSC 43 ROM 43 RAM 43 T C 43 INT 43 BEC 43 I O 43 UART CPU 中央处理器 OSC
  • Git Gui

    目录 1 什么是Git Gui 2 什么是ssh key 3 git github生成密钥并通过 第一步 xff1a 本地电脑配置 1 配置用户名和邮箱 xff08 如果已经配置 xff0c 就跳过 xff09 2 检查下自己之前有没有已经
  • 韦东山百问网freeRTOS教程

    欢迎阅读韦东山百问网freeRTOS教程 xff01 韦东山百问网freeRTOS教程 文档 100ask net
  • 金三银四跳槽季,Linux面试题放送

    进入金三银四 xff0c 很多小伙伴有被动跳槽的打算 xff0c 所以更新一些Linux面试题 xff0c 希望能帮到大家 xff01 一 你之前在公司使用linux命令做什么 我们公司之前测试系统搭建在linux上 xff0c 使用lin
  • 【软件测试】简历中的项目经历可以怎么写?

    工作这10多年来 xff0c 也经常做招聘的工作 xff0c 面试过的人超过50人次了 xff0c 而看过的候选人的简历则有几百份了 xff0c 但是清晰且能突出重点的简历 xff0c 确实很少遇到 这里基本可以说明一个问题 xff0c 很
  • 一名高级的Javaer,应该了解的 MYSQL 高级知识点

    SQL查询流程 1 通过客户端 服务器通信协议与 MySQL 建立连接2 查询缓存 xff0c 这是 MySQL 的一个可优化查询的地方 xff0c 如果开启了 Query Cache 且在查询缓存过程中查 询到完全相同的 SQL 语句 x
  • 激光slam基础入门笔记2——位姿表示与变换矩阵

    前言 xff1a 初步了解位置与位姿 xff1a 参考链接 xff1a 机器人学 1 0 位置与姿态概述 已注销 的博客 CSDN博客 位置和姿态 二维空间位姿表示与变换矩阵推导 xff1a 参考链接 xff1a 机器人学 1 1 二维空间
  • 【githubgirl】自主导航无人机的硬件组成与搭建方案

    不久前 xff0c 浙江大学 FASTLAB 实验室 xff0c 在 GitHub 上开源了一套自主导航无人机的硬件组成与搭建方案 xff1a Fast Drone 250 该项目可应用于无人机在未知环境中的自主飞行 xff0c 集群飞行等
  • React路由传参的几种方式

    react路由传值有三种方式 xff1a 1 props params 方法 xff0c 该方法可以传递一个或多个值 xff0c 但是每个值的类型都是字符串 xff0c 没法传递一个对象 xff1b 2 query方法 xff0c 该方法类
  • 文章五:Python 网络爬虫实战:使用 Beautiful Soup 和 Requests 抓取网页数据

    一 简介 本篇文章将介绍如何使用 Python 编写一个简单的网络爬虫 xff0c 从网页中提取有用的数据 我们将通过以下几个部分展开本文的内容 xff1a 网络爬虫的基本概念Beautiful Soup 和 Requests 库简介选择一
  • 无人机目标检测:使用YOLOv4在VisDrone数据集上进行目标检测任务

    在本篇博客中 我们将探讨如何使用YOLOv4在VisDrone数据集上进行无人机目标检测任务 目标检测是计算机视觉中的一个重要任务 可以用于自动驾驶汽车 无人机监测和视频分析等多种应用 YOLOv4是一种实时目标检测算法 以其速度和准确性而

随机推荐

  • rospy的publisher和init_node

    文章目录 1 xff0c class Publiser xff08 发布者 xff09 2 rospy init node 初始化节点 1 xff0c class Publiser xff08 发布者 xff09 废话不多说 xff0c 先
  • ros功能包

    使用ROS的功能包使用以下常见的机器视觉应用 1 xff09 摄像头标定 xff1a 摄像头本身存在光学畸变 xff0c 可以使用camera calibration功能包实现双目和单目摄像头的标定 2 xff09 基于opencv的人脸识
  • 如何彻底关闭Win10自动更新,Win10永久关闭自动更新的方法

    如何彻底关闭Win10自动更新 xff1f Win10自动更新的问题是很多用户都遇到的问题 xff0c 很多时候我们关闭了自动更新 xff0c 过一段时间系统又自动更新了 xff0c 由于win10自动更新非常顽固 xff0c 所以我们要从
  • 函数模板及库函数

    函数模板 xff08 function template xff09 是一个独立于类型的函数 xff0c 可作为一种模式 xff0c 产生函数的特定类型版本 使用函数模板可以设计通用型的函数 xff0c 这些函数与类型无关并且只在需要时自动
  • Vmware虚拟机Ubuntu的ssh远程登陆--笔记

    SSH远程登录 apt更新网路更新ssh配置了解的部分 SecureCRTPortable登陆 apt更新 版本号 xff1a Ubuntu 16 04 环境 xff1a Vmware 17 2 网路 首先 xff0c 先检查网络是否畅通
  • Docker的常用命令

    一 Docker中几个重要的概念 镜像 和容器 是docker中两个非常重要的 概念 镜像 xff08 Image xff09 xff1a Docker 将应用程序及其所需的依赖 函数库 环境 配置等文件打包在一起 xff0c 称为镜像 容
  • Linux-C语言编写-UDP服务器客户端通信流程简介(代码)

    目录 一 xff0c 服务器 1 创建数据报套接字 2 填充结构体 3 绑定服务器的ip和端口 4 接收来自客户端的消息 recvfrom 5 关闭套接字 6 详细代码 二 xff0c 客户端 1 创建数据报套接字 2 填充结构体 xff0
  • C++三阶贝塞尔曲线

    文章目录 1 贝塞尔曲线2 示意图3 c 43 43 代码实现 1 贝塞尔曲线 贝塞尔曲线阶数等于控制点个数n 1将控制点首尾相连并且取每段连线上一点P xff0c 再将每个线段上的P点连接设第一个控制点为P1 xff0c 第二个为P2 x
  • Ubuntu 图达通激光雷达可视化/获取点云

    文章目录 0 ILA 平台网页预览1 Ubuntu的安装2 安装Ubuntu对应版本ros3 激光雷达接线4 解压SDK文件5 启动ros可视化点云6 录制点云7 播放录制文件8 rosbag文件 gt pcd文件 0 ILA 平台网页预览
  • Python的while循环

    目录 一 计数器 二 while循环使用 三 不同循环的使用环境判断 xff1a 四 while循环使用break和continue 五 while的嵌套使用 一 计数器 计数器 xff0c 是一个叫法 xff0c 代表的是一个功能 用于记
  • 字符串结束符

    在C语言中 xff0c 存储一个字符串通常用一个char 数组 在C语言中 xff0c 为了方便存储 xff0c 要求在最后一个字符的后面存储一个0 xff08 一个字节 xff09 这个0称为 字符串结束符 xff0c 常用 0 表示 在
  • 一起自学SLAM算法:1.1 ROS简介

    连载文章 xff0c 长期更新 xff0c 欢迎关注 xff1a 写在前面 第1章 ROS入门必备知识 1 1 ROS简介 1 2 ROS开发环境搭建 1 3 ROS系统架构 1 4 ROS调试工具 1 5 ROS节点通信 1 6 ROS其
  • 一起自学SLAM算法:1.2 ROS开发环境搭建

    连载文章 xff0c 长期更新 xff0c 欢迎关注 xff1a 写在前面 第1章 ROS入门必备知识 1 1 ROS简介 1 2 ROS开发环境搭建 1 3 ROS系统架构 1 4 ROS调试工具 1 5 ROS节点通信 1 6 ROS其
  • 戴尔电脑恢复系统后,D盘被加密Bitlocker,要求输入48位密钥,才能打开D盘---解决过程

    一 前言 今天DELL电脑恢复系统后 xff0c D盘被加密 xff08 D盘图标上有一把黄色的锁 xff09 xff0c 鼠标双击准备打开D盘 xff0c 提示了一个密钥ID xff0c 让输入48位码解密 xff0c 被microsof
  • 一起自学SLAM算法:1.4 ROS调试工具

    连载文章 xff0c 长期更新 xff0c 欢迎关注 xff1a 写在前面 第1章 ROS入门必备知识 1 1 ROS简介 1 2 ROS开发环境搭建 1 3 ROS系统架构 1 4 ROS调试工具 1 5 ROS节点通信 1 6 ROS其
  • 一起自学SLAM算法:1.5 ROS节点通信

    连载文章 xff0c 长期更新 xff0c 欢迎关注 xff1a 写在前面 第1章 ROS入门必备知识 1 1 ROS简介 1 2 ROS开发环境搭建 1 3 ROS系统架构 1 4 ROS调试工具 1 5 ROS节点通信 1 6 ROS其
  • 一起自学SLAM算法:3.4 图像特征点提取

    连载文章 xff0c 长期更新 xff0c 欢迎关注 xff1a 写在前面 第1章 ROS入门必备知识 第2章 C 43 43 编程范式 第3章 OpenCV图像处理 3 1 认识图像数据 3 2 图像滤波 3 3 图像变换 3 4 图像特
  • 一起自学SLAM算法:第4章-机器人传感器

    连载文章 xff0c 长期更新 xff0c 欢迎关注 xff1a 写在前面 第1章 ROS入门必备知识 第2章 C 43 43 编程范式 第3章 OpenCV图像处理 第4章 机器人传感器 4 1 惯性测量单元 4 2 激光雷达 4 3 相
  • 一起自学SLAM算法:5.4 ARM主机Jetson-tx2

    连载文章 xff0c 长期更新 xff0c 欢迎关注 xff1a 写在前面 第1章 ROS入门必备知识 第2章 C 43 43 编程范式 第3章 OpenCV图像处理 第4章 机器人传感器 第5章 机器人主机 5 1 X86与ARM主机对比
  • 一起自学SLAM算法:6.1 底盘运动学模型

    连载文章 xff0c 长期更新 xff0c 欢迎关注 xff1a 写在前面 第1章 ROS入门必备知识 第2章 C 43 43 编程范式 第3章 OpenCV图像处理 第4章 机器人传感器 第5章 机器人主机 第6章 机器人底盘 6 1 底