《ros理论与实践》学习笔记机器人自主导航(代码片段)

Sakurazzy Sakurazzy     2023-03-23     659

关键词:

《ROS理论与实践》学习笔记(九)机器人自主导航

在学习《ROS理论与实践》课程时,记录了学习过程中的编程练习,课后作业以及发现的问题,后续会对尚未解决的问题继续分析并更新,纯小白,仅供参考。
本次学习笔记关于课程中的第八讲:机器人SLAM建图 。主要学习了ROS中的导航框架、导航框架中的关键功能包、机器人自主导航案例。
本章ROS Wiki参考链接:ROS wiki 导航


课程内容

ROS中的导航框架

ROS提供了基于move_base的导航框架,其中move_base中包括了全局规划global_planner,本地规划local_planner,恢复机制recovery_behaviors等。


导航框架中的关键功能包

move_base

具体内容Wiki链接:wiki move_base

  1. 全局路径规划(global planner)
    包括了全局最优路径的规划,一般采用Dijkstra(距离)或者A*算法(时间)
  2. 本地实时规划(local planner)
    规划机器人每个周期内的线速度、角速度,使之尽量符合全局最优路径,实现实时避障功能,通常采用Trajectory Rollout和Dynamic Window Approaches算法
  3. 动作Action
    是一种问答通信机制,C/S架构,基于ROS的消息机制实现,下面是move_base功能包中的话题和服务

amcl

具体内容Wiki链接:wiki amcl
基于蒙特卡洛定位方法,针对已有地图使用粒子滤波器跟踪一个机器人的姿态,相比于里程计定位,amcl定位还可以利用雷达等信息直接进行机器人的位姿估算,下面是amcl功能包中的话题和服务


机器人自主导航案例

导航仿真

本示例程序主要实现在Rviz中,使用2D Nav Goal工具绘制目标点,使得Gazebo中的机器人自动导航运动到目标点的功能
代码来自课程源码包,下面只给出启动代码,主要是启动了gazebo仿真环境、move_base和amcl节点

$ roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch
$ roslaunch mbot_navigation nav_cloister_demo.launch

下图是仿真结果,可以看到机器人能够完成从起始点到目标点的运动

为了检测机器人导航的动态避障,在Gazebo中添加障碍物,可以在Rviz中看到导航路线的实时更新,因此该算法具有较好的避障效果。

程序接口

代码包提供了两个导航demo,通过在程序中直接设置目标点实现机器人的导航功能,设置目标点部分的代码如下:

# 设定目标点  
target = Pose(Point(-5.543, -4.779, 0.000), Quaternion(0.000, 0.000, 0.645, 0.764))  
goal = MoveBaseGoal()  
goal.target_pose.pose = target  
goal.target_pose.header.frame_id = 'map'  
goal.target_pose.header.stamp = rospy.Time.now()  
# 向目标进发  
move_base.send_goal(goal) 

move_base+gmapping

利用move_base和gmapping两个功能包的结合,实现机器人在未知环境下进行导航和实时的建图。
在Rviz中设置目标点实现机器人移动,启动代码如下:

$ roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch
$ roslaunch mbot_navigation exploring_slam_demo.launch

也可以在程序中直接设置随机目标点,让机器人进行自动的导航和建图,启动代码如下:

$ roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch
$ roslaunch mbot_navigation exploring_slam_demo.launch
$ rosrun mbot_navigation exploring_random.py

仿真结果如下

《ros理论与实践》学习笔记机器视觉处理(代码片段)

...过人脸识别方式,发布速度控制指令,控制仿真机器人运动2.使用杯子识别发布速度控制指令,控制仿真机器人的运动 查看详情

《ros理论与实践》学习笔记机器人slam建图(代码片段)

《ROS理论与实践》学习笔记(八)机器人SLAM建图课程内容常用SLAM功能包应用gmappinghectorcartographerrtabmap本讲作业1.在Gazebo中构建一个用于建图和导航的虚拟环境2.将自己构建的机器人模型放置到虚拟环境中,使用gmapping... 查看详情

slam+语音机器人diy系列:slam建图与自主避障导航——3.ros-navigation机器人自主避障导航(代码片段)

...   通过前面的基础学习,本章进入最为激动的机器人自主导航的学习。在前面的学习铺垫后,终于迎来了最大乐趣的时刻,就是赋予我们的miiboo机器人能自由行走的生命。本章将围绕机器人SLAM建图、导航避障、巡航... 查看详情

机器人工程专业实践镜像2021版-含现代控制理论机器人控制器ros2esp32webots和导航实践(tianbot_mini)

...简要说明(2020-2021-2)_zhangrelay的专栏-CSDN博客<机器人技术创新与实践& 查看详情

机器人工程专业实践镜像2021版-含现代控制理论机器人控制器ros2esp32webots和导航实践(tianbot_mini)

...简要说明(2020-2021-2)_zhangrelay的专栏-CSDN博客<机器人技术创新与实践& 查看详情

ros仿真笔记之——基于rrt_exploration的单个机器人自主探索建图(代码片段)

之前博文已经介绍过机器人exploration以及多机器人SLAMmapmerage《ROS学习笔记之——多机器人探索环境》《ROS仿真笔记之——基于gazebo的多机器人探索环境仿真》《ROS仿真笔记之——多移动机器人SLAM地图融合》《ROS仿真笔记之——... 查看详情

ros理论与实践:机器人系统设计

     还有一些连接Kinect、激光雷达      查看详情

在ros中开始自主机器人仿真-3让turtlebot自主导航

我们已经在gazebo中实现了机器人的仿真,而且能够控制机器人的运动,查看机器人所感知到的信息,包括lasercan,图像信息,深度信息,点云,也包括没有提到的速度信息.这里,我们建立用ROSnavigationstack导航功能包ROSnavigationstack导航功能包&... 查看详情

ros仿真笔记之——基于frontier_exploration的机器人自主探索

最近在做机器人自主探索建图的相关topic。之前博客也尝试了不同的自主探索包,如rrt_exploration包《ROS仿真笔记之——基于rrt_exploration的单个机器人自主探索建图》与explore_lite包《ROS仿真笔记之——移动机器人自主探索式地... 查看详情

冰达ros机器人使用-实现slam建模自主导航避障(代码片段)

冰达ROS机器人使用—实现slam建模、自主导航、避障一、使用前准备工作1.在windows中下载好远程连接工具:xshell、puty12.机器人有两种模式:模式说明AP模式机器人自己创建一个热点,电脑端连接该热点,实现局域网... 查看详情

《分布式机器学习:算法理论与实践》——re

 分布式机器学习:算法、理论与实践——【1】分布式机器学习:算法、理论与实践2)——【2】 《分布式机器学习:算法、理论与实践》——【RE】       查看详情

ros-slam-自主导航(代码片段)

...、手动探索使用rviz的“2Dnavgoal”手动选择目的地,机器人开始导航,同时使用mapping算法实时构建地图。效果如下;如果多次尝试无果,机器人最终会放弃,终端里将看到错误提示。四、自动slam导航rosrunmrobot_navigationrandom_nav... 查看详情

冰达ros机器人使用-实现slam建模自主导航避障(代码片段)

冰达ROS机器人使用—实现slam建模、自主导航、避障一、使用前准备工作1.在windows中下载好远程连接工具:xshell、puty12.机器人有两种模式:模式说明AP模式机器人自己创建一个热点,电脑端连接该热点,实现局域网... 查看详情

机器人编程实践-ros2基础与应用-第⑦版

...版如下: 摘要:LearnRightNow,PrepareForFuture课程围绕机器人操作系统(ROS2)的应用展开,包括机器人学的基础理论和常用工具。借助立体多样的示例,课程可以为使用ROS2进行机器人开发设计的学员提供一个... 查看详情

蓝桥ros机器人之现代c++学习笔记7.2互斥量与临界区(代码片段)

看如下三段代码://mutexexample#include<iostream>//std::cout#include<thread>//std::thread#include<mutex>//std::mutexstd::mutexmtx;//mutexforcriticalsectionvoidprint_block(intn,charc)// 查看详情

slam+语音机器人diy系列:slam建图与自主避障导航——2.google-cartographer机器人slam建图(代码片段)

...   通过前面的基础学习,本章进入最为激动的机器人自主导航的学习。在前面的学习铺垫后,终于迎来了最大乐趣的时刻,就是赋予我们的miiboo机器人能自由行走的生命。本章将围绕机器人SLAM建图、导航避障、巡航... 查看详情

机器人技术创新与实践旧版本大纲

具体参考:tianbot_mini机器人上手ROS/SLAM/Navigation究竟有多简单???2017-2018-2019-2020使用此版本(以ROS1为主)。2021-2022-依据具体情况,做了较多调整。课程编号学分2开课学期6学时2周课程类型集中实践课... 查看详情

《分布式机器学习:算法理论与实践》pdf+刘铁岩+资料学习

《分布式机器学习:算法、理论与实践》旨在全面介绍分布式机器学习的现状,深入分析其中的核心技术问题,并且讨论该领域未来的发展方向。下载:https://pan.baidu.com/s/1XeOGCQK5qWCba8VK0KU21w《分布式机器学习:算法、理论与实践... 查看详情