【ROS机器人】 --- 2-5.自主导航并slam建图

2023-05-16

“压线才低头”

  • 前期准备
  • 基础知识
  • 编写launch文件
  • 执行流程
  • 最后重写launch文件

本节目标:加载一张未知地图,为机器人设置目标点,机器人会边走路,边建图,最后还可以用map_server保存.
实现:

  1. 打开gazebo和模型文件(car_move.launch)
  2. 编写launch文件(实际是slam和导航(move_base)相关等的配置)
  3. 启动机器人
  4. 配置rviz,并保存为新的rviz文件存入launch文件中
  5. 在rviz中通过2D Nav Goal设置目标点,机器人开始自主移动并建图,查看效果

前期准备

  1. 延用工作空间test2_ws;
  2. 功能包demo5_navigation存放代码;
  3. launch文件为demo5_navigation/launch/nav4_slam_auto.launch;
  4. 对于move_base用到的参数全放在demo5_navigation/param/文件夹下;
  5. rviz配置在demo5_navigation/config/rviz/nav4_2map.rviz;

基础知识

提问:
----导航时需要地图信息,之前导航实现时,是通过 map_server 包的 map_server 节点来发布地图信息的,如果没有通过SLAM建图,那么如何发布地图信息呢?
回答:
----SLAM建图过程中本身就会时时发布地图信息,所以无需再使用map_server,SLAM已经发布了话题为 /map 的地图消息了,且导航需要定位模块,SLAM本身也是可以实现定位的。

编写launch文件

实际上是引入了slam的配置文件和上一节导航所用到的几个配置文件.
源码如下(rviz已更改)

<launch>
	<!-- 启动SLAM节点 -->
	<include file="$(find demo5_navigation)/launch/nav1_slam.launch" /> 

	<!-- 运行move_base节点 -->
	<include file="$(find demo5_navigation)/launch/nav3_set_yaml.launch" />

	<!-- 运行rviz,这里的是第一次运行并且配置保存完rviz之后的 -->
	<include>
	<node pkg="rviz" type="rviz" name="rviz" />
	<!-- args="-d $(find demo5_navigation)/config/rviz/nav1.rviz"  /> -->
</launch>

执行流程

  1. 打开世界环境(gazebo机器人+模型)
roslaunch demo4_urdf_gazebo car_move.launch 
  1. 运行launch文件
roslaunch demo5_navigation nav4_slam_auto.launch 
  1. 配置rviz并保存
  • 取消posearray(获得更好的视觉效果)

  • 添加本地地图map,订阅话题选择local那个,配色选raw

  • 在这里插入图片描述

  • 添加全局地图,订阅话题选择glabal那个,配色选costmap
    在这里插入图片描述

  • 添加本地路径,path,订阅话题带local

  • 在这里插入图片描述

  • 添加全局路径,path 订阅话题带global,更改颜色和线束以获得更好的观测效果

  • 在这里插入图片描述

  • 设置目标点,开始自动导航和建图
    在这里插入图片描述

  • 保存rviz,并更改launch文件

保存rviz,命名为nav4_2map.rviz

最后重写launch文件

因为一个rviz不能存在导入两份rviz配置的操作,而我们的slam有对应rviz配置,所以我们应该重写slam文件代码到我们自己的launch文件中,并且在最后一句加入我们自己的rviz环境.而不是简单的文件调用.
更改之后的源码如下:

<launch>
<!-- 启动SLAM节点 -->
        <!-- if simulation then true -->
        <param name="use_sim_time" value="true"/>
        <node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen">
        <!-- laser's topic name -->
        <remap from="scan" to="scan"/>
                <!--param list-->
                <!-- 关键坐标系设置 -->
                <param name="base_frame"    value="base_footprint" />
                <param name="map_frame"    value="map" />
                <param name="odom_frame"    value="odom" />

                <param name="map_update_interval" value="5.0"/>
                <param name="maxUrange" value="16.0"/>
                <param name="sigma" value="0.05"/>
                <param name="kernelSize" value="1"/>
                <param name="lstep" value="0.05"/>
                <param name="astep" value="0.05"/>
                <param name="iterations" value="5"/>
                <param name="lsigma" value="0.075"/>
                <param name="ogain" value="3.0"/>
                <param name="lskip" value="0"/>
                <param name="srr" value="0.1"/>
                <param name="srt" value="0.2"/>
                <param name="str" value="0.1"/>
                <param name="stt" value="0.2"/>
                <param name="linearUpdate" value="1.0"/>
                <param name="angularUpdate" value="0.5"/>
                <param name="temporalUpdate" value="3.0"/>
                <param name="resampleThreshold" value="0.5"/>
                <param name="particles" value="30"/>
                <param name="xmin" value="-50.0"/>
                <param name="ymin" value="-50.0"/>
                <param name="xmax" value="50.0"/>
                <param name="ymax" value="50.0"/>
                <param name="delta" value="0.05"/>
                <param name="llsamplerange" value="0.01"/>
                <param name="llsamplestep" value="0.01"/>
                <param name="lasamplerange" value="0.005"/>
                <param name="lasamplestep" value="0.005"/>
        </node>

        <!-- 坐标系变换发布 -->
        <!-- 关节以及机器人状态发布节点 -->
        <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
        <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
        <!-- 运行rviz,这里的是第一次运行并且配置保存完rviz之后的 -->
        <node pkg="rviz" type="rviz" name="rviz" args="-d $(find demo5_navigation)/config/rviz/nav4_2map.rviz"  />

<!-- 运行move_base节点 -->
<include file="$(find demo5_navigation)/launch/nav3_set_yaml.launch" />

</launch>

前几天忙了下校验的事,从今天开始回归挚爱的车.


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【ROS机器人】 --- 2-5.自主导航并slam建图 的相关文章

  • ROS rosdep update 出错方法 不需要翻墙切换之类的解决方法 ‘https://raw.githubusercontent.com/ros/rosdistro/master/inde

    系统 ubuntu18 rosdep update参考的这篇文章 https blog csdn net weixin 43311920 article details 114796748 utm source app app versio
  • Ceres Solver从零开始手把手教学使用

    目录 一 简介 二 安装 三 介绍 四 Hello Word 五 导数 1 数值导数 2解析求导 六 实践 Powell函数 一 简介 笔者已经半年没有更新新的内容了 最近学习视觉SLAM的过程中发现自己之前学习的库基础不够扎实 Ceres
  • 无人车

    1 无人车四大核心技术 自动驾驶实际包含三个问题 一是我在哪 二是我要去哪 三是如何去 第一个问题是环境感知和精确定位 无人车需要的是厘米级定位 厘米级定位是无人驾驶的难点之一 不光是车辆本身的语义级定位 还有一个绝对坐标定位 第二个问题是
  • 解决ros安装 使用roscore命令测试问题

    本人安装教程完成ROS的安装后 在进行测试如图1命令 出现 解决办法输入完命令1后要输入命令2才行 即可测试成功 测试成功的界面如下
  • rosprofiler 安装和使用

    rosprofiler wiki 页面 http wiki ros org rosprofiler rosprofiler package 下载rosprofiler和ros statistics msgs 放到工程目录下编译 https
  • BLAM跑自己的数据包无法显示全局点云地图解决(速腾聚创RS-LiDAR-16 雷达 )-SLAM不学无术小问题

    BLAM算法跑自己的数据包无法显示全局点云地图解决 适配速腾聚创RS LiDAR 16 雷达 提示 本文笔者使用环境Ubuntu18 04 ROS melodic版本 首先放一个效果链接 由b站up VladimirDuan上传 非官方 官
  • 局域网下ROS多机通信的网络连接配置

    1 在路由器设置中固定各机器IP地址 在浏览器中输入路由器的IP地址 例如TP LINK路由器的IP为 192 168 1 1 进入登录页面后 输入用户名和密码登录 用户名一般为admin 密码为自定义 在 基本设置 gt LAN设置 gt
  • 服务数据的定义和使用

    1 自定义数据服务 在包下创建srv文件夹 在文件夹下创建Person srv 在Person srv下输入以下内容 代表数据类型 string name uint8 age uint8 sex uint8 unknown 0 uint8
  • 可视化点云

    我在找到的视差图像上有来自 gpu reprojectImageTo3D 的 3D 点 我现在想显示这个点云 如何将找到的点云转换为OpenCV to sensor msgs PointCloud2 我不需要发布点云 这仅用于调试可视化 是
  • 无法加载 LZ4 支持的 Python 扩展。 LZ4 压缩将不可用

    我是 ROS 新手 我刚刚打开终端并输入roscore和另一个终端并键入rostopic node我收到这个错误 上面写着 无法加载 LZ4 支持的 Python 扩展 LZ4 压缩将不可用 我搜索并去了https pypi org pro
  • 将 CUDA 添加到 ROS 包

    我想在 ros 包中使用 cuda 有人给我一个简单的例子吗 我尝试使用 cuda 函数构建一个静态库并将该库添加到我的包中 但总是出现链接错误 未定义的引用 cuda 我已经构建了一个可执行文件而不是库并且它可以工作 请帮忙 我自己找到了
  • 不使用ros编译roscpp(使用g++)

    我正在尝试在不使用ROS其余部分的情况下编译roscpp 我只需要订阅一个节点 但该节点拥有使用旧版本ROS的节点 并且由于编译问题 我无法将我的程序与他的程序集成 我从git下载了源代码 https github com ros ros
  • Todesk突然高速通道使用已结束

    今天使用Todesk直接报出如下错误 好像对于海外用户需要付费购买海外会员 大家有没有什么可以替换的远程控制软件的吗 能分享一下吗
  • 什么是深度学习的无监督学习与有监督学习

    无监督学习 深度学习中的无监督学习方法是一种训练算法 它在没有标注输出的情况下从输入数据中学习模式和特征 这种方法的核心是探索和理解数据的内在结构和分布 而不是通过已知的输出来指导学习过程 无监督学习在深度学习领域有许多不同的形式和应用 以
  • 无法在 ROS 中使用本地安装的 Protocol Buffer

    我已经安装了协议缓冲区 https developers google com protocol buffers 本地 ROS包的目录结构如下 CMakeLists txt package xml include addressbook p
  • 如何访问 Heroku 中的 docker 容器?

    我已按照此处构建图像的说明进行操作 https devcenter heroku com articles container registry and runtime getting started https devcenter her
  • 如何订阅“/scan”主题、修改消息并发布到新主题?

    我想通过订阅message ranges来改进turtlebot3的LDS 01传感器 通过应用一些算法修改messange ranges并将其发布到新主题 如下所示 但是当我运行编码时出现错误 错误是 遇到溢出的情况 错误是 运行时警告
  • 使用 CMake 链接 .s 文件

    我有一个我想使用的 c 函数 但它是用Intel编译器而不是gnu C编译器 我在用着cmake构建程序 我实际上正在使用ROS因此rosmake但基础是cmake所以我认为这更多是一个 cmake 问题而不是ROS问题 假设使用构建的文件
  • ROS中spin和rate.sleep的区别

    我是 ROS 新手 正在尝试了解这个强大的工具 我很困惑spin and rate sleep功能 谁能帮助我了解这两个功能之间的区别以及何时使用每个功能 ros spin and ros spinOnce 负责处理通信事件 例如到达的消息
  • 在 Google Colaboratory 上运行gym-gazebo

    我正在尝试在 Google Colaboratory 上运行gym gazebo 在Colab上运行gazebo服务器 没有gui的gazebo 有问题 显示警告 Unable to create X window Rendering wi

随机推荐

  • 功率放大芯片IR2184介绍

    IR2184引脚定义 xff1a IN一般为脉冲信号 xff0c 即全桥电路中的pwm波信号 xff0c 一般可以通过调节它的占空比来控制智能车电机的转速 SD信号为使能信号 xff0c 高电平有效 xff0c 芯片工作 Vb是高侧浮动电源
  • 为你解读7大类深度CNN架构创新综述(附论文)

    来源 xff1a 机器之心 本文约3000字 xff0c 建议阅读6分钟 本综述将最近的 CNN 架构创新分为七个不同的类别 xff0c 分别基于空间利用 深度 多路径 宽度 特征图利用 通道提升和注意力 深度卷积神经网络 xff08 CN
  • docker 入门 实例

    先决条件 验证是否已经做好准备 docker run hello world 使用Dockerfile定义容器 Dockerfile将在您的容器内定义环境中执行的操作 对网络接口和磁盘驱动器的访问在此内环境内实现虚拟化 xff0c 这将独立
  • HMC5883L磁力计常见问题解答

    原文地址 xff1a http blog sina com cn s blog 402c071e0102v8gj html 本文提供了 HMC5883L 磁力计 的 常见问题的解答 xff0c 本文来自百度文库 xff0c 欢迎交流 xff
  • PX4 Offboard Control with MAVROS--MAVROS(环境搭建)

    需要准备的材料 1 PIXhawk或者Pixracer 2 一个已经安装好ubuntu mate16 04的树莓派3B 3 一根micro USB 数据线 一 安装ROS 1 设置source list sudo sh c 39 echo
  • PX4 Offboard Control with MAVROS--Takeoff(一键起飞)

    警告 xff1a 请先在仿真环境下进行测试 xff0c 能达到预期效果后在进行实际飞行测试 xff0c 以免发生意外 本篇文章只是用作学习交流 xff0c 实际飞行时如出现意外情况作者不予以负责 所需材料 1 PIXhawk或者Pixrac
  • Linux:查看网络信息和网络监控命令。

    ifconfig 该命令用于查看机器挂载的网卡情况 使用方式 ifconfig a 命令输出 可见机器有两个网卡 xff0c 一个时eth0 xff0c 另一个是本地回环虚拟网卡 另外 xff0c iproute2软件包含一个强大的网络配置
  • 胡晓明:“自主研发、共生共存、不碰数据是我们的三条生命线”

    5月23日 xff0c 在云栖大会 武汉峰会上 xff0c 阿里云总裁胡晓明系统阐述了这家公司坚守的三条生命线 坚持自主研发之路 xff0c 拿来主义 盖不出高楼大厦 xff0c 自主研发的云才能走得更远 xff1b 生态是阿里巴巴血液里流
  • 视觉SLAM十四讲

    内部交流 xff0c 写的很乱 xff0c 各路大神不建议观看以免影响思路 1 激光SLAM 激光SLAM相对成熟 xff0c 比如2005年出版的 概率机器人 中就介绍了很多关于激光SLAM的知识 xff0c 在ROS里也能找到许多关于激
  • 推荐几本学习c++的靠谱书

    入门推荐 C 43 43 Primer Plus 第6版 中文版 C 43 43 程序设计经典教程 xff0c 畅销30年的C 43 43 大百科全书 xff0c 零基础自学C 43 43 入门 C 43 43 是在 C 语言基础上开发的一
  • Python进阶书籍经典书有这样三本

    1 Python核心编程 xff08 第3版 xff09 Core Python Applications Programming xff08 3rd Edition xff09 美 Wesley Chun 著 xff0c 孙波翔 xff0
  • PID控制算法 无人机的精准悬停 机器人和机械臂的运动系统 飞机和火箭的姿态调整

    目录 应用数学公式机器人为例无人机为例PDI总结参考链接 应用 空调的温度控制 无人机的精准悬停 机器人和机械臂的运动系统 飞机和火箭的姿态调整 数学公式 机器人为例 无人机为例 P D I
  • Docker容器图形界面显示(运行GUI软件)的配置方法

    0 环境说明 Ubuntu 16 04 docker 1 35 1 Docker的 可视化 Docker本身的工作模式是命令行的 xff0c 因为主要的使用场景可能是做服务器后端方面的比较多 但有时候我们会有在docker容器里运行一些图形
  • 即时通讯 3

    即时通讯 3 内容待写
  • HMC5883L 磁力计校准

    原文地址 xff1a http blog sina com cn s blog 402c071e0102v8ie html 这里针对 HMC5883L 磁力计 的校准 xff0c 做一个简单讲解 欢迎交流 xff0c 新浪长沙 64 Wal
  • linux下如何编译c++工程项目

    首先 xff0c 你必须 有一 个Linux开发环境 xff0c 这样才能进行C 43 43 开发 笔者用的是安装在虚拟机中的Ubuntu 9 04 xff0c Ubuntu操作系统是没带C 43 43 编译器g 43 43 在连网的情况下
  • 【ROS程序】 --- 4-1. URDF-GAZEBO 文件介绍

    没人天赋异禀 xff0c 介绍两种实现对比发现 gaze中的urdf文件1 碰撞参数设置2 惯性矩阵设置3 颜色设置 介绍 在前边提过的rviz中 xff0c 只负责整体机器人的建模和运动 xff0c 而在gazebo中集成urdf文件则需
  • 【ROS机器人】 --- 2-2.slam建图保存

    山无拦 海无遮 xff01 前期准备建图I 运行机器人 gazebo II 建图文件编写III 配置rviz并保存1 添加机器人和雷达2 添加TF3 地图map4 保存配置 IV 控制运动建图V 保存地图1 map server2 保存查看
  • 【ROS机器人】 --- 2-4. 路径规划_move_base

    我回来啦 前期准备基础知识1 action通信2 代价地图及组成3 碰撞算法 文件详解及过程I 集成参数的launch文件II 配置文件1 costmap common params yaml2 global costmap params
  • 【ROS机器人】 --- 2-5.自主导航并slam建图

    压线才低头 前期准备基础知识编写launch文件执行流程最后重写launch文件 本节目标 xff1a 加载一张未知地图 xff0c 为机器人设置目标点 机器人会边走路 边建图 最后还可以用map server保存 实现 xff1a 打开g