# endGame_ws **Repository Path**: caishuyangyang/end-game_ws ## Basic Information - **Project Name**: endGame_ws - **Description**: robomaster装甲板检测 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-10-28 - **Last Updated**: 2022-11-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 装甲板检测 ## 整体思路 ![pic](pic/%E8%A3%85%E7%94%B2%E6%9D%BF%E6%A3%80%E6%B5%8B.png) ## 标定结果 ![pic2](pic/biaoding2.jpg) ![pic3](pic/biaoding.png) ***误差在3%以内***,有把握认为标定结果可靠。 ## 阈值的获取 ***先通过tracker进行选取几帧简单的标定,确定大致范围*** ![pic4](pic/biaoding3.png) ![pic5](pic/biaoding4.png) ***然后不断测试,进行微调*** ## 类的构建与灯条、装甲板的存储 + LightDescriptor类:根据CSDN某开源代码(记不得具体哪个了)改进,用于存放灯条,属性类似于rotatedrect类,包括长、宽、中心、旋转角等。 + MatchLights类:用于存放装甲板,属性包括装甲板的中心点,四个顶点坐标,边的平行程度,整体的倾斜程度,符合装甲板程度的积分,长宽的比例等,方法包括draw,pnp,用于进行作图,pnp解算。 ## 遇到的主要问题及解决方式 ![pic6](pic/test.png) 在进行遍历匹配后,可能出现错误匹配并导致装甲板相邻的问题。通过在MatchLights类中添加积分属性,当检测到两个装甲板中心点很近时,计算积分,留下积分少的那个。 ## ros文件 采用话题通信,共两个节点,发布方发布pub读取的图片并发布,订阅方接收并处理数据。分别创建了两个功能包用来处理蓝色和红色,并在blue、red功能包下创建了test.launch。(具体可参考整体思路) ## xyz随时间的变化 ![pic7](pic/jx.jpg) ![pic8](pic/blue.jpg) ![pic9](pic/red.jpg) ## x坐标突变分析 ![pic10](pic/zt.jpg) 当装甲板旋转到边缘一侧时,在空间上会出现较大的偏转,此时相机接近装甲板坐标系x=0的位置,如果此时被检测到,解算出的x值相较于正对时会出现较大的突变。