所有产品

用ROS教授机器人技术

  几个月前,我采访了Joel Esposito关于ROS开发者播客#21的机器人教育状况。在播客上,Joel谈到了他关于机器人如何在全世界传授的研究。他确定了一套常见的机器人学科,需要对其进行解释,以使学生了解机器人技术,以及人们用来教授机器人的资源清单。但最重要的是,他指出了学习机器人的重要性。

  从我的角度来看,机器人技术是关于做,而不是阅读。机器人类无法学习如何计算矩阵的雅可比矩阵以找到逆运动学。计算雅可比行星与机器人无关,它只是我们用来解决机器人问题的数学工具。这就是为什么机器人类不应该专注于如何计算雅可比行列式,而应该关注如何将末端执行器移动到给定位置。

  您需要使用矩阵来编码其当前状态。我们开始做吧。采用该模拟机器人手臂并创建一个订阅/ joint_states并捕获关节值的ROS节点。从这些值中,创建一个存储它的矩阵。它必须能够在任何时间步骤修改矩阵,所以如果我移动手臂,矩阵必须改变。

  你需要计算雅可比行列式。我们开始做吧!创建一个程序,手动为末端执行器引入所需的位置。然后根据该数据计算雅可比行列式。

  我知道学习和学习理论是机器人技术的重要组成部分,但不是最大的。最大的应该是练习和做机器人。为此,我建议使用ROS作为基础系统,启动器,允许 在学习机器人时进行实际操作(存在吗?!?!)。

  像反向运动学或机器人导航这样复杂的教学科目不应该(只是)理论上的问题。实践应该嵌入到那些复杂的机器人学科的教学中。

  我建议在教授机器人技术的同时教ROS,并在整个机器人学期中使用前者作为构建和实现我们正在教授的机器人学科的工具。我们的想法是,我们使用ROS来让学生真正实践他们正在学习的东西。例如,如果我们讨论避障的不同算法,我们还提供了一个模拟机器人,并让学生创建一个实际上为该机器人实现算法的ROS程序。通过遵循这种方法,学生的学习不仅仅是理论上的,而是包括被告知的实践。

  在此过程中使用ROS的优势在于ROS已经提供了许多可以提供工作基础设施的材料,您作为教师,可以专注于教学生如何创建特定主题所需的小部分正在教学。

  我们目前有很多工具,仅在5年前还没有......让我们利用它们来提高学生的学习质量和数量!我们不使用Powerpoint幻灯片,而是使用交互式Python笔记本。我们不是为整个班级使用单个机器人,而是为每个学生提供机器人模拟。我们不是在屏幕上提供方程式,而是让学生在ROS节点中实现它,以便他们进行修改。

  我讲的是我练习的内容。这是我在巴塞罗那LaSalle大学的机器人导航课上使用的方法。在本课程中,我将介绍如何使机器人在避开障碍物的同时自动从空间中的一个点移动到另一个点的基础知识。您知道,SLAM,粒子滤波器,动态窗口方法等。作为课程的一部分,学生必须学习ROS并使用它来实现我向他们解释的一些理论概念,例如,如何根据编码器提供的值计算$ odometry。

  但是,我并不是唯一一个使用这种方法来教授机器人的人。例如,康奈尔大学教授罗斯珀向我解释上使用ROS教机器人的基础的ROS开发者播客#23,他是如何教ROS和并联机器人。他甚至更进一步,禁止学生使用ROS导航堆栈或MoveIt等许多ROS软件!他的观点非常好:他希望学生真正学会如何去做,而不仅仅是如何使用别人做过的东西(比如导航堆栈)。但无论如何他都使用ROS基础设施。

  然后,您开始解释您选择的机器人主题,让学生使用机器人实现您在ROS程序中教授的内容。我建议使用模拟机器人。

  添加一个真实的机器人项目,学生必须将他们学到的所有知识应用到一个基于ROS的真实机器人的单个项目中

  对于此步骤,您应该描述允许学生创建ROS程序的ROS的基本主题。这些科目包括以下内容:

  没有必要为这些科目投入太多时间,只需要他们了解ROS的必要时间。通过沿着学期的不同课程练习,将学习对ROS的更深入的了解和理解。当他们试图创建用于实现理论概念的软件时,他们将不得不实践这些概念,并将它们深入到他们的大脑中。

  非常重要的是,通过使用模拟机器人并使学生将概念应用于模拟机器人来解释这些概念。例如,让学生从主题中读取,以获得距离最近障碍物的距离。或者让他们写一个主题让机器人四处移动。不要只解释主题是什么,并在幻灯片上提供代码。让它们实际连接到数据生产者,即模拟机器人。

  我还建议您在此步骤中忘记了有关创建自定义消息或什么是服务或操作客户端的教学。这对于这样一个入门级课程来说太过分了,你不太可能在下一个机器人课程中需要它。

  可能会发生这样的情况:为了实现理论部分,学生需要大量预先制作的代码来支持您正在教授的特定点。这意味着你必须更加努力地为你的课程做好准备,并向学生提供所有支持代码。好消息是,通过使用ROS,您很可能会发现某些代码已经完成。因此,找到或开发该代码,并将其作为ROS包提供给您的学生。有关在何处查找代码以及如何向学生提供代码的更多信息,请参阅下文。

  这里包含一个有趣的观点是Knepper教授所说的:他创造了一些故意错误的练习,因此学生学会识别系统没有正确执行的情况,更重要的是,要创造必要的技能来弄清楚如何解决那些错误。考虑到这一点。

  在某些时候,您可能需要为您正在教授的机器人主题创建自定义ROS消息。或者您可能需要使用ROS服务,因为您需要提供面部识别服务。无论你需要解释什么ROS,现在是最好的时刻。用这种必要性来解释这个概念。我的意思是当学生不知道这可以用于什么时,解释像ROS动作服务器这样的概念是一个坏主意。解释新ROS概念的最佳时刻是每个人都清楚需要这个概念。

  我发现自己在学生不需要它时解释像ROS服务这样的复杂概念,这使得他们很难理解,即使你提供了很好的使用例子。他们无法感受到在他们的课程中不使用这些概念的痛苦。只有当他们处于实际需要这个概念的情况时,他们才会感受到痛苦,知识才会融入他们的脑海。

  继续这样推。转到下一个主题。提供不同的机器人模拟。要求学生实施这一概念。继续这样,直到你完成整个课程。

  使用模拟器进行测试很好,因为它提供了真实的生活体验。但是,真正的测试是当你使用真正的机器人时。通常,大学没有针对每个学生的机器人预算,这就是为什么我们一直在推广使用模拟。然而,一些真正的机器人体验是必要的,大多数大学可以负担得起全班的一些机器人。这就是机器人项目开始实施的关键所在。

  定义一个机器人项目,它包含了整个课程的所有知识。让学生创建将在真实机器人上测试结果的小组。这种方法有许多优点:学生必须将所有课程总结到一个应用程序中。他们必须使它在真正的机器人中工作。此外,他们必须团队合作。