【CMU-自主导航与规划】M-TARE planner 配置与运行

M-TARE docker
M-TARE 源码

一、依赖

Docker, Docker Compose, NVIDIA Container Toolkit, Nvidia GPU Driver(需要至少2个,带Nvidia GPU)

1.1 Docker

docker -v               #查询版本

1.2 Docker Compose

docker compose version

1.3 GPU

docker run --gpus all --rm nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi

如果有报错:

docker: Error response from daemon: could not select device driver ““ with capabilities: [[gpu]]

参考:docker gpu报错Error response from daemon: could not select device driver ““ with capabilities: [[gpu]]

安装nvidia-container-runtime,并进行docker的重启:

sudo systemctl restart docker

1.4 其他依赖

sudo apt install tmux tmuxp net-tools

二、安装

拉取指定版本镜像:

docker pull caochao/mtare-open-source:latest

下载工程docker:(推荐将工程放置在主目录下)

 git clone https://github.com/caochao39/mtare_docker.git
  • 在单机上运行多个robot:
    • 网络设置:
      使用ifconfig查找网络名称,后续需要使用
      如果没有网络,使用ip link列出所有网络,并选择想要使用的,使用以下指令进行设置
sudo ip link set <interface-name> up
  • 在文件mtare_docker/docker-compose-network.yml中:
    driver: macvlan进行注释;
    driver: bridge取消注释。

  • 在多机上运行多个robot:
    建议手动为每台计算机分配一个静态ip
    使用以太网电缆将每台计算机连接到同一个本地网络,不要使用无线连接;
    确认每台之间可以互相ping;
    查找每台计算机的网络名称;
    在文件mtare_docker/docker-compose-network.yml中,将driver: macvlan取消注释,将driver: bridge进行注释。

三、启动

在终端通过xhost + 允许docker连接x server,显示GUI,通过 xhost - 取消

如果不成功,可以尝试安装:sudo apt-get install lightdm
并使用 sudo dpkg-reconfigure lightdm 切换显示

启动:

./run_mtare.sh tunnel 30 2 0 wlp0s20f3

指令含义:

Usage: run_mtare.sh <comms_range> <robot_num> <robot_id> <network_interface>
: The environment to explore, which should be one of the following: tunnel, garage, campus, indoor, forest
<comms_range>: Communication range in meters, two robots further than this range cannot communicate with each other
<robot_num>: Total number of robots
<robot_id>: Robot id, ranging from 0 to robot_num - 1
<network_interface>: Name of the network interface to use, e.g. eth0

单机启动效果
多机启动需要开多个终端同时启动,且注意id需要在0到num-1的范围内。

./run_mtare.sh tunnel 30 5 0 eno1
./run_mtare.sh tunnel 30 5 1 eno1
...
./run_mtare.sh tunnel 30 5 4 eno1

在这里插入图片描述

其中:

  • 圆圈颜色表示通信状态,大小表示通信范围
    • 红色表示范围远,无法通信
    • 黄色:当一个机器人确定与另一个机器人会面,传递或请求信息,有利于整体探索效率时,它将暂停当前的探索进度,并追赶其他机器人。指示通信范围的圆圈变为黄色。
      (Representation Granularity Enables Time-Efficient Autonomous Exploration in Large)
    • 绿色:当两个机器人在彼此的通信范围内时,它们可以相互交换有关勘探进展的信息。
  • 所有参与探索的机器人的位置都用小球体表示(红色)
  • rviz的显示设置同:https://github.com/caochao39/tare_planner

四、停止

使用脚本:mtare_docker/stop.sh
停止所有机器人:./stop.sh
停止某个:./stop.sh <robot_id>

五、内容包含

  • M-TARE源码:https://github.com/caochao39/mtare_planner
  • 虚拟环境:https://github.com/HongbiaoZ/autonomous_exploration_development_environment
  • ROS1 bridge:
    • 源码:https://github.com/ros2/ros1_bridge
    • 作者所用改进版:https://drive.google.com/file/d/1ZI4urXESzzBNyuV0ToSgndKDIShpYWko/view
  • ROS2 https://drive.google.com/file/d/1n3NG6eiZeafJGXRxOW_fkhylb-SsHSor/view

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

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

相关文章

Python 数据分析实战——社交游戏的用户流失?酒卷隆治_案例2

# 什么样的顾客会选择离开 # 数据集 DAU : 每天至少来访问一次的用户数据 数据内容 数据类型 字段名 访问时间 string&#xff08;字符串&#xff09; log_data 应用名称 string&#xff08;字符串&#xff09; app_name 用户 ID int&#xff08;数值&#xff09; user_id…

23-GPTs Actions详细解析:如何查找、对接API,及如何编写Schema

目录 1. 挖掘一个API接口,并将其对接到GPTs中1.1 如何寻找API1.2 把API对接到Schema中1.3 Schema中的参数结构本节详细介绍GPTs Actions 中的Schema。如何写、它里面的结构是什么、里面参数的含义。 后续使用GPTs过程中,如何找到自己想要的API,以及如何把找到的API对接到GPT…

Shell - 学习笔记 - 2.4 - Shell位置参数(命令行参数)

我们先来说一下 Shell 位置参数是怎么回事。 运行 Shell 脚本文件时我们可以给它传递一些参数&#xff0c;这些参数在脚本文件内部可以使用$n的形式来接收&#xff0c;例如&#xff0c;$1 表示第一个参数&#xff0c;$2 表示第二个参数&#xff0c;依次类推。 同样&#xff0c;…

时隔3年 | 微软 | Windows Server 2025 重磅发布

最新功能 以下是微软产品团队正在努力的方向&#xff1a; Windows Server 2025 为所有人提供的热补丁下一代 AD 活动目录和 SMB数据与存储Hyper-V 和人工智能还有更多… Ignite 发布视频 Windows Server 2025 Ignite Video 介绍 Windows Server 2022 正式发布日期是2021年…

Uncaught SyntaxError: Unexpected token ‘<‘ (at EasyPlayer-element.min.js:1:1)

在vue项目运行的时候&#xff0c;F12出现以下错误 Uncaught SyntaxError: Unexpected token < (at EasyPlayer-element.min.js:1:1)原因 在index.html中引入 这个&#xff0c;但是在static文件夹中并不存在该文件 解决办法 将EasyPlayer-element.min.js这个文件复制到stati…

Linux部署lomp环境,安装typecho、WordPress博客

部署lomp环境&#xff0c;安装typecho、WordPress博客 一、环境要求1.1.版本信息1.2.准备阿里云服务器【新用户免费使用三个月】1.3.准备远程工具【FinalShell】 二、Linux下安装openresty三、Linux下安装Mysql四、安装Apache【此步骤可省略】4.1.安装Apache服务及其扩展包4.2.…

EasyExcel通用导入 | 简单封装

0. 前言&#xff1a;1. 基本思路&#xff1a;2. 调用代码&#xff1a; 0. 前言&#xff1a; 之前做了好几个导入&#xff0c;用EasyExcel每次都要定义监听器去处理&#xff0c;就想能不能做个通用的方式&#xff0c;如下 1. 基本思路&#xff1a; 导入无非主要就是参数校验和数…

人脸识别技术在网络安全中有哪些应用前景?

人脸识别技术在网络安全中有广泛的应用前景。以下是一些主要的应用方向&#xff1a; 1. 身份验证和访问控制&#xff1a;人脸识别可以用作一种更安全和方便的身份验证方法。通过将用户的人脸与事先注册的人脸进行比对&#xff0c;可以实现强大的身份验证&#xff0c;避免了传统…

第九节HarmonyOS 常用基础组件14-DataPanel

1、描述 数据面板组件&#xff0c;用于将多个数据占比情况使用占比图进行展示。 2、接口 DataPanel(options:{values: number[], max?: numner, type?: DataPanelType}) 3、参数 参数名 参数类型 必填 描述 values number[] 是 数据值列表&#xff0c;最多含9条数…

【云原生】docker-compose单机容器集群编排工具

目录 一、docker-compose容器编排的简介 二、docker-compose的使用 1、docker-compose的安装 2、docker-compose的配置模板文件yaml文件的编写 &#xff08;1&#xff09;布尔值类型 &#xff08;2&#xff09;字符串类型 &#xff08;3&#xff09;一个key有多个值 &am…

簇索引和普通索引是什么在不同的SQL语句中哪个效率更高

当我们在讨论数据库中的簇索引&#xff08;Clustered Index&#xff09;和普通索引&#xff08;Non-Clustered Index&#xff09;时&#xff0c;可以通过具体的例子来理解它们之间的差异和工作方式。以下是基于SQL Server的示例&#xff0c;但请注意&#xff0c;其他数据库系统…

中间件

在 Java 开发中&#xff0c;中间件是指位于应用程序和操作系统之间的软件层&#xff0c;它提供了一些通用的功能和服务&#xff0c;帮助简化开发和部署过程&#xff0c;提高系统的可靠性、性能和可扩展性。 常见的 Java 中间件包括&#xff1a; 1.应用服务器&#xff08;Appl…

WebGL 入门:开启三维网页图形的新篇章(下)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

SQL报错注入

君衍. 一、sqllabs第五关报错注入updatexml报错注入原理及思路 二、常见的报错函数三、floor报错注入原理1、概念2、函数回顾2.1 rand函数2.2 floor(rand(0)*2)函数2.3 group by函数2.4 count(*)函数2.5 函数综合报错 3、报错分析4、总结 一、sqllabs第五关报错注入 之前我在这…

spring-bus消息总线的使用

文章目录 依赖bus应用接口用到的封装参数类 接收的应用监听器定义的事件类 使用bus定义bus远程调用A应用数据更新后通过bus数据同步给B应用 依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bus-amqp…

路由、组件目录存放

文章目录 单页应用程序&#xff1a;SPA- Single Page Application路由的介绍VuePouter的介绍VueRouted 的使用 组件目录存放问题&#xff08;组件分类&#xff09; 单页应用程序&#xff1a;SPA- Single Page Application 单页应用&#xff08;SPA&#xff09;:所有功能在一个…

VA_LIST可变参数列表使用学习

前言 在C语言中&#xff0c;我们写函数的时候&#xff0c;有可能遇到函数入口参数不确定的问题&#xff0c;就可以使用val_list。va_list是为解决变参问题定义的一个类型&#xff0c;可以参数的个数不定&#xff0c;也可以每个参数的类型不同&#xff0c;使用需要包含头文件st…

动手学RAG:汽车知识问答

原文&#xff1a;动手学RAG&#xff1a;汽车知识问答 - 知乎 Part1 内容介绍 在自然语言处理领域&#xff0c;大型语言模型&#xff08;LLM&#xff09;如GPT-3、BERT等已经取得了显著的进展&#xff0c;它们能够生成连贯、自然的文本&#xff0c;回答问题&#xff0c;并执行…

Redis 面试题 | 20.精选Redis高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

在Ubuntu中修改系统时间并使其在掉电时保存

可以按照以下步骤进行&#xff1a; 打开终端。输入以下命令来修改系统时间&#xff1a; bash复制代码 sudo date --set"YYYY-MM-DD HH:MM:SS" 将YYYY-MM-DD HH:MM:SS替换为你想要设置的实际日期和时间。 3. 输入管理员密码以确认修改。 4. 输入以下命令来将系统时…