江苏省机器人大赛——排挖地雷赛项全纪录

笔者于2023年11月参加江苏省机器人大赛,其主要的赛项基本集中在机器人类。当时实验室已购一台轮趣的小车,因此参加了相对合适的排挖地雷赛项。

背景条件

场地背景

在一块正方形的区域(边长2.5m)内,放置一定数量约8-10个的蓝色圆形铁片(D=3cm),地上铺满绿色的布(这块布的作用很重要,稍后会介绍),同时会有一定的障碍物,23年当时的障碍物是一个边长30cm的正方形物体。
实验室简要搭建如下:

图中简要围起来一个正方形区域,垃圾桶当做障碍物,蓝点散落。

比赛要求

要求小车从0.0的坐标起点出发,能够最快的找到各个蓝色点,在该点上停留2s并让蜂鸣器发出声音报警,谁找出的最多最快谁优胜。

参赛思路

小车配置

我们当时看了这个背景条件认为这个绝佳适合ROS小车,因为其地图是固定的,障碍物是固定的,只有蓝点是不确定的。

所以当时是认为这个完美适合ROS小车去跑。

ROS小车主要配备的是镭神的N10P激光雷达及车前部一个摄像头,以上都链接到NVIDIA Jetson Nano板上,同时板驱动下位机STM32对底盘进行驱动。

比赛思路

根据赛方发布的说明书,我们可以提前建图

在实验室时,我们的思路是让小车先第一圈围绕地图环绕,同时车前摄像头在围绕时可以探测到绝大多数散落的蓝点。当时我们实际测试过,其摄景宽度是远大于正方形区域的一半的。因此只要让小车围绕着先跑一圈即可。
这些跑第一圈获得的蓝点为什么可用?其思路如下:

坐标转换思路

当小车在某个位置其摄像头探测到一个蓝点时,其前置摄像头探测到的图像如下

对,这个图可能根本看不出来有蓝点,但实际上是有的,我们选取下部三分之一的图像,做一个透视变换,该640480图像就能变成640180的图像,再将其拉伸到640*480,此时竖直上大致是符合实际的比例了,但底部的图像占比又过大导致失真,因此再对底部三分之二的区域进行线性缩窄,变换比例示意图如下

最终得到的图片如下图

在这个图片内,可以清晰的看见右上角的蓝色点,虽然相较其原圆形的比例有所畸形,但并不妨碍我们对其判断相对小车的二维坐标值。
在该图中,每个瓷砖的边长是60cm,最终再依据像素位置计算蓝点相对小车的坐标,可以得其误差不超过4cm,远远高于比赛中要求±20cm的标准。

接下来,依据小车此时相对于原点的坐标(包含横纵轴及朝向角度),这个坐标通过里程计odom等信息可以得到,经过矩阵变换可以得到蓝点相对于原点的坐标。

导航思路

得到蓝点相对坐标后,模拟发布RVIZ的2D坐标点,启动导航程序,让小车围绕这几个点进行导航,同时添加起点即终点的(0,0)进入坐标为最后一个终点

注意事项

为什么说绿色的底布是重要事项,因为我们在实验室里实验的时候用的是光滑的地板测试,那么融合后的里程计信息最终会出现误差,也就导致蓝点相对坐标严重误差,这也是导致我们最终没满意的原因。

其他组思路

大多数人用的还是STM32配一个摄像头,有少部分用了磁场检测金属的思路,但其思路皆为扫地式,即一遍遍围绕边长跑,直至扫完最后一个中心,我们现场观察下来其确实速度还很快,不过也可以考虑改善吧,万一地图再大一点,这个思路可能就有些呆了

posted @ 2025-03-05 18:57  TATAzml  阅读(102)  评论(0)    收藏  举报