如何高效率系统地学习机器人操作系统ROS1.0和ROS2.0(2019年01月更新)

版权声明:本文为zhangrelay原创文章,有错请轻拍,转载请注明,谢谢... https://blog.csdn.net/ZhangRelay/article/details/81083294

如何高效率系统地学习机器人操作系统ROS1.0和ROS2.0,博文都是具有时效性的,这主要面向2019年想要学习机器人操作系统的初学者。现在有关机器人操作系统ROS的学习与教程分享,越来越多,有时让人无所适从。

(GitChat)沉迷机器人操作系统的一个理由四种修仙秘籍

~https://blog.csdn.net/ZhangRelay/article/details/86286406~

补充官网讨论:https://discourse.ros.org/t/discussion-on-ros-to-ros2-transition-plan/6155

掌握如下大纲细节,基本就入门这款工具了:

具体内容机器翻译部分在文末,2020是重要节点

目录

---- 何为ROS? ----

---- 优雅入门 ----

---- 自由翱翔 ----

---- 广而告之 ----


机器人操作系统ROS是机器人学的“瑞士军刀”,但不要通过ROS学习机器人相关理论,在学习机器人操作系统ROS之前,最好具备一定的基础。

  • 操作系统基础
  1. Linux
  • 编程语言基础
  1. C++
  2. Python
  3. Matlab
  • 嵌入式开发基础
  1. Arduino、STM32
  2. Raspberry
  • 机器人学理论基础
  1. 运动学
  2. 动力学

技能点,多多益善,通常机械电子信息类工科大三以上部分学生,基本具备上述知识储备。

---- 何为ROS? ----

如果想快速了解机器人操作系统的基本原理和有趣案例,这里推荐三个免费的中文网络资源:

1. 机器人操作系统入门: https://www.icourse163.org/course/ISCAS-1002580008

2. ROS机器人操作系统实验楼:https://www.shiyanlou.com/courses/854

3. 5天学ROS中文:https://cn.robotigniteacademy.com/zh/

---- 优雅入门 ----

1. 安装与配置

保守玩家:Ubuntu 14.04+ROS Indigo,主流玩家:Ubuntu 16.04+ROS Kinetic,

自定义玩家:Ubuntu Anyone+ROS Anyone。

2. ROS 1.0与ROS 2.0的学习选择

“Personally, if I were starting now, I would start with ROS1 and learn about what ROS2 can do without learning how to do it until I encountered something that could be done in ROS2 but not ROS1 (real time control, for example). Then I would learn the ROS2 stuff necessary for that. Viewing ROS1 and ROS2 as an exclusive-or relationship is not a good approach.”

“就个人而言,如果我现在开始,我会从ROS1开始,顺便了解ROS2可以做什么,先不学习如何做到这一点,直到我遇到只能在ROS2中完成,而无法用ROS1(例如实时控制)实现的功能。这时, 我会学习必要的ROS2知识。 将ROS1和ROS2视为互斥或升级等关系其实并不合适。”

具体介绍可浏览对应官网。

3. ROS机器人编程实践(ETH)课程:https://blog.csdn.net/zhangrelay/article/details/69382096

4. TurtleBot*系列机器人教程(内容最丰富完整,含源码、网址、中文书籍、教程等)

新的ROS在线课程83 ,这个课程是一个ROS机器人编程指南,基于我们从ROS项目中积累的经验,如TurtleBot3,OpenCR和OpenManipulator。我们试图将其作为一本综合指南,涵盖ROS初学者所需的所有方面。包括嵌入式系统,移动机器人和用ROS编程的机器人手臂等主题。对于那些不熟悉ROS的人来说,“ROS机器人编程”手册46中 有一些脚注可以提供有关网络的更多信息。通过本课程和书籍,我们希望更多的人将意识到并参与提出机器人工程的不断加速的集体知识。今年夏天学习ROS吧!

  1. 免费在线课程!
  2. 基础ROS学习基础知识,模拟器,应用于真正的机器人!
  3. 我们免费共享一本500页的书!
  4. 所有讲座材料和源代码都已打开!

您将从本课程中学到什么

  • 从基本概念到实用机器人应用程序编程!
  • ROS基本概念,说明和工具
  • 如何在ROS上使用传感器和执行器包
  • 用于ROS的嵌入式主板:OpenCR1.0
  • 使用TurtleBot3进行SLAM和导航
  • 如何使用ROS Java对交付机器人进行编程
  • 使用MoveIt进行OpenManipulator仿真!和凉亭

 Youtube播放列表

 讲座材料

 免费下载“ROS机器人编程”一书!

  • 查看RobotSource下载46 
  • 本手册是为想要学习基于ROS(机器人操作系统)的机器人编程以及从事机器人开发或软件编程的专业研究人员和工程师的大学生和研究生而编写的。
    我们试图提供我们在使用TurtleBot3和OpenManipulator时学到的详细信息。我们希望本书能够成为ROS初学者的完整手册,更多人将为不断发展的开放式机器人社区做出贡献。
  • 第01章机器人软件平台
  • 第02章机器人操作系统
  • 第03章配置ROS开发环境
  • 第04章ROS的重要概念
  • 第05章ROS命令
  • 第06章ROS工具
  • 第07章基本ROS编程
  • 第08章机器人传感器电机
  • 第09章嵌入式系统
  • 第10章移动机器人
  • 第11章SLAM和导航
  • 第12章服务机器人
  • 第13章机械手

 TurtleBot3,OpenCR,OpenManipulator的手册

 开源:教程,TurtleBot3,OpenCR,OpenManipulator

----

关于ROS到ROS2过渡计划的讨论

总而言之,
我想开始讨论ROS到ROS2的过渡计划。我知道今天ROS 有很多用户,ROS2尚未完全展现,但我相信我们需要一个让社区尽快过渡到ROS2的计划。我相信从长远来看,ROS2可以并且将会比ROS更好,我们越早得到社区支持就越好。

还有这个:https//pythonclock.org/ 10 

Python 2.7将在2020年进入EOL,并且需要解决Python 2上的ROS依赖性,以便在Ubuntu 20.04和其他操作系统上执行2020版本。这可能是很多工作,在我看来,最好花在改进ROS2和将更多软件包移植到ROS2上。

鉴于ROS Melodic刚刚发布,并且OSRF致力于支持它5年,直到2023年6月,似乎我们有4。5年的时间迁移到ROS2,即使在2020年没有发生另一个ROS发布。

我也意识到计划在2019年发布 - 'Noetic'。由于那不是Ubuntu LTS,我不确定社区中有多少人会转向那个,但也可以讨论。

所以,我想了解其他用户的想法。2023有足够的时间完全转移到ROS2吗?我们需要在2020年发布LTS吗?我的建议是放弃2020年的ROS发布,并将努力转移到ROS2上。

我们需要作为一个社区共同努力,将ROS2提升到准备就绪的程度。我相信我们可以很快实现这一目标。

-

我也赞成放弃2020版本并将努力投入到ROS2中。但是,有一些项目必须在ROS2上可用,因为它可以考虑为许多人提供移动。其中最重要的是导航(OP @mkhansen正在进行的工作),MoveIt,OpenCV和PCL(或等效的)。

-

当你拖着很多重量(社区)时,跳船和燃烧的桥梁从来都不是一个很好的配方。

我更喜欢向ROS2过渡的ROS版本,当然这样就假设了稳定的api /概念。ROS2恕我直言可能面临着沿着OS-s线路分散社区的挑战。

ROS的最大资产一直是,并将永远是社区。记住这一点,不要破坏它。

-

我更喜欢向ROS2过渡的ROS版本,当然这样就假设了稳定的api /概念。ROS2恕我直言可能面临着沿着操作系统的方式开展支离破碎社区的挑战。

过去已经有很多关于此的讨论,从开发和维护的角度来看(或者至少是OSRF的决定)是一种共识,并且担心当前使用它的ppl会破坏ROS1,这是唯一的选项是一个干净的名单(参见为什么ROS 2.0 的结束3)。

这当然假设稳定的api /概念

也许在很高的层次上我们可以寻求概念上的重用/过渡,而垫片3 可能有所帮助,但不确定你所建议的是否实用(我个人也喜欢它)。

-

在2018年9月26日星期三,06:15 Matt Hansen通过ros-users < ros-users@lists.ros.org >写道:

我想开始讨论ROS到ROS2的过渡计划。我知道今天ROS 有很多用户,ROS2尚未完全展现,但我相信我们需要一个让社区尽快过渡到ROS2的计划。我相信从长远来看,ROS2可以并且将会比ROS更好,我们越早得到社区支持就越好。

另一种选择是ROS1社区共同拒绝迁移到ROS2,保持当前的业务和项目的活跃和良好,只需支付Python2 - > Python3迁移成本。不是将任何包移植到ROS2,而是花费在减少ROS1和ROS2两端之间的差异上,以减少社区分裂的影响,以及最终完全迁移的所有成本。

更长的ROS2仍然存在于未完成的“非beta”版本中,在不分裂社区的情况下减少迁移障碍的时间仍然更长。因此,“越快,越好”对社区而言在经济上并不一定正确。

-

我们应该在净新项目方面考虑这个问题。我意识到库需要迁移或重新设计以支持ROS2上的新Robotics应用程序,但是我们不应该讨论将Robotics应用程序从ROS1移植到ROS2。有些人可能会选择在有意义的地方进行,但我猜它不会发生广泛的事情。

如果您已经有一个机上或工作ROS1应用程序,它可以,并且可能应该留在ROS1上,直到该应用程序耗尽其有用的生命周期。应该将任何新的或下一代应用程序作为目标,建立在ROS2上,并使用它来支持它。

如果我们同意这个方法那么问题就是:2023是否有足够的时间在您当前的机器人项目/应用程序上获得LTS支持,社区是否可以开始构建桥梁,工具和移植库,如您所述?

----

---- 自由翱翔 ----

在Github等下载源码进行学习,编写属于自己的ROS软件包。

Tiago的教程也非常有趣,五星推荐:http://wiki.ros.org/Robots/TIAGo/Tutorials

工业机器人培训教程:http://ros-industrial.github.io/industrial_training/

---- 广而告之 ----

最近,收到古月大神的赠书,非常开心。

机器人操作系统理论与实践ROS(第二期):http://www.shenlanxueyuan.com/course/92/summary



---- End ----

没有更多推荐了,返回首页