我国在ros移动机器人中的应用现状

我国在ros移动机器人中的应用现状,第1张

我国在ROS(Robot Operating System)移动机器人领域的应用现状非常活跃。ROS是一种开源机器人 *** 作系统,能够为移动机器人提供诸如控制、导航、感知等方面的支持。

国内许多企业、研究机构和高校都在积极研发和应用ROS移动机器人技术。例如,清华大学TurtleBot小组使用ROS技术研发了一款名为"智能拖地机器人"的家庭服务机器人,并展示了其自主行走、定位、地图建立和任务执行等功能。此外,中国电子科技集团公司还研发了一款基于ROS的室内巡检机器人,可对设备进行远程监测和数据采集。

另外,从产业应用角度看,国内很多机器人厂家也在广泛应用ROS技术,包括上海双林机器人、深圳零点机器人、北京云适配等等。这些公司在物流、仓储、自动化生产线等领域中都使用ROS技术,以实现自主行走、路径规划、避障等功能。

总之,目前我国在ROS移动机器人领域已经取得了很多进展,在未来也将会有更多的应用场景涌现。

ROS节点程序运行过程中需要获取机器人的传感器信息和发送控制指令,因此不可避免要与机器人进行通信,常见的通讯方式有串口、CAN和网口等,其中串口最为普遍。

ROS通过自带的 serial 包连接串口设备,进行串口通信,需要提前安装 serial 包:

sudo apt-get install ros-melodic-serial

串口通信根据数据传输方向可以分为 串口发送 串口接收

通过串口发送数据时,需要明确发送机制,常见的发送机制有:

定时发送是通过设定定时器,以 固定频率 发送数据包;

触发条件发送是通过条件判断语句,判断某个标志位或某个事件发生后,再发送数据包,特点是 频率不固定

发送数据分为两个步骤:

由此可知buffer数据结构需要可同时被这两个步骤访问,buffer需要为全局变量。

首先根据通信协议定义buffer中的帧头、帧尾等固定内容,然后接收别的Topic,获取待发送数据,把获取的数据填入到协议的数据段,最后根据数据段计算校验码。

1 订阅发送数据的Topic

serial_sub = nhsubscribe("/joy", 10, &DecodeFrame::serial_sub_callback,this);

2 根据Topic填入数据段和校验

1 创建定时回调函数

首先需要创建一个定时器,设定发送频率,并指定回调函数名称

write_rs232_timer = nhcreateTimer(ros::Duration(001), &DecodeFrame::CB_write_rs232_Cycle, this);

2 通过 serial 将buffer数据写入串口设备

实例化串口对象,并打开串口

发送数据到串口设备上

注意1:发送数据节点挂掉

若发送数据Topic的节点挂掉后,由于buffer是全局变量,buffer的数据段会一直是上一帧的数据,不会再改变,为避免上述情况,在将数据写入串口设备后, 将数据段清零。

注意2:joystick包发送机制

在使用PS3/PS4、Xbox手柄时,使用ros-melodic-joy包获取摇杆数据,手柄的遥杆或者按键如果一直处于同一位置(初始零位和最大值)只会发送一帧数据,不会连续发送, 只有当摇杆数据变化时,才会发送数据。

因此使用 rostopic hz /joy 会显示没有msg信息传输,所以串口程序不会进回调函数获取发送数据,但是数值确实是一直保持的, 所以就不能将数据段清零。

触发条件发送与定时发送相比的最大不同之处在于发送频率不同,不需要设置定时器,在满足条件后直接将数据写入串口即可。

ros保存障碍物位置,内容如下:

RViz是ROS的三维可视化工具。它的主要目的是以三维方式显示ROS消息,可以将数据进行可视化表达。例如,可以无需编程就能表达激光测距仪(LRF)传感器中的传感器到障碍物的距离,RealSense、Kinect或Xtion等三维距离传感器的点云数据(PCD,PointCloudData),从相机获取的图像值等。

另外,利用用户指定的多边形(polygon)支持各种表现形式,交互标记(InteractiveMarkers)可以表达接收来自用户节点的命令和数据并互交的过程。在ROS中,机器人以URDF描述,它可以表示为三维模型,并且每个模型可以根据自由度进行移动或驱动,因此可以用于仿真或控制。

ROS的主要目标是为机器人研究和开发提供代码复用的支持。璞数技术介绍:ROS是一个分布式的进程(即“节点”)框架,这些进程被封装在易于被分享和发布的程序包和功能包中。ROS也支持一种类似于代码储存库的联合系统,这个系统也可以实现工程的协作及发布。可以使一个工程的开发和实现从文件系统到用户接口完全独立决策(不受ROS限制)。同时,所有的工程都可以被ROS的基础工具整合在一起。

ROS在某些程度上和其他常见的机器人架构有些相似之处,如:Player、Orocos、CARMEN、Orca和MicrosoftRoboticsStudio。对于简单的无机械手的移动平台来说,Player是非常不错的选择。ROS则不同,它被设计为适用于有机械臂和运动传感器的移动平台(倾角激光、云台、机械臂传感器)。与Player相比,ROS更有利于分布式计算环境。当然,Player提供了较多的硬件驱动程序,ROS则在高层架构上提供了更多的算法应用(如集成OpenCV的视觉算法)。

35 移动机器人系统模型

相信大家的机器人平台STM32端底层控制和机器人urdf建模都已经顺利完成了,在正式开始ros端编写机器人启动功能包之前,我们还不得不学习一些必要的理论知识。别担心数学不好,这里基本都是高中数学。下面我们开始,Are you ready? 没准备好也开始了。

351 常用坐标系系统模型

在移动机器人技术研究中,最为常用的坐标系统是笛卡尔坐标系统。而在SLAM算法研究中,有如下几个比较常见的笛卡尔坐标系统,它们分别为 机器人坐标系XR YR OR  、 传感器坐标系XS YS OS  、 世界坐标系XW YW OW  。顾名思义,世界坐标系是描述机器人全局信息的坐标系;机器人坐标系是描述机器人自身信息的坐标系;传感器坐标系是描述传感器信息的坐标系。他们之间的关系如下图所示:

从图中我们可以知道,首先世界坐标系是固定不变的,机器人坐标系和传感器坐标系是在世界坐标系下描述的。这里我们看到的是俯视图,机器人坐标系和传感器坐标系原点重合但是存在一定的角度,不同的机器人坐标系关系是不同的。当我们使用传感器数据时,这些坐标系间的关系就是我们变换矩阵的参数,因为传感器的数据必定是要变换到机器人坐标系或者世界坐标系中使用的。

352 移动机器人位姿模型

移动机器人的位姿模型就是机器人在世界坐标系下的状态。 常用随机变量Xt =(xt ,yt ,θt )来描述t时刻的机器人在世界坐标系下的状态,简称位姿 。其中(xt ,yt )表示的在t时刻机器人在世界坐标系下的位置,θt 表示机器人的方向。 默认世界坐标系的X正半轴为正方向,逆时针旋转为旋转正方向,初始时刻机器人坐标系和世界坐标系重合 。某时刻t机器人的位姿描述如下图所示:

353 移动机器人里程计模型

简单的说, 移动机器人的里程计就是机器人每时每刻在世界坐标系下位姿状态 。 常用的激光SLAM和导航算法通常都需要移动机器人的里程计作为控制输入 。这也是我们对本章理论内容讲解的必要性。

不同底盘的里程计模型有所不同,本文以两轮差分轮式机器人为例介绍里程计模型以及如何计算里程计。在介绍里程计模型之前,要先介绍差分轮式机器人的运动学模型,这样可以先了解一下机器人的物理特性。 首先明确差分模型的机器人始终做的是以R为半径的圆弧运动 。如下图所示,机器人的线速度V、角速度ω,左右轮速用VL和VR表示,用D表示轮间距,D=2d,右轮到旋转中心的距离为L。

ROS端给机器人底盘(STM32端)发送的是机器人要达到的线速度V和角速度ω,而我们底盘控制板需要的是左右轮速VL和VR来进行速度控制。所以,我们通过高中知识可以得到他们之间的关系:

上面的公式是由角速度和线速度的关系得来,如果不知道这个关系,那就自行百度吧,我相信你一定知道。 从这些公式我们是不是发现了什么,机器人的轮间距影响着我们向左右轮分发速度以及合成角速度,所以这是个我们需要注意的参数,不同的机器人结构,该参数就不同。

有了上面坐标系系统模型、位姿模型的基础,里程计就非常简单了。 里程计的计算是指以机器人上电时刻为世界坐标系的起点(机器人的航向角是世界坐标系X正方向)开始累积计算任意时刻机器人在世界坐标系下的位姿 。通常计算里程计方法是 速度积分推算 : ==通过左右电机的编码器测得机器人的左右轮的速度VL和VR,在一个短的时刻△t内,认为机器人是匀速运动,并且根据上一时刻机器人的航向角计算得出机器人在该时刻内世界坐标系上X和Y轴的增量,然后将增量进行累加处理,关于航向角θ采用的IMU的yaw值。然后根据以上描述即可得到机器人的里程计== 。具体计算如下图所示:

至此,里程计模型原理及计算就结束了。

354 2D激光雷观测模型

我们做移动机器人平台少不了使用2D激光雷达,所以了解激光雷达的观测模型也是有必要的。

激光雷达通常由精准控制的旋转电机、红外激光发射器、红外接收视觉系统和主控组成。

激光雷达的测距原理分为两种,一种是基于三角测距,另一个是基于TOF(飞行时间)。基于三角测距的激光雷达表现出的特点,价格便宜、中近距离测距较准确、远距离精度差。基于TOF的激光雷达表现出来的特点,价格昂贵、测距精度高、测距范围广、扫描频率高。

本文采用市面上比较便宜的基于三角测距的低成本激光雷达RPLIDAR A1。该激光雷达在每次测距过程中,发射器发射红外激光信号,视觉采集系统接收激光反射信号。在经过主控实时解算后,将激光雷达几何中心到被测物体的距离值以及当时的角度值,通过主控的通信接口发出。RPLIDAR A1 工作原理如图所示。

激光雷达在整个SLAM和导航中起着不可替代的作用。 第一,通过激光雷达观测数据与地图进行匹配,估计出机器人的位姿 ;第 二,当机器人估计出较准确的位姿时,通过激光雷达的观测数据建立环境地图 ; 第三,在机器人导航过程中,检测地图中的未知障碍物 。本文主要使用的观测传感器是2D激光雷达RPLIDAR A1如下图所示:

RPLIDAR A1是一款360度激光雷达,角度分辨率≤1,输出的每一个激光点的数据都是使用极坐标的方式描述,一个距离值以及一个对应的角度值。

以上就是关于我国在ros移动机器人中的应用现状全部的内容,包括:我国在ros移动机器人中的应用现状、ROS串口通信简析(一)——串口发送、ros保存障碍物位置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/9500713.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存