我对如何编程使其在仍然保持平衡的同时还有些困惑。我认为一种方法是让电动机的控制输入像推动它一样工作。因此,机器人在我要移动的方向上会瞬间失去平衡。不过,这对我来说似乎有点笨拙。必须有更好的方法吗?我认为我需要将平衡器的动态模型与差动驱动结合起来,但这超出了我所知道的控制理论。
更新
从Anorton的答案来看,我现在有了一个漂亮的状态矩阵。
现在有关极点放置:根据新的状态向量,A矩阵将必须为4x4。然后B必须是4x2矩阵,因为我只能控制左/右车轮扭矩(u = 2x1向量)。
我可能需要阅读更多有关此信息,但是是否有系统的方法可以通过极点放置确定A矩阵?在我看来,对于此示例以及更复杂的示例,通过猜测和检查来确定A将会非常困难。
更新#2
经过一番阅读,我认为我现在已经明白了。我仍然需要机器人的动力学来确定A矩阵。一旦有了,就可以使用Matlab或八度音阶进行极点放置。
#1 楼
免责声明:我本人从未做过此事,而只是在Coursera上通过Georgia Tech的“移动机器人控制”进行了描述。我对控件的了解也参差不齐。因此...把它和一粒盐一起吃。:)
为保持机器人直立(并保持静止),您试图稳定(发送至$ 0 $)状态$ x $,其中:
$$ x = \ left [ \ begin {array} {c} \ text {leftVelocity} \\ \ text {rightVelocity} \\ \ text {垂直角度} \ end {array} \ right] $$
但是,何时该系统是稳定的,左右车轮速度将为$ 0 $。因此,我们需要目标速度的偏移量:
$$ x_ {new} = \ left [\ begin {array} {c} \ text {leftVelocity}-\ delta_L \\ \ text { rightVelocity}-\ delta_R \\ \ text {垂直角度} \ end {array} \ right] $$
其中$ \ delta $是任一侧的目标速度。
何时该系统稳定后,机器人将直立,并且每个车轮都将以所需的速度旋转。
这是基本的方法/概述。我明天将编辑更多详细信息(以及实际的数学运算等),但是我现在至少要发布总体思路。 (在我所在的时区很晚,我上了很早的课。)
编辑:
天哪。因此,我只是回顾了Coursera课程中与此相关的幻灯片(第4节,幻灯片29)。您可能想去上那个课,只是下载该幻灯片组...
:)
困难的部分是计算$ A $和$ B $矩阵(这是一个很大的线性化问题)。无论如何,您想要使状态矩阵如下所示(不是上面那样-我的记忆并不完全正确): \\ \ omega \\ \ phi \\ \ dot \ phi \ end {array} \ right] $$
其中$ v $是赛格威的速度,$ \ omega $是旋转的速度(机器人旋转的速度),$ \ phi $是与垂直方向的夹角。$$ \ begin {align} \ tilde x&= x-\ left [\ begin {array} {c} v_d \\ \ omega_d \\ 0 \\ 0 \ end {array} \ right] \\
&= x-\ delta
\ end {align} $$
其中$ \ delta $是所需的速度和旋转量(如上所示)。
区分:
$$ \ $ {\ tilde x} = \ dot x-\ dot \ delta \ underset {\ text {$ \ delta $ is constant}}} == \ dot x $$
因此,我们有
$$ \ dot {\ tilde x} = Ax + Bu $$
其中$ A $是标准系数矩阵$ B $是输入矩阵,而$ u $是控制向量。然后我们可以说:
$$ \ dot {\ tilde x} = A(x-\ delta)+ Bu + A \ delta $$
但是,基于$的解A $(来自Coursera),$ A \ delta = 0 $。因此:
$$ \ dot {\ tilde x} = A \ tilde x + Bu $$
现在您可以使用极点放置来确定正确的特征值,等等。
评论
$ \ begingroup $
谢谢!我也参加了相同的Coursera课,我们在控件知识上的差距可能也不大。事实证明,这比我做的要困难得多。到目前为止,我还是喜欢您的状态矩阵。
$ \ endgroup $
– JDD
13年11月11日在11:05
$ \ begingroup $
ek!看来我今晚没有回答!上周我正值春假,却忘记了一些到期的事情,所以今天让我很忙。我明天再编辑...
$ \ endgroup $
– Apnorton
13年3月12日在3:04
$ \ begingroup $
没问题。我昨天炸毁了我的最后一个H型桥,试图将其组装在一起,所以我不得不等待更换。
$ \ endgroup $
– JDD
13年13月13日在1:30
$ \ begingroup $
非常感谢Anorton的帮助。我想我现在正在了解如何执行更多操作。我更新了原始问题。虽然如何确定A和B矩阵仍然让我感到困惑。
$ \ endgroup $
– JDD
13年3月13日在11:21
评论
您正在使用哪种方法/您知道什么控制理论?我可以写出一种方法,但是根据您的背景,它可能是超基本的或超高级的... :)谢谢!对于带有伺服器的旧设计,我使用来自陀螺仪/加速器的数据来计算倾斜角度。将其发送到卡尔曼滤波器,然后发送给伺服位置的PID。我对微分方程很好,对线性代数也很好。我对控件还是很陌生,所以也许是基本控件?如果愿意,也可以两者兼而有之。我一直对学习更多感兴趣:)
我只有一种方法,所以我先前的评论实际上是说可以同时采取两种方法(如果您刚开始使用机器人,则为超级高级;如果您对控件有一定的了解,则为超级基础)。评论,我觉得自己排名超过了。 :)我的控制知识很薄,但是我会把其中的$ 0.02投入其中...
欢迎使用Robotics JDD,最好将其他信息编辑到您的问题中,而不是将其添加为评论,这样以后就可以整理(删除)评论,这样就不会分散读者对问题本身的注意力。