MinimumSnap 代码细节

该文详细介绍了使用MATLAB进行移动机器人运动规划时,如何构建Q矩阵、M矩阵和Ct矩阵的过程。Q矩阵涉及多项式排序和积分计算,M矩阵用于状态变量转换,而Ct矩阵则是一个复杂的关系矩阵,涉及轨迹点的状态连接。文章还提到了数值解法在解决此类问题中的应用。
摘要由CSDN通过智能技术生成

(MATLAB)

基于高飞老师的移动机器人运动规划课程hw5作业写的代码。因为过程中在对Q,M,Ct函数的构造上花了很多功夫去理解,因此记下来。

注意:多项式的排列方式很重要,我们这里采用的是升幂排序,也就是

1. Q矩阵

下面的矩阵是不完全的,因为它只是Q矩阵中的一小部分,记为Q_k,实际上是

 

 然后还要积分,Q矩阵中对应的有值项还要乘上\frac{t}{i+j-7}

最后写为:

 代码写成这样,

function Q = getQ(n_seg, n_order,t_order,ts)
    Q = [];
    for k = 1:n_seg
        % 7阶,所以有8个自由度
        Q_k = zeros(n_order+1,n_order+1);
        %#####################################################
        % STEP 1.1: calculate Q_k of the k-th segment 
        for i=0:n_order
            for j=0:n_order
                if((i<t_order)||(j<t_order))
                    continue;
                else
                    Q_k(i+1,j+1) = factorial(i)/ factorial(i-t_order) * factorial(j) / factorial(j-t_order) /(i+j-n_order) * ts(k) ^ (i+j-n_order);
                end
            end
        end
        Q = blkdiag(Q, Q_k);
    end
end

 最终结果(单段轨迹)是:

2. M矩阵

M矩阵是将原来的轨迹上的p参数,转换为p,v,a,j的状态变量,找到对应关系,M p = d即可。

实际上就是根据下图的关系式转换,M的每一行就是去掉t以后的等式参数化

代码

 结果是

3. Ct矩阵

Ct矩阵比较麻烦,要摸透下面矩阵的含义。

(1)列:

        橘色部分是df,前4个是起始的四个状态变量,后四个是终止的四个状态变量,中间是每两段交点的位置变量。

        白色部分是dp,每三个为一组,分别是每个航路点的除位置量以外的三个变量。

(2)行:

        就是原始的每个点的四个状态量的排列,注意一段轨迹有2*t_order个(起始和末尾)。

        剩下的每8行为一组,都是些重复的,也就是图3.2 t1交界处的8个量。

2.数值解法

结果展示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值