航迹推演(Odometry)

article/2025/7/22 21:09:52

  做机器人底层程序的时候,经常用到航迹推演(Odometry),无论是定位导航还是普通的方向控制。航迹推演中除了对机器人位姿进行估计,另一个很重要的关系是移动机器人前进速度、转向角速度与左轮速度、右轮速度之间的转换。

  在机器人局部路径规划算法DWA解析一文中,是在假设已知机器人前进线速度和角速度的情况下,对机器人航迹推演的位姿进行推导了,然而缺少如何通过左右轮速度得到,因此本文将补上这个空缺。

  下图是移动机器人在两个相邻时刻的位姿,其中是两相邻时刻移动机器人绕圆弧运动的角度,是两相邻时刻移动机器航向角(朝向角head)的变化量。是左右轮之间的间距,是右轮比左轮多走的距离。是移动机器人圆弧运动的半径。

  

  移动机器人前进速度等于左右轮速度的平均,这个好理解。

         (1)

  现在来推导机器人航向角如何计算,以及如何计算角速度。如图所示,把两个时刻的机器人位置叠加在一起,可以清楚的看到移动机器人航向角变化量是。从图中的几何关系可以得到:

     

也就是说移动机器人航向角变化了多少角度,它就绕其运动轨迹的圆心旋转了多少角度。这句话很好验证,我们让机器人做圆周运动,从起点出发绕圆心一圈回到起点处,在这过程中机器人累计的航向角为360度,同时它也确实绕轨迹圆心运动了360度,说明机器人航向角变化多少度,就绕圆心旋转了多少度。而这三个角度中,很容易计算出来,由于相邻时刻时间很短,角度变化量很小,有下面的近似公式:

    

所以可以得到机器人绕圆心运动的角速度,它也是机器人航向角变化的速度:

        (2)

线速度、角速度都有了,因此可以推出移动机器人圆弧运动的半径:

       (3)

从公式(3)可以发现当左轮速度等于右轮速度时,半径无穷大,即直线运动。最后将三个公式综合起来,可以得到左右轮速度和线速度角速度之间的关系如下,:

   



(转载请注明作者和出处:http://blog.csdn.net/heyijia0327 未经允许请勿用于商业用途)






http://chatgpt.dhexx.cn/article/A3dWs6xy.shtml

相关文章

大数据基础编程+实验

本文仅用于分析和记录在校期间学习大数据分析课程的一点心得体会。 1、Ubuntu系统的安装和使用 本文采用Ubuntu16.04系统,安装系统省略,选择镜像后一直点击下一步 1.1 进入系统后,调整输入法,将输入法切换至中英文切换 1.2为…

Python数据库编程pymysql

Python数据库编程pymysql 一、数据库编程介绍 数据库编程就是针对数据库的操作,通过编写程序的方式,让程序做为数据库的客户端进行数据库操作。 对于MySQL的操作我们可以通过SQL语句,但是有很多情况下我们需要写入MySQL的数据非常多&#…

过程化SQL数据库编程

一、过程化SQL的块结构 基本的SQL是高度非过程化的语言。嵌入式SQL将SQL语句嵌入程序设计语言,借助高级语言的控制功能实现过程化。过程化SQL是对SQL的扩展,使其增加了过程化语句功能。 过程化SQL程序的基本结构是块。所有的过程化SQL程序都是由块组成的…

Java的数据库编程:JDBC

目录 一、JDBC是什么? 二、使用步骤 1.首先将JDBC的包引进java中 2.创建新的类来写代码 3.描述你的服务器 4.设置你的数据库地址,数据库用户名,数据库密码 5.连接数据库 6.书写你所要执行的SQL语句 7.把字符串风格的sql转化成一个对象 8.执行语句 9.回收资…

Python数据库编程

操作SQLite3数据库 从Python3.x版本开始,在标准库中已经内置了SQLlite3模块,它可以支持SQLite3数据库的访问和相关的数据库操作。在需要操作SQLite3数据库数据时,只须在程序中导入SQLite3模块即可。Python语言操作SQLite3数据库的基本流程如…

实验7 数据库编程

第1关 定义一个名为PROC_COUNT的无参数存储过程 任务描述 定义一个名为PROC_COUNT的无参数存储过程,查询工程名称中含有“厂”字的工程数量,并调用该存储过程。 相关知识 1、工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)…

C++数据库编程简介

C数据库编程简介 C数据库编程 ODBC简介 C数据库编程 ODBC连接SQL Server数据库 C数据库编程 ODBC插入数据 C数据库编程 ODBC查询数据 C数据库编程 ODBC删除数据 C数据库编程 ODBC修改数据 C数据库编程 ODBC连接MySQL增删改查数据 C数据库编程 MySQL Connecttor C简介 …

游戏设计模式——面向数据编程(转)

作者:KillerAery 出处:http://www.cnblogs.com/KillerAery/ 随着软件需求的日益复杂发展,远古时期面的向过程编程思想才渐渐萌生了面向对象编程思想。 当人们发现面向对象在应对高层软件的种种好处时,越来越沉醉于面向对象&…

数据科学必备Python编程基础

前言 对于Python复杂的编程语言中提取了数据分析常用的数据处理以及数据可视化等数据分析师常用的内容,区别与其他的Python编程教程,如果是纯开发的小伙伴,看完本系列的文章仅仅只能掌握数据相关处理的内容,并不能完全掌握开发方…

数据结构中的C语言编程基础

​ 在学习数据结构时,需要我们编写许多的程序,对于一些变量的定义、结构体的声明、指针的使用,需要有一个统一的标准,这样才能方便我们使用、并简化记忆难度。 ​ 本文结合自身的编程经验和高分笔记中对考研数据结构编程的一些建…

面向数据编程 Data-Oriented Programming [1]

RuntimeMapMaker3D-Pro 面向数据的编程原则 0.1 简介 面向数据的编程是一种编程范式,旨在简化以信息为中心的软件系统的设计和实施。而不是围绕着将数据和代码结合在一起的实体(如实例化的对象)来设计信息系统(例如,从…

ODBC API开发教程

ODBC API开发教程 作者:闻怡洋 未得到作者允许请勿转载 http://wyy.vchelp.net/ 目录 第 1 章 介绍... 2 第 2 章 ODBC API访问数据库... 2 2.1 ODBC简要介绍... 2 2.1.1 在没有ODBC以前... 2 2.1.2 ODBC介绍... 3 2.1.3 ODBC结构…

Microsoft Server 2008 空间存储 应用方法详解

2019独角兽企业重金招聘Python工程师标准>>> 刚接触2008的空间存储,资料比较少,在数据库操作中有很多不懂的地方,包括用法,语法等,经过同事的指点明白了一些,感谢大腿同事~这里只记录数据库操作…

ODBC 数据类型和API(VC)

目录 ODBC 数据类型API 函数 ODBC 数据类型 ODBC SQL 数据类型 展开显示 ODBC SQL 数据类型SQL类型标识SQL 92类型标识类型描述SQL_CHARCHAR(n)定长字符串,其长度为nSQL_VARCHARVARCHAR(n)变长字符串,最大长度为nSQL_LONGVARCHARLONG VARCHAR变长字符串,最大长度取决于数据源S…

Sql的decimal、float、double类型的区别

三者的区别介绍 float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位) double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E308(15个有效位) d…

【网络编程实践】2.3.4.2 建议关闭 Nagle 算法

Nagle算法主要是避免发送小的数据包,要求TCP连接上最多只能有一个未被确认的小分组,在该分组的确认到达之前不能发送其他的小分组。 Nagle算法的目的:避免发送大量的小包,网络上每次只能一个小包存在,在小包被确认之前…

Nagle算法与TCP_CORK,TCP_NODELAY,TCP_QUICKACK

1. Nagel算法 TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接收到数据,也需要发送ACK表示确认。为了尽可能的利用网络带宽,TCP总是希望尽可能的发送足够大的数据。(一…

如何关闭和启用Nagle算法

如果各位读者在搜索如何关闭的话,那么我有理由相信各位对想要解决的问题已经算是比较清楚了,废话不多数。 什么是nagle算法,它是干嘛用的,请自行google or 百度 Step1 Open regredit 快捷键:winr 打开&#xff1a…

19- TCP 协议(Nagle)

前面我们所用的 unp/protocol/tools/winclient/echo_cli.cpp 程序的特别之处是它总会发送一个小分组(TCP 段,只有 41 字节)到服务器。这样的小分组在英文中称为 tinygram,在网络状态好的情况下,比如局域网中&#xff0…

TCP Nagle算法详解

转: http://bbs.chinaunix.net/thread-3767363-1-1.html 在网络拥塞控制领域,我们知道有一个非常有名的算法叫做Nagle算法(Nagle algorithm),这是使用它的发明人John Nagle的名字来命名的,John Nagle在1984年首次用这个…