学生休息室

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

备战机器人世界杯大联盟

赛车休息室圣诞假期结束了。祝大家2018年健康成功!
在今日的帖子里,塞巴斯蒂安·卡斯特罗讨论了他在泰国曼谷举行的亚太机器人世界杯(RCAP)活动上帮助交付的机器人车间的经历。

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

MathWorks和TechSource在我们的展位上

背景

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

许多机器人世界杯组织者都意识到了这个问题,因此他们设计了一些中间挑战,旨在克服这一学习曲线。与主要为追求更高学位的学生提供研究平台的大联盟比赛不同,这些挑战更适合培养本科生。一些例子是快速制造的机器人“机器人足球世界杯”亚太CoSpace挑战。

让RCAP对我们来说格外特别的是,Jeffrey Tan博士邀请我们来帮助应对另一个这类挑战。谭秦东一直是RoboCup@Home在联盟工作了4年多,以及担任顾问KameRider团队.我们决定为他举办一个联合研讨会RoboCup@Home教育联赛。这对我们来说是一个很好的机会,因为它允许我们将MATLAB引入到机器人设计和编程的各个方面,并在真正的世界级比赛中作为我们的工具的一个很好的基准。

共有四支队伍参加:

  • 日本多摩川科学俱乐部-日本玉川学院-高中
  • 那烂陀-印度创世环球学校-高中
  • 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中,你可以利用它字符和字符串的功能,甚至是新的文本分析工具箱

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

B.地图与导航

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

  1. 方法生成环境的映射现有的TurtleBot gmapping示例而且驾驶机器人到处跑
  2. 在上面的例子中,最新的地图发布在ROS主题(/map)上。我们可以把这个地图读入MATLAB作为占用网格并将其保存到一个文件中。
  3. 一旦地图在MATLAB中,我们可以采样概率路线图(人口、难民和移民事务局)用它来找到两点之间的路径。
  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. 熟悉逆运动学(反向)机器人系统工具箱中的功能
  3. 通过在几个点上使用IK来跟踪路径——首先在模拟中,然后在真正的机器人手臂上

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

第3-5天:比赛

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

这些挑战如下。感谢谭秦东的KameRider团队制作了YouTube视频样本。

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

在此期间,学生们花费数小时消化研讨会材料,测试他们的代码,并慢慢建立算法来解决挑战。

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

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

  • 团队亲身体验了如何将执行不同任务的代码片段集成到一个工作系统中。
  • 所有的团队都有完整的计算机视觉和MATLAB控制算法,但不是所有的团队都有功能语音检测/合成和机械手控制。他们发现MATLAB代码比其他一些基于ROS的包更容易设置和修改,后者需要Python、c++和/或柔荑花序构建系统使用和修改
  • 这两个高中团队成功地生成了环境地图,并实现了导航算法。
  • 那烂陀团队能够为他们的机器人添加障碍物规避功能向量场直方图机器人系统工具箱中的功能。
  • 少数团队能够调整一些预先训练过的人级联对象探测器而且人探测器他们的个人认识和最终挑战的例子。

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

结论

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

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

行动中的工作坊-由那烂陀团队提供

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

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

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

计算机视觉和操作研讨会-由Jeffrey Tan博士提供

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

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

找到MathWorks徽标!

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

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

|
  • 打印
  • 发送电子邮件

评论

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

Baidu
map