ROS2机器人编程简述humble-第三章-PERCEPTION AND ACTUATION MODELS .1

news/2024/11/29 9:00:16/

书中,第三章主题:

First Behavior: Avoiding Obstacles with Finite States Machines

本节旨在应用到现在为止所展示的一切来创建看似“聪明”的行为。这个练习将介绍的许多东西结合起来,并展示使用ROS2编程机器人的效率。此外,将解决机器人编程中的一些问题。凹凸(避开障碍物)行为使用机器人的传感器来检测机器人前方的附近障碍物。机器人向前移动,当它检测到障碍物时,它返回并转动一段固定的时间,再次向前移动。虽然这是一种简单的行为,但建议使用一些决策方法,因为代码即使很简单,在解决可能出现的问题时也会开始变得无序。在这种情况下,将使用有限状态机(FSM)。FSM是一种数学计算模型,可以使用它来定义机器人的行为。它由状态和过渡组成。机器人一直在一个状态下产生输出,直到满足输出转换的条件,并转换到该转换的目标状态。当实现简单行为时,应用FSM可以显著降低解决问题的复杂性。暂时,试着思考如何使用循环、if、临时变量、计数器和计时器来解决凹凸(避开障碍物)问题。要理解并遵循其逻辑,这将是一个复杂的程序。一旦完成,添加一些额外的条件可能会放弃已经做的事情,重新开始。将基于FSM的解决方案应用于凹凸(避开障碍物)问题很简单。想想机器人必须产生的不同输出(停止、前进、后退和转弯)。这些操作中的每一个都有自己的状态。现在考虑状态(连接和条件)之间的转换,获得如图所示的FSM。

3.1 PERCEPTION AND ACTUATION MODELS

3.1感知和驱动模型

线性速度应为m/s,旋转速度rad/s,线性加速度m/s2。

x向前增长,y向左增长,z向上增长。(图示红Y为Z)。角度定义为围绕轴的旋转。

感知:单线LaserScan

$ ros2 interface show /sensor msgs/msg/LaserScan
# Single scan from a planar laser range-finder
##
If you have another ranging device with different behavior (e.g. a sonar
# array), please find or create a different message, since applications
# will make fairly laser-specific assumptions about this data
std msgs/Header header # timestamp in the header is the acquisition time of
# the first ray in the scan.
##
in frame frame id, angles are measured around
# the positive Z axis (counterclockwise, if Z is up)
# with zero angle being forward along the x axis
float32 angle min # start angle of the scan [rad]
float32 angle max # end angle of the scan [rad]
float32 angle increment # angular distance between measurements [rad]
float32 time increment # time between measurements [seconds] - if your scanner
# is moving, this will be used in interpolating pos
# of 3d points
float32 scan time # time between scans [seconds]
float32 range min # minimum range value [m]
float32 range max # maximum range value [m]
float32[] ranges # range data [m]
# (Note: values < range min or > range max should be
# discarded)
float32[] intensities # intensity data [device-specific units]. If your
# device does not provide intensities, please leave
# the array empty.

angle min: -1.9198600053787231

angle max: 1.9198600053787231

驱动:左右轮

$ ros2 interface show geometry msgs/msg/Twist
Vector3 linear
Vector3 angular
$ ros2 interface show geometry msgs/msg/Vector3
float64 x
float64 y
float64 z

所有机器人都使用这种信息格式来接收速度,允许通用远程操作程序(包括键盘、操纵杆、手机等)和ROS中的导航。再次谈到标准化。

geometry msgs/msg/Twist消息比本章机器人支持的更通用。不能让它在Z方向移动(它不能飞),也不能只用两个轮子就横向移动。这是一个差动机器人。如果有一架四旋翼机,可能会做更多的平移和旋转。但本章只能让它向前或向后、旋转或两者结合。出于这个原因,只能使用linear.xangular.z字段。


http://www.ppmy.cn/news/18967.html

相关文章

Python爬虫之Scrapy框架系列(5)——项目实战【某瓣Top250电影所有信息的txt文本存储】

上篇文章已经成功解析提取到豆瓣Top250电影想要的所有数据。下一步就是将其交给管道进行存储。 目录&#xff1a;1. 编写items.py文件&#xff08;定义结构化数据字段&#xff09;2. 爬虫文件里将数据一一对应字段名&#xff1a;3. 将数据返回给管道&#xff1a;4. 编写pipelin…

acwing基础课——快速幂

由数据范围反推算法复杂度以及算法内容 - AcWing 常用代码模板4——数学知识 - AcWing 基本思想&#xff1a; 求一个数的n次时&#xff0c;我们的时间复杂度为O(n),当n特别大时&#xff0c;效率会很低可能超时&#xff0c;此时我们就需要运用到快速幂&#xff0c;将我们的时间…

JavaScript 输出

JavaScript 输出 很遗憾&#xff0c;在javascript中我们找不到输出和打印的函数。 但是我们可以使用其他的方式来显示需要的数据: 我们可以使用 console.log() 在浏览器控制台上面输出内容我们可以使用innerHTML 把内容写入到 HTML 元素。我们可以使用 document.write() 方法…

【进击的算法】基础算法——动态规划

&#x1f37f;本文主题&#xff1a;动态规划 &#x1f388;更多算法&#xff1a;回溯算法 &#x1f495;我的主页&#xff1a;蓝色学者的主页 文章目录一、前言二、概念2.1概念一&#xff1a;状态转移2.2概念二&#xff1a;Dp数组三、例题3.1斐波那契数列3.1.1题目描述3.1.2状态…

客快物流大数据项目(一百零七):物流信息查询服务接口开发解决方案

文章目录 物流信息查询服务接口开发解决方案 一、业务需求 二、系统架构演变 1、​​​​​​​集中式架构 2、​​​​​​​​​​​​​​垂直拆分 3、分布式服务 ​​​​​​​4、面向服务架构&#xff08;SOA&#xff09; 5、微服务架构 ​​​​​​​三、技术…

Tomcat启动的两个问题

文章目录小结问题及解决Address already in use: JVM_BindNo buffer space available &#xff0c;tomcat启动报错参考小结 Tomcat服务碰到两个常见的问题&#xff0c;进行了解决。 问题及解决 Address already in use: JVM_Bind 端口被占用的问题经常会碰到&#xff0c;最…

Allegro如何添加平衡铜操作指导

Allegro如何添加平衡铜操作指导 PCB在加工的时候,工厂会添加平衡铜,Allegro支持自动加上平衡铜,如下图 具体操作如下 选择Manufacture点击Thieving

官方正品 | Ultralytics YOLOv8算法来啦(尖端SOTA模型)

&#x1f680;&#x1f680;&#x1f680;卷王之王 | Ultralytics YOLOv8 算法来啦&#xff01;&#xff01;✨✨✨ 一、前言简介 &#x1f384;&#x1f388; &#x1f4da; 代码地址&#xff1a;卷王之王 | YOLOv8代码下载地址 &#x1f4da; 详细文档&#xff1a;https://…