学生休息室

分享学生如何在日常项目中使用MATLAB和Simulink的技术和现实生活示例#studentsuccess金宝app

为机器人世界杯大联盟做准备

圣诞假期过后,赛马休息室又回来了。祝大家2018年健康成功!
在今天的帖子中,塞巴斯蒂安·卡斯特罗讨论了他在泰国曼谷举行的亚太机器人世界杯(RCAP)活动中帮助举办的机器人研讨会的经验。

提醒一下,MathWorks是机器人世界杯的全球赞助商对学生团队有很多好处。在RCAP上,我们有一个展示信息、赠品、软件演示等的展台。甚至东南亚的经销商也加入了我们,TechSource。下次你参加机器人世界杯的活动时,请顺便过来打个招呼。

MathWorks和TechSource在我们的展位

背景

机器人世界杯最大的挑战之一是从初级(大学预科)联赛跳到专业(大学水平)联赛。通常情况下,即使是最成功的初级队伍,一旦从高中进入大学,也会有一个明显的学习曲线阻止他们继续参加机器人世界杯。

许多机器人世界杯的组织者都意识到了这个问题,这导致他们创造了中间挑战,旨在克服这一学习曲线。与主要为追求更高学位的学生提供研究平台的大联盟竞赛不同,这些挑战更适合教育本科生。一些例子是RoboCupRescue快速制造机器人RoboCup亚太CoSpace挑战。

让RCAP对我们来说特别的是,Jeffrey Tan博士邀请我们帮助解决这类挑战。谭博士一直是该项目的组织者RoboCup@Home4年多的联赛,以及顾问KameRider团队。我们决定为他举办一次联合研讨会RoboCup@Home教育联赛。这对我们来说是一个很好的机会,因为它使我们能够将MATLAB引入机器人设计和编程的各个方面,并在真正的世界级比赛中为我们的工具提供了很好的基准。

共有4支队伍参赛:

  • 多摩川科学俱乐部-多摩川中学,日本-高中
  • 那烂陀-创世纪环球学校,印度-高中
  • KameRider EDU-中国南开大学/马来西亚科技大学-本科
  • Skuba小-泰国Kasetsart大学-本科

RoboCup@Home教育小组-由Kanjanapan Sukvichai博士(Skuba JR顾问)提供

第1-2天:工作坊

在最初的两天里,我们想出了一个雄心勃勃的课程主题,让学生们从头开始使用TurtleBot2 -包括一个RGB +深度传感器和一个机器人手臂

我们事先要求的只是带一台安装Ubuntu 14.04的笔记本电脑。然后我们安装了机器人操作系统(ROS)和MATLAB免费许可从我们的网站

目标是开发一个典型的RoboCup@Home算法的各个部分。如果机器人有周围环境的地图,并收到口头命令,例如,把厨房里的水瓶拿来给我-下图是完成该任务所需组件的示例。

A.语音识别与合成

语音识别是用CMU PocketSphinx,而语音输入和合成则由audio_common堆栈。在研讨会上,我们展示了如何检测语音,在字典中查找关键词,并根据这些关键词采取行动。这些都是在MATLAB之外完成的。

一些学生询问了MATLAB在语音识别方面的能力。现在,有两种方法可以让它工作:

  1. 使用上面的ROS工具发布关于ROS主题的检测到的文本在MATLAB中订阅
  2. 从MATLAB调用用户定义的Python语音模块

一旦文本在MATLAB中,您就可以利用它字符和字符串的功能,甚至是新的文本分析工具箱

我个人采用了方法2Python语音识别包-特别是谷歌云语音和CMU PocketSphinx。下图显示了我运行的一个简单示例,它使用文本分析工具箱将我的演讲分为两类——食物和饮料。像“going”、“have”和“some”这样的词并没有给我们提供额外的信息。幸运的是,工具箱已经有了预处理功能解决这些问题。

B.制图和导航

为了执行映射和导航任务,我们采用了以下工作流

  1. 生成环境的映射现有的TurtleBot映射示例驾驶机器人四处走动
  2. 在上面的示例中,最新的地图发布在ROS主题(/map)上。所以,我们可以把这个映射读入MATLAB占用网格并将其保存到文件中。
  3. 一旦映射在MATLAB中,我们就可以对a进行采样概率路线图(PRM)用它来求两点之间的路径。
  4. 然后,我们可以编程一个机器人沿着这条路径纯寻迹算法

下面您可以看到我在办公室附近生成的示例地图和路径。假设地图是静态的,步骤3和步骤4可以根据需要为不同的起点和目标点重复。

C.计算机视觉与控制

对于这项任务,我们完全在MATLAB世界中操作。我们收到了许多关于使用图像制作原型比使用图像更容易的评论OpenCV主要是因为后者需要更具挑战性的语言(Python或c++)。

我们的愿景和控制工作流程是:

  1. 使用颜色阈值应用程序定义跟踪感兴趣对象的阈值
  2. 执行blob分析找到对象的位置
  3. 在检测到的目标位置使用深度图像估计距离目标
  4. 根据物体的位置和深度移动机器人。我们从简单的开关控制器开始,在线性和角速度上都有死区。

在这一点上,学生有参考MATLAB代码的闭环视觉控制器与ROS。在接下来的几天里,他们被鼓励修改这段代码,使他们的机器人更健壮地跟踪物体。让我们记住,大多数学生以前从未接触过MATLAB !

d .操纵

机器人安装了TurtleBot武器。让这些武器工作有两个方面:硬件和软件。

在硬件方面,我们向学生们指出ROBOTIS Dynamixel伺服ROS教程。这里的目标是确保机器人手臂上每个马达的关节位置控制器都有一个ROS接口。这将允许我们在MATLAB中使用控制器控制手臂。

在软件方面,步骤如下:

  1. 导入机器人手臂描述(URDF)文件在MATLAB中刚体树表示
  2. 熟悉逆运动学(IK)机器人系统工具箱中的功能
  3. 通过在几个点上使用IK来遵循路径-首先在模拟中,然后在真实的机器人手臂上

下图显示了点之间线性插值的路径。然而,更平滑的轨迹也可以用更多的数学,或者像曲线拟合工具箱

第3-5天:比赛

工作坊的目的是提高人们对在竞争中取得成功所需的软件工具的认识。有了ROS教程,示例MATLAB文件和其他有用的链接,学生们现在的任务是采用我们的参考应用程序,并使用它们在与主要联盟相同的挑战中竞争。

这些挑战如下。感谢Tan博士的KameRider团队制作的YouTube视频样本。

  1. 语音和人物识别:展示基本的语言和视觉功能。一个例子是问机器人“你前面有多少人?”,并得到正确答案。[人视频] [演讲视频
  2. 帮我拿:跟随某人并拿着东西帮助他们。[帮我拿视频
  3. 餐厅:识别准备下订单的人,正确地听取订单,并检索已订购的对象[餐厅的视频] [操作视频
  4. 决赛:团队可以自由选择演示的内容,并根据新颖性、科学贡献、展示和性能等标准进行评估

在这段时间里,学生们花了几个小时消化研讨会材料,测试他们的代码,并慢慢建立算法来解决挑战。

比赛期间的玉川科学俱乐部机器人-由Jeffrey Tan博士提供

以下是一些最突出的结果:

  • 团队亲身体验了如何将执行不同任务的代码片段集成到一个工作系统中。
  • 所有团队都有完整的计算机视觉和MATLAB控制算法,但并非所有团队都有功能良好的语音检测/合成和机械手控制。他们发现MATLAB代码比其他一些基于ROS的软件包更容易设置和修改,这些软件包需要Python、c++和/或Python语言的知识柳絮构建系统使用和修改
  • 这两个高中团队成功地生成了环境地图,并实现了导航算法。
  • 那烂陀大学的研究小组能够在他们的机器人上添加避障功能矢量场直方图机器人系统工具箱中的功能。
  • 少数团队能够调整一些预训练级联目标检测器人探测器为他们的个人识别和最终挑战的例子。

KameRider EDU在人物识别挑战期间-由Jeffrey Tan博士提供

结论

这次活动非常有趣,作为奖励,我很享受在几个星期里逃离波士顿寒冷的冬天。看到学生们在如此短的时间内取得了如此多的成就,以及我们的对话是如何发展的,我感到很满意。

  • 一开始,主要是关于安装、错误消息、基本的MATLAB和ROS问题,以及“我如何完成所有这些?”
  • 接近尾声时,学生们对基本的ROS结构(主题、消息、启动文件、Catkin等)、通用编程工具(条件语句、循环、函数、断点等)有了很好的理解,最重要的是,他们已经开始问“下一步是什么?”

研讨会正在进行-由那烂陀团队提供

普遍的共识是MATLAB和ROS都需要使这个研讨会发生。实现和测试算法可以通过MATLAB访问,而安装现有的ROS包则促进了一些必要的低级传感和驱动以及映射功能。

  • 许多ROS包很容易设置,并且可以立即交付强大的结果。然而,对于初学者来说,理解底层代码并构建系统以修改或扩展这些包是非常重要的。这可能是因为ROS是为熟悉严格软件开发过程的用户设计的。
  • 另一方面,MATLAB在开始时只需要一次安装,不需要重新编译,并且样本代码(我们的研讨会文件和文档示例)被确定为易于遵循、调试和修改。

Heramb modulula(那烂陀团队)说:“我们有足够的时间来修补机器人和示例代码,最终,我们自己编写代码。”他的教练兼父亲Srikant modgula强调,软件组件的集成是最关键的任务。“虽然MATLAB提供了一个强大的框架来完成机器人视觉,运动和手臂相关的任务,但我们期待一种更简单的方法将其与支持ROS的TurtleBot连接起来,并无缝地编译/运行多个程序。”

工作坊中的计算机视觉和操作-由Jeffrey Tan博士提供

综上所述,MATLAB及其相关工具箱是一个完整的设计工具。这包括编程语言、交互式桌面环境(IDE)、图形化编程环境等金宝appStateflow,帮助算法设计和调优的应用程序,以及独立代码生成工具

我们推荐的方法是使用MATLAB和Simulink进行原型算法,这些算法可能是整个系统的一个金宝app子集,然后使用自动代码生成将这些算法部署为独立的ROS节点。这样,机器人在比赛时就不依赖于MATLAB环境(及其相关的开销)。更多信息请参考我们的入门MATLAB, Simulink和ROS博客文章金宝app或者联系我们。

找到MathWorks徽标!

我们的目标是,像这样的挑战将降低来自世界各地的新球队加入机器人世界杯主要联赛的门槛,并在他们的第一年表现得有竞争力。这将为新来者创造机会,让他们熟悉机器人编程,并最终转变为“真正的”大联盟球队——也就是说,为机器人世界杯带来最先进的算法,推动全球机器人研究的边界。

出于这个原因,我们将努力在未来的活动中提供这个研讨会,并将我们的材料开源并发布在网上。如果你有兴趣使用这些材料来学习或教学,或者有任何想法要分享,请给我们留下评论。我们希望看到更多的人报名参加未来的RoboCup@Home教育挑战。下次见!

|
  • 打印
  • 发送电子邮件

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。