learn 您所在的位置:网站首页 飞行包怎么用视频教程制作 learn

learn

2023-10-18 09:30| 来源: 网络整理| 查看: 265

一步一步学ROS

一、为什么学ROS?

ROS的全称是Robot Operating System,即机器人操作系统。它提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。 ROS的核心就是提供了一套针对机器人应用的进程间通讯系统,使得不同功能的模块之间可以很方便的互联。 如果把机器人的操纵比作一棵大树。而ROS充当的就是实现各个模块(树干,树叶)之间互通的脉络。让各个模块之间可以更方便,更快捷的互联互通。

不仅如此,经过ROS多年的发展,其内部早已完善了很多基础模块并且开源,比如:导航模块,机械臂控制模块,坐标系转换模块,各种SLAM模块等等。这将大大降低我们对于操控机器人的成本,不需要我们自己去造轮子,也不必从最底层的功能去实践。这对于初学者,无疑是十分友好的。

最后,ROS的优点就是针对机器人开发,ROS则提供了很好的可视化、模拟仿真和Debug的工具。可视化的工具RViz,Stage和Gazebo就像通信工程师用的示波器,可以说没有RViz这种可视化工具,很多功能是无法调校出来的;ROS下的模拟仿真做到了和硬件的无缝衔接。

并且针对行业来说,ROS已经逐步在与各行各业融合。如:机器人控制器中的大佬人物——KEBA,他们的控制器已经支持ROS。美国NASA基于ROS开发的Robonaut 2已经在国际空间站里干活了。 百度Apollo无人车的底层是基于ROS开发的。以及ROS-I最近正准备和微软、宝马合作,开发一套自动化解决方案,等等。这都是在说明ROS的影响正在逐步的扩大。

ROS可以说是现在对于机器人的学习无法绕开的一个关卡。而ROS其内部涉及着大量的对于机器人运动学的理论知识,我们不想只是成为一个仅仅会调包的“调包侠”。所以对于ROS的学习也是需要去深入,尝试去理解那些已有模块的内部方法。从而提高自己的能力。使自己对机器人的理解更上一层楼。希望大家能够脚踏实地,认真学习。

本教程通过多个由潜入深的步骤引导大家学习ROS的基本操作、理论、编程、开发、小项目等,通过一步一步的学习能够减少学习过程的痛苦,并提高学习的效率。

二、如何学习ROS?

本教程只针对ROS1,不讲ROS2

2.1 Stage 1:基础知识(Linux,C++,Python) C++ 对于ROS,大部分模块如导航,建图等等是由C++来编写的,学好C++才能看懂其用法,更好理解其原理 需要考虑如何评估自己的C++能力是否适应SLAM编程的需求,如果自己的能力不够,该如何学习?从哪里找资料去学习? 如果C++能力比较弱,可以参考《一步一步学编程》学习C++编程、数据结构与算法、编程项目等练习 Python 对于ROS其也兼容Python代码,由于Python写法较为简便,所以在实现小工程使可以使用Python进行书写 对于已有的Python工程,如深度学习工程,想要接入ROS通讯,这时学习Python就显得很重要 如果Python能里较弱,可以参考《廖雪峰老师的Python教程》,学习Python的基本知识 Linux 对于ROS,其使用的操作系统只要Linux,所以学好Linux尤为重要 基本的命令,如何安装软件包,如何查找软件包等等 如何在Linux下编译软件,如何使用CMake 如何使用Linux下面的IDE,例如QtCreator,KDevelop等等 2.2 Stage 2: ROS基础学习 安装ROS,去【官方安装网站】安装 使用国外的源比较慢,可以使用国内的源 tuna, aliyun, iscas 注意安装版本要与Ubuntu版本吻合 若遇到rosdep指令因访问不了外网可暂时跳过这条指令 使用指令时要注意指令的用处,不能盲目复制 参照【ROS基本教程】学习 在看教程之前也可以看Basic目录下的【ROS通信基本原理】对ROS通讯有一个初步的了解 【ROS21讲】 【ROS SummerCamp】 至少将初级教程学完 看教程时,要明白指令的意义,不是盲目使用 理解使用Topic和Service等 熟练理解使用ROS一些图形化debug界面 2.3 Stage 3: ROS中期学习 加深对ROS的基本概念的理解 需要看【官方基本概念】与【命令行工具的使用】 命令行工具不要求记得一字不差,只需有个印象,到时候即用即查 基本概念主要了解"计算图"与"命名" 了解与实现一些简单的功能 可以先看MidTerm文件下的README.md进行初步了解,一些教程写在这里 要学会roslaunch的基本使用 对一些简单模块:odom,URDF,TF理解并掌握 要学着写一些简单的工程,比如 利用代码控制基础教程中的小乌龟移动 使用URDF知识创建个仿真小车,并控制其移动 2.4 Stage 4: ROS各个模块学习

这里就是真正进入机器人模块了,我这里把机器人分成六个模块来讲:上下位机通讯,建图,导航,机械臂,状态机,语音图像。这个学习没有先后顺序,可根据自己需要自行决定学习顺序

学习之前可以先看一下下方的学习建议

上下位机通讯

这里可以参看一下Communication/README.md内含教程 理解ros_control的运作过程 理解串口通讯,socket通讯 尝试使用roscontrol,以及串口通讯方式等

导航

可以去看官方教程,代码 通过代码不难看出,navigation是一个多包的集成,想要深入了解每个包,可以在http://wiki.ros.org/后加入包的名称,如:move_base 理解导航需要订阅什么topic,和发布什么topic 能够使用导航在仿真界面跑起来 理解导航内部原理,尝试去读代码理解,move_base代码一定要读

建图(SLAM)

这里推荐三个激光建图包,gmapping hector_slam cartographer 教程中有他的软件包安装方式,需要安装好,并能进行测试 了解其参数使用 了解其内部原理

机械臂控制

先给出一个理论说明 这里给出官方教程,教程较长根据需求决定学习到哪 这里推荐一个较好的机器人蔽障算法 至少要掌握机械臂控制的方法 努力实现蔽障

状态机

状态机是机器人的大脑,它是用来调用各个模块来达到想要的效果 官方教程 最后要实现类似行为树这样的效果

语音图像

这里只需要看Module目录下的rbx1_speech和rbx1_vision,这里面的例子就足够了 学会使用其例子 三、学习的建议

如何学习这些模块呢,我觉得需要经历三个过程用,读,写

昨夜西风凋碧树,独上高楼,望尽天涯路

首先是用,将官方代码跑起来,让其能够实现功能。在使用的过程中一定会遇到错误,在解决这些错误的过程就多少会对这个模块有一个新的认识。

衣带渐宽终不悔,为伊消得人憔悴

第二是读,尝试去读源码,理解其内部原理,通过读代码学习其代码的风格以及解决问题的逻辑思路,这也会对你的代码水平有较大的提高。

众里寻他千百度,蓦然回首,那人却在,灯火阑珊处

最后就是写,在积累了这么多之后,就可以尝试去改进其源码的一些东西,来达到自己想要的一个更好的效果,甚至自己操刀重新写一个新的包。

画重点: 这里给大家提供以十分好用的网站,这里你可以查到任何ros中使用的对象的方法。如,我想查找Costmap2D的方法,就点击这。对比这两个的网址,就可以找到你想要的各种类方法。

最后我也将rbx1这个包放入到Module目录里,大家可以去试着用和学习其简单样例,帮助学习。

四、相关参考资料

ROS仅仅是机器人系统的编程、开发框架,更多的算法、功能开发需要更进一步学习编程、计算机视觉、机器学习等知识。

《一步一步学编程》 《一步一步学SLAM》 飞行器智能感知与控制实验室 - 培训教程与作业 《飞行器智能感知与控制实验室-暑期培训教程》 《飞行器智能感知与控制实验室-暑期培训作业》 机器学习教程与作业 《机器学习教程》 《机器学习课程作业》 飞行器智能感知与控制实验室-研究课题 编程代码参考、技巧集合 可以在这个代码、技巧集合中找到某项功能的示例,从而加快自己代码的编写


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有