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

news2024/9/21 4:25:19

双系统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-sdk
 sudo apt install ros-noetic-turtlebot3-msgs
 sudo 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.coloradmin.cn/o/1005644.html

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

相关文章

写好技术书籍

写好技术书籍 目录概述需求: 设计思路实现思路分析1.如何写好对应的书籍 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,chal…

多模态情感学习技术

近年来随着深度学习的发展,多种模态的语义表示的壁垒被打破,计算机可以处理和理解的向量形式成为多模态的主要表示形式。 多模态学习技术不是自然语言处理领域独有的技术,在图像处理、视频处理以及智能语音等领域中都能找到多模态相关技术的…

数字电源常用传递函数

文章目录 PID控制器二阶广义积分器PR谐波抑制器陷波器全通滤波器重复控制器连续域离散化的几种方法 有S域和Z域 PID控制器 传递函数: bode图: m代码 %% PID控制器 % 连续域 kp 100; ki 10; kd 10; Ts 1/50000; num [kd kp ki]; den [1 0]; Gpi…

在使用 gson 时,数字被自动转为 double 类型

背景 在将一个 JsonObject 转成 Map<String, Object> 的时候&#xff0c;数字全部被转成了 double 类型&#xff0c; 如下所示&#xff0c;年龄从 2 变成了 2.0&#xff0c;身高正常显示 98.2&#xff0c;登记时间成了 1.694533284627E12 /*** name小红* record_time1.6…

UG\NX二次开发 复制3元素的double数组到另一个数组 UF_VEC3_copy

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C++-CSDN博客 简介: UG\NX二次开发 复制3元素的double数组到另一个数组 UF_VEC3_copy。仔细看第二段代码 。 效果: 代码: #include "me.hpp"void ufusr(char* param, …

pandas 筛选数据的 8 个骚操作

日常用Python做数据分析最常用到的就是查询筛选了&#xff0c;按各种条件、各种维度以及组合挑出我们想要的数据&#xff0c;以方便我们分析挖掘。 东哥总结了日常查询和筛选常用的种骚操作&#xff0c;供各位学习参考。本文采用sklearn的boston数据举例介绍。 from sklearn …

3基于MATLAB的齿轮啮合仿真,可根据需要调节齿轮参数,实现齿轮啮合转动动态过程。程序已调通,可直接运行。

基于MATLAB的齿轮啮合仿真&#xff0c;可根据需要调节齿轮参数&#xff0c;实现齿轮啮合转动动态过程。程序已调通&#xff0c;可直接运行。 3matlab齿轮啮合仿真动态啮合 (xiaohongshu.com)

动态负荷对电力系统摆幅曲线的影响研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

springboot使用freemarker导出word

springboot使用freemarker导出word 一、需求说明二、制作模板文件1.修改word留下占位符并另存为.xml文件2.将xml文件后缀名改为.ftl3.打开ftl文件格式化内容4.将占位符替换成变量 三、代码实现1.引入依赖2.将模板引入resource下3.编写word导出工具包4.创建接口调用 一、需求说明…

eslint写jsx报错

eslint写jsx报错 ChatGPT提示 在写JSX时&#xff0c;ESLint可能会报出一些语法错误&#xff0c;这些错误通常是由于ESLint默认配置中不支持JSX语法导致的。为了解决这些错误&#xff0c;我们需要在ESLint配置文件中启用对JSX语法的支持。 首先&#xff0c;需要安装eslint-pl…

100道基于Android毕业设计的选题题目,持续更新

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 大家好&#xff0c;我是程序员徐师兄、今天给大家谈谈基于android的app开发毕设题目&#xff0c;以及基于an…

苹果数据恢复软件:Omni Recover Mac

Omni Recover是一款十分实用的Mac数据恢复软件&#xff0c;为用户提供了简单、安全、快速和高效的数据恢复服务。如果您遇到了Mac或iOS设备中的数据丢失和误删情况&#xff0c;不要着急&#xff0c;不妨尝试一下Omni Recover&#xff0c;相信它一定会给您带来惊喜。 首先&…

【Bun1.0】使用 Bun.js 构建快速、可靠和安全的 JavaScript 应用程序

bun.js Bun 是一个现代的JavaScript运行环境&#xff0c;如Node, Deno。主要特性如下: 启动速度快。更高的性能。完整的工具&#xff08;打包器、转码器、包管理&#xff09;。 官网 https://bun.sh 优点 与传统的 Node.js 不同&#xff0c;Bun.js 提供了一些新的特性和功…

第8章_freeRTOS入门与工程实践之内存管理

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

《Linkerd 2.0:下一代服务网格的探索》

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f6e0;️ 全栈技术 Full Stack: &#x1f4da…

C++下基于模拟退火算法解决TSP问题

一、原理 首先明确TSP问题的目标是什么&#xff0c;假设当前有3个城市&#xff0c;需要你从第一个城市开始&#xff0c;遍历所有城市&#xff0c;然后回到初始位置&#xff0c;要求总路径最短。这个时候就需要计算每个城市之间的两两距离&#xff0c;然后按顺序确定一条最短路…

【Unity】2D 对话模块的实现

对话模块主要参考 【Unity教程】剧情对话系统 实现。 在这次模块的构建将基于 unity ui 组件 和 C#代码实现一个从excel 文件中按照相应规则读取数据并展示的逻辑。这套代码不仅能实现正常的对话&#xff0c;也实现了对话中可以通过选择不同选项达到不同效果的分支对话功能。 …

机器视觉康耐视visionpro-CogFitLineTool拟合直线错误上的理解

视频详细解答&#xff1a;康耐视VisionPro高级脚本系列教程-2.拟合指教脚本遍历编写 什么是直线&#xff1f; 直线&#xff1a;那么直线是由无线的点组成的。特点是无端点&#xff1b;不能度量&#xff0c;两边无限延长。错误示例子如下&#xff1a; 首先上面是错误的理解&…

UG\NX CAM二次开发 设置工序切削区域 UF_CAMGEOM_append_items

文章作者:代工 来源网站:NX CAM二次开发专栏 简介: UG\NX CAM二次开发 设置工序切削区域 UF_CAMGEOM_append_items 效果: 代码: static int init_proc(UF_UI_selection_p_t select, void* user_data) { int errorCode = 0; int num_triples = 1;//UF_UI_mas…

来可LCWLAN-600P产品使用和常见问题说明

01LCWLAN-600P简介 LCWLAN-600P是来可电子最新生产的一款CAN转WiFi设备&#xff0c;该设备的主要功能是将CAN数据转换成网络数据并通过无线网络转发出去。设备支持8~30V宽压供电&#xff0c;出厂默认配置为AP模式&#xff0c;设备供电后可在电脑的WiFi搜索栏搜索到名称为LCWLA…