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

1546
1
2020年5月28日 17时18分

大家好,最近有其他事情耽搁了更新。今天给大家继续一知半解的系列4。在上一篇博客中我们已经演示了如何利用Simulink中的Slider Gain模块和Siganl Build模块对机器人进行简单运动控制。今天简单的介绍机器人独立关节的位置PID控制,并演示一下如何使用GUI与Simulink联合仿真对机器人进行操作控制。

1、独立关节位置PID控制

机器人进行操作时,主要是让机器人的末端按照我们预定义的路径【空间–】或轨迹【时间+空间】进行运动。规划路径时末端执行器的空间位置、速度、加速度认为是已知的,然后利用运动学逆解或雅克比矩阵将末端执行器的位置、速度、加速度映射到关节空间。那么各个关节的位置、速度、加速度可以被认为是已知的,这个时候就需要电机伺服驱动器或关节控制器生成目标电流发给电机以产生相应的力矩来执行。控制器控制输出的这个力矩值一般需要使用动力学公式来计算。

 

1

 

但是,串联机器人的动力学公式复杂难解【动态耦合、时变非线性】且动力学模型参数往往因为制造加工安装等因素存在模型参数不准确的情况,并且动力学中的摩擦力项是极不容易获取其准确值的。所以很久以来,传统机器人的控制器很少使用动力学模型去设计控制率?如果抛弃需要进行力控或者需要实现柔顺控制的场合,最简单粗暴的还是用PID反馈控制来实现位置控制。本文在这里以PID控制为例来实现机器人的位置控制。【只在仿真层面上进行,底层的伺服三环控制和电机驱动这里就不谈了】

 

2

 

要让机器人的末端按照我们预定义的路径运动,使用PID控制器就是将偏差【即设定的期望值与实际输出值的差】的比例、积分、和微分通过线性组合对被控对象进行控制,使得偏差越来越小趋近于零。在这里不需要对系统进行建模,仅通过参数调节【调节比例、积分、微分这三个环节的系数。】使其获取优异的位置追踪响应性能。

2、Matlab中实现

还是以上次的PUMA560为例进行演示。我们在关节驱动部分进行简单修改。以关节5为例子,其他关节同。

 

3

 

每个关节都做修改之后。在关节的输入部分添加PID控制器,我是直接调用Simulink中的模块。由于是独立关节的控制,所以在每个关节处都使用一个PID控制进行关节运动的偏差调节。如下为六个关节的PID控制器连接方式。

 

4

 

将所有模块进行简单整理,构成的完整的独立关节PID位置控制系统如下。

 

5

 

接下来我们可以通过改变Slider Gain模块中的滑块值,对机器人进行操作。但是这个方式比较麻烦,需要打开每个Slider Gain。因此,我们现在来做一个GUI界面来方便对关节角度的修改。

3、GUI控制

(1)创建GUI界面

在matlab命令行输入guide,按下面的方式,点击确认即可打开GUI的编辑界面。以下为我个人觉得比较常用的控件以及在机器人仿真中可能的用途。左边区的控件可以直接拖动进行布置。

 

6

 

双击控件可以查看和修改每个控件的属性,如控件名字、大小、位置、字体大小,背景颜色,标签等。如下,由于篇幅原因我们以正运动学控制来进行演示,所需的控件和布置如下:

 

7

 

接着我们需要将GUI控件于Simulink模型进行关联。

 

(2)打开Simulink模型。

以开始按钮关联模型,鼠标选中开始按钮–>右键–>查看回调–>callback。可以在回调函数下写相关代码。如下,可以利用下面的代码打开Simulink模型并运行。

 

8

 

(3)修改Simulink中的关节参数

一般使用滑块控件将滑块的数据传到Simmulink中,以Slider Gain对接匹配。如下打开滑块控件,将其标签Tag和活动范围做修改如下。

 

9

 

然后同样的鼠标选中滑块–>右键–>查看回调–>callback。在回调函数下写相关代码。

 

10

 

如上,GUI中数据的获取是使用get命令,格式为:get(handles.Tag,’value’),设置命令是使用set命令,格式为;set(handes.Tag,’value’,data)。需要注意的是如果标签Tag的类型为滑块,一般获取数值为value,如果为编辑框,则为string,两者需要转换下。如:上面是通过改变滑块的值,对Simulink中对应关节的Slider Gain进行修改。那么如果是直接输入关节角度到编辑框,并且改变Simulink中对应的Slider Gain值和GUI对应的滑块。这个时候就需要对编辑框进行回调函数的编写,如下:

 

11

 

其他控件也是同样的套路进行回调函数的编写。全部完成之后,运行GUI,改动滑块和编辑框便可以看到Simulink中对应的Slider Gain的数字改变了。

 

GIF4

 

最后我们来整体看一下,运行后调节GUI中关节对应的滑块控件,可以使机器人进行单轴运动。

 

GIF5

总结:

(1)本文仅希望通过使用Matlab来演示对机器人的控制,笔者能力有限,文中难免有描述不当和错误望批评指正为谢!至于其他部分,如PID参数的调节、GUI界面机器人模型的可视化运动、末端位姿计算、逆运动控制会在下篇完成,完整的源码也会提供。

 

发表评论

后才能评论

评论列表(1条)

  • l65zt_3019 2020年8月25日 下午9:31

    请问博主,运行完GUI的.m文件之后,报错:No block called ‘Slider Gain’ could be found.这个是什么原因呀?求博主指点