MATLAB 2020b发布后 你馋了吗?

1234
0
2020年9月27日 17时07分

前言:几天前就在打浦桥程序员公众号上了解到MATLAB 2020b更新的消息,过了几天才在Mathworks中国区的官网公众号上看到了更新的消息。由于之前使用的版本一直是MATLAB 2018a,长期以来没有太关注更新后的功能。于是花了一天时间下载并简单地试用了一下下新版本的里面关于机器人的工具【主要是Robotics System Toolbox和ROS Toolbox】。这里简单地做个不入流的记录,希望可以帮到可以帮到的人!

1、MATLAB 2020b试用版下载

首先进入到Mathworks官网下载页,选择申请试用版软件。如果您的学校或老师有许可证,那一切都好说,您只需点击检查校园许可证并通过邮件进行验证即可下载非试用版。假如没有许可证的话,那只能选择下载试用版啦【用邮箱注册自己的账户】。

Q9BBMY9T~)GB9`%SR7S$WDY

由于MATLAB产品包比较多,如果全部下载会占很大空间,因此您应该按照自己的需求进行下载需要的产品包。

MORB4PW`462UD%]E9EDM~KG

如:只选择机器人产品包,它会自动提示所包含的工具箱。如果您还想在试用版中添加更多工具箱,则可以使用MATLAB中的附加资源管理器,输入您想安装的工具箱名以添加工具箱。

5SYCE]1UTGE~NKSHI[]]O{9

点击选择并继续后点击下载【Windows系统】。

%SBW{H)1W_XXF4LTBGVPMP2

运行安装程序【matlab_R2020b_win64.exe】,这时将自动解压出_temp_matlab_R2020b_win64文件,然后双击setup.exe后,以邮件地址进行登录【需要官网注册的账户和密码】。

{@J%1G(KLIHSW_)FPLLC7SO

选择接受许可协议条款之后,点击下一步。选择试用版的许可证点击下一步。

~F2S4J}ES7D)3PSRFCV(993

选择安装路径进行安装。【保持网络通畅,等待下载完成】

VP{5PG%BM8Q%4[3TQ0QTJBJ

下载网页参考:https://ww2.mathworks.cn/downloads/web_downloads/?s_iid=hp_ff_t_downloads

2、机器人系统工具箱(Robotics System Toolbox)概览

Robotics System Toolbox 提供了用于设计、仿真和测试机械臂、移动机器人及人形机器人的工具和算法。对于机械臂和人形机器人,该工具箱包含了使用刚体树(RigidBodyTree)表示形式的碰撞检查轨迹生成正向和逆向运动学以及动力学算法对于移动机器人,该工具箱包含用于映射、定位、路径规划、路径跟踪和移动控制的算法。该工具箱提供了常用工业机器人应用的参考示例。该工具箱还包含可以导入、可视化和仿真商用工业机器人模型库。【RigidBodyTree可以通过代码自己编写,也可以通过机器人的URDF文件直接生成

YA%`@R`LTPYGE@5RI5$33R2

通过将提供的运动学模型和动力学模型进行组合,您可以开发功能性机器人原型。借助该工具箱,您可以通过直接连接 Gazebo 机器人仿真器协同仿真您的机器人应用。要在硬件上验证您的设计,可以连接到机器人平台,然后生成并部署代码(使用MATLAB CoderSimulink Coder)。

2.1、例子演示抓取和放置、运动规划

官方帮助文档有很多例子。关于机械臂算法设计的例子可以在这个链接中找到https://ww2.mathworks.cn/help/robotics/examples.html?category=manipulators&s_tid=CRUX_topnav。选择一个例子,网页上有详细的代码和相关说明。如果想要在MATLAB中运行某一个例子,则可以在网页右上角选择View MATLAB Command,复制对应代码到MATLAB命令行,点击Enter之后会自动跳转到该例子所在路径。

F~GX(`$`QF8E~9LLI@B0(F5

并会打开对应的实时编辑文档mlx,点击运行即可在figure中得到可视化的iiwa机器人将根据程序进行运动。【注:其他例子可以以同样的方式打开查看以及在MATLAB中运行

MP]QXCPHPK{B55HHA)L(P@0

如果您对该例子足够熟悉了,那么可以在这个例子的基础上对其进行简单的修改,通过逆运动学计算便可以实现机械臂对物体的抓取和放置仿真。

  GIF0     GIF

当然,上面的机械臂运动例子是之前版本中的,并未考虑到机械臂所在的环境中的物体。在新版本中有最新的抓取和放置(Pick-and-Place)例子,Pick and Place Using RRT for Manipulators就是其中之一。

MATLAB命令行输入:openExample(‘robotics/PickAndPlaceUsingRRTExample’)。这个例子是使用Panda机器人模拟在环境中抓取和放置对象,由于障碍物的存在,可能需要路径规划算法,例如快速探索的随机树规划器(RRT)。规划器在关节空间中进行探索,并搜索不同机器人构型之间的无碰撞路径。

GIF3

MATLAB命令行输入:openExample(‘robotics/PickandPlaceWorkflowUsingRRTPlannerAndStateflowForMATLABExample’),可以打开使用RRT和Stateflow实现机器人抓取和放置。在stateflow中可以很容易的设计抓取和放置的工作流,几乎与文档中的流程图一致。

O[ETHB)P[SX([OI`C~(X

运行实时编辑文档mlx后。Stateflow中状态的转移与figure中机器人的执行动作状态一致。

GIF4

2.2、手动交互式的为机器人生成轨迹【相当于拖动示教】

使用interactiveRigidBodyTree对象移动机器人、设计轨迹并完成轨迹重现,支持刚体树形式的机器人。

如在MATLAB命令行输入

br = importrobot('iiwa14.urdf');
lbr.Gravity=[0 0 -9.80665];
iviz = interactiveRigidBodyTree(lbr);

即可生成可交互的iiwa机器人。

GIF5

交互的方式有两种,逆运动学的方式和单关节运动的方式。可交互的部分可以通过鼠标进行选择和控制方式的切换,也可以是使用代码:

iviz.MarkerBodyName = "iiwa_link_3";
iviz.MarkerControlMethod = "JointControl";

GIF6

交互到期望目标时,保存机器人构型配置使用代码:addConfiguration(iviz) 即可将其保存到

iviz.StoredConfigurations中。将所有保存下来的点通过梯形速度函数trapveltraj生成轨迹,播放后即运动重现的效果。

GIF7

参考:(1)https://ww2.mathworks.cn/products/robotics.html

(2)https://ww2.mathworks.cn/help/robotics/examples.html?category=index&s_tid=CRUX_lftnav_example_manipulators

 

3、ROS Toolbox工具箱概览

在R2019b之前,ROS Toolbox还是Robotics System Toolbox中的一部分,R2019b版本才开始将ROS Toolbox单独作为一个工具箱产品。ROS工具箱为 MATLAB和 Simulink与机器人操作系统(ROS和 ROS 2)相互连接提供了一个接口,以便您能够创建一个ROS节点网络。该工具箱包含MATLAB的各种功能以及用于导入、分析和回放rosbag文件中记录的ROS数据的Simulink模块。还可以连接到实时ROS网络以访问ROS消息。

该工具箱可让您连接Gazebo等外部机器人仿真器,通过桌面仿真的方式来验证ROS节点。ROS工具箱支持C++代码生成(使用Simulink Coder),方便您从Simulink模型自动生成ROS节点,然后部署到仿真硬件或物理硬件。借助Simulink外部模式支持,当模型在硬件上运行时,您将能够查看消息和更改参数。

3.1、下载虚拟机和ROS系统

如果还在安装ROS的坑中没有跳出来,不妨试试mathworks为您准备好的ROS 2 Dashing and Gazebo。里面包含了ROS 2 DashingROS MelodicGazebo 9.0和TurtleBot 3的Gazebo世界环境。支持(Windows , Mac, and Linux)不同平台的安装。

由于我之前已经安装有虚拟机【VMware Workstation 15 Player】,所以直接点击的archive进行系统文件的下载,5.25G的压缩文件因此需要保证网络通畅,下载完成后解压到指定位置。双击解压后的ros_melodic_dashing_gazebov9.vmx文件。在弹出的窗口中选择已复制虚拟机。虚拟机名为ROS Melodic Dashing Gazebo v9便在列表库中了。【如果没有安装虚拟机的可以按下面的截图进行】

Q8O~)D{GO~I9_U93RF){8TM

选中虚拟机名为ROS Melodic Dashing Gazebo v9之后,点击播放虚拟机即可打开。桌面上的每个图标是打开不同Gazebo环境的快捷方式,对应ROS Toolbox里面的例子。

I0IT8U}GVDX)CWY_U7`9HCJ

参考:https://www.mathworks.com/support/product/robotics/ros2-vm-installation-instructions-v3.html

3.2、PR2抓取和放置案例演示

首先双击虚拟机桌面的Gazebo PR2 Simulator,打开包含PR2机器人的Gazebo环境。

2DEPICDRONZ$I{M_{{FJ3KM

在MATLAB命令行输入:openExample(‘robotics/PR2ManipulationExample’)打开实时编辑文档,在实时编辑文档代码中要将ipaddress更改为您的虚拟机右上角的ip192.168.60.131)。【要保证MATLAB与虚拟机ROS网络的正常连接有必要关闭防火墙和杀毒软件】。运行实时编辑文档后,MATLAB首先与虚拟机建立其ROS网络,MATLAB运行的程序相当于一个ROS网络节点,在MATLAB端通过逆运动学计算规划出的抓取和放置执行动作后,然后通过ROS action client服务将计算得到的关节角度作为轨迹命令发送给Gazebo中的PR2机器人。

8

3.3、物体识别(YOLO v2)、点云处理、避障规划(RRT)

上面PR2的例子里面没有考虑机器人的避障问题,也没有看到视觉处理的影子,这是因为这个例子是2018a版本中的例子。但在2020b版本中,在2020a例子Pick-and-Place Workflow in Gazebo using ROS的基础上更新为利用点云处理RRT路径规划的方式实现物体分拣。【下面图分别是2020a和2020b中的例子】

GIF10

说明:利用Gazebo中机器人的末端相机获取图像,经过预先训练的深度学习模型来检测可回收部件。通常获取一个相机图像帧作为输入,输出物体的类别和对应像素坐标系下的位置【2D的,高度已知,通过坐标变换到世界坐标系下。具体查看commandDetectParts和commandClassifyParts函数】,整个抓取流程由Stateflow控制实现。

GIF9

说明:机器人通过不同位姿序列的扫描,捕获的点云将使用pctransform函数从摄像机转换为世界坐标系,并使用pcmerge函数合并为单一点云。最后使用pcsegdist函数基于欧几里得距离对点云进行分割。由此产生的点云片段被编码为碰撞网格(collisionMesh),以便利用RRT路径规划抓取和放置的无碰撞路径。

3.4、搭建自己的ROS机器人环境进行算法开发和验证

除了直接使用官网提供的ROS例子,我们也可以搭建自己的机器人环境。例如,我在学习了官网的安全轨迹跟踪例子后,在Simulink中搭建了一样的安全轨迹跟踪算法并通过ROS Toolbox工具箱在Gazebo环境中进行了验证。

11

说明:没有安全轨迹跟踪时,机械臂根据期望轨迹直接将方块推倒。

GIF11

说明:加上安全轨迹跟踪后,机械臂在检查到碰撞发生后体现出一定的顺应性而不至于将方块推倒。

算法参考:https://ww2.mathworks.cn/help/robotics/ug/perform-safe-trajectory-tracking.html

后记:

由于个人能力有限,这里只是简单的记录了一些机械臂仿真demo,没有展开原理和细节的说明。如果对机械臂仿真或者移动机器人仿真感兴趣的不妨下载使用版进行系统学习。

(1)机器人系统工具箱例子:

https://ww2.mathworks.cn/help/robotics/examples.html?s_tid=CRUX_topnav

(2)ROS Toolbox例子:

https://ww2.mathworks.cn/help/ros/examples.html?s_tid=CRUX_lftnav_example_index&category=index

(3)如果对MATLAB+ROS快速开发控制算法感兴趣的,古月居学院有董神的视频课程:

https://class.guyuehome.com/detail/p_5f39e38fe4b0dd4d97492948/6

发表评论

后才能评论