ros中的costmap

本文介绍了ROS中的costmap包,它在move_base中用于将传感器数据转化为2D网格地图。地图分为安全、风险和危险区域,costmap通过marking和clearing操作更新地图。网格有occupied、unknown和free三种状态,根据传感器信息进行赋值。此外,文章还讨论了地图类型、API、以及不同地图层的作用,如静态地图层、障碍地图层和膨胀层。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

直到我整理完move_base后才发现costmap也十分重要,这才有了这篇文章。

costmap是一个package,用在move_base的global_map和local_map当中。用于将laser扫面数据或者点云数据转化成一个2d的网格地图

1.总览

costmap_rviz.png

简单来说,地图中分成几部分

灰色部分:安全区域,robot运动在该区域不会发生碰撞

红色部分:危险区域,robot的footprint覆盖到该色网格就肯定会发生碰撞

蓝色部分:风险区域,robot在该区域有可能发生碰撞

红色几何型:robot在地图中所占的区域


2.两个操作

costmap订阅传感器发布的主题数据并更新自身地图,其中有两个操作

marking:标识该区域为障碍信息

clearing:清除该区域的障碍信息


3.网格的三种状态

每个网格会被赋予一个0~254之间的值,代表三种不同的状态

occupied:占有,unknow:未知,free:空闲。


4.地图更新和tf

costmap根据update frequency参数定期来更新地图。每个周期内,根据传感器信息mark/clear地图中的网格。

costmap更新构造地图,默认情况是,global_frame(/map)和 robot_base_frame(/base_link)和他们之间的frame都是连接的,并且定期更新的。如果tf没有按照定期的频率来更新,那navigation stack将会停止robot的运动。


5.网格的赋

### ROS2 Costmap配置与使用教程 #### 1. 安装必要的依赖项 为了在ROS2环境中设置和运行Costmap,需安装`navigation2`套件以及相关组件。可以通过以下命令完成: ```bash sudo apt-get install ros-<ros2-distro>-navigation2 ros-<ros2-distro>-nav2-bringup ``` 这里的`<ros2-distro>`应替换为当前使用的ROS2发行版名称。 #### 2. 创建自定义导航参数文件 创建一个新的YAML文件来指定Costmap的具体参数。此文件通常位于工作空间内的某个包下,并命名为类似`costmap_params.yaml`的形式。下面是一个简单的例子[^3]: ```yaml obstacle_layer: enabled: true observation_sources: scan scan: topic: /scan marking: true clearing: true static_map: global_frame: map inflation_layer: cost_scaling_factor: 10.0 inflation_radius: 0.55 ``` 上述配置指定了障碍物检测所依据的数据源(激光雷达扫描),同时也设置了膨胀系数及半径以确保安全距离。 #### 3. 修改启动文件以加载新配置 编辑现有的或新建一个`.launch.py`脚本,在其中引入之前准备好的参数文件。这一步骤对于确保所有设置都能被正确应用至关重要。例如: ```python from launch import LaunchDescription from launch_ros.actions import Node def generate_launch_description(): return LaunchDescription([ Node( package='nav2_bringup', executable='bringup_launch.py', parameters=[ {'use_sim_time': True}, './path/to/your/costmap_params.yaml' ] ) ]) ``` 这段Python代码片段展示了如何通过`Node()`函数传递路径至自定义的Costmap参数文件。 #### 4. 启动并测试配置效果 最后执行如下指令开启整个导航栈,观察终端输出确认一切正常运作: ```bash ros2 launch your_package_name bringup.launch.py ``` 此时应该能够看到机器人已经开始基于设定的成本映射进行自主移动规划了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值