【ros实践2】turtlebot3建图与导航

2024-02-04 19:18

本文主要是介绍【ros实践2】turtlebot3建图与导航,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

turtlebot3建图与导航

  • 建图
  • 导航

建图

1.启动tb3模型和仿真环境

export TURTLEBOT3_MODEL=burger    ## TURTLEBOT3_MODEL有burger, waffle或waffle_pi三种
roslaunch turtlebot3_gazebo turtlebot3_world.launch

在这里插入图片描述

2.打开新终端,启动slam建图

export TURTLEBOT3_MODEL=burger  ## TURTLEBOT3_MODEL有burger, waffle或waffle_pi三种
roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping

在这里插入图片描述

3.打开新终端,启动键盘控制

roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

使用键盘控制tb3在整个环境中运动(尽可能扫到所有区域)

在这里插入图片描述4.打开新终端,保存地图

rosrun map_server map_saver -f ~/map

建图完成,地图信息保存为两个文件:mao.pgm和map.yaml
其中map.yaml内容中:
(1)image对应所产生的
.pgm文件;
(2)resolution指地图分辨率,单位是meters/pixel,每个像素对应5米。
(3)origin对应地图的原点坐标,分别是x/y/yaw。
(4)negate是反转黑白。
(5)当占用概率超过占用阈值(occupied thresh)时,表示为黑色占用区域,而当占用概率小于自由阈值(free thresh)时,表示为白色占用区域。
*

导航

1.打开终端,加载仿真环境

export TURTLEBOT3_MODEL=burger ## TURTLEBOT3_MODEL有burger, waffle或waffle_pi三种
roslaunch turtlebot3_gazebo turtlebot3_world.launch

2.启动导航程序

export TURTLEBOT3_MODEL=burger ## TURTLEBOT3_MODEL有burger, waffle或waffle_pi三种
roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/map.yaml

3.实测(引用https://blog.csdn.net/weixin_42032160/article/details/105440552)
(1)在rviz菜单中按下[2d pose estimate]时,会出现一个绿色箭头,将其拖拽至tb3机器人在地图中的位置,并按住鼠标左键,转动绿色箭头使其指向机器人的正前方.这是一种在初期为了估计机器人位置的命令。然后用turtlebot3_teleop_keyboard节点等来回移动机器人,搜集周围的环境信息,找出机器人当前位于地图上的位置。经过了这个过程后,机器人将绿色箭头指定的位置和方向作为初始位置,推定自己的位置和方向。

(2)一切准备就绪后,下面下达移动命令。如果在RViz的菜单中按[2D Nav Goal],会出现一个非常大的绿色箭头。该绿色箭头是指定机器人的目的地的标记,箭头的起点是机器人的x、y位置,箭头方向是机器人的i方向。将此箭头移动到机器人的目的地,然后拖动,以设置方向。机器人将根据创建的地图躲避障碍物,移动到目的地.
在这里插入图片描述

这篇关于【ros实践2】turtlebot3建图与导航的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/678541

相关文章

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

MySQL分库分表的实践示例

《MySQL分库分表的实践示例》MySQL分库分表适用于数据量大或并发压力高的场景,核心技术包括水平/垂直分片和分库,需应对分布式事务、跨库查询等挑战,通过中间件和解决方案实现,最佳实践为合理策略、备... 目录一、分库分表的触发条件1.1 数据量阈值1.2 并发压力二、分库分表的核心技术模块2.1 水平分

SpringBoot通过main方法启动web项目实践

《SpringBoot通过main方法启动web项目实践》SpringBoot通过SpringApplication.run()启动Web项目,自动推断应用类型,加载初始化器与监听器,配置Spring... 目录1. 启动入口:SpringApplication.run()2. SpringApplicat

Java整合Protocol Buffers实现高效数据序列化实践

《Java整合ProtocolBuffers实现高效数据序列化实践》ProtocolBuffers是Google开发的一种语言中立、平台中立、可扩展的结构化数据序列化机制,类似于XML但更小、更快... 目录一、Protocol Buffers简介1.1 什么是Protocol Buffers1.2 Pro

linux安装、更新、卸载anaconda实践

《linux安装、更新、卸载anaconda实践》Anaconda是基于conda的科学计算环境,集成1400+包及依赖,安装需下载脚本、接受协议、设置路径、配置环境变量,更新与卸载通过conda命令... 目录随意找一个目录下载安装脚本检查许可证协议,ENTER就可以安装完毕之后激活anaconda安装更