个人使用体验,概念相似,但是“内核”差异很大。

不推荐通过学习ROS1,掌握ROS2。

看一段在官网论坛的反馈:

简要的机器翻译如下:

此文作者在Discourse上是新手,但对ROS来说并不陌生,并且是ROS1的长期“用户”(或者说是开发者更合适),来自布拉格CTU的MRS组的多旋翼飞行器领域。有兴趣可以参考他们公开的代码库:github.com/ctu-mrs/mrs_uav_system。当然他们正在慢慢地着手实现其他人开始问我们的系统对ROS2支持的程度,因此尝试它。

从基础开始,首先尝试基本的编译模块,然后再尝试进行任何认真的应用。立即发现困难和重大问题。已经意识到ROS2并不是“ROS的第二个版本”(感觉肯定和indigo-kinetic-melodic-noetic这种升级完全不同),而是类似系统的另一种变体,因此,这些概念和设计模式可能是不可移植的。无论如何,他都是从ROS1用户的角度出发进行过渡的,因为他们围绕ROS1设计构建了成千上万行代码。

有人告诉他,这里的人可能会感谢他的反馈,所以这是他的存储库,其中包含基本示例(Foxy)github.com/ctu-mrs/ros2_examples。 README文件涵盖了清单上的所有基础知识,在继续学习之前应该先进行探讨。

自述文件还包含作者对差异和问题的印象和说明。请保持随时合作,他们将不胜感激。他花了相当长的时间来研究这些基础知识,在此期间,他发现当前的文档和示例难以遵守(此处针对ROS1)。确实,上周使用堆栈溢出的时间可能比过去五年要多。自述文件中可以找到更多内容。

一些反馈:

如何使服务同步? ROS1中的服务是完全同步的。可能希望在大约5%的时间内使用异步服务,但是可以通过一些线程或单次计时器轻松完成。但是,使所有服务异步化使得东西很难从ROS1移植。
带有计时器的多线程似乎已损坏。


计时器似乎很难用多线程执行器来产生稳定的速率。
为什么大多数演示和示例未使用ROS2文档中提倡的“组件”架构?已经对ROS1中的所有内容进行了节点处理,因此在ROS2演示中看到main()似乎很奇怪。

回到个人博客的专题,对ROS2的看法和评价是远远优于ROS1的。

以ROS为例:

风格为学习笔记,如下:

但是,从ROS1Melodic推出之后,到ROS2个人非常不解:

推出melodic和后续noetic,毫无意义(此处从架构上以及功能创新上而言,就类似几个星期一更新的app,也类似office2007,2010,2013……)!!!惯性使然,不忍舍弃罢了。

ROS1Melodic使用的是迷失与救赎,个人从那时起已经基本放弃ROS1了,当然也算基本入门ROS1这个工具了。

从2019年开始,公选课和专业课都全面讲解ROS2,并不会太多提及ROS1,也是如此。

我们文化喜欢谈及历史(如下内容非常不严谨!):

那么:

ROS2和ROS1的关系,就是变法后的秦国与变法前的秦国之间的关系,当然现在“六国”还在。

如果用软件的类比:

那么就是win98和winxp的区别吧。

具体一点就是对于调包侠(用户)而言,差异不大;对于原创者(开发人员),差异明显!

个人课程都在windows和linux测试,ROS2Foxy+Webots+ESP32+……更多内容后续慢慢再更,ROS2完善还需时日,来日方长,不争朝夕。
————————————————