首页 >> 大全

ROS下阿克曼转向结构车型导航应用实践(teb_local_planner)

2023-06-24 大全 121 作者:考证青年

近期开发了一款阿克曼转向结构的小车,在实现导航功能时接触TEB局部规划器(),过程中也遇到了一些问题,这里做个记录和分享

机器人PC

(阿克曼转向底盘,树莓派3B+, mate 18.04,ROS ,单线激光雷达)

.04 ROS (虚拟机)

ROS下的导航中local 多数都针对两轮差速结构设计的,阿克曼转向结构由于结构的特点会有最小转向半径的限制,所以常见的local 例如,等在这里都不适用里,这里使用的是

它提供了一种car-like的动力学模型(即有最小转向半径限制),这样他所规划的路径也就符合了阿克曼结构的运动特点了;先跑一遍它所提供的来了体验一下,中内置了差速、全向、类车三种运动模型的Stage仿真测试,跑下来效果还可以,直接上车测试,把中类车结构下的配置文件移植到我的车上,主要修改下面几点:

s.yaml中的为实体机器人的实际尺寸信息

s.yaml中的为你机器人的基座标名称

.yaml中的为你机器人的基座标名称width和这个参数默认设置为5.5,这里要吐槽一下,已经见过N次这两个参数被设置成小数了,但是根据的API介绍,这两个值都应该是int型,所以应该设置为整数而非小数。

接下来要修改rams.yaml中的内容

这里要修改的内容比较多,主要要设置车的速度,角速度,转向半径和车外轮廓安全尺寸,对照着注释和wiki修改应该没什么问题,我在这里踩了两个坑

第一个是tvel这个参数,这个参数的作用是在发布的(/Twist)话题中将Z轴角速度的数值替换为车体的转向角度,个人理解这个纯粹是为了兼容Stage仿真器设置的,有点不伦不类的感觉,我的机器人是可以接受/Twist或者/类型消息,唯独不接受这种奇怪的消息,所以这个参数要设置为False以发布正常的/Twist消息

第二是设置这里,这里要好好看看wiki上对于机器人模型的解释,我刚开始是想当然的去设置,测试效果比较差后才老老实实回去看wiki上的说明

改完上面的内容再写一个文件应该就可以正常启动导航了,车跑起来后我发现了一个新问题,终端会连续的弹出如下警告

[ WARN] [1567946341.717090426, 13.700000000]: Control loop missed its desired rate of 5.0000Hz... the loop actually took 1.0000 seconds
[ WARN] [1567946341.718131483, 13.700000000]: Map update loop missed its desired rate of 5.0000Hz... the loop actually took 0.7000 seconds

看起来是控制周期的问题,但是5Hz的控制周期已经很低了,所以应该是主机性能太差所不过来了,看来要调整参数降低计算量,在 Wiki的常见问题中就有关于怎么降低计算量的(页面最后一项)

根据我测试,基本只有这几个参数有明显效果

.yaml中的width和

rams.yaml中的或这里说‘或’是因为只有在为True时才有效,更多的信息可以去看下wiki上的内容,一通尝试后警告消失,机器人也可以正常导航运行。图中黑框中可以明显看到规划出的路径可以明显看出在需要掉头时,是使用了两次带转向半径的转弯而非一次原地转向来实现的。

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了