虚拟机作为master远程控制台式机中的机器人在仿真环境中进行slam地图构建与自主导航

news2024/11/26 16:42:16

文章目录

  • 前言
  • 一、思路流程
  • 二、具体步骤
    • 1.虚拟机网络配置
    • 2.台式机网络配置
    • 3.网络测试
  • 三、远程操控SLAM建立地图
  • 三、远程操控SLAM导航


前言

虚拟机作为master远程控制台式机中的机器人在仿真环境中进行slam地图构建与自主导航

最近有时间一直在搞Ubuntu虚拟机与台式机的通讯,想要实现不仅仅是通过ssh登陆到台式机中,通过键盘控制节点控制机器人的移动,期望的效果是把虚拟机作为MASTER,在虚拟机中能启动RVIZ等,实时的看到机器人的运动情况。

至于为什么不用向日葵,前面文章也提到了,后面要在Ubuntu环境下进行多机器人编队等功能。


一、思路流程

第一部分是想记录下自己的摸索过程,成功实现后回头看起来也很简单,但在实际的摸索中确实是走了很多的弯路,遇到了很多的问题,这也是写csdn的初衷。

在前面成功实现了虚拟机和Ubuntu双系统中单个机器人的SLAM地图构建、机器人自主导航等功能。接着进行ROS多机通讯,开始按照(rosrobot.cn)官网对虚拟机和双系统的.bashrc文件进行互通ip的配置,一直无法成功通讯,尝试了很久后,暂时放弃了这个思路…

之后去找以前参加传感器比赛时ssh多机通讯的资料,中间也遇到了各种各样的问题像安装ssh通讯的依赖、添加通讯密钥、(ROS_URI_MASTER/HOST_NAME)等的匹配问题,最终成功;实现了通过虚拟机连接到台式机进而控制机器人的移动(这种方法本篇就不再赘述了)。

但正如上面所说预期是要在虚拟机上观测的到机器人建图/导航的情况,因为后面想要做的实机操作机器人没有显示器,想要能更直观的控制机器人,而不是简单控制其移动,又去摸索其他方法,最终绕了一圈,还是通过最初的方法实现了预期的效果。

二、具体步骤

1.虚拟机网络配置

注意:一定要确台式机的ip和PC的ip在同一个网段下,否则会影响机器人与PC之间的通讯,不要使用校园网,在没有局域网的条件下,可以使用手机热点来操作。

(1)打开虚拟机

右键,打开终端(Open Terminal)

输入指令:ifconfig

查询虚拟机的(个人PC的IP地址)、这里有第一个非常需要注意的点,默认情况下虚拟机和台式机只能单项连通,即台式机作为master来启动roscore,虚拟机可以接收到台式机传来的信息,但反过来却不行。
在这里插入图片描述
需要进行如下操作:
点击虚拟机里的设置,找到网络适配器,选择桥接模式,点击确定。这时PC端的ip地址会发生改变。

在这里插入图片描述
改为桥式连接的笔记本ip地址如图:
在这里插入图片描述

输入指令:gedit .bashrc

将以下两行内容,把ip修改为上述ifconfig查到的ip,如果.bashrc中没有这两行指令也不要紧,直接输入到最后面即可。

export ROS_HOSTNAME=192.168.31.164
export ROS_MASTER_URI=http://192.168.31.164

在这里插入图片描述

保存退出。

source .bashrc

source 使其生效。
在这里插入图片描述

2.台式机网络配置

输入指令:ifconfig 查看ip
在这里插入图片描述

输入指令:gedit .bashrc 对.bashrc文件进行修改。
在这里插入图片描述

略有不同的是台式机export ROS_MASTER_URI=http:后面接的不是台式机自己的ip而是远程操控的PC的ip。
在这里插入图片描述

Ctrl+x保存退出
立即生效

source .bashrc

3.网络测试

【远程PC】运行

开启roscore

roscore

在这里插入图片描述

【台式机】端运行

rostopic list

当出现/rosout 和rosout_agg时候,说明通信成功。
在这里插入图片描述

三、远程操控SLAM建立地图

在进行建图和导航功能之前,先确保自己虚拟机和台式机中的功能包及相关依赖包都已安装完整且编译成功,若还没配置成功可参考之前的文章 :
从0实现Gazebo仿真slam建图
(1)【笔记本】启动roscore

PC端新建Terminal(命令提示符),键入roscore,按下enter,启动roscore

(2)【台式机】 打开终端启动gazebo仿真场景。

roslaunch turtlebot3_gazebo turtlebot3_world.launch

在这里插入图片描述

(3)【笔记本】打开终端,然后运行SLAM启动文件。

roslaunch turtlebot3_slam turtlebot3_slam.launch

在这里插入图片描述

(4)【笔记本】 启动键盘操作

roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

在这里插入图片描述
在这里插入图片描述

(5)【笔记本】打开终端,然后运行地图保存节点

rosrun map_server map_saver -f ~/map_world

在这里插入图片描述

地图自动保存在~/home/map目录下,名为map_world.yaml和map_world.pgm
在这里插入图片描述

三、远程操控SLAM导航

导航技术的主要用途:使机器人能自主进入期望的位置且在到达目标点的过程中能自主的躲避障碍物。

(1)【笔记本】启动roscore

PC端新建Terminal(命令提示符),键入roscore,按下enter,启动roscore
在这里插入图片描述

(2)【台式机】 打开终端启动gazebo仿真场景。

roslaunch turtlebot3_gazebo turtlebot3_world.launch

在这里插入图片描述当然也有很多仿真场景,也可以加载其他的仿真场景

(3)【笔记本】打开终端,键入下面代码启动导航功能

roslaunch turtlebot3_navigation turtlebot3_navigation.launch

在这里插入图片描述

[远程主机(笔记本电脑)] 在开始导航之前,TurtleBot3需知道它的位置和姿态。

为了更新初始位置数据,可以按照以下步骤进行:

1). 点击2D Pose Estimate按键。

2). 通过单击并拖动地图上的方向来设置机器人在地图上的大致位置。

每个绿色箭头代表TurtleBot3的预期位置。 激光扫描仪将在地图上绘制线条,如地图上的墙壁。 如果图形没有正确显示图形,请从上面的“2D Pose Estimate”按钮重复定位TurtleBot3。

如果图形没有显示线条,请重复上述过程。

(4)【笔记本】当TurtleBot3已定位将自动计划路径
在这里插入图片描述

为了到达目标位置,需遵循以下做法:

点击 2D Nav Goal按钮

点击地图上的一个特定点来设置一个目标位置,拖动光标到TurtleBot3应该面对的方向。

注意:如果无法创建目标位置的路径,则设置目标位置可能会失败。 如果可以,请重新建立一个比较宽敞的地图,给机器人足够的反应空间,有利于导航顺利进行。

如果您希望在机器人到达目标位置之前停止机器人,请将TurtleBot3的当前位置设置为目标位置。使得机器人放弃之前任务,跑向该任务位置。
在这里插入图片描述

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

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

相关文章

承载22倍于自身重量前行,垂直跳跃59厘米,用爆炸驱动的昆虫机器人来了

这款机器人由来自康奈尔大学的研究者研发,该机器人长 29 毫米,重量仅为 1.6 克,可以垂直跳跃 59 厘米,并且可以携带 22 倍(36 克)于自身重量的物品行走。 小小机器人能量大爆发,身体如昆虫一般大…

企业架构LNMP学习笔记46

PHP测试连接代码&#xff1a; php代码测试使用memcached&#xff1a; 示例代码&#xff1a; <?php //实例化类 $mem new memcached(); //调用连接memcached方法 注意连接地址和端口号 $mem->addServer(192.168.17.114,11211); //存数据 var_dump($mem->set(name,l…

文件批量重命名:自定义命名与扩展名更改

你是否曾经需要批量更改文件名称和类型&#xff1f;如果你有大量文件需要重命名和更改类型&#xff0c;那么今天我们将向你介绍一种简单的方法来轻松批量更改文件名称和类型。无论你是需要将一个文件夹中的所有图片改为另一种格式&#xff0c;还是需要将一个文件夹中的所有文档…

无涯教程-JavaScript - IFERROR函数

描述 如果公式的计算输出为错误,则IFERROR函数将返回您指定的值。否则,返回公式的输出。使用IFERROR函数可以捕获和处理公式中的错误。 语法 IFERROR (value, value_if_error) 争论 Argument描述Required/OptionalvalueThe argument that is checked for an error.Required…

IDEA 打包MapReduce程序到集群运行的两种方式以及XShell和Xftp过期的解决

参考博客 【MapReduce打包成jar上传到集群运行】http://t.csdn.cn/2gK1d 【Xshell7/Xftp7 解决强制更新问题】http://t.csdn.cn/rxiBG IDEA打包MapReduce程序&#xff08;方式一&#xff09;【轻量级打包】 这里的打包是打包整个项目&#xff0c;后期等学会怎么打包单个指定…

Alfred v5.1.2(Mac应用快速启动)

Mac效率办公软件哪个好&#xff1f;Alfred是一款Mac电脑上的快速启动和工作流自动化工具&#xff0c;它可以帮助用户快速访问文件、应用程序、web搜索和系统工具&#xff0c;提高工作效率。以下是Alfred的特点&#xff1a; 快速启动&#xff1a;用户可以通过Alfred快速启动应用…

[k8s] 常见yml配置和详细解释

在 Kubernetes (K8s) 中&#xff0c;常见的 YAML 文件配置包括&#xff1a; 文章目录 PodDeploymentServiceIngressConfigMapSecretVolume访问模式 StatefulSetDaemonSetJob容器的重启策略 ConJob Pod apiVersion: v1 kind: Pod metadata:name: my-pod # Pod 的名称labels:ap…

使用命令行创建一个vue项目卡住不动如何解决

问题 在使用命令去创建一个vue项目&#xff0c; 出现下面卡住不动的一个状态。 解决方案一 首先先ctrlc停止进入创建好的项目文件手动输入npm install 、npm run dev如果npm run dev 的时候 出现 ‘vite’ 相关的错误查看node版本是否是最新的稳定版本node -v查看安装源是否…

国家网络安全周 | 天空卫士CEO刘霖在《中国网信》杂志发表署名文章

由中共中央网络安全和信息化委员会办公室、中华人民共和国国家互联网信息办公室主管的《中国网信》2023年第9期总第21期&#xff0c;在2023年国家网络安全宣传周开幕式时同期发布。《中国网信》杂志致力于宣传解读中央网络安全和信息化委员会及其办公室的重大决策部署和重点工作…

创建HTTP请求的几种方式

一. HTML表单标签创建 form 的重要参数: action: 构造的 HTTP 请求的 URL 是什么. method: 构造的 HTTP 请求的 方法 是 GET 还是 POST (form 只支持 GET 和 POST). input 的重要参数: type: 表示输入框的类型. text 表示文本, password 表示密码, submit 表示提交按钮. name…

青大数据结构【2013】

关键字&#xff1a; 邻接表空间复杂度、求无向图连通分量&#xff08;BFS、DFS&#xff09;、B树根节点最小关键字、平均查找长度最小的排序、二叉树排序叶子结点次序不变、不同次序建立二叉排序树及中序遍历、直接插入排序特点、强连通分量、邻接矩阵邻接表、折半查找判定树、…

Blender批量修改名称

假如在Blender里按顺序添加了多个mesh&#xff0c;名字后缀按照数字1,2,3…编号&#xff0c;此时又要插入一个新的mesh&#xff0c;那么这个mesh之后的其它mesh名字都要加1&#xff0c;此时该怎么办呢&#xff1f; 比较简单的办法是把新mesh后面的mesh名称一个一个手动加1&…

软件工程知识总结梳理

&#x1f525;&#x1f525;宏夏Coding网站&#xff0c;致力于为编程学习者、互联网求职者提供最需要的内容&#xff01;网站内容包括求职秘籍&#xff0c;葵花宝典&#xff08;学习笔记&#xff09;&#xff0c;资源推荐等内容。在线阅读&#xff1a;https://hongxiac.com&…

密码学【一】

前言 在区块链的整个体系中大量使用了密码学算法&#xff0c;比如用于 PoW 的哈希算法&#xff0c;用于完整性验证的 Merkle Tree&#xff0c;用于交易签名与验证的数字签名算法&#xff0c;用于隐私保护的零知识证明等等。 可以说密码学是保证区块链安全的基石&#xff0c;而区…

YOLOv5算法改进(17)— 更换损失函数(EIoU、AlphaIoU、SIoU和WIoU)

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。损失函数&#xff08;loss function&#xff09;是机器学习中用来衡量模型预测值与真实值之间差异的函数。它用于度量模型在训练过程中的性能&#xff0c;以便优化模型参数。在训练过程中&#xff0c;损失函数会根据模型的…

C# 扫描并读取图片中的文字(.NET Core)

本文介绍如何通过C# 程序来扫描并读取图片中的文字&#xff0c;这里以创建一个.Net Core程序为例。下面是具体步骤&#xff0c;供参考。 程序测试环境&#xff1a; Visual Studio版本要求不低于2017 图片扫描工具&#xff1a;Spire.OCR for .NET 图片格式&#xff1a;png&…

LCP 50. 宝石补给

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;模拟 写在最后 Tag 【模拟】【数组】 题目来源 LCP 50. 宝石补给 题目解读 根据 operations 数组将 x 勇士的一半宝石&#xff08;向下取整&#xff09;赠送给 y 勇士&#xff0c;最后输出拥有最多宝石的勇士与拥有最…

mac电脑版矢量绘图推荐 Sketch for mac最新中文

Sketch软件特色 1、数字设计工具包 在Sketch中使用暗模式查找焦点。点亮灯光&#xff0c;失去分心&#xff0c;看着你的设计变得生动&#xff0c;让你专注于最重要的事情 - 你的工作。 2、为未来重新设计 Sketch 带来全新外观和更多。完全重新设计的界面使设计过程比以往更加…

【云计算】虚拟私有云 VPC

虚拟私有云 VPC 1.前言1.1 基本介绍1.2 VPC 的作用1.3 VPC 的适用人群 2.VPC 基本概念2.1 VPC 相关基本概念2.2 其他相关基本概念 3.VPC 通信场景3.1 VPC 内部互通3.2 VPC 间互通3.2.1 对等连接3.2.2 Transit Gateway 或者云联网 3.3 访问 Internet3.3.1 Internet 网关3.3.2 NA…

Jmeter系列-监听器Listeners的介绍(9)

简介 用来动态的监控Jmeter执行测试的过程&#xff0c;实时查看测试结果。 JMeter 监听器 查看结果树 查看结果树&#xff0c;显示取样器请求和响应的细节以及请求结果&#xff0c;包括消息头&#xff0c;请求的数据&#xff0c;响应的数据&#xff0c;方便接口调试&#xf…