You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在move_base包生成的cost map中添加检测物体并实现合规导航?

将感知目标添加到Costmap实现车辆导航的实操方案

1. 先明确Costmap的核心逻辑

Costmap是导航系统的核心决策依据,本质是二维栅格数组,每个栅格对应一个cost值:

  • 0:自由通行区域
  • 1~254:不同优先级的约束区域(比如道路边界、缓行区域)
  • 255:完全不可通行的障碍/规则禁区

你需要把lidar/camera检测到的交通灯、道路线,转换成Costmap栅格坐标后,给对应栅格赋予合适的cost值。

2. 感知数据的坐标转换

传感器输出的目标坐标(比如交通灯位置、道路线点集)通常在自身坐标系(如lidar_link/camera_link),必须先转换到Costmap的坐标系(全局导航用map系,局部避障用base_link系):

  • 以ROS环境为例,用tf2_ros完成坐标变换:
// 示例:将雷达检测到的交通灯坐标转成map系
geometry_msgs::PointStamped sensor_point;
sensor_point.header.frame_id = "lidar_link";
sensor_point.point.x = detected_traffic_light_x; // 感知模块输出的x
sensor_point.point.y = detected_traffic_light_y; // 感知模块输出的y

geometry_msgs::PointStamped map_point;
tf2_ros::Buffer tf_buffer;
tf2_ros::TransformListener tf_listener(tf_buffer);
// 等待变换可用,超时1秒
tf_buffer.transform(sensor_point, map_point, "map", ros::Duration(1.0));
  • 道路线是连续点集,需把所有检测点都完成坐标转换,组成多边形区域。

3. 向Costmap写入目标约束

3.1 道路线(静态边界约束)

道路线属于道路通行的边界,建议标记为中等cost(比如50),引导导航路径贴近道路中心:

  • 用costmap_2d库的多边形赋值接口:
// road_polygon是转换到map系的道路线多边形
costmap_2d::Costmap2D* costmap = ...; // 获取全局costmap指针
costmap->setPolygonalCost(road_polygon, 50);

3.2 交通灯(动态规则约束)

根据交通灯状态动态更新Costmap:

  • 红灯时:把停车线前方1~2米的区域标记为255(不可通行)
  • 绿灯时:重置该区域cost为0
// 计算停车区域的栅格坐标
unsigned int mx, my;
// 将map系下的停车线坐标转成Costmap栅格坐标
costmap->worldToMap(map_point.point.x - 1.5, map_point.point.y, mx, my);

// 标记连续栅格为不可通行(覆盖停车区域)
for (int i = 0; i < 15; i++) {
    if (costmap->isValid(mx + i, my)) { // 确保栅格在Costmap范围内
        costmap->setCost(mx + i, my, 255);
    }
}

4. 与导航栈联动

  • 如果用ROS的move_base导航栈,Costmap的更新会自动触发路径规划器(如Dijkstra、A*)重新计算路径,无需额外调用。
  • 自定义导航逻辑的话,需要在Costmap更新后,主动调用路径规划接口重新生成可行路径。

5. 避坑要点

  • 坐标转换准确性:确保TF树中sensor_link→base_link→map的变换实时发布,避免坐标偏移导致Costmap标记错误。
  • 感知数据滤波:对检测到的目标做去噪(比如卡尔曼滤波),避免频繁更新Costmap导致导航路径抖动。
  • 分层Costmap:全局Costmap处理道路线等静态约束,局部Costmap处理交通灯等动态目标,提升导航效率。

内容的提问来源于stack exchange,提问作者Muhammet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 01:13:23