双系统ubuntu20.04(neotic版本)从0实现Gazebo仿真slam建图

双系统ubuntu20.04(neotic版本)从0实现Gazebo仿真slam建图

昨晚完成了ROS的多机通讯,还没来得及整理相关操作步骤,在进行实际小车的实验之前,还是先打算在仿真环境中进行测试,熟悉相关的操作步骤,计划通过虚拟机(笔记本)来操纵双系统(台式机)完成在仿真环境中的地图构建,导航等功能。
ps:别问为什么不直接通过向日葵远程操控,后面要进行实际环境中多机器人编队的测试,多机器人编队功能已经被写好了,但是需要安装在远程PC的工作空间中进行多机器人的控制
1、安装ROS(neotic)版本依赖

  sudo apt-get install ros-noetic-joy ros-noetic-teleop-twist-joy \ros-noetic-teleop-twist-keyboard ros-noetic-laser-proc \ros-noetic-rgbd-launch ros-noetic-rosserial-arduino \ros-noetic-rosserial-python ros-noetic-rosserial-client \ros-noetic-rosserial-msgs ros-noetic-amcl ros-noetic-map-server \ros-noetic-move-base ros-noetic-urdf ros-noetic-xacro \ros-noetic-compressed-image-transport ros-noetic-rqt* ros-noetic-rviz \ros-noetic-gmapping ros-noetic-navigation ros-noetic-interactive-markers

ROS1和ROS2其他版本安装相关依赖参考网址(ROS1&ROS2依赖包)注意☝的是一行指令,分行输入会报错的。

2、安装turtlebot3软件包
Install TurtleBot3 via Debian Packages.

 sudo apt install ros-noetic-dynamixel-sdksudo apt install ros-noetic-turtlebot3-msgssudo apt install ros-noetic-turtlebot3

3、设置环境变量

 source ~/.bashrc

4、创建工作空间安装TB3功能包

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src/
git clone -b noetic-devel http://ghproxy.com/https://github.com/ROBOTIS-GIT/DynamixelSDK.git
git clone -b noetic-devel http://ghproxy.com/https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
git clone -b noetic-devel http://ghproxy.com/https://github.com/ROBOTIS-GIT/turtlebot3.git
git clone -b noetic-devel http://ghproxy.com/https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git
cd ~/catkin_ws && catkin_make

ROS1其他版本的TB3功能包参考ROS1功能包
ROS2(foxy)版本功能包参考ROS2功能包
注意ROS1&ROS2的其他版本连接中改对应版本名称
编译成功
在这里插入图片描述5、Gazebo仿真
(1)选择启动的机器人模型

export TURTLEBOT3_MODEL=waffle_pi
export TURTLEBOT3_MODEL=burger

(2)启动gazebo仿真环境

roslaunch turtlebot3_gazebo turtlebot3_world.launch

可能会出现以下报错:
在这里插入图片描述
找到错误原因“环境变量设置有问题”
错误原因为环境变量设置有问题(后面进行优化)
运行下方代码后再执行roslaunch

source ~/catkin_ws/devel/setup.bash
 roslaunch turtlebot3_slam turtlebot3_slam.launch

turtlebot3_world.launch
在这里插入图片描述
(3)启动rviz进行建图
打开新的终端,还要在输入一边机器人选择模型的指令,在输入以下指令(后面进行优化)

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
在这里插入图片描述

优化

目前在启动机器人小车在仿真环境中的建图非常麻烦,每次启动新的节点都要输入指令选择一遍机器人的模型,且在启动turtlebot3_world.launch文件前还要进行以便环境的配置,总之是非常麻烦的!
下面把这些指令提前配置到source ~/.bashrc文件中
(1)手动配置
输入:

sudo gedit ~/.bashrc 

在文本的最后加入以下这些指令:

source ~/catkin_ws/devel/setup.bash
export TURTLEBOT3_MODEL=waffle_pi//如果你要选择burger型机器人输入export TURTLEBOT3_MODEL=burger
export ROS_DOMAIN_ID=30 #TURTLEBOT3
export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:~/catkin_ws/src/turtlebot3/turtlebot3_simulations/turtlebot3_gazebo/models

然后保存后关闭文件,打开终端输入source ~/.bashrc更新环境即可完成。
(2)输入指令配置
我参考其他配置环境指令,输入后可达到相同效果。

echo 'source ~/catkin_ws/devel/setup.bash' >> ~/.bashrc
echo 'export TURTLEBOT3_MODEL=waffle_pi' >> ~/.bashrc
echo 'export ROS_DOMAIN_ID=30 #TURTLEBOT3' >> ~/.bashrc
echo 'export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:~/catkin_ws/src/turtlebot3/turtlebot3_simulations/turtlebot3_gazebo/models' >> ~/.bashrc

输入完成后打开新终端输入:

source ~/.bashrc

设置完成后,现在启动建图,仅需要输入:
(1)启动gazebo仿真环境

roslaunch turtlebot3_gazebo turtlebot3_world.launch

(2)启动RVIZ

roslaunch turtlebot3_slam turtlebot3_slam.launch

(3)启动键盘控制节点即可

roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

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

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

相关文章

【深度学习】 Python 和 NumPy 系列教程(九):NumPy详解:1、创建数组的n种方式

目录 一、前言 二、实验环境 三、NumPy 0. 多维数组对象(ndarray) a. 多维数组的属性 1. 创建数组 a. 使用numpy.array函数: b. 使用numpy.zeros函数 c. 使用numpy.ones函数 d. 使用numpy.arange函数 e. 使用numpy.linspace函数 …

2023Q2全球可穿戴腕带出货量达 4400 万台

全球可穿戴设备市场在2023年第二季度继续保持增长态势,总出货量达到了4400万台,同比增长了6%。这一增长得益于消费者对于可穿戴设备的需求不断增加,以及不同细分市场的需求反弹。 根据市场研究机构 Canalys 的最新报告,全球可穿戴…

Android EditText筛选+选择功能开发

在日常开发中经常会遇到这种需求,EditText既需要可以筛选,又可以点击选择。这里筛选功能用的是AutoCompleteTextView,选择功能使用的是第三方库https://github.com/kongzue/DialogX。 Android AutoCompleteTextView(自动完成文本框)的基本使用…

【物联网】简要解释RTK(Real-Time Kinematic)>>实时动态差分定位

引言: RTK(Real-Time Kinematic)技术是一种基于差分GPS的高精度定位技术,它通过实时通信和数据处理,能够提供厘米级甚至亚米级的定位精度。RTK技术在许多领域都得到了广泛应用,如测绘、航空航天、农业等。本…

详解Nacos和Eureka的区别

文章目录 Eureka是什么Nacos是什么Nacos的实现原理 Nacos和Eureka的区别CAP理论连接方式服务异常剔除操作实例方式自我保护机制 Eureka是什么 Eureka 是Spring Cloud 微服务框架默认的也是推荐的服务注册中心, 由Netflix公司与2012将其开源出来,Eureka基于REST服务开发,主要用…

【C++STL基础入门】list改、查操作

文章目录 前言一、list查操作1.1 迭代器循环1.2 for_each函数 二、list改操作2.1 迭代器修改2.2 assign函数2.3 运算符 总结 前言 C标准模板库(STL)是C语言中非常重要的部分,它提供了一组通用的模板类和函数,用于处理常见的数据结…

七、运算符

运算符 1.运算符1.1.赋值运算符1.2.算数运算符1.3.自增和自减运算符1.4.比较运算符1.5.逻辑运算符1.6.位运算符1.6.1.按位与运算1.6.2.按位或运算1.6.3.按位取反运算1.6.4.按位异或运算1.6.5.移位操作1.6.6.复合赋值运算符1.6.7.三元运算符1.6.8.运算符优先级 1.7.训练11.8.训练…

win系统环境搭建(九)——Windows安装chatGPT

windows环境搭建专栏🔗点击跳转 win系统环境搭建(九)——Windows安装chatGPT 本系列windows环境搭建开始讲解如何给win系统搭建环境,本人所用系统是腾讯云服务器的Windows Server 2022,你可以理解成就是你用的windows…

上位机在自动化控制中的作用和优势是什么?

上位机在自动化控制中的作用和优势是什么? 自动化控制编程领域包括单片机、PLC、机器视觉和运动控制等方向。输入“777”,即刻获取关于上位机开发和数据可视化的专业学习资料,近年来,上位机编程逐渐兴起,正在逐步替代…

亚马逊、敦煌网、国际站自养号测评需要哪些资源与技术门槛?

测评服务商说的天花乱坠,实际真假难辨,FB等社交软件自找测评犹如大海捞针。产品都要上架了,靠谱的测评服务还是没找到,亚马逊测评求人不如求己,今天来教你怎么养一批安全、可控的买家号。 亚马逊等跨境平台测评自养号…

【运维篇】三、SLF4J与Logback

文章目录 0、Java的门面设计模式1、SLF4J2、作用3、调试4、SpringBoot采用SLF4JLogback5、切换SpringBoot的日志框架6、logback的配置加载7、logback的配置组成8、logback之logger9、logback之appender10、logback之pattern11、appender的Filter12、logback.xml全解释13、logba…

【校招VIP】测试方案之测试需求分析

考点介绍: 需求分析就是要弄清楚用户需要的是什么功能,用户会怎样使用系统。这样我们测试的时候才能更加清楚的知道系统该怎么样运行,才能更好的设计测试用例,才能更好的测试。 测试方案之测试需求分析-相关题目及解析内容可点击…

Qt事件处理

1. 事件 众所周知Qt是一个基于C的框架,主要用来开发带窗口的应用程序(不带窗口的也行,但不是主流)。我们使用的基于窗口的应用程序都是基于事件,其目的主要是用来实现回调(因为只有这样程序的效率才是最高…

优化系统报错提示信息,提高人机交互(一)

1、常规报错及处理 package com.example.demo.controller;import com.example.demo.service.IDemoService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.w…

机器视觉应用系统包括哪些硬件?

导语:机器视觉是一个软硬件相结合的综合技术,需要软件对图像做处理,也需要硬件提供稳定和高质量的图像,两者同样重要。作为开发,软件模块比较熟悉,硬件系统的相关知识储备弱一些,本文对机器视觉…

卷运维不如卷网络安全

最近发现很多从事运维的选择了辞职,重新规划自己的职业发展方向。运维工程师这个岗位在IT行业里面确实是处于最底层的,不管什么环节出现问题,基本都是运维背锅。背锅也就罢了,薪资水平也比不上别的岗位。 一般运维的薪资水平大多数…

LeetCode 2596. 检查骑士巡视方案【数组,模拟】1448

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

云计算的未来:云原生架构和自动化运维的崭露头角

文章目录 云原生架构:重新定义应用开发和部署什么是云原生架构?为什么云原生架构重要?1. 弹性和伸缩性2. 故障隔离3. 更快的交付4. 资源利用率5. 多云支持 云原生架构的实践步骤 1:容器化步骤 2:微服务步骤 3&#xff…

JavaWeb后端开发 JWT令牌解析 登录校验 通用模板/SpringBoot整合

目录 实现思路 相关技术的解析 ​编辑会话跟踪三个方案 JWT令牌技术 ​生成令牌 校验令牌 登录下发令牌 实现思路 通过登录成功的标记来检测,在每个接口前做一个标记判断是否登录,若没登录则返回错误信息,并使前端退出.但这样较为繁琐,因此我们可以通过一种统一拦截的技…

R语言-关于颜色

目录 颜色 示例 R 颜色板 参考: 颜色 什么场景会用到颜色?比如在绘图过程中,为了让图更好看,有的时候,需要选择使用不同的颜色进行绘制或者填充。本文提供了R颜色的相关参数。 在R中,可以通过颜色下标…