通过坐标平移实现非完整约束系统的反馈线性化Wheeled Robot Feedback Linearization

YAMAMOTO Y, YUN X, 1992. Coordinating locomotion and manipulation of a mobile manipulator[C/OL]//[1992] Proceedings of the 31st IEEE Conference on Decision and Control. 2643-2648 卷3. DOI:10.1109/CDC.1992.371337. 非完整系统 系统方程 考虑m个双边约束下具有n个广义坐标q的机械系统,其动力学方程可以通过欧拉拉格朗日方程 $$ M(q)\ddot{q}+V(q,\dot{q})=E(q)\tau-A^T(q)\lambda \tag{1} $$ 确立, 其中$M(q)$是$n\times n$的惯性矩阵, $V(q,\dot{q})$是关于位置和速度的阻力向量, $E(q)$是$n\times r$的输入转换矩阵, $\tau$是$r$维输入向量, $A(q)$是$m\times n$的雅克比矩阵, $\lambda$是约束力向量。 该机械系统的$m$个约束方程可以写成 $$ C(q,\dot{q})=0. $$ 如果其中的一个约束方程可以写成, 或者通过积分可以转化为$C_i(q)=0$的形式,那么该约束是完整约束。 否则,该约束为动力学约束(非几何约束),一般称为非完整(nonholonomic)约束。 假设有$k$个完整的以及$m-k$个非完整的独立约束,他们都可以写成 $$ A(q)\dot{q}=0 \tag{3} $$ 的形式。 令$s_q(q),\cdots,s_{n-m}(q)$为$A(q)$的零空间中的光滑并且线性不相关的向量场,i.e. $$ A(q)s_i(q)=0, \quad i=1,\dots, n-m $$ 令$S(q)$为由这些向量组成的满秩矩阵 $$ S(q)=[s_1(q)\ \cdots\ s_{n-m}(q)] $$ 令$\Delta$为这些向量场张成的分布 ...

October 9, 2023 · 2 min · Leo

MATLAB 作用域

MATLAB 作用域机制测试代码 MATLAB中的作用域有些奇怪。这里用几个测试代码来分析一下。 本文所有代码段需要在matlab脚本中运行,不能在命令行中直接运行。 MATLAB脚本可以访问工作区标量,但是函数不可以 这是MATLAB方便的地方,可以在Simulink和MATLAB脚本中直接使用工作区的变量。 但是函数是不能访问工作区的标量的,比如下面的代码会报错。 函数体里面无法使用变量a,因为a定义在脚本中,运行后会写入工作区。 clear all a=1; func1(); function func1() disp(a) %函数或变量 'a' 无法识别。 end 那么如何才能访问到a变量呢? 法1:MATLAB函数的中的量可以向下层函数传递 MATLAB函数的中的量可以向下层函数传递,因此可以通过嵌套函数的方式使得脚本可以达到访问上一层变量的效果 function func0() clear all a=1; func1(); function func1() disp(a) %打印1 end end 法2:使用global关键字 global关键字可以将变量在全局范围内共享。 clear all global a %如果有这一行输出2,没有这一行输出1 a=1; change() show() function change() global a a=2; end function show() global a disp(a) end 附:MATLAB中的persistent关键字 %持久变量与全局变量类似,因为 MATLAB 为二者都建立持久存储。二者的区别在于持久变量仅为声明它们的函数所知晓。因此,MATLAB 命令行或其他函数中的代码不能更改持久变量。 clear all %persistent a %不支持在脚本中声明持久变量。如果这里用了会报错 a=1; change() show()%打印1,change函数只改变里面的值 function change() persistent a a=2; end function show() persistent a disp(a) whos a end 总结 MATLAB 中函数的作用域可以嵌套,但是不能访问工作区变量。 global和persistent的主要作用在于,每一次调用都访问的是同一个变量,而不是每次调用都新建一个变量。 这两个关键字现在其实都不推荐了,因为会导致代码的可读性变差,不利于维护,也不利于matlab的处理。 global 编辑了的同名变量是一样的,persistent标记的同名变量是互相独立的。 ...

June 14, 2023 · 1 min · Leo

最优化理论复习

老师的讲课视频在 B 站BV1nB4y137j9。 主要分为数学基础、局部最优化问题求解和全局局部最优化问题,只讲了局部的部分。 绪论 单变量优化问题——线搜索 黄金分割法 多变量优化问题 梯度法 共轭梯度法 牛顿法 拟牛顿法 约束优化问题 约束问题的最优性条件 可行方向法 梯度投影法、简约梯度法 罚函数法 乘子法 绪论 优化问题的表述:在一定的约束下,调整一组可变参数 x,使设计目标 f(x)达到最小值(或最大值)。 数学表述可以表示为: $$ min\ f(\vec{x})\ s.t.\ \vec{x} \in K $$ s.t. 是数学中 subject to (such that) 的缩写,表示受约束的意思 $f(\vec{x})$ 是目标函数(实值函数) $\vec{x}$为参数向量,$K$为可行域,即参数能够许可的取值范围 进而可以将最优化问题细分为: 线性规划和非线性规划问题:可行集是有限维向量空间的子集 组合优化或网络规划:可行集中的元素是离散的 动态规划:可行集是一个依赖时间的决策序列 最优控制:可行集是无穷维空间中的一个连续子集 线性最优化问题(线性函数,线性约束)的情况,最有情况出现在端点。 课程考虑非线性规划/优化: $$ \begin{align} & min\ f(\vec{x}) \\ \ s.t.\ & h_i(\vec{x})=0,i=1,\dots,l, \\ & g_i(\vec{x})<0,i=1,\dots m, \\ \end{align} $$最优化问题求解的一般思路 无约束问题的一般算法框架: step 0: 给定初始化参数及初始迭代点$x_0$, 置$k:=0$ step 1: 若$x_k$满足某种终止准则,停止迭代,以$x_k$作为极小点 step 2: 通过求解$x_k$处的某个子问题确定下降方向$x_k$ step 3: 通过某种搜索方式确定步长因子$\alpha_k$,使得$f(x_k+\alpha_k d_k)<f(x_k)$ step 4: 令$x_{k+1}=x_k+\alpha_k d_k$,$k:=k+1$,转步 1 最优化问题的数学基础 线性代数 线性代数的核心内容是 $Ax=b$ 线性代数方程组解的存在性问题,以及如何求解他的问题, 以及这样的数学结构的问题。 ...

March 4, 2023 · 2 min · Leo

常用代理与镜像设置方法

GIT # 设置http: git config --global http.proxy http://127.0.0.1:1080 # 设置https: git config --global https.proxy http://127.0.0.1:1080 # 设置socks: git config --global http.proxy 'socks5://127.0.0.1:1080' git config --global https.proxy 'socks5://127.0.0.1:1080' ## 取消 git config --global --unset http.proxy git config --global --unset https.proxy 或者通过git config --global -e编辑配置文件 [https "https://github.com"] proxy = socks5://127.0.0.1:7891

October 4, 2022 · 1 min · Leo

常用代理与镜像设置方法

GIT # 设置http: git config --global http.proxy http://127.0.0.1:1080 # 设置https: git config --global https.proxy http://127.0.0.1:1080 # 设置socks: git config --global http.proxy 'socks5://127.0.0.1:1080' git config --global https.proxy 'socks5://127.0.0.1:1080' ## 取消 git config --global --unset http.proxy git config --global --unset https.proxy 或者通过git config --global -e编辑配置文件 [https "https://github.com"] proxy = socks5://127.0.0.1:7891

October 4, 2022 · 1 min · xsro