【ROS-Navigation-costmap_2d】costmap_prohibition_layer障碍物插件

2023-05-16

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、costmap_2d是什么?
  • 二、使用步骤
    • 1.下载源代码
    • 2.安装插件
    • 3.在costmap_2d中插入障碍物
    • 4.修改launch文件
    • 5.设置障碍物坐标参数
    • 6.主要事项
  • 总结


前言

随着SLAM的不断发展,机器人这门行业也越来越重要,很多人都开启了学习机器人,本文就介绍了ROS机器人操作系统的SLAM导航方向的navigation导航包中的costmap_2d。

以下是添加一个自定义的障碍物插件的流程

一、costmap_2d是什么?

在这里插入图片描述

costmap_2d是navigation导航包中的一部分,在本文中,着重介绍如何在costmap_2d中添加障碍物,也叫做虚拟墙。

二、使用步骤

1.下载源代码

https://github.com/rst-tu-dortmund/costmap_prohibition_layer

2.安装插件

将代码放置到工作空间的src目录下面,使用catkin_make_isolated编译,catkin_make也可以。
编译后使用下面的命令查看是否安装成功:

rospack plugins --attrib=plugin costmap_2d

如果终端输出下面,则证明插件可使用

costmap_prohibition_layer /home/lyh/catkin_acad/src/costmap_prohibition_layer-repush3/costmap_plugins.xml
costmap_2d /opt/ros/kinetic/share/costmap_2d/costmap_plugins.xml

3.在costmap_2d中插入障碍物

在参数配置文件夹中找到 global_costmap_params.yaml 和 local_costmap_params.yaml,在末尾添加或修改:

 plugins:
      - {name: static_map,       type: "costmap_2d::StaticLayer"}
      - {name: obstacles,        type: "costmap_2d::VoxelLayer"}
      - {name: costmap_prohibition_layer,        type: "costmap_prohibition_layer_namespace::CostmapProhibitionLayer"}     
      - {name: inflation_layer,        type: "costmap_2d::InflationLayer"}


4.修改launch文件

修改启动movebase的launch文件,添加以下内容:

<rosparam file="$(find turtlebot3_navigation)/param/prohibition_areas.yaml" command="load" ns="global_costmap/costmap_prohibition_layer" />
<rosparam file="$(find turtlebot3_navigation)/param/prohibition_areas.yaml" command="load" ns="local_costmap/costmap_prohibition_layer" />

5.设置障碍物坐标参数

首先需要在参数配置文件夹(就是和 global_costmap_params.yaml 以及 local_costmap_params.yaml 相同位置的文件夹)中创建新的文档,命名为 "prohibition_areas.yaml".
  然后在prohibition_areas.yaml文档中输入:

prohibition_areas:
#定义一个禁止点
 - [17.09, -6.388]
# 定义一个禁止通行的线
 - [[8.33, 2.11],
    [8.26, 5.11]]
# 定义一个禁止通行的区域
 - [[-11.15, -15.614],
    [-12.35, -13.89],
    [-10.05, -12.218]]
    

6.主要事项

注意事项:
1 一定要严格按照上述格式来设置坐标,我之前遇到的格式错误导致不能识别禁止区域坐标情形有
  (1):坐标前的短横线没对齐
  (2):定义禁止区域或者禁止线,两坐标之间缺少了逗号
2 你可以同时定义多个禁止点/多个禁止线/多个禁止区域,或者混合定义多个点/线/区域.


总结

以上就是今天要讲的内容,本文仅仅简单介绍了障碍物插件的使用,而costmap_2d提供了大量能使我们快速便捷地添加我们想要添加的功能,障碍物插件只是其中的一部分。

下图是我所实现的障碍物插件:
在这里插入图片描述

https://blog.csdn.net/qq_41995710/article/details/88750354
https://blog.csdn.net/Neo11111/article/details/104852657/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【ROS-Navigation-costmap_2d】costmap_prohibition_layer障碍物插件 的相关文章

  • IText 编辑或删除 PDF 上的图层

    H All 我正在使用 IText 在 PDF 上添加文本图层 现在我想编辑PDF上的现有图层 图层也是仅由IText创建的 看来 IText 没有这样的方法支持 我想到的另一种方法是删除现有图层并在其位置上放置新图层 看来 IText 也
  • 使用 Android 设计支持库从右到左导航抽屉菜单

    我正在使用 android 设计支持库 我想知道如何拥有从右到左的导航抽屉 我将重力设置为右侧 但只有导航抽屉本身移动到右侧 我想知道如何将右侧的菜单项 导航视图
  • React Native - 设备后退按钮处理

    我想检查当按下设备后退按钮时是否有多个屏幕在堆栈上 如果是 我想显示上一个屏幕 如果否 我想退出应用程序 我已经检查了一些例子 但那些使用BackAndroid and Navigator 但它们都已被弃用 BackHandler是替代Ba
  • WPF 的现代 UI - 导航

    如何在页面之间传递参数 我尝试向页面 uri 添加参数 但它不起作用 因为我无法在用户控件上使用 onNavieratedTo 事件 请帮忙 您必须使用 OnFragmentNavigation public void OnFragment
  • 如果我使用圆形图像,图像不会显示在 imageView 中

    我有一个表视图 我需要在节标题中显示author img 在 ViewForSectionHeader 方法中 我想让图像成为圆形 但如果我这样做 无论在模拟器中还是在真实设备中 图像都根本不会显示 如果我删除代码 uiimageview
  • 单页网站上复杂的活动状态导航

    HTML div class logo ribbon a href top a div
  • 如何清除导航堆栈?

    我的应用程序中的导航有问题 我使用 xamarin forms 如何清理我的导航堆栈 不使用 Pop 和 Push 我可以查看完整的导航堆栈吗 在最新版本的 Xamarin Forms 中 您可以使用以下方式查看导航堆栈 Navigatio
  • 谷歌地图API可以进行语音导航吗?

    如何使用 google 地图 api v3 激活基于语音的方向 我已经实现了给出从起点到终点的方向的地图 但现在我想听听我当前所在位置的名称 请帮忙 我在 ios UIWebView 中实现了它 所以我从 GPS 获取当前位置 现在我每 2
  • 传单通过图层选择添加/删除图例

    我是 Leaflet JavaScript 的新手 并且一直在努力让图例仅在从图层控件中选择特定图层时才显示地图 我有三层 其中一层我希望没有图例 另外两层有相应的图例 我遇到了一个例子 但未能使其工作 Add and remove leg
  • 导航到页面会增加内存使用量 Windows Universal 8.1

    我正在创建一个 Windows Universal 8 1 应用程序 每次我导航到一个页面 然后导航回来 然后再次导航到该页面 该页面的新实例就会保存在内存中 显然 垃圾收集器会在一段时间后释放内存 但是如果不需要 我宁愿不使用内存 有没有
  • 如何使用 Material.BottomNavigationView 设置 Jetpack 导航

    我无法设置导航组件com google android material bottomnavigation BottomNavigationView它给出了一个错误 这是我尝试使用的代码 Setup bottom navigation vi
  • 尝试将 CABasicAnimation 位置和图层不透明度延迟 3 秒,但是

    我试图使用 setBeginTime 将图层的不透明度和位置的动画延迟 3 秒 我将图层命名为boxLayer 动画进展顺利 但在前 3 秒内 该图层不应显示 该图层以其最终位置和不透明度显示 不应该 组动画并不能解决该问题 有人可以帮忙吗
  • jquery导航

    我正在为网站登陆页面创建一个简单的导航 它将用户引导到客户业务的两侧之一 基本上包括当您滚动到一侧时屏幕被分成两半 另一侧淡出 My code HTML div a href retail html Retail a a href resi
  • JSF 2 全局异常处理,导航到错误页面未发生

    我正在开发一个基于 JSF 2 0 的 Web 应用程序 我正在尝试实现一个全局异常处理程序 每当发生任何异常 例如 NullPointerException ServletException ViewExpiredException 等
  • 如何使用 FLUTTER go_router 弹出上下文?

    如何使用 flutter go router 返回上一个屏幕 如何弹出上下文 目前 我只是将一个新屏幕添加到堆栈中 无论我想返回还是前进 onTap gt context go secondPage 我用过 context pop 但它会抛
  • Flutter:go_router如何将多个参数传递到其他屏幕?

    在普通颤动中 我用来将多个参数传递到其他屏幕 如下所示 Navigator of context push MaterialPageRoute builder gt CatalogFilterPage list list bloc bloc
  • Jetpack Compose:嵌套导航,在嵌套路径中使用底部栏导航

    我的应用程序具有以下结构 并且由于路线 B 有自己的底部导航栏 因此有自己的 NavHost 我如何从屏幕 C 从选项卡栏打开 导航到路线 A Nested Route onboarding route startDestination s
  • 从 ADF Faces JSF 1.2 中的托管 bean 构造函数导航

    是否可以从托管 bean 的构造函数导航到另一个页面 视图 如果发生任何异常 我希望进行此重定向 我尝试了很多方法 Try 1 getFacesContext responseComplete getFacesContext getAppl
  • 创建仅在使用 PDFBox 打印时显示的水印(pdf 可选内容)

    我遇到过许多使用 PDFBox Layer Utility 的appendFormAsLayer 方法的示例 如下所示 Places the given form over the existing content of the indic
  • Jupyter Notebook:搜索文本并转到单元格。

    选择所有单元格时 F键盘快捷键打开 查找和替换 界面 我可以在其中查看搜索表达式的所有单元格 并可能替换该表达式 但是我还没有找到进入这些牢房的方法 这是特别有问题的 因为我的浏览器在使用 折叠标题 扩展时没有检测到这些单元格 查找和替换界

随机推荐

  • OpenCV第七篇:车牌识别

    目录 1 调整图片大小 xff0c 并获取灰度图 2 双边滤波去除噪音 xff1a cv2 bilateralFilter 3 边缘检测 xff1a cv2 Canny xff08 image xff0c threshold1 xff0c
  • gitee如何添加仓库成员

    1 进入gitee项目中 xff0c 如图 xff0c 点击 管理 2 点击 仓库成员管理 xff0c 展开该节点 3 点击 所有 xff0c 也可以选择其他选项 xff0c 比如 开发者 4 点击 添加仓库成员 xff0c 邀请用户 5
  • A*寻路算法之解决目标点不可达问题

    在游戏世界的寻路中 xff0c 通常会有这样一种情况 xff1a 在小地图上点击目标点时 xff0c 点击到了障碍物或者建筑上 xff0c 然后游戏会提示我们目标地点无法到达 玩家必须非常小心的在小地图上点击目标区域的空白部分 xff0c
  • Windows访问samba共享时,提示:“你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问”

    此问题需要修改Win10 网络策略 按window 43 R键输入gpedit msc 来启动本地组策略编辑器 xff0c 如下 xff1a 依次找到 计算机配置 管理模板 网络 Lanman工作站 这个节点 xff0c 在右侧内容区可以看
  • 解决XCode错误:Command PhaseScriptExecution failed with a nonzero exit code

    一 环境 XCode版本 xff1a 14 3 二 错误场景信息 使用模拟器或真机调试 编译等都不出错 xff0c 唯独在进行Archive时 xff0c 会出现以下错误 xff1a Command PhaseScriptExecution
  • ubuntu+nvidia显卡驱动安装+(顺带)解决rviz卡顿/CPU使用率过高问题/compiz占用CPU过高问题

    前言 我原本安装nvidia显卡驱动的方式为 xff1a 从官网下载 run文件 xff0c 参考教程link 虽然安装成功 xff0c 运行深度学习相关代码没有出状况 xff0c 但仍然存在一些问题 重新通过ppa方式安装后 xff0c
  • Docker与ROS可视化(RViz)

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言一 Docker中构建ROS环境二 Docker内ROS与主机ROS通信三 Docker内开启RViz1 OpenGL2 n
  • 卡尔曼滤波

    文章目录 前言一 初印象二 基本概念三 公式及参数四 其他总结 前言 之前看Fast LIO的时候 xff0c 了解过卡尔曼滤波的知识 xff0c 重新整理下 同时推荐一个很棒的Kalman Filter讲解网站 xff1a https w
  • 京东云前端JS分片上传完整版

    京东云上传我是写了以下几步 注 xff1a 京东云分片上传时成功则有data返回 失败则返回err 1 请求后台接口获取身份信息等数据用于访问 2 createMultipartUpload创建上传请求 身份信息 data为第一步时请求后台
  • Windows10环境下Python 开发环境搭建

    目录 前言 xff1a 一 安装包 二 Python安装 三 Pycharm安装 四 pip使用 前言 xff1a 本文档使用的安装包版本 xff1a python3 9 6 pycharm community 2021 1 3 本文安装提
  • Docker run 命令常用参数

    docker run xff1a 创建一个新的容器并运行一个命令 docker run OPTIONS IMAGE COMMAND ARG OPTIONS说明 xff1a it 以交互模式运行容器 xff1b gpus all xff1a
  • 3D resnet根据UCF101数据集制作自己的数据集实现动作识别

    3D resnet根据UCF101数据集制作自己的数据集实现动作识别 配置要求数据集数据集结构 构建数据集训练测试 配置要求 作者代码 3D resnet pytorch gt 0 4FFmpeg FFprobePython 3 我这里使用
  • STM32移植ucos-III并实现多任务——HAL

    文章目录 前言一 uC OS III简介1 什么是uC OS III2 uC OS III的特点 二 基于HAL库stm32移植uC OS III1 STM32CubeMX新建一个工程2 用keil打开工程完成uC OS III的移植 三
  • Mapreduce程序实现思路

    Map的输出 是key value的 list Reduce的输入是key value的list MapReduce核心思想 分而治之 xff0c 先分后和 MapReduce是hadoop提供的一个分布式运算框架 1将任务分为两个阶段执行
  • 人的梦想 是不会结束的!

    文章目录 前言一 一年之约1 学习嵌入式2 探寻嵌入式之路 二 我的心跳1 奉劝2 行动人的梦想是永远不会结束的 xff01 前言 随着在程序员这条路上不断发展 xff0c 自己学得越多 xff0c 就会感觉自己学的东西有多渺小 下面就说说
  • 在linux下启动tomcat,并实时查看tomcat的控制台输出

    在windows下 xff0c 只要双击运行start bat文件 xff0c tomcat就能正常启动 xff0c 并且在控制台中保持持续输出 xff0c 方便维护人员实时查看程序运行状态 但是在Linux中 xff0c 情况会比wind
  • apt-get autoremove remove 新手收割者

    每一个接触linux系统的小坏蛋 xff0c 都会接触apt get 不出意外的话 xff0c 每一个小坏蛋都会尝试被sudo apt get remove 所摆布的命运 重申一遍 xff0c 重要的事情说三遍 文章目录 不要用sudo a
  • c++ stringstream ss()

    定义了三个类 xff1a istringstream ostringstream 和 stringstream xff0c 分别用来进行流的输入 输出和输入输出操作 本文以 stringstream 为主 xff0c 介绍流的输入和输出操作
  • C++ getline函数用法详解

    文章目录 前言一 getline 函数的定义二 getline 函数的使用1 可读取整行 xff0c 包括前导和嵌入的空格 xff0c 并将其存储在字符串对象中 2 char delim表示遇到这个字符停止读入 xff0c 在不设置的情况下
  • 【ROS-Navigation-costmap_2d】costmap_prohibition_layer障碍物插件

    系列文章目录 文章目录 系列文章目录前言一 costmap 2d是什么 xff1f 二 使用步骤1 下载源代码2 安装插件3 在costmap 2d中插入障碍物4 修改launch文件5 设置障碍物坐标参数6 主要事项 总结 前言 随着SL