怎样设计一款基于ROS的移动板滞人? | 硬创地下课

(记录 分享 龙8国际娱乐网站)的点点滴滴

近来几年种种移动板滞人末尾涌现出来,不论是轮式的还是履带式的,怎样让移动板滞人移动都是最中央的任务。要让板滞人实近况况感知、机器臂控制、导航方案等一系列服从,就需求操纵零碎的支持,而ROS便是最紧张的软件平台之一,它在科研范畴曾经有广泛的使用。

不过有关ROS的册本并未几,国际可供的学习社区就更少了。本期硬创地下课就带大家理解一下怎样使用ROS来设计移动板滞人。

分享高朋李金榜:EAI科技创始人兼CEO,毕业于北京理工大学,硕士学位。 曾在网易、雪球、腾讯技艺部有多年linux底层技艺研发经历。2015年结合创立EAI科技,担任SLAM算法研发及相干定位导航软件产品开辟。EAI科技,专注板滞人移动,提供耗费级高功能激光雷达、slam算法和板滞人移动平台。

移动板滞人的三个部分

所谓的智能移动, 是指板滞人能根据四周的情况变革,自主中央案道路、避障,抵达目标地。

板滞人是模仿人的种种举动,想象一下,人走动需求哪些器官的共同?  起首用眼睛察看四周情况,然后用脑去分析怎样走才干抵达目标地,接着用腿走过去, 循环往复,直到抵达目标地点为至。板滞人假如要完成智能移动,也需求眼、脑和腿这三部分的紧密共同。

“腿”是板滞人移动的根底。板滞人的“腿”不范围于类人或类植物的腿,也可以是轮子、履带等,能让板滞人移动起来的部件,都可以笼统地称为“腿”。  

类人的腿式长处是:既可以在宏大路况(比如爬楼梯)下移动、也可以更笼统地模仿人的办法(比如舞蹈),缺陷是:结会谈控制单位比较宏大、造价高、移动慢等。

以是大部分移动的板滞人都是轮式板滞人,其优势在于轮子设计复杂、本钱低、移动快。而轮式的也分为多种: 两轮均衡车、三轮、四轮和多轮等等。如今最经济适用的是两个主动轮+一个万向轮。

眼睛

板滞人的眼睛真实便是一个传感器。它的作用是察看四周的情况,合适做板滞人眼睛的有激光雷达、视觉(深度相机、单双相机)、帮手(超声波测距、红外测距)等。

“脑”

板滞人的大脑就担任接纳“眼睛”传输的数据,及时谋略出道路,指挥腿去移动。

真实便是要把看到的东西转换为数据言语。针对怎样描绘数据,怎样完成处理逻辑等一系列题目。 ROS零碎给我们提供一个很好的开辟框架。

ROS简介

ROS是树立在linux之上的操纵零碎。它的前身是斯坦福人工智能实行室为了支持斯坦福智能板滞人而树立项目,主要可以提供一些标准操纵零碎效力,比方硬件笼统,底层配置控制,常用服从完成,进程间音讯以及数据保证理。

ROS是基于一种图状架构,从而差别节点的进程能承受、发布、聚合种种信息(比方传感,控制,形状,方案等等)。如今ROS主要支持Ubuntu操纵零碎。

有人问ROS可否装到假造机里,普通来说是可以的,但是我们发起装个双零碎,用Ubuntu专门跑ROS。

实际上,ROS可以分红两层,低层是下面描绘的操纵零碎层,高层则是广大用户群贡献的完成差别服从的种种软件包,比方定位画图,举动方案,感知,模仿等等。ROS(低层)运用BSD答应证,统统是开源软件,并能免用度于研讨和贸易用途,而高层的用户提供的包则运用很多种差别的答应证。

用ROS完成板滞人的移动

关于二维空间,运用线速率 + 角速率可以完成轮式板滞的随意移动。

线速率:描绘板滞人前后移动的速率大小

角速率:描绘板滞人转动的角速率大小

以是控制板滞人移动主要是要把线速率角速率转换为左右轮的速率大小,然后,经过轮子直径和轮间距,可以把线速率和角速率转化为左轮和右轮的速率大小。

这里有一个关键题目便是编码器的选择和pid的调速。

编码器的选择:普通编码器和轮子是在一个轴上,如今来说,速率在0.7m/s以下的话,编码器选600键到1200键之间都ok。不过需求留意的是,编码器最好用双线的,A、B两线输入,A向和B向输入相差90度,如许可以防颤动。防颤动便是可以在之后里程谋略时可以更精确。

左轮和右轮的速率大小的控制,经过轮子编码器反应,经过PID及时调停电机的PMW来完成。及时谋略出小车的里程计(odom),失掉小车移动地位的变革。

谋略车的地位变革是经过编码器来谋略的,假如轮子打滑等情况,那么谋略的变革和实际的变革可以差别。要处理这个题目,真实是看那个题目更严峻。要走5米只走了4.9米紧张,还是要走180度只走了179度紧张。

真实角度的不精确对小车的影响更大。普通来说,小车的直线间隔精确度可以控制在厘米范畴内,在角度方面可以控制精准度在1%~2%。由于角度是比较紧张的参数,以是很多人就用陀螺仪来中断改正。

以是偶然分大家问小车精度有多高?真实如今如许曾经精度比较高了,不免打滑等题目,不行能做到百分之百的精准。

小车在间隔和角度方面做到如今如许关于自建舆图导航曾经是可以承受的,要进步更高的精度可以就要其他配置帮手,比如激光雷达来中断帮手,激光雷达可以中断二次检测中断改正。

激光雷达数据的存储款式,它起首会有一个大小范畴,假如高出范畴是有效的。另有便是有几个采样点,如许就可以激光雷达可以告诉你隔多少度有一个采样点。

别的最后那个Intensities是告诉大派系据的精确率,由于激光雷达也是取最高点的数据,是有一定的精确率的。下面的ppt真实便是用激光雷达扫了一个墙的外形。

激光雷达扫出一个静态外形真实没故意义,雷达建图的意义真实在于树立房间的舆图。

怎样绘制舆图?   

第一步是搜集眼睛数据: 

针对激光雷达,ROS在sensor_msgs 包中定义了公用了数据构造来存储激光音讯的相干信息,成为LaserScan。

它指定了激光的有效范畴、扫描点采样的角度及每个角度的丈量值。激光雷达360度及时扫描,能及时测出阻碍物的间隔、外形和及时变革。

第二步便是把眼睛看到的数据转化为舆图:

ROS的gmapping把激光雷达的/scan数据转换为栅格map数据,此中玄色代表阻碍物、白色代表空缺地区,可以顺利迟滞、灰色 :未知范畴。随着板滞人的移动,激光雷达可以在多个差别方位察看分歧个地位能否有阻碍物,假如存在阻碍物的阈值跨越设置值是,就标定此处是存在阻碍物;不然标定不存在阻碍物。 把阻碍物、空缺地区和未知范畴的尺寸用差别灰度表现出来,便是栅格舆图。便于下一步定位和导航。

偶然分会呈现很直的墙,板滞人却无法直着行走,这时的题目可以便是板滞人的轮子呈现打滑等其他题目,而走歪了,这时绘制出的舆图也可以是歪的。这种情况可以经过加一个陀螺仪来避免这个情况。由于激光雷达的特性,偶然分遇到玄色或镜面会招致测距不准。

如今的处理办法便是不用激光雷达,或许用激光雷达和超声波中断帮手处理。

ROS的舆图是分多层的,我可以在差别高度放多台激光雷达来一同叠加,共同绘制一张舆图。舆图绘制终了之后,就可以中判定位和导航等任务。

怎样定位和导航?

定位:真实是概任性的定位,而不是100%的精度。根据激光雷达扫描四周阻碍物的外形,与舆图的外形做婚配,判别板滞人地点地位的概率

板滞人的定位能否告成,与舆图特性有很大干系,假如地区特性分明,那么板滞人就很容易判别自己的地位。假如呈现难以定位的题目,可以需求人给指定初始地位,或许加led来中断地位识别,或许其他的定位配置来帮忙定位。

如今的视觉经过颜色或许光的技艺越来越多。

导航:全局途径方案+部分调停(静态避障)

导航真实便是全局定位,起首根据现有舆图中断方案,但是在运转进程中会中断部分的道路方案。但是总体还是根据全局途径来走。

导航中任务量还很大,比如扫地机的途径方案和效力板滞人的途径方案是纷比方样的,扫地板滞人可以要全粉饰笼罩的有墙角的舆图,而效力板滞人主要围绕指定的途径或许最长途径来中断方案,这部分是ROS任务量最大的一块。

途径方案根据差别使用场景变革比较大,但是ROS提供根底的途径方案的开辟包,在这个根底上我们会做自己的途径方案。

板滞人描绘和坐标系变更

在导航时,哪些地区可以经过,取决于板滞人外形等信息,ROS经过URDF(UnifiedRobot Description Format) 便是描绘板滞人硬件尺寸构造,比如轮子的地位、底盘大小、激光雷达安装地位,这些都市影响到坐标系的转换。

坐标系按照的条件是每个帧只能有一个父帧,再往上中断一些眼神或许联络干系。

激光雷达的安装地位直接影响/scan输入数据。以是激光雷达和板滞人的相对地位是需求做坐标变更,才干把激光雷达的数据转化为板滞人视角的数据。

ROS的坐标系,终极归结为三个标准框架,可以简化很多罕见的板滞人题目:

1)全局精确,但部分不连续的帧(’map”)

2)全局不精确,但部分光滑框架(’odom”)

3)板滞人本身框架(’base_link”)

多种传感器(像激光雷达、深度摄像头和陀螺仪加速率计等)都可以谋略base_link和odom的坐标干系,但由于“每个帧只能有一个父帧”,以是只能有一个节点(比如 robot_pose_ekf 交融多传感器)发布base_link和odom的坐标干系。

Base link本身的坐标系,由于差别元件装在板滞人上差别地位,都要对应到base link的坐标系中,由于统统的传感器都是要经过板滞人的视角来“看”。

有些冤家问我,激光雷达在建舆图的时分,小车移动后舆图就乱了,这是由于小车的底盘坐标系和激光雷达的坐标系没有标定精确。

map和odom之间的联络干系

由于小车移动需求一个部分联络,比如小车在向前走,不停的累加,这是里程计的作用,map起到全局的、不连续的作用,颠末激光雷达和map对应。

假如要学习ROS的话,坐标系的变革是紧张的点。坐标系的变更另有一个点,便是每个帧都只要一个父帧,偶然分两个坐标都和它有联络干系的话,便是A和B联络干系,B再和C联络干系,而不是B/C都和A联络干系。

三个坐标帧的父子干系如下:

map –> odom –> base_link

真实, map和odom都应该和base_link联络干系,但为了恪守“每个帧只能有一个父帧”的准绳,根据map和base_link 以及 odom->base_link的干系,谋略出map与odom的坐标干系并发布。

odom->base_link的坐标干系是由里程计节点谋略并发布的。

map -> base_link的坐标干系是由定位节点谋略出来,但并不发布,而是使用接纳odom->base_link的坐标干系,谋略出map->odom的坐标干系,然后发布。

只要里程计的时分,没有激光雷达,也可以跑,但是要先根据预设舆图中断复杂避障。

精良问答

Q:另有ROS的及时性有什么改进进展吗 ?

A:及时改进要看ROS2.0的设计,真实ROS2.0的进展网上有地下。但是实际上他的进展离实际使用另有一定间隔,至少今年下半年还达不到波动,不过可以去研讨下他的代码,他对内存办理,线程办理,在及时性上有了很大改进。

Q:vSLAM对内存和CPU要求颇高。实际工程中,李教师运用的是什么硬件配置?可以做多大的舆图呢? 

A:的确云云,如今来说我们还是运用激光雷达和传感器帮手来中断,这个和舆图大小没有太大干系,主要是与地形阻碍物宏大程度有关。

(看完/读完)这篇文章有何感想! 来看看龙8国际娱乐网站是怎么评论的吧!

发表评论

电子邮件地址不会被公开。 必填项已用*标注