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字段。

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...