查看“开发手册 - 目标跟踪”的源代码
←
开发手册 - 目标跟踪
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
管理员
您可以查看和复制此页面的源代码。
= Slot Following = 设由多个有腿托盘(比如料车)顺序摆放的场景,机器人使用导航雷达识别推盘腿对,计算 中心点作为跟踪目标,逐一穿过托盘,在穿越给定数量腿对后停下。 算法的核心思路是,将腿对中心点作为跟踪目标,使用轨迹跟踪算法跟踪目标,当目标距离 小于设定阈值时识别下一个腿对,直到穿越完所有腿对。 {| class="wikitable" !步骤 !动作 |- |'''1. 点云预处理''' |将雷达点云转换为机器人坐标(右手坐标系),忽略10mm以内的点云,然后展示在C监控器。 点云被C监控器转换为世界坐标,点云位置对应D返回的机器人位姿。 |- |'''2. 寻找点云中的角点''' |在点云中寻找角点,角点中包含了托盘腿。算法顺时针扫描点云,寻距距离雷达最近的点, 然后以该点为枢纽点寻找包含它的点云团,如找到则记录为角点。此特征符合托盘腿(方管)斜对激光 雷达的点云轮廓,是凸向激光雷达的点云结构。 |- |'''3. 寻找托盘腿对''' |在角点对中搜索托盘腿对。托盘腿对是垂直于机器人前进方向的连线,其距离满足 设定的托盘腿宽度及误差范围。 |- |'''4. 选择最优腿对''' |在腿对中选择最优腿对作为跟踪目标。第一个目标的Y和角度偏差应小于给定阈值, 第二个以后目标的角度偏差应小于连续跟踪角度偏差。 |} == 2.1 点云预处理 == 从C的车体布局读取激光雷达外参,以机器人运动中心为原点,将点云坐标转为机器人坐标系,并在C监视器显示。 C监视器将点云转为世界坐标系显示,因此点云相对机器人的位置与D相同。对机器人而言,点云使用右手坐标系, 与世界坐标并无关系。 == 2.2 寻找点云中的角点 == 点云以角度与距离排序,顺时针扫描点云,以PillarFindingScope为搜索窗口尺寸,寻找距离激光雷达最近的点, 然后以该点为搜索起点,寻找其是否在点云团中,其目的是寻找托盘腿特征。点云团由一定数量点构成,有一定 尺寸。构成点云团的最少点数由BlobPointCount定义,其尺寸由BlobSize定义,其搜索半径(以搜索起点为圆心) 由BlobSearchRadius定义。找到点云团则计算其质心以为角点,角点在C监视器以5mm半径的红色实心点表示。 {| class="wikitable" |参数 |说明 |- |'''PillarFindingScope''' |搜索点云团的滑动窗口尺寸,默认20mm。滑动窗口内点与搜索起点的距离小于BlobSearchRadius时, 判定属于点云团。 |- |'''BlobSearchRadius''' |点云团的搜索半径,应比点云团尺寸大。单位mm,默认100mm。该参数值应大于BlobSize。 |- |'''BlobPointCount''' |构成点云团的最少点数。调试时应根据M的雷达视图,根据构成托盘腿的点云团规模来判断, 应取稳定构成托盘腿的点数量。不同激光雷达的角分辨率不同,因此在不同距离观察到同一个腿的点数有 区别,且在噪音下跳动。调试时应选择最远距离和中间距离观察,以得到稳定值。 |- |'''BlobSize''' |点云团尺寸,单位mm。尺寸应略大于托盘腿宽度,比如托盘腿方管宽度30mm,则取40mm较好。 该参数与BlobPointCount是稳定检测的关键,调试时应将激光雷达放到不同距离以观察识别稳定性,然后 在运动状态下(跟踪目标前进)复核。如果参数不良,角点就会跳动,导致跟踪目标的角度偏差,进而 拉偏机器人而撞上托盘。 |- |'''BlobDistance''' |角点间的最小距离,单位mm。角点是托盘腿质心,该参数用于区分不同的点云团,比如 料车腿由两根方管支撑,每根方管宽度30mm,间隔30mm。跟踪目标是内侧方管,则两根方管的点云团质心 至少相距60mm,将其设为70-80mm较好。该参数与BlobPointCount和BlobSize联合使用,应根据C监视器 显示的角点来判断取值是否合理。 |} == 2.3 寻找托盘腿对 == 角点两两配对,如果两个角点的Y坐标不相同,则判定为一对。然后根据给定的托盘宽度判断角点对是否腿对,不满足 条件的角点对以灰线标记。大于搜索范围的腿对被丢弃,余下的检查是否满足托盘腿对的条件,不满足丢弃并以深橄榄绿线 标记。 腿对应满足机器人无碰撞穿越条件,腿对内净空区域应无障碍物。算法为此定义了倒T型区域,使用点云判断该区域是否满足条件。 | | <------------ outerPadding innerIgnore | | | | +------------+ <------------ deepthInner | | | v | | <------------ 停车位置 +-----+腿 腿+-----+ | | <------ deepthOuter +------------------------+ <------ deepthOuterFar 跟踪目的是让机器人停在倒T型区域中间(然后跟踪下一腿对,为方便讨论假设它停下)。机器人停止点是其运动中心,车头到该区域 的12点位置,因此要定义机器人停下的车头和车尾位置,为此定义deepthinner和deepouter参数,deepthinner是车头到倒T型12点距离, deepthouter是车尾到倒T型6点距离。如果机器人进入托盘时左右需要空间,则以outerpadding来挤压两侧以产生倒T型轮廓。 innerignore用于扩大腿侧面空间,避免该区域的点被识别为障碍物。 识别出来的腿对以青色线表示,被过滤的以深橄榄绿线表示。 {| class="wikitable" !参数 !说明 |- |'''TrayWidth''' |托盘腿对的距离,单位mm。 |- |'''TrayWidths''' |多个托盘的腿距不同时,以数组给出。 |- |'''TrayWidthRange''' |托盘腿对的距离误差范围,单位mm。 |- |'''depthInner''' |停车时车头进入托盘深度,以激光雷达为原点,单位mm,默认值50。 |- |'''depthOuter''' |停车时车尾距离跟踪目标深度,以激光雷达为原点,单位mm,默认值100。 |- |'''depthOuterFar''' |倒T型区域的6点位置,与depthInner构成净空区域的长度,单位mm,默认值400。 |- |'''outerPadding''' |挤压(矩形)净空区域形成倒T型轮廓,与depthOuter配套,单位mm,默认值50。 |- |'''innerIgnore''' |托盘腿的尺寸,单位mm,默认值150。由于角点是没有体积的点,因此用该参数定义腿尺寸,以免误判障碍物点。 |- |'''allowedBadpoints''' |净空区域内的最大点数量,用于过滤噪音点。默认值5。 |} == 2.4 寻找最优腿对 == 识别出来的腿对可能有多个。第一组腿必须满足进入的角度和宽度条件,以MaxFirstYDiff和MaxFirstThetaDiff定义。 第二组以后则必须满足连续穿越的角度偏差条件,以seqThDiffTolerance定义。 此时如果距离跟踪目标距离小于StopDistance,则判定为到达目标,结束跟踪。 识别出来的腿对以橙色连线表示;红色箭头线表示余下里程与角度。当距离目标小于LookupNextDistance时, 跟踪下一组腿。 轨迹跟踪方法与Clumsy的轨迹跟踪算法相似,略。 {| class="wikitable" !参数 !说明 |- |'''Slots''' |要跟踪的腿对数量。 |- |'''LookupNextDistance''' |距离跟踪目标的余下里程小于该参数时,当前目标跟踪结束,开始跟踪下一组腿。 |- |'''SafeDistance''' |识别到腿对时,把机器人到腿对距离加上安全距离,在此区内内的腿对不作为识别目标。 |- |'''finalTurnCompensate''' |到达终点时是否执行最终角度调整,默认为true。 |} == 2.5 运动控制 == {| class="wikitable" !参数 !说明 |- |'''StopDistance''' |停车距离,默认 0mm。注意点云坐标被转换到机器人运动中心,因此雷达到达目标时的距离不会是0,应加上雷达到运动中心的X距离。该参数应在调试时观察获得。 |- |'''SlowdownDistance''' |终点前缓行距离,默认 500mm。 |- |'''BaseSpeed''' |默认行驶速度,默认 700rpm。 |- |'''StoppingPow''' |缓行幂指数。 |- |'''speedDegThres''' |机器人与预瞄点夹角最大值,小于时才会下行走速度。 |} == 2.6 运控视觉反馈 == [[文件:SF运控视觉反馈.png|无框|515x515像素]] '''图 2-1 SF图示''' 启用Slow Folling算法后,Clumsy显示算法计算过程。 # 角点。具有“凸包”特征的角点,红点即其中心。 # 腿对连线。成组角点(腿对)的连线。 # 选中腿对中心点。是机器人行走路径的终点。 # SLAM 测算角度。根据激光雷达测算的机器人位姿,SF 不会使用 SLAM 定位结果,仅用于监控参考。 # 轨迹跟踪角度。箭头指向预瞄点。 # 规划轨迹角度。当前路径的角度。
返回
开发手册 - 目标跟踪
。
导航菜单
个人工具
中文(中国大陆)
创建账号
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息