wanghuohuo0716 2021-10-29 10:19:35
TARE底层的local planner参数不太理解,求解答! 1.dirtoVehicle参数这个如何理解? 2.pathscale,minpathscale,pathscalestep,defPathSacle的作用是什么。最后没有找到路径,即selectedGroupID<0时的处理(pathscale做step运算)什么含义? 3.minObsAngCW和minObsAngCCW的作用是什么? 4.在计算rotDir,joyDir,angOffset的坐标系,xy轴方向是什么样的,能否画图解释下 5.代码是将360°划分为36个扇区么,rotdir为什么也要从0-36进行for循环呢 求各位大佬的解惑~
...全文
959 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
哈工大-朱洪彪 社区管理员 2021-11-04
  • 打赏
  • 举报
回复 2

你好,谢谢你的提问,非常的细节,下面是对应的回答:
1。dirToVehicle这个参数是为一些类似汽车的机器人平台设置的,这些平台不能原地转向而只能一边向前或者向后运动一边转向。当这个参数设置成false的时候,就是应用在大多数可以差速驱动的机器人平台上,只考虑目标方向附近的轨迹,机器人可以任意无碰撞的转向需要的方向。而当这个参数设置成true的时候,就是应用在上述类似汽车的平台上,这时候只考虑机器人朝向dirThr之内的轨迹,因为机器人只能向前或者向后运动的时候转向,dirThr之外的轨迹机器人是没有能力实现的。一般dirToVehicle是true的时候,dirThr会设置的比较小,比如只考虑机器人朝前或者朝后10°的范围内的轨迹。如果用的是差速驱动的机器人,那就可以保持现在的v默认设置。
2.pathscale是用来控制碰撞检测范围的,pathscale越小,碰撞检测范围就越小,pathscale是当前值,minpathscale是最小需要考虑的碰撞检测尺度,pathscalestep就是在当前的碰撞检测范围内找不到无碰撞路径的时候缩短pathscale的步长,defPathScale是最大的需要考虑的碰撞检测的范围尺度,这个值是初始化时就已经设置好的,是定值。如果最后没找到路径,就会一步一步的缩短pathscale,也就是缩短碰撞检测的范围,直到找到路径或者缩短到minpathscale。另外提醒一下,做碰撞检测的时候,如果某条路上任意一点有碰撞,那这一整条路都会认为是有碰撞的。
3.minObsAngCW和minObsAngCCW这两个参数是当车不是圆形的时候做碰撞检测使用的中间参数,相当于是从机器人中心到机器人最长的边缘的长度,由于是中间变量,launch文件不能调节,可以保持默认的状态
4.计算这三个角度的时候的坐标系都是机器人的vehicle坐标系,也就是机器人的旋转中心坐标系,x轴是向机器人前方,y轴向机器人的左方
5.确实是将360°划分成了36扇区,每10°一个扇区,我们不是考虑的连续的过程,而是按照扇区来筛选轨迹的,所以rotdir从0-36循环
希望上述回答能够帮助到你

易子岚 2021-11-11
  • 举报
回复
@哈工大-朱洪彪 您好,想问一下,path_generator.m在训练路径的时候为什么特地的将体素建模为梯形的形状,就是为什么有y轴的缩放,有什么特殊的含义么。
  • 举报
回复
@哈工大-朱洪彪 您好,请问可以解释一下minObsAngCW和minObsAngCCW这两个参数具体的含义吗? if (dis < diameter / pathScale && (fabs(x) > vehicleLength / pathScale / 2.0 || fabs(y) > vehicleWidth / pathScale / 2.0) && (h > obstacleHeightThre || !useTerrainAnalysis) && checkRotObstacle) { float angObs = atan2(y, x) * 180.0 / PI; if (angObs > 0) { if (minObsAngCCW > angObs - angOffset) minObsAngCCW = angObs - angOffset; if (minObsAngCW < angObs + angOffset - 180.0) minObsAngCW = angObs + angOffset - 180.0; } else { if (minObsAngCW < angObs + angOffset) minObsAngCW = angObs + angOffset; if (minObsAngCCW > 180.0 + angObs - angOffset) minObsAngCCW = 180.0 + angObs - angOffset; } } } if (minObsAngCW > 0) minObsAngCW = 0; if (minObsAngCCW < 0) minObsAngCCW = 0; 这段代码没有看得懂 期待您的回复!
Jabber_Jagger 2021-11-17
  • 举报
回复
@哈工大-朱洪彪 您好,我发现minObsAngCW和minObsAngCCW在程序里定义的±180.0好像是指的角度,要通过计算获得距离吗?
1条回复

967

社区成员

发帖
与我相关
我的任务
社区描述
社区内分享我们的开源平台tare机器人自主导航系统,希望能帮助所有自主移动机器人领域的研究人员快速搭建出属于自己的,稳定可靠的机器人仿真和实验的平台,更快进入自己的研究领域
自动驾驶人工智能 企业社区
社区管理员
  • 哈工大-朱洪彪
  • 小麦Y
  • 曹超CMU
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧