学生休息室

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

MATLAB, Simulink和ROS入门金宝app

塞巴斯蒂安·卡斯特罗是回来讨论连接MATLAB和Simulink与金宝app机器人操作系统(ROS)

注意:自R2015a起,机器人系统工具箱为MATLAB和Simulink提供了R金宝appOS的官方接口。在R2019b中,此功能已移动到更新的版本ROS工具箱.这篇文章和视频是在R2019b发布之前创建的,您可能会发现语法和产品命名方面的一些差异。

概述

机器人操作系统(ROS)是设计复杂机器人系统的常用框架。它在构建分布式机器人软件系统以及与仿真、可视化、机器人算法等软件包的集成方面很受欢迎。ROS在工业中也越来越受欢迎,特别是在自动驾驶汽车的开发中。

ROS工具箱提供的ROS接口可以让您:

  • 连接到任何ROSMATLAB和Simulink支持金宝app的操作系统金宝app
  • 利用MathWorks工具箱中的内置功能——例如,控制系统、计算机视觉、机器学习、信号处理和状态机设计
  • 从MATLAB和Simulink设计的算法自动生成独立的基于c++的ROS节点金宝app

总之,MATLAB和Simulink可以通过桌金宝app面原型、部署独立的ROS节点或两者兼而有之,与基于ROS的工作流程共存。如果你想在MATLAB和Simulink中设计系统的一个小组件,请继续阅读!金宝app

MATLAB与ROS的连接

机器人系统工具箱提供了MATLAB脚本和桌面原型与ROS的接口。这包括以下功能:

  • 启动或连接到ROS主机
  • 使用主题(发布/订阅)、服务、操作和参数服务器
  • 读取专门的消息(例如,图像、激光雷达扫描、点云和占用网格)

一个简单的基于发布和订阅的控制算法的MATLAB代码片段如下所示。

在上面的例子中,算法是使用while循环来管理的,这意味着循环迭代被尽可能快地处理。还有一些其他的方法来安排MATLAB代码的执行。

  • 利率:你可以使用而且rosrate分别基于CPU壁钟或ROS主时钟减慢控制回路。
  • 定时器:创建MATLAB定时器对象允许您在不同的时间表上安排函数调用,而不会阻塞。这意味着您可以在后台运行多个计时器,同时仍然可以访问MATLAB命令窗口。

注意:在计时器和ROS订阅者回调中运行的所有代码都将在一个线程中执行,因为MATLAB环境对用户来说是单线程的(尽管一些内置函数在内部使用多线程)。

有关ROS的MATLAB接口的更多信息,请观看以下视频。
[视频]MATLAB和Simulink金宝app机器人竞技场:MATLAB和ROS入门

连接Simulink和金宝appROS

ROS工具箱还包括一个用于ROS连接的Simulink块金宝app库。这包括以下功能:

  • 使用主题(发布/订阅)和参数服务器
  • 将ROS消息表示为金宝appSimulink总线信号对于图形化编程
  • 读取专门的消息(例如,图像和点云)

使用Sim金宝appulink,您可以利用块采样时间和速率转换来构建多速率算法,如下所示。

Simulink的另一个优点是能够将MATLA金宝appB、Simulink和Stateflow建模语言结合起来用于不同的算法组件。

  • MATLAB代码适用于最好用文本编程表达的组件,例如数组/矩阵操作和机器学习。如果你有用MATLAB写的算法,你可以在Simulink中使用金宝app函数块
  • 金宝app块对于控制算法很有用,控制算法通常用框图表示。您还可以利用内置块库进行信号处理、计算机视觉、机器人算法等。
  • Stateflow图表适用于基于决策的逻辑、状态机、表格逻辑以及基于时间或基于事件的调度。

有关Simulink到ROS接口的更多信息,请观看下面的金宝app视频。
[视频]MATLAB和Simulink金宝app机器人竞技场:从Simulink和ROS开始

生成独立ROS节点

我们讨论了MATLAB和Simulink如何帮助您从桌面金宝app设计和验证机器人算法。即使你的机器人的机载计算机满足安装和运行MATLAB的要求,你可能也不需要在最终系统上使用这些设计和验证工具。另一方面,对于低成本的支持ROS的平台,安装MATLAB是完全不可能的覆盆子π

在过渡到最终实现时,您可以手动将MATLAB和Simulink原型算法移植到您的机器人上。金宝app或者,您可以考虑使用代码生成自动化这个过程。这可以加快开发过程并消除手动实现错误。

两种代码生成方法是:

  • 生成可重用代码:使用MATLAB编码器金宝app仿真软件编码器,嵌入式编码器从MATLAB文件和Simulink模型生成独立的C/ c++文件或库。金宝app这种方法是灵活的,因为您可以将生成的代码与您可能已经存在的任何框架集成在一起,但是仍然需要一些手动工作才能运行。
  • 生成ROS节点:使用ROS工具箱,您可以直接从Simulink模型生成基于c++的ROS节点(并且可以从Simulink模型调用MATLAB代码)。金宝app与生成算法入口点的前一种方法相比,此生成的代码还将包括ROS功能(发布、订阅等)和基于模型中指定的采样时间的算法调度。

ROS节点生成方法还可以使生成代码以外的过程自动化,如下所示。方法将文件移动到目标系统,编译文件柔荑花序构建系统,并运行生成的可执行节点。

使用生成的节点

从Simulink生成ROS节点后,有几种方法可以使用它。金宝app

  • 使用MATLAB启动和停止节点rosdevice,或通过查找生成的可执行文件或使用rosrun
  • 使用外部模式在Simulink模型中直接调优参数和可视化数据,即使代码本身在目标计算机上运行。金宝app这些代码将生成一个TCP/IP接口,连接到桌面上运行的Simulink模型。金宝app虽然这有一些处理开销,但在您仍在设计算法时,这可能是一个很好的调试步骤。
  • 配置算法以在参数服务器中发送或接收ROS消息或值。这允许您从MATLAB、Simulink或其他ROS节点和目标计算机上的终端与已部署的节点进行交互。金宝app

有关将算法部署为独立ROS节点以及使用部署的节点的详细信息,请观看以下视频。
MATLAB和Simu金宝applink机器人竞技场:将算法部署到ROS
MATLAB和Simu金宝applink机器人竞技场:用ROS设计分布式系统


结论

您已经了解了如何在MATLAB和Simulink中对算法进行原型化,以及如何将它们变成独立的基于c++的ROS节点。金宝app如果你想了解更多,请在我们的网站上留言或发帖Facebook群组

您可以从网站下载视频中显示的模板和示例MATLAB中央文件交换.示例中使用的虚拟机可以从MathWorks网站

——塞巴斯蒂安

一个MATLAB和Simulink与ROS接口的例金宝app子,如ROS实用程序所示rqt_graph

|

コメント

コメントを残すには,ここをクリックしてMathWorksアカウントにサインインするか新しいMathWorksアカウントを作成します。