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

文章目录

  • 前言
  • 一、思路流程
  • 二、具体步骤
    • 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.hqwc.cn/news/107458.html

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

相关文章

Java复习-多线程编程

多线程编程 解决并发访问的问题。 一. 继承 Thread 类实现多线程 1. 继承实现 继承thread类 class MyThread extends Thread{}覆写run主方法 多线程要执行的功能都应该在 run() 方法中定义。 class MyThread extends Thread { // 线程的主体类private String title;public…

澄海区图书馆《乡村振兴战略下传统村落文化旅游设计》许少辉八一新著

澄海区图书馆《乡村振兴战略下传统村落文化旅游设计》许少辉八一新著

2022年全国研究生数学建模竞赛华为杯D题PISA架构芯片资源排布问题求解全过程文档及程序

2022年全国研究生数学建模竞赛华为杯 D题 PISA架构芯片资源排布问题 原题再现: 一、背景介绍 芯片是电子行业的基础,在当前日益复杂的国际形势下,芯片成了各个大国必争的高科技技术。本课题关注网络通信领域的交换芯片,传统的交…

华为云云耀云服务器L实例评测|使用Linux系统与Docker部署.net/c#项目

目录 前言 如何在CentOS运行项目 登录CentOS 使用Rider打包 使用Visual Studio打包 项目运行 后台运行 开放端口 如何在Docker中运行项目 项目运行 前言 本章详细介绍,.net Core项目从打包到部署上华为云云耀云服务器L实例的过程与一些细节问题。在这里…

解决stable diffusion webui1.6 wd1.4 tagger加载失败的问题

由于webui源码的变化,需要修改两个地方的import 1.tagger/ui.py # 第十行 # from webui import wrap_gradio_gpu_call # 原代码 from modules.call_queue import wrap_gradio_gpu_call1.preload.py # 第4行开始 # from modules.shared import models_path # 原…

每日一博 - 闲聊经典微服务架构

文章目录 概述Arch小结 概述 典型的微服务架构是一种软件架构模式,其中一个应用程序被拆分成多个小型、相对独立的服务单元,每个服务单元都专注于执行特定的业务功能。这些服务单元可以独立开发、部署和扩展,通常通过网络通信协议进行互相通…

docker 部署 node.js(express) 服务

1、在 express 项目根目录下新增 Dockerfile 文件,内容如下: 创建服务容器的方法,可以根据自己的情况选择: 1、以下示例为宿主机没有安装 node 环境的写法; 2、先在本地构建包含 node 和 express 的基础镜像&#xff0…

第6章_freeRTOS入门与工程实践之创建FreeRTOS工程

本教程基于韦东山百问网出的 DShanMCU-F103开发板 进行编写,需要的同学可以在这里获取: https://item.taobao.com/item.htm?id724601559592 配套资料获取:https://rtos.100ask.net/zh/freeRTOS/DShanMCU-F103 freeRTOS系列教程之freeRTOS入…

深入学习 GC 算法 - 标记清除算法

前言: 📕作者简介:热爱编程的小七,致力于C、Java、Python等多编程语言,热爱编程和长板的运动少年! 📘相关专栏Java基础语法,JavaEE初阶,数据库,数据结构和算法…

骨传导耳机的危害有哪些?会损害听力吗?

如果正常的使用,骨传导耳机是没有危害的,由于骨传导耳机独特的传声方式,所以并不会对人体造成损伤,还可以在一定程度上保护听力。 如果想更具体知道骨传导耳机有什么危害,就要先了解什么是骨传导耳机,骨传…

科技资讯|苹果虚拟纸可在Vision Pro中为广告、书籍等提供MR内容和动画

近日,美国专利商标局正式授予苹果一项与虚拟纸张相关的专利。这是与虚拟纸张这项发明相关的第二项专利,鉴于苹果 Vision Pro 将于明年上市,那么我们离苹果实现虚拟纸张的发明又近了一步。 虚拟纸张将能够包含 2D、3D 和动画等 MR内容&#…

视频监控系统/视频云存储EasyCVR接入国标GB28181设备无法播放设备录像,是什么原因?

安防视频监控平台EasyCVR支持将部署在监控现场的前端设备进行统一集中接入,可兼容多协议、多类型设备,管理员可选择任意一路或多路视频实时观看,视频画面支持单画面、多画面显示,视频窗口数量有1、4、9、16个可选,还能…