【学习笔记】ROS-古月居第6讲:机器人SLAM与自主导航
【学习笔记】古月居-ROS第6讲:机器人SLAM与自主导航
- 一、操作步骤
- 二、遇到问题
一、操作步骤
建图功能包:
- gmapping
- hector_slam
- cartographer
- ORB_SLAM
建图指令:
gmapping
roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch # 启动Gazebo并加载三维地图 roslaunch mbot_navigation gmapping_demo.launch # 启动gmapping导航包,并打开rviz进行建图 roslaunch mbot_teleop mbot_teleop.launch # 打开移动机器人键盘控制节点 rosrun map_server map_saver -f cloister_gmapping # 保存地图,并命名为 cloister_gmapping
- 保存地图后得到
.pgm
和.yaml
文件:.pgm
文件为地图图片(可用ps更改该图以修改地图);.yaml
包含要加载的图片名称、地图分辨率(单位:m)、起始坐标(表示pgm图片左下角在rviz坐标系中的坐标)等等信息; - 三维地图(.world)在
mbot_laser_nav_gazebo.launch
内更改(如果使用雷达信息建图的话)
- 保存地图后得到
导航指令:
roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch # 启动Gazebo仿真,并加载地图 roslaunch mbot_navigation nav_cloister_demo.launch # 启动导航节点,并打开rviz可视化 python cal_dist.py # 计算实际导航距离
操作细节:
- 通过rviz中的
2D Pose Estimate
选定移动机器人初始的大致位姿 - 通过rviz中的
2D Nav Goal
选定导航目标点的位姿
- 通过rviz中的
导航框架:move_base
定位方法:
里程计定位:只通过里程计数据处理/base和/odom之间的的TF变换
注:/map与/odom坐标系均为全局坐标系,但/map系的原点为建图时原点(起点),/odom系的原点为导航时移动机器人放置的起点
AMCL定位:可以估算机器人在地图坐标系/map下的位姿信息,可以提供/base、/odom、/map之间的TF变换
节点配置:
- move_base:
mbot_navigation/launch/move_base.launch
- amcl:
mbot_navigation/launch/amcl.launch
- move_base:
轨迹绘制:
- 每次需要重新绘制轨迹时,需先停掉
cal_dist.py
,然后刷新(关闭再打开)rviz中的path消息。
- 每次需要重新绘制轨迹时,需先停掉
二、遇到问题
- 【踩坑指南】Cartographer踩坑指南
【学习笔记】ROS-古月居第6讲:机器人SLAM与自主导航相关推荐
- Linux性能优化实战学习笔记:第四十六讲=====实战分析
Linux性能优化实战学习笔记:第四十六讲 一.上节回顾 不知不觉,我们已经学完了整个专栏的四大基础模块,即 CPU.内存.文件系统和磁盘 I/O.以及网络的性能分析和优化.相信你已经掌握了这些基础模 ...
- Slam学习笔记——ROS踩坑记录
Slam学习笔记--ROS踩坑记录 1. 安装 2. ROS文件系统 2.1 工作区 2.2 包package 2.2.1 包的操作 2.2.2 描述文件package.xml 2.3 节点node ...
- ROS中阶笔记(八):机器人SLAM与自主导航—机器人自主导航
ROS中阶笔记(八):机器人SLAM与自主导航-机器人自主导航 文章目录 1 ROS中的导航框架 1.1 move_base 1.1.1 基于move_base的导航框架 1.1.2 安装 1.2.3 ...
- ROS中阶笔记(七):机器人SLAM与自主导航—SLAM功能包的使用
ROS中阶笔记(七):机器人SLAM与自主导航-SLAM功能包的使用 文章目录 1 机器人必备条件 1.1 硬件要求 1.2 深度信息 1.2.1 激光雷达 1.2.2 kinect 1.3 里程计信 ...
- ROS学习笔记-ROS订阅和发布节点
一个简单的ROS包,一个发布者,一个订阅者 刚开始学习ROS,参考网上的资料完成了测试节点的编写,记录一下. 个人习惯在home/Develop目录中做开发,于是在Develop目录下面创建了一个RO ...
- ROS学习笔记-ROS语音识别与语音输出[2]
说明:代码部分是基于古月居前辈的例程,在此对胡老师表示感谢!! 语音识别与输出功能框图: main()函数: int main(int argc, char* argv[]) {// 初始化ROSro ...
- ROS学习笔记-ROS语音识别与语音输出[1]
说明:代码部分是基于古月居前辈的例程,在此对胡老师表示感谢!! 语音识别功能框图: 调用过程: roscore rosrun robot_voice iat_publish rostopic pub ...
- SLAM学习笔记(十九)开源3D激光SLAM总结大全——Cartographer3D,LOAM,Lego-LOAM,LIO-SAM,LVI-SAM,Livox-LOAM的原理解析及区别
本文为我在浙江省北大信研院-智能计算中心-情感智能机器人实验室-科技委员会所做的一个分享汇报,现在我把它搬运到博客中. 由于参与分享汇报的同事有许多是做其他方向的机器人工程师(包括硬件.控制等各方面并 ...
- ROS古月居21讲笔记
文章目录 1.C++&python极简教程: 1.1安装编译器(python是解析器) 1.2 for循环 1.3 while循环 1.4 面向对象 2.ROS命令行工具 3.初始化操作 3. ...
最新文章
- 阿提拉公司 java_Atitit 文件上传 架构设计 实现机制 解决方案 实践java php c#.net js javascript c++ python...
- 【c语言】蓝桥杯算法训练 整除问题
- ubuntu16.04 彻底卸载MySQL
- 逻辑回归实例--乳腺癌肿瘤预测
- java中8种基本类型与运算符
- 基于长度特征的三文鱼好sea bass的区分,sesbass 比三文鱼长
- 别人家SDK的设计模式——Android Retrofit库源码解读
- Hive多字符列分割
- ios 不被遮挡 阴影_解决ios10导航栏底部阴影线条隐藏失效问题
- Ubuntu安装特定版本安装包
- 计算机系统 cpu课程,计算机操作系统
- Layui组件 sliderVerify 实现滑块验证
- 使用web.xml控制Web应用的行为
- jquery简单的选择添加下拉列表
- ubuntu安装 gcc 5.4.0
- threejs添加天空盒
- 北大青鸟汉字注释机内码_北大青鸟消防主机如何编写汉字注释?
- javaWeb连接数据库实现简单的登陆注册功能
- vue 上传图片进行压缩图片
- 回归预测 | MATLAB实现SSA-LSTM和LSTM多输入单输出
热门文章
- macOS Catalina 之「随航」自带扩展屏
- 使用双屏如何设置开机自动变复制屏或扩展屏教程
- 【视频学习】超级人脉术-快速找到你想找的任何人
- 全功能好用管道应力CAESAR II 2014 v7.00 WinXP_7-ISO 1DVD管道设计应力分析软件
- wireshark过滤包规则
- Visual Studio 2013 MYSQL下载
- 【Unity3D开发小游戏】《炸弹人游戏》Unity开发教程
- Vue使用阿里巴巴iconfont彩色字体
- [转载]Zhuangbility~
- 计算机知识在手机上能学吗,如何学习计算机知识?