ROS2机器人编程简述humble-第三章-PERCEPTION AND ACTUATION MODELS .1
创始人
2024-05-16 05:54:55
0次

书中,第三章主题:

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.x和angular.z字段。

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...