机器人足球与救援机器人的开源解决方案
1. RoboCupJunior 足球赛的低成本图像处理方案
在 RoboCupJunior 足球比赛中,使用的足球会发射红外信号,直径为 74 毫米。系统在检测球门时,上一步计算出的众数代表球门的高度,选择众数是为了在球门有障碍物的情况下确保结果准确。
接下来,系统会利用众数和已知的球门高度(约 12 厘米)计算像素与厘米的比例,并查看图像中心是否有足够空间让球进入。若没有,系统会比较 lsum 和 rsum 的值,建议机器人向左或向右移动。若 lsum 和 rsum 都为零(例如未检测到球门时),系统会建议机器人依靠其他传感器数据。结果会存储在状态变量中,该变量有四种状态:K(踢球)、L(向左移动)、R(向右移动)或 N(无动作)。
以下是状态判断的流程:
graph TD;
A[检测球门] --> B[计算众数代表球门高度];
B --> C[计算像素:厘米比例];
C --> D{图像中心是否有空间让球进入};
D -- 是 --> E[状态设为 K];
D -- 否 --> F{比较 lsum 和 rsum};
F -- lsum > rsum --> G[状态设为 L];
F -- lsum < rsum --> H[状态设为 R];
F -- lsum = rsum = 0 --> I[状态设为 N];
1.1 姿态估计
利用检测球门时计算的值,还能估算出机器人与球门的大致距离。这需要知道相机的焦距,可通过相机配置过程得到,也可通过以下简单方法计算:
考虑一个已知高度为 H、与相机距离为 d 的物体,测量其在像素中的表观高度为 h,根据针孔相机模型,相机焦距 f 为:
[f = \frac{hd}{H}]
若已知物体在像素中的表观高度为 (h’),要计算与该物体(即对手球门)的大致距离 D,根据三角形相似原理可得:
[D = \frac{Hf}{h’}]
其中 D 是与物体的大致距离(Y 坐标)。不过,尝试用类似方法计算机器人与球门中心的水平距离(X 坐标)并不实际,因为很多情况下无法正确计算该值,且在策略中的作用较小,所以系统不计算该值。
1.2 系统校准
为在比赛中获得精确结果,每场半场前校准系统很重要。这主要是因为“上半场结束后,两队会交换场地”,且光照条件可能改变。
校准过程是改变球门颜色的范围,即改变 HSV 模型中的最小和最大色调、饱和度和值。这些值分别由变量 minH、minS、minV 和 maxH、maxS、maxV 表示。
为使校准简单直接,使用 OpenCV High - GUI 库,通过滑动条改变这些变量并立即看到结果。校准后,将值存储在使用 YAML 格式的配置文件中,下次运行系统时加载该文件。具体操作步骤如下:
1. 打开 OpenCV High - GUI 库提供的界面。
2. 通过滑动条调整 minH、minS、minV 和 maxH、maxS、maxV 的值。
3. 观察调整后的效果,直到达到满意的结果。
4. 将调整好的值保存到 YAML 格式的配置文件中。
1.3 在策略中的应用
图像处理系统每次迭代后,会向 Arduino 控制器发送两个变量:球门状态和与球门的大致距离。球门状态变量使用更频繁,可提高机器人的射门效率。以下是使用该值的示例代码:
switch (status) {
case 'K':
kick();
break;
case 'R':
move_right();
break;
case 'L':
move_left();
break;
default:
break;
}
尽管代码简单,但对机器人策略的改进显著。机器人不再盲目射门,而是移动到球门有足够空间时再射门。而且,由于能知道机器人与球门的距离,还可创建更复杂有效的策略。
2. 救援机器人的 Hector 开源模块
在城市搜索和救援(USAR)任务中,机器人的关键能力包括自主探索灾难现场、识别受害者和其他感兴趣的物体。介绍了相关的开源软件模块,用于开发这些复杂能力,其中包括用于在退化城市环境中进行自我定位和绘图的 hector slam。
2.1 系统概述
该系统涵盖了许多为 Hector UGV 系统开发和测试的高级节点,可用于其他平台,无需或只需稍作修改。硬件相关模块(如相机和电机驱动器或低级控制器)不在此范围内。假设使用这些模块的机器人能根据现有 ROS 标准提供必要的传感器数据,并能通过发布速度命令进行控制。所有保存状态信息的节点都会订阅命令主题,主要用于在必要时重置系统。
系统的主要节点和模块如下表所示:
| 模块名称 | 功能 |
| ---- | ---- |
| hector slam | 包括 hector mapping、hector map server、hector geotiff 和 hector trajectory server 模块,用于同时定位和绘图 |
| hector pose estimation | 实现全 6 自由度机器人姿态和扭转的估计 |
| hector elevation mapping | 将 RGBD 相机的点云测量数据融合成高程图 |
| hector costmap | 将 2.5D 高程图与 2D 占用网格图融合,计算二维成本图 |
| hector object tracker | 跟踪感兴趣物体的信息 |
| hector geotiff | 生成符合 RoboCup Rescue 规则的 GeoTIFF 地图 |
| hector exploration planner | 基于探索变换方法进行规划和自主探索 |
2.2 定位和绘图
创建环境地图有两个重要原因:一是帮助急救人员进行情况评估和自我定位,二是用于机器人系统的路径规划和高级自主行为。
2.2.1 同时定位和绘图(SLAM)
由于灾难会显著改变环境,USAR 机器人需在未知环境中运行,因此要解决 SLAM 问题以生成足够精确的度量地图。提供的 hector slam 系统由 hector mapping、hector map server、hector geotiff 和 hector trajectory server 模块组成。该系统不依赖里程计数据,而是完全依靠快速激光雷达数据扫描匹配,结合姿态估计系统和可选的俯仰/滚动单元来稳定激光扫描仪,即使在地面不平的情况下也能提供环境地图。
2.2.2 姿态估计
hector pose estimation 节点实现了扩展卡尔曼滤波器(EKF),融合了惯性测量单元(IMU)的测量值、激光扫描匹配器的 2D 姿态误差,以及可选的其他定位传感器(如卫星导航接收器、磁力计和气压传感器)的数据。滤波器基于地面车辆的通用运动模型,主要由 IMU 驱动,不使用控制输入或车轮里程计,因为在不平或光滑地面上,车轮打滑或侧移会导致这些数据不可靠。
2.2.3 高程和成本绘图
除了 hector slam 包提供的二维世界表示外,USAR 机器人还需考虑环境的可通行性。hector elevation mapping 包将 RGBD 相机(如 Microsoft Kinect)的点云测量数据融合成高程图,该图由 2D 网格地图表示,每个单元格存储一个高度值和相应的方差。hector costmap 将 2.5D 高程图与 hector mapping 提供的 2D 占用网格图融合,计算用于探索任务的二维成本图。
2.2.4 感兴趣物体
普通的占用网格地图只提供环境几何信息,不包含语义信息。hector object tracker 包使用高斯表示法跟踪感兴趣物体的位置,订阅来自受害者、二维码或其他物体检测器的感知消息,根据机器人的姿态、相机视角和校准信息将其投影到地图框架中,并解决后续检测的关联和跟踪问题。
2.2.5 GeoTIFF 地图
为使不同方法生成的环境地图具有可比性,RoboCup Rescue 联赛比赛使用 GeoTIFF 格式作为标准地图格式。hector geotiff 包允许生成符合规则的 GeoTIFF 地图,并可通过插件接口进行注释,提供了添加机器人行驶路径、受害者和二维码位置的插件。该节点可在机器人系统上运行,并根据计时器将地图保存到永久存储中,减少连接问题导致地图丢失的可能性。
以下是定位和绘图模块的关系图:
graph LR;
A[hector slam] --> B[hector mapping];
A --> C[hector map server];
A --> D[hector geotiff];
A --> E[hector trajectory server];
F[hector pose estimation] --> G[EKF 融合数据];
H[hector elevation mapping] --> I[生成高程图];
J[hector costmap] --> K[融合高程图和占用网格图];
L[hector object tracker] --> M[跟踪物体信息];
D --> N[生成 GeoTIFF 地图];
机器人足球与救援机器人的开源解决方案
2.3 规划和探索
虽然有大量关于使用自主机器人进行探索的研究成果,但作为开源软件可供复用的方法却很少。提供的 hector exploration planner 基于探索变换方法。在这个探索规划器中,机器人前方的边界被赋予更高的权重,以防止机器人频繁进行高成本的转向操作。
受消防员使用的靠墙跟随技术的启发,探索规划器还可以生成“靠墙跟随”轨迹。规划的轨迹基于地图数据生成,因此不会出现仅考虑原始传感器数据的反应式方法所存在的弱点。高级行为可以随时在使用探索变换和靠墙跟随方法之间进行切换。
当环境被完全探索后,规划器会进入“内部探索”模式。具体操作步骤如下:
1. 从 hector trajectory server 节点获取机器人的遍历路径,该路径包含一系列离散的过去机器人姿态。
2. 根据这些姿态之间的距离对其进行采样,并将采样后的位置添加到一个列表中。
3. 将这个列表作为目标点列表传递给探索变换算法。
4. 对探索变换单元格进行详尽搜索,找到值最高的单元格,该单元格对应的点就是距离先前路径最远且机器人可以安全到达的点。
以下是探索规划的流程图:
graph TD;
A[开始探索] --> B{环境是否完全探索};
B -- 否 --> C[使用探索变换或靠墙跟随规划轨迹];
B -- 是 --> D[进入内部探索模式];
D --> E[从 hector trajectory server 获取遍历路径];
E --> F[对路径位置进行采样];
F --> G[将采样位置作为目标点列表传递给算法];
G --> H[搜索最高值单元格确定目标点];
C --> I[执行规划轨迹];
H --> I;
2.4 仿真
在实际机器人上进行实验既耗时又成本高昂,特别是在 USAR 环境(如 RoboCup Rescue 赛场)中,这些环境对机器人硬件要求高,且实验室空间通常有限。
2.4.1 环境
hector nist arenas gazebo stack 提供了创建模拟环境所需的工具,用户可以通过组合提供的 NIST 标准测试场地元素来创建场景,还能轻松添加其他元素。hector nist arena worlds 包提供了示例场地,包括 2011 年 RoboCup 德国公开赛和 2012 年泰国机器人锦标赛救援场地的模型。
由于 Gazebo 最初不支持多光谱传感器仿真,为了能够模拟常用于检测散发体热的受害者的热成像,hector gazebo thermal camera 包提供了一个 Gazebo 相机插件,可用于此任务。创建模拟环境的步骤如下:
1. 安装 hector nist arenas gazebo stack。
2. 选择合适的 NIST 标准测试场地元素进行组合。
3. 若需要,添加自定义元素。
4. 配置 hector gazebo thermal camera 插件(如果要模拟热成像)。
2.4.2 地面车辆
hlugv gazebo 包提供了 Hector Lightweight UGV 系统的模型。该机器人的六个轮子采用差速驱动,其行为类似于 USAR 场景中常用的履带式机器人系统。使用该模型进行仿真的步骤如下:
1. 安装 hlugv gazebo 包。
2. 在 Gazebo 中加载 Hector Lightweight UGV 模型。
3. 配置模型的参数(如初始位置、速度等)。
4. 启动仿真并观察机器人的行为。
2.5 应用和影响
在不到两年的时间里,hector slam 已成为许多团队在 RoboCup 比赛中使用的事实上的标准 SLAM 系统,并取得了巨大成功。这些开源模块不仅在 RoboCup 救援比赛中得到了应用,还被众多国际研究团队用于各种不同的任务。它们为城市搜索和救援机器人的关键开源软件模块的更广泛倡议奠定了基础,降低了开发成本和时间,提高了机器人的能力,推动了该领域的发展。
总的来说,无论是 RoboCupJunior 足球赛的低成本图像处理方案,还是救援机器人的 Hector 开源模块,都为机器人领域的发展提供了有价值的解决方案,具有广阔的应用前景和重要的研究意义。通过这些开源方案,开发者可以更方便地进行机器人系统的开发和优化,推动机器人技术在更多领域的应用。
超级会员免费看
1309

被折叠的 条评论
为什么被折叠?



