仙工智能技术专栏|识别专栏之形状识别
供稿:上海仙工智能科技有限公司
- 关键词:仙工智能,AGV,形状识别
- 摘要:货架的摆放不是一直都能固定在某个位置上的,当AGV要对货架进行一些拉取或者顶升等操作时,需要精准的知道货架的位置,此时AGV自身在地图上的定位是准确的,但是货架的位置在地图上却是未知的,这样我们需要对货架进行识别来确定货架的位置。而某些场景要求不能对货架腿进行改造(如粘贴反光膜等),这个时候就需要对货架腿的形状做识别。
一、为什么要进行形状识
货架的摆放不是一直都能固定在某个位置上的,当AGV要对货架进行一些拉取或者顶升等操作时,需要精准的知道货架的位置,此时AGV自身在地图上的定位是准确的,但是货架的位置在地图上却是未知的,这样我们需要对货架进行识别来确定货架的位置。而某些场景要求不能对货架腿进行改造(如粘贴反光膜等),这个时候就需要对货架腿的形状做识别。
二、货架腿形状识别要求
1、一般情况下,货架是有四条腿,要求四腿形成一个矩形;
2、货架设计的其他部分都要求成轴对称的形式,包含:和顶升机构配合的限位孔、货架腿上支撑的货架部分;
3、货架内侧宽度要比机器人最大宽度宽20cm,也就是左右各冗余10cm的钻货架调整空间;
4、货架高度要求,根据顶升模块的行程确定;
5、货架腿的表面要求为光滑平整的;别?
6货架腿的形状最好为规则型的方体;
6、货架腿的表面不能为呈镜面反射的材料;
7、货架腿的表面不能为半透明的材料;
8、货架腿的表面不能为黑色的材料;
下图为比较典型的可用的货架腿。
三、参数配置说明:
上图为激光雷达形状识别示意图,图中蓝色坐标系为AGV的车体坐标系,虚线方形为可配置的激光雷达识别区域,方形中的虚线为激光雷达扫描scan的示意图。
在使用激光雷达形状识别的时候,要保证激光雷达的识别范围内存在待识别的货架腿,识别区域可根据现场环境进行配置;
如上图所示的几个参数表示激光雷达的识别区域,该参数需要根据现场实际环境进行配置,
ValidShapeX:车体坐标系下的最大识别距离,单位为m;
ValidShapeBias:偏差量;
根据不同的识别方向,系统会自动计算识别范围,如识别示意图上所示的虚线框。
当detect_direction为x的时候,ValidShapeX为车体坐标系下x方向的最大距离,即: 0<x<ValidShapeX,y方向识别的范围为:-(distance/2 + ValidShapeBias) < y < (distance/2 + ValidShapeBias).
当detect_direction为-x的时候,ValidShapeX为车体坐标系下x方向的最大距离,即: -ValidShapeX<x<0,y方向识别的范围为:-(distance/2 + ValidShapeBias) < y < (distance/2 + ValidShapeBias).
当detect_direction为y的时候,ValidShapeX为车体坐标系下y方向的最大距离,即: 0<y<ValidShapeX,x方向识别的范围为:-(distance/2 + ValidShapeBias) < x < (distance/2 + ValidShapeBias).
当detect_direction为-y的时候,ValidShapeX为车体坐标系下y方向的最大距离,即: -ValidShapeX<y<0,x方向识别的范围为:-(distance/2 + ValidShapeBias) < x < (distance/2 + ValidShapeBias).
注:车体坐标系为右手坐标系,即正前方为X正方向,正左方为Y正方向。
ValidShapeDistanceThreshold:该值代表着识别算法内部计算出来的货架腿之间的距离和实际距离之间的差值;
ValidShapeLineThreshold:该值代表着识别算法内部计算出来的货架腿的长度和实际长度之间的差值。
ValidShapeLineSplidThreshold:该值代表着货架腿对角线长度的一半,需要根据货架腿大小更改。
ValidShapeValidShelfAngle:该值表示车身与货架最大的倾斜角度,当识别方向为车头和车尾的时候,表示车头和车尾与货架最大的倾斜角度,侧向识别是表示为车身侧边与货架的最大倾斜角度。
ValidShapeDetertorNum:该值表示连续识别的次数,当连续识别多少次的结果都很接近的时候,认为是识别到了,该参数仅对钻货架有效。
使用我司Roboshop 软件,点击【识别文件】标签页进入配置界面,选择一个【shelf】文件,在右侧的属性窗进行货架描述文件的参数配置。如下图所示:
钻入属性参数说明:
1.align_depth:车头识别(x方向)钻货架的深度;
2.anti_align_depth:车尾识别(-x方向)钻货架的深度;
3.y_align_depth:车头侧向识别(y方向)钻货架的深度;
4.y_anti_align_depth:车尾侧向识别(-y方向)钻货架的深度;
5.continue_detect:是否开启持续检测
6.recDist:如果前置点距离货架的位置比较远,可以配置recDist,该值表示距离货架多远的距离开始识别,可以在一定程度上减缓地面不平、激光雷达安装不水平等因素的影响,提高识别精度。
需要配置如图上所示的5个参数:
1:rightStandardLength,右侧货架腿的长度;
2:rightVerticalLength,右侧货架腿的宽度
3:leftVerticalLength,左侧货架腿的宽度;
4:leftStandardLength,左侧货架腿的长度;
5:distance,货架腿内侧之间的距离;
6:use_optimization,默认勾选,代表使用优化。
此外,货架腿长和宽之间的夹角默认为90°,也可以额外配置,当货架腿的长宽大于6cm时,勾选use_optimization,可以提高识别精度。
四、使用说明:
在完成上述反光膜或者形状识别的配置之后,只需要在货架点位对应的前置点属性中配置识别模型文件,即shelf文件,然后将线路属性中的ObsExpansion设置为0,避免钻货架过程中机器人停障。接着要进行执行动作的配置:
1.需要识别货架所在位置,并钻入货架顶升起来,需要勾选Recognize,点击Load.
2.不需要识别货架所在位置,开环的钻入到一个固定位置上,并顶升起来,不需要勾选Recognize,直接点击Load.
3.需要识别位置上有没有货架,并放置货架,勾选Recognisze,点击Unload,若有货架占用的话,会报错;不需要识别,直接开环放置,不用勾选Recognisze,直接点击Unload.
4.需要点击Wait的情况比较少,若勾选了Recognize,再点击Wait,机器人就会识别货架位置,钻入货架底部,然后结束任务,不会动作顶升模块;若不勾选Recognize,直接点击Wait,机器人就会固定路径导航到工作站,然后结束任务,不会动作顶升。
那么在执行路径规划的时候选择执行动作,AGV在这个前置点上会自动切换到识别模式,根据识别到货架腿的位置来推算出货架的中心位置并自动生成到达此位置的路线。
针对车头车尾都安装激光雷达的全向车,还可以通过配置实现车头、车尾、车左侧和车右侧各个方向的识别,配置如下图所示:
五、其他说明:
为了减小误识别的情况,使用激光识别料架时要求货架的前面两条腿中心距离和前置识别点的距离小于2m,中心点到识别位置激光的连线和车体的角度偏差小于10°,料架本身的角度和识别时的AGV的角度偏差小于20°.
使用激光点云形状识别功能,需要将参数配置method_type配置为by_legShape,在激光雷达的识别区域要避免遮挡住货架腿;
识别精度:x,y方向精度高于±1cm,角度精度高于1°.(识别距离越近、货架腿越宽,识别越准,该精度为识别距离1m,长宽6cm处测得)