【ROS】3.1 Turtlebot3汉堡Burger建SLAM地图并导航
原视频
SLAM地图构建和导航
准备
本实验新用的功能包:
注意ros版本。
sudo apt-get install ros-noetic-map-server # 用到map_server中的map_saver
sudo apt-get install ros-noetic-navigation # 导航包navigation
- 了解如何远程控制Burger小车。
正式开始
- 配置网络连接gedit ~/.bashrc。
- 建立远程控制连接。
- SLAM建图。
- 保存SLAM地图。
- 读取保存的地图文件并实现导航。
详见order.txt及注释。
order.txt
A表示主机,B表示从机,数字k表示第k个终端。
# 1. 网络配置
A1:
ifconfig # 查看主机IP地址
gedit ~/.bashrc # 在.bashrc文件中进行网络配置
... # 详见上一篇博客https://shandianchengzi.gitee.io/2021/03/19/ROS%E8%BF%9C%E7%A8%8B%E6%8E%A7%E5%88%B6/
source ~/.bashrc # 使网络配置生效
roscore # 启动roscore并检验网络配置是否成功
B1:
ssh -Y pi@192.168.1.133 # ssh连接从机
ifconfig # 查看从机IP地址
gedit ~/.bashrc
...
source ~/.bashrc
roscore
# 2. 建立远程控制连接
B2:
ssh -Y pi@192.168.1.133
roslaunch turtlebot3_bringup turtlebot3_robot.launch # 在机器人桌面终端调用Turtlebot3 应用程序
# 3. SLAM建图
A2:
roslaunch turtlebot3_slam turtlebot3_slam.launch # 执行slam启动命令
A3:
rosrun rviz rviz -d `rospack find turtlebot3_slam`/rviz/turtlebot3_slam.rviz # 在Rviz中打开模拟界面
# rviz的使用说明:
# https://zhuanlan.zhihu.com/p/64603248
A4:
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch # 启动键盘控制teleop命令
# 操作:操控机器人把实验场地都浏览一遍
# 1、扫描过程中需要注意尽量不要使机器人与环境产生接触。
# 2、不要人为在机器人附近活动。
# 3、不要将机器人速度提升到太快,太快的移动速递会导致环境探测信号量减少。
# 4、按照规范操作,以便得到正确的地形数据。
# 4. 保存SLAM地图
A5:
sudo apt-get install ros-noetic-map-server # 若已经下载了map_server功能包,则可以略过这个指令
rosrun map_server map_saver -f ~/map # 保存SLAM地图至~/map。将生成map.pgm/map.yaml两个文件
A2/A3/A4:Ctrl+C # 停止A3/A4/A5中运行的程序
# 5. 读取保存的地图文件,并实现导航
A2:
rosrun rviz rviz -d `rospack find turtlebot3_slam`/rviz/turtlebot3_slam.rviz # 在Rviz中打开模拟界面
A3:
sudo apt-get install ros-noetic-navigation # 若已经下载了navigation功能包,则可以略过这个指令
roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/map.yaml # 读取测量好的地图数据~/map.yaml
# 操作:确定机器人相对于地图所处的位置和初始姿态:
# 点击工具栏2D Pose Estimate按键。
# 在地图上点击机器人相对于环境的正确位置并拖动箭头以确定机器人的姿态,可以通过多次调整确定最合适的初始位置设定。
# 注:完成设定后的绿色箭头便表示了机器人相对于地图所处的位置和初始姿态,机器人上的激光传感器同时会测量周围环境,可以通过实时测量的环境信息对初始位置进行校对(红点)。如果发现位置不正确可以重复定位操作。
# 操作:设定目标位置和目标姿态,设定方法如下:
# 点击工具栏2D Nav Goal按键。
# 点击一个确定的点并拖动箭头以设定目标位置和机器人最后停止的方向。
# 注:实验过程中要求操作者确定好初始位置和目的位置及姿态之后,机器人便会自行计算运行路径并移动至目标点。
常见问题
本次实验建立在完整的连接和已有的控制命令中,不需要操作者参与计算,操作较为简单,可以在熟悉操作的情况下没有障碍的完成时实验。
主要会出现的情况有:
如果没有确定好初始位置开始进行扫描测量地形,其地图初始点未知,在导航实验中如果不能从原出发点开始运行,会产生地图定位不准的问题,所以在一定程度上也会影响到内部程序对轨迹规划的运算,因为在导航功能中小车的轨迹规划是同时计算原测量地图和实时雷达扫描障碍物的最优解。
在开始导航前,应尽可能多次拖动箭头来精确的确定小车的位置,否则可能出现小车无法启动的情况,因为当构建的地图面积不大时,小车的起始位置的相对误差就会变大,所以为了能使小车精确的进行导航,应该尽可能精确地确定小车的起始位置。
同时,在实验中杂乱的周边环境对导航功能也会产生较大影响。所以总的来说,小车的运行原理和计算能力对实验场地提出了一定要求。
【ROS】3.1 Turtlebot3汉堡Burger建SLAM地图并导航的更多相关文章
- ROS开源小车TurtleBot3详情介绍(Burger)
您为什么要选择ROS开源智能小车 ROS(RobotOperating System,机器人操作系统)是目前世界上更主流更多人使用的的机器人开源操作系统.它可以提供操作系统应有的服务,包括硬件抽象,底 ...
- 利用ROS内建SLAM建立地图
ros中建地图方式有两种: 首先1.首先下载hector_slam包到你工作空间的src下 命令: cd ~/catkin/src git clone https://github.com/tu-da ...
- ROS开源小车TurtleBot3详情介绍
您为什么要选择ROS开源智能小车 ROS(Robot Operating System,机器人操作系统)是目前世界上更主流更多人使用的的机器人开源操作系统.它可以提供操作系统应有的服务,包括硬件抽象, ...
- UVA557 汉堡 Burger
题面 https://www.luogu.org/problemnew/show/UVA557 这里顺便整理一下二维格点随机游走问题. 遇到这种问题时,需注意分母的计算问题. 设x为起点到终点的距离. ...
- 对比几种在ROS中常用的几种SLAM算法
在此因为要总结写一个文档,所以查阅资料,将总结的内容记录下来,欢迎大家指正! 文章将介绍使用的基于机器人操作系统(ROS)框架工作的SLAM算法. 在ROS中提供的五种基于2D激光的SLAM算法分别是 ...
- TurtleBot 3 & 2i ROS开源实验平台
TurtleBot 3 & 2i ROS开源实验平台,全球更受欢迎的ROS平台. TurtleBot是ROS标准平台机器人,在全球开发人员和学生中深受欢迎.其有3个版本: TurtleBot1 ...
- ROSCon 2016视频和幻灯片发布 ROS机器人操作系统重要参考资料
ROSCon 2016视频和幻灯片发布 By Tully Foote on 十月19,2016 7:28 AM 全部PPT下载地址:http://pan.baidu.com/s/1gf2sn2F RO ...
- SLAM+语音机器人DIY系列:(三)感知与大脑——5.机器人大脑嵌入式主板性能对比
摘要 在我的想象中机器人首先应该能自由的走来走去,然后应该能流利的与主人对话.朝着这个理想,我准备设计一个能自由行走,并且可以与人语音对话的机器人.实现的关键是让机器人能通过传感器感知周围环境,并通过 ...
- SLAM+语音机器人DIY系列:(三)感知与大脑——6.做一个能走路和对话的机器人
摘要 在我的想象中机器人首先应该能自由的走来走去,然后应该能流利的与主人对话.朝着这个理想,我准备设计一个能自由行走,并且可以与人语音对话的机器人.实现的关键是让机器人能通过传感器感知周围环境,并通过 ...
- SLAM学习笔记 - ORB_SLAM2源码运行及分析
参考资料: DBow2的理解 单目跑TUM数据集的运行和函数调用过程 跑数据集不需要ros和相机标定,进入ORB_SLAM目录,执行以下命令: ./Examples/Monocluar/mono_tu ...
随机推荐
- TIPTOP应付账款流程学习
应付账款流程与应收账款流程是财务管理的开端,也是财务工作的主要流程. 企业的应付账款有很多种,如原材料的应付账款.电力能源的应付账款.房租的应付账款等,大头是原材料的应付账款,以下详细说明. 在讲解之 ...
- mybatis之配置优化
属性优化 properties 外部配置文件[db.properties] driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/m ...
- WPF中实现PropertyGrid的三种方式
原文地址: https://www.cnblogs.com/zhuqil/archive/2010/09/02/Wpf-PropertyGrid-Demo.html 第一种方式:使用WindowsFo ...
- JDK8项目简单快速接入AI大模型(无需强制使用JDK17)
最近AI风头越来越火,好多项目都需要接入AI接口,但Spring-AI强制绑定JDK17这些,导致以前的很多JDK8项目不太方便 找到个办法,使用AI4J来接入 1.本地部署Ollama,这个属于部署 ...
- IPEX几代接口的区别
IPEX共分五代,简单判别IPEX接口是几代的方法是测量直径. IPEX 1代 高度小于3.0mm,端子口径φ2.0 IPEX 2代 高度小于2.1mm,端子口径φ2.0 IPEX ...
- Scala重写构造函数
package com.wyh.scala.classData object Demo4Class { def main(args: Array[String]): Unit = { val stu ...
- vue3用vite新建项目
1. npm init vue@latest vue3-project 调用create-app创建, 指定了目录是vue3-projece,但是,紧接着有一堆配置要询问. 2. npm create ...
- try except 案例
def to_split(df): # 删除不符合加班统计的记录 try: df.dropna(subset=['姓名'], inplace=True) hang_index = df[df['加班信 ...
- verilator书写C++版模块testbench
默认顶层模型名称为top,环境名称为contextp const std::unique_ptr<VerilatedContext> contextp{new VerilatedConte ...
- Qt通过setProperty来达到设置控件的不同样式表
文章目录 前言 根据不同的属性显示不一样的样式 setProperty Q_PROPERTY和DynamicProperty 前言 最近在做项目的时候,找了一个开源的小控件,发现里面有一个设置样式的骚 ...