一知半解|MATLAB机器人建模与仿真控制(3)

2390
12
2020年4月2日 11时52分

大家好,今天给大家继续分享一知半解|Matlab机器人建模与仿真控制这个系列的内容之三。

 

首先接着上一篇博客的内容,我们利用机器人的URDF文件,在Matlab环境下利用m代码和机器人系统工具箱,完成了puma560的可视化与运动仿真。在这里我们将继续利用puma560的URDF文件来演示如何在Simulink中生成Simscape机器人多体结构模型,并搭建机器人各关节的驱动以完成运动仿真。

 

1、Simulink中生成多体结构模型

同样的,将机器人的URDF文件添加到Matlab路径后,在命令行窗口输入以下代码:smimport(‘puma560.urdf’);如下:

 

1

 

这时候smimport函数将从puma560.urdf文件中导入多体模型【查看函数信息命令窗口输入:help smimport】,一小段时间之后就会在Simulink中生成如下结果:

 

2

 

现在可以双击查看每一个模块(block),可以具体了解到模块的含义信息。如下机械配置模块用于设置仿真参数,如重力值与方向【一般都默认了】。

 

3

 

在这个原始生成的多体模型中,模块基本上是连杆—>关节—>连杆组成的,关节之间的连杆中定义了坐标的变换。由于多体模型是根据机器人的URDF文件生成的,可以很容易发现两者之间的一致性。如下为双击puma_base后打开的内容,部分对应关系下图可以说明【建议打开URDF文件和多体模型对照查看】

 

4

 

是不是觉得URDF文件很好用,Matlab自动生成的多体模型很简洁nice!

 

在保持生成模型不动的情况下【也就是关节不添加驱动】,点击Simulink的运行按钮,机器人可视化模型的根据仿真算法和物理引擎在重力的影响下乱动。

 

GIF

 

这不是我们需要的,我们应该让机器人根据指示进行运动。因此,需要给机器人关节添加驱动。

 

2、部署各关节驱动

 

(1)部署关节驱动,首先双击打开模型中的joint1,将里面的Actuation设置成如下【其他各关节设置一样】。

 

5

 

这个时候每个关节joint驱动部分都有一个接口q,接下来只需要将期望的驱动连接到此接口就OK了。

 

6

 

(2)设置期望的驱动

驱动的设置有很多方式,这里先引入Signal Builder的方式。在模型空白处双击,然后输入siganl,点击Enter键之后选择Signal Builder如下,然后对Signal Builder进行编辑。

 

7

 

这时候再添加一个信号转换模块【Simulink-PS Converter,同样可以输入S PS,或直接在模型空白处双击后后输入Simulink-PS Converter,然后Enter键选择】,将Signal Builder输出的Simulink信号转换成物理信号再连接到关节joint1的驱动接口q处。双击Simulink-PS Converter进行如下的修改。

 

8

 

然后将其连接到关节joint1的驱动接口q处,如下:

 

9

 

这时候可以运行模型查看机器人的运动情况,如下:

 

GIF1

 

由于我们只给关节1添加了驱动,且运动和预想的一致,因此其他关节的驱动也可以按这种方式完成,具体过程就不再说明了【只需要选中刚刚添加的两个部分,然后复制张贴,每个Signal Builder适当修改信号曲线,最后连接到关节驱动接口就OK了】。运行结果各关节都有运动:

 

12

 

(3)人为驱使单关节运动

如果我们希望人为的改变机器人单关节运动,怎么实现呢?可以在模型中添加滑块增益(Slider Gain)来完成。可拖入以下模块并连接如下:

 

10

 

其中Slider Gain可以设置为机器人某一关节的运动范围。选择开关Manual Switch模块是用来切换两种运动方式的。开关向上则关机运动安装Signal Builder里面设置的角度变化信号运动,如下开关向下则根据人为改变Slider Gain的输出角度值进行运动【双击Slider Gain,拖动滑块】。其他关节同,演示如下:

 

GIF3

 

有没有很方便^_^//【当然我们通过m语言设计一个GUI交互界面来完成,这个我们后面再谈】

 

(4)模型修改【如何添加其他部件进行】

是否有留意到,原始模型中只有5个关节。如果想要添加其他关节或末端执行器,去修改URDF是非常麻烦的。但是在Simscape环境中,你可以轻易的添加你想要的模块【在添加的时候需要清楚是以那一个坐标系作为参考需要怎样的平移和旋转变换达到你想要的位置】。

 

11

 

具体的操作过程就不再赘述了。如下为在初始多体模型中添加关节6和夹爪工具后的状态。

 

GIF4

 

总结

(1)利用机器人的URDF文件可以很快的在Simulink环境中生成机器人的多体机构模型,模型中的各个部分可以很好的与URDF文件中的信息相对应起来。

(2)在机器人初始多体结构模型中可以很方便的添加其他几何模型,可以参考

https://ww2.mathworks.cn/videos/defining-rigid-bodies-68845.html

(3)模型已打包,可以参考【包括puma560机器人的URDF文件,m代码,slx模型】。那么试试自己动手做吧!

发表评论

后才能评论

评论列表(12条)

  • 沈城吴彦祖 2020年8月25日 下午3:04

    使用 smimport后显示错误使用 smimport_implementation
    Invalid file type ‘.urdf’. Can only import Physical Modeling XML files.
    这是什么原因?该怎么解决呢

  • yc2fr_9129 2020年6月8日 下午3:50

    您好,我想请问一下,我在调节Slider Gain时,只能得到一次性的变化,即静态的。
    如何实现您图中所示的滑块调节,动态显示嗯?

  • 二民院小学生 2020年4月14日 上午10:50

    一知半解|MATLAB机器人建模与仿真控制2和3的源代码可以在古月居公众号获取,也可以移步:https://download.csdn.net/download/weixin_39090239/12325356

  • u3oey_0531 2020年4月8日 上午11:42

    模型打包在哪里可以找到?

    • 二民院小学生 回复 u3oey_0531 2020年4月14日 上午10:48

      请移步:https://download.csdn.net/download/weixin_39090239/12325356

    • iph07_9592 回复 二民院小学生 2020年9月21日 下午2:59

      博主能否修改一下资源下载的积分值?CSDN自动把资源积分调到50分,逼着开会员啊这是

    • iph07_9592 回复 二民院小学生 2020年9月21日 下午3:00

      而且修改的只是下载的积分,博主并不会因为上调到50而多得积分,我自己上传的资源就是这样。。

  • 4fttb_8791 2020年4月8日 上午10:44

    博主,我在similink钟使用Robotic system toolbox,并且自己写了matlab function需要使用工作区里的RigidBodyTree对象。请问我应该如何去导入给我写的matlab function使用呢。这里一直困扰我,如能帮助,那就太感激您了。

    • 二民院小学生 回复 4fttb_8791 2020年4月14日 上午10:56

      matlab function中一般不能调用工具箱的函数,机器人系统工具箱中有现成的运动学动力学block模块,可以学习使用搭建相应的算法!