30.Isaac教程--Costmap规划器

news2024/11/17 16:30:02

Costmap规划器

在这里插入图片描述
ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html

文章目录

  • Costmap规划器
    • 组件
    • 消息
    • 入门
    • 自定义图
    • 使用自定义地图
      • 改变规划器
      • 将 Costmap 添加到视线中
    • 将通道添加到配置

Isaac SDK 中的标准导航规划器指示机器人在避开障碍物的同时采用最短路线到达目标。 但是,对于许多环境,您可能需要指定限制区域或为机器人提供交通规则。

Costmap Planner 应用程序允许您创建更细粒度的导航行为。 它提供四种主要类型的 FlatmapCost:

  • OccupancyFlatmapCost,可用于提供地图

  • PolygonFlatmapCost,可用于实现禁区或惩罚区

  • PolylineFlatmapCost,可用于定义高速公路

  • DirectedAreaFlatmapCost,可用于创建有向矢量场

这些层可以使用 MultiplicationFlatmapCost 或 AdditionFlatmapCost 相乘或相加,您可以通过实现 FlatmapCost 接口添加您自己的自定义 FlatmapCost。

组件

此应用程序使用以下组件:

  • isaac.path_planner.Pose2GridGraphBuilder

  • isaac.path_planner.Pose2GraphPlanner

消息

此应用程序使用 Pose2GraphProto 消息。

入门

运行以下命令在 /tmp/中为未来工厂 (demo_5) 的地图创建一个图:

bazel run packages/path_planner/apps:pose2_graph_builder

然后,使用新的规划器运行 flatsim:

bazel run //packages/flatsim/apps:flatsim -- --demo demo_5

自定义图

要自定义图形,请编辑 packages/path_planner/apps/pose2_graph_builder.app.json 文件。

要选择地图,请编辑“map”配置:

"map": {
      "occupancy": {
        "cell_size": 0.05,
        "filename": "apps/assets/maps/virtual_factory_1.png"
      }
    },

要将平面图添加到列表中,请编辑“flatmap_cost”配置:

{
  "name": "flatmap_cost",
  "start_order": -100,
  "components": [
    {
      "name": "OccupancyFlatmapCost",
      "type": "isaac::map::OccupancyFlatmapCost"
    },
    {
      "name": "inside_round",
      "type": "isaac::map::PolylineFlatmapCost"
    },
    {
      "name": "outside_round",
      "type": "isaac::map::PolylineFlatmapCost"
    },
    {
      "name": "restricted_area",
      "type": "isaac::map::PolygonFlatmapCost"
    },
    {
      "name": "MultiplicationFlatmapCost",
      "type": "isaac::map::MultiplicationFlatmapCost"
    }
  ]
}
  • MultiplicationFlatmapCost 组件目前是必需的。 但是,您可以删除或添加更多自定义层。

  • OccupancyFlatmapCost 组件确保机器人不会在地图中发生碰撞。

  • “inside_round”是指示机器人在内环行驶的成本图。

  • “outside_round”是指示机器人在外环行驶的成本图。

  • “restricted_area”禁止在中间区域行驶。

使用自定义地图

改变规划器

要将 GlobalPlanner 切换为新的 planner,需要在创建图形后切换行为,如 //packages/flasim/apps/demo_5.json 所示:

"flatsim.navigation.planner.planner_switch_behavior": {
  "SwitchBehavior": {
    "desired_behavior": "$(fullname flatsim.navigation.planner.pose2_graph_planner)"
  }
},

您还需要编辑 SwitchBehavior 节点以确保节点名称与新应用匹配。

您可能还需要更改新规划器的配置以确保它加载正确的图表:

"navigation.planner.pose2_graph_planner": {
   "Pose2DirectedGraphLoader": {
     "bucket_size": 0.5,
     "graph_filename": "/tmp/pose2_grid_graph.capnp.bin"
   }
 },

将 Costmap 添加到视线中

此步骤是可选的,但它可能有助于在 Sight 中可视化用于成本地图的不同区域。 只需添加构建图形的应用程序中使用的 Costmap。 请注意,您只需要添加渲染某些东西的代价地图——即 只有“PolylineFlatmapCost”:

{
 "graph": {
   "nodes: [
    {
     "name": "flatmap_cost",
     "start_order": -100,
     "components": [
       {
         "name": "inside_round",
         "type": "isaac::map::PolylineFlatmapCost"
       },
       {
         "name": "outside_round",
         "type": "isaac::map::PolylineFlatmapCost"
       }
     ]
   },
   ...
 "config": {
   "flatmap_cost": {
      "inside_round": {
        "polyline": [
          [36.0, 109.5], [36.0, 16.0], [34.5, 14.5], [16.0, 14.5], [14.5, 16.0],
          [14.5, 109.5], [16.5, 111.0], [34.5, 111.0], [36.0, 109.5]
        ],
        "width": 0.8,
        "penality_angle": 1.0,
        "penality_distance": 2.0,
        "outside_weight": 10.0
      },
      "outside_round": {
        "polyline": [
          [38.0, 110.0], [35.0, 113.0], [16.0, 113.0], [12.5, 110.0],
          [12.5, 15.5], [15.5, 12.5], [35.0, 12.5], [38.0, 15.5], [38.0, 110.0]
        ],
        "width": 0.8,
        "penality_angle": 1.0,
        "penality_distance": 2.0,
        "outside_weight": 10.0
      }
    },
    ...
  }
}

将通道添加到配置

如果要默认启用配置,则需要创建自己的 SightRenderer 或修改现有的:

"flatsim.navigation.sight_widgets": {
   "Map View": {
     "type": "2d",
     "channels": [
       { "name": "map/occupancy/map" },
       { "name": "flatmap_cost/outside_round/area" },
       { "name": "flatmap_cost/outside_round/polyline" },
       { "name": "flatmap_cost/restricted_area/area" },
       { "name": "flatmap_cost/inside_round/polyline" },
       { "name": "flatmap_cost/inside_round/area" },
       { "name": "map/waypoints/waypoints" },
       { "name": "flatsim.navigation.localization.viewers/FlatscanViewer/beam_endpoints" },
       { "name": "flatsim.navigation.localization.viewers/FlatscanViewer2/beam_endpoints" },
       { "name": "flatsim.navigation.go_to.goal_viewer/GoalViewer/goal" },
       { "name": "flatsim.navigation.localization.viewers/RobotViewer/robot_model" },
       { "name": "flatsim.navigation.localization.viewers/RobotViewer/robot" },
       { "name": "flatsim.navigation.planner.viewers/Plan2Viewer/plan" },
       { "name": "flatsim.navigation.control.lqr/isaac.lqr.DifferentialBaseLqrPlanner/plan" }
     ]
   }
 },

更多精彩内容:
https://www.nvidia.cn/gtc-global/?ncid=ref-dev-876561

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/173177.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

赛意SMOM和金蝶云星空单据接口对接

赛意SMOM和金蝶云星空单据接口对接数据源系统:金蝶云星空金蝶K/3Cloud在总结百万家客户管理最佳实践的基础上,提供了标准的管理模式;通过标准的业务架构:多会计准则、多币别、多地点、多组织、多税制应用框架等,有效支持企业的运营…

数据结构进阶 unordered系列的效率对比

作者:小萌新 专栏:数据结构进阶 作者简介:大二学生 希望能和大家一起进步! 本篇博客简介:对比map set和unordered系列map和set的效率 unordered系列的效率对比map/set与unordered_map/unordered_set的区别map/set与uno…

HTTP简史

今天一起来研究Http协议的一些事情,通过本文你将了解到以下内容:Http协议各版本的对比和优缺点Http2.0协议相关的SPDY协议、二进制分帧协议、多路复用、首部压缩、服务推送等基本原理HTTP3.0和QUIC协议乘风破浪前往知识的海洋吧,要开船了&…

Linux常用命令——telnet命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) telnet 登录远程主机和管理(测试ip端口是否连通) 补充说明 telnet命令用于登录远程主机,对远程主机进行管理。telnet因为采用明文传送报文,安全性不好,很多Linux服务器都不开…

【Java IO流】字符流详解

文章目录1. 前言2. 字符输入流3. 字符输出流4. 字符流底层原理解析4.1 字符输入流4.2 字符输出流1. 前言 在上一篇字符集详解中我们说到了产生乱码的原因,要么是读取数据时未读完整个汉字,要么是因为编码和解码的方式不统一,对于后者我们只需…

PromQL之函数

Prometheus 版本 2.41.0 平台统一监控的介绍和调研直观感受PromQL及其数据类型PromQL之选择器和运算符PromQL之函数 PromQL 聚合函数 PromQL 的聚合函数只能用于瞬时向量,支持的聚合函数有: sum 求和min 最小值max 最大值avg 平均值group 分组&#xf…

Nginx与LUA(5)

您好,我是湘王,这是我的CSDN博客,欢迎您来,欢迎您再来~Nginx诞生以来就获赞无数,反向代理、负载均衡、流量限制与流量扩展都是它的拿手好戏。基本上是互联网应用的主流入口,和计算、即时通讯、存…

python批量下载modis数据(可筛选日期、范围、数据类型)

找了一圈下modis数据的,有的不能空间筛选有的不能下初级产品(也可能没找到),不甚满意,自己搞了个 0 前言 用到的主要依赖是selenium,下载网站是https://ladsweb.modaps.eosdis.nasa.gov,环境是…

ensp实现不同VLAN之间的通信

1.VLAN的基本配置 一个简单的VLAN实验&#xff0c;基本配置如图。 其中交换机为S5700。 在只对四台PC配置IP地址&#xff0c;交换机不用配置后&#xff0c;四台PC可以互相ping通。 下面是对交换机配置VLAN的方法 <Huawei>sys #进入系统视图 [Huawei…

钉钉搭和金蝶云星空接口打通对接实战

数据源系统:阿里宜搭宜搭是阿里巴巴自研的基于钉钉和阿里云的低代码平台&#xff0c;可让用户通过简单的拖拽、配置即可完成应用搭建&#xff0c;为每个组织提供低门槛、高效率的数字化业务应用生产新模式。有效缩减企业应用开发时间&#xff0c;助力企业数字化升级。对接目标系…

第四层:友元与函数成员别样定义

文章目录前情回顾友元友元的概念友元的目的友元的关键字友元的两种种用法全局函数做友元类做友元函数成员的别样定义有缘人学友元&#xff0c;急速突破第四层本章知识点&#xff08;图片形式&#xff09;&#x1f389;welcome&#x1f389; ✒️博主介绍&#xff1a;一名大一的…

Python怎么获取节假日信息?

“holidays” 是一个 Python 第三方库&#xff0c;它可以用来解析和处理节假日信息。 该库提供了一系列函数&#xff0c;可以用来检查某一天是否是节假日、获取某一年中所有节假日的列表等。它支持多种国家和地区的节假日&#xff0c;例如美国、加拿大、澳大利亚、英国等。 “…

【软件架构思想系列】分层架构

- 分层架构 -今天谈下架构设计中的分层思想和分层模型。架构思维概述对于架构思维本身仍然是类似系统思维&#xff0c;结构化思维&#xff0c;编程思维等诸多思维模式的一个合集。由于架构的核心作用是在业务现实世界和抽象的IT实现之间建立起一道桥梁&#xff0c;因此…

CUDA编程笔记(4)

文章目录前言1.CUDA的计时程序2.CUDA程序的计时影响GPU加速的关键总结前言 怎么才能看出使用cuda编程&#xff0c;提高了程序的性能&#xff0c;一般都是通过比较程序运行的时间来验证。所以熟悉程序的运行时间的计时&#xff0c;可以查看优化的性能效果。 1.CUDA的计时程序 …

每日亿题(面试题)

每日亿题(面试题) new Fn和new Fn()有什么区别&#xff1f; 1.首先如果是为传参数的情况下结果是相同的 2.如果是获取属性new Fn() 正常执行&#xff0c;而 new Fn 报错 3.不带括号不能给构造函数传参 分析比较 opacity: 0、visibility: hidden、display: none 优劣和适用…

Spring看这一篇文章就够了

第一章 Spring简介 第1节 Spring的介绍 Spring官网地址 1https://spring.ioSpring的介绍 1Spring是一个开放源代码的设计层面框架&#xff0c;他解决的是业务逻辑层和其他各层的松耦合问题&#xff0c;因此它将面向接口的编程思想贯穿整个系统应用。Spring是于2003年兴起的一…

4.2w字,详细的带你认识基础I/O【Linux--基础IO】

前言 相信大家最开始都挺疑惑的&#xff0c;什么I/O。在计算机操作系统中&#xff0c;所谓的I/O实则就是输入&#xff08;Input&#xff09;和输出&#xff08;Output&#xff09;&#xff0c;也可以理解为读&#xff08;Read&#xff09;和写&#xff08;Write&#xff09;&…

Linux常用命令——tar命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) tar Linux下的归档使用工具&#xff0c;用来打包和备份。 补充说明 tar命令可以为linux的文件和目录创建档案。利用tar&#xff0c;可以为某一特定文件创建档案&#xff08;备份文件&#xff09;&#xff0c;也…

mysql 基本组成

1 mysql 基本组成 1.1、mysql连接器的工作流程: 1.2、查看连接状态: show processlist; Note:客户端太长时间没动静 就自动断开 这个时间是由wait_timeout参数控制的,默认8h 长连接短链接 长连接是链接成功后,如果客户端持续有请求,则使用同一个链接[尽量使用长连接,因为每次…

组件间通信

1、Vue组件的嵌套关系 1.1、认识组件的嵌套 前面我们是将所有的逻辑放到一个App.vue中&#xff1a; 在之前的案例中&#xff0c;我们只是创建了一个组件App&#xff1b;如果我们一个应用程序将所有的逻辑都放在一个组件中&#xff0c;那么这个组件就会变成非常的臃肿和难以维…