当前位置: 首页 > news >正文

怎么知道机械臂该怎么动

事情也很简单,就是比如说现在你有一个机械臂,最开始末端在A点,你想去B点,怎么计算出来机械臂的这些关节应该怎么转才能达到这个效果呢?

其实也挺简单的,首先我们拿最经典的六轴机器人举例子,先建立模型。

首先这六个关节都能转,所以说有六个运动参数 \(\theta_i\)

然后还有一些静态参数,描述每个关节到底朝哪个方向转,关节之间间距多少之类的,这个用绝对坐标不好描述,因为后一个关节的位置和朝向受到前一个的影响,所以我们对每一个关节都建一个坐标系 \(i\)。具体就是 \(z_i\) 轴落在 i 号关节的旋转轴/伸缩轴的轴线上,\(x_i\) 就落在 \(z_i\)\(z_{i+1}\) 的公垂线上,这样原点和 y 轴也能得到了。

接下来再去看有哪些静态参数,你看这个机械臂,一个关节本质上只有空间位置和朝向两个参量,但是我们递推的时候,考虑当前关节转动对下一个关节的影响,哪些会变哪些不会变?那就很显然了,我们给当前关节和下一个关节连一个矢量,这个长度不会变,方向只会随着轴转,而下一个关节的朝向(即旋转轴)和这个矢量的相对方向也不变,这些不变量就是固定参数了,把矢量分别投影到xoy和z上面能得到连杆长度a和连杆偏距d。再看朝向,再记录一个两个关节轴的夹角 alpha 就行了。

为什么要把这个矢量投影成俩呢?一个是好算,另一个是关节的空间位置位置其实并不是良定义的,因为有的情况下把关节看成一个点是失真的,比如一个万向轴,你要拆成xyz三个方向的关节,可能就会涉及到关节内部的情况了,这样不保证正确。关节最本质的东西只有那个旋转轴,而我们反过来用建立的坐标系(利用了相邻关节的位置关系,换句话说其实是轴的位置关系)来用坐标原点”公理化地“定义了关节的空间位置。这一点挺深刻的其实。

这个东西就是所谓的 Denavit–Hartenberg 参数法。

那运动也就很简单了,就是按照定义一步步来,先绕着 \(z_{i-1}\) 轴旋转 \(\theta _i\),再沿着 \(z_{i-1}\) 轴平移 \(d_i\) ,再沿着 \(x_i\) 轴平移 \(a_i\),再绕 \(x_i\) 轴旋转 \(\alpha _i\)。为了让平移齐次化,我们用齐次坐标表示,这样一次变换的矩阵就是:

\[^{i-1}T_i = \begin{bmatrix} \cos\theta_i & -\sin\theta_i\cos\alpha_i & \sin\theta_i\sin\alpha_i & a_i\cos\theta_i \\ \sin\theta_i & \cos\theta_i\cos\alpha_i & -\cos\theta_i\sin\alpha_i & a_i\sin\theta_i \\ 0 & \sin\alpha_i & \cos\alpha_i & d_i \\ 0 & 0 & 0 & 1 \end{bmatrix} \]

总变换也就是 $$^0T_n = ^0T_1 \cdot ^1T_2 \cdot ^2T_3 \dots ^{n-1}T_n$$ 。

那么假如说我们期望运动到点 \(x\),要反过来求 \(\theta\) 怎么办呢?

一般的 DH 参数法反解逆运动利用了六轴机器人本身的一些性质:后三轴交于一点。这样可以根据末状态参量求腕心,再用分析方法硬去解各个参数。

不过这么解有两个局限性,一个是它利用了一般六轴机器人的良好结构,一旦我们设计的不是那么巧妙,这个方程的一般形式又不是齐次的(甚至不是分离参数的),很可能解不出来;另一方面是现在末端空间坐标和姿态是六个参数,刚好满秩,如果再多一些自由度,这种解析的方法要面临一个在高维解空间里取点的问题,如果这个空间的解系很难写,要选一个特解,这种分析法就有些困难了。

为了应对上述两个问题,我们对更一般的机械臂也可以通过一些数值方法处理逆运动。

为了强调未知数,我们把$$^0T_n$$ 直接记作 \(^0T_n(\theta)\),其中 \(\theta\) 是一个 \(n\) 维向量,表示各个关节角。我们就是要求 \(\theta\) 使得 \(^0T_n(\theta)\approx T_d\),即末状态。

现在我们手里有正运动学公式,在推出来的4*4齐次坐标矩阵里面能够提取出来一个包含了位置和姿态的六维向量,拿这个六维向量和期待的六维状态向量做差能够得到误差函数,后面就有很多种办法做了,有我们熟悉的梯度下降法,当然在这里用不上那一套,用数值雅可比法就可以了,也就是牛顿法在向量函数上的推广。

我们有没有稍微不数值一点的方法,或者更本质一点的方法分析一下一般机械臂该怎么动呢?

回顾一下整个机械臂的变换过程,显然这个变换是属于三维刚体位姿群 \(SE(3)\) 的,显然这是一个李群,我们可以去求他的李代数,在李群单位元处求正切空间。

对于每个转动关节,我们需要对应一个运动旋量 \((\omega,v)^T\),其中 \(v=-\omega\times q\)。也就是做了个简单的线速度角速度分解。

把运动旋量写成矩阵形式直接可以对应到李代数元素了,然后做指数映射可以化作指数积公式,后面再说。

http://www.jsqmd.com/news/887712/

相关文章:

  • 合肥代理记账权威机构判定维度与合规服务解析:合肥工商注册代理/合肥注册公司名称核准/合肥注册公司地址挂靠/合肥注册公司材料/选择指南 - 优质品牌商家
  • Unity项目里用EnhancedScroller v2.15.6做排行榜,5分钟搞定数据绑定和滚动优化
  • 别再死记硬背了!用Multisim仿真+图解,5分钟搞懂三极管共射放大电路工作原理
  • 3分钟快速上手:如何在浏览器中免费将HTML转换为Word文档
  • 深入OpenPnP视觉校准:从‘模糊Mark点’到‘白平衡优化’的调试实录
  • 别再傻傻分不清了!5分钟搞懂点乘和叉乘在游戏开发里的实际用法(Unity/C#)
  • 深度学习从心电信号中解码呼吸频率:原理、实现与临床价值
  • 告别命令行!用Python脚本批量管理Docker容器,效率提升不止一点点
  • whisper语音转文字配置
  • 告别玄学修蓝屏:用Windows事件查看器和可靠性监视器精准诊断‘PAGE_FAULT’错误
  • SPT-AKI Profile Editor终极指南:完全掌控你的离线塔科夫存档修改
  • Unity游戏资源提取实战指南:AssetStudio核心原理与免费提取教程
  • 2026年近期剖析:温州不错的GEO优化直销企业市场价值 - 2026年企业推荐榜
  • 手把手教你用CTSpine1K和OAI-ZIB数据集,快速搭建医学影像分析环境(附代码)
  • 2026年05月排污泵优选:这些供货商值得一看,户外泵房/光伏太阳能供水设备/潜水排污泵,排污泵制造企业哪家好 - 品牌推荐师
  • 当有限元遇上游戏引擎:用Unity重现Abaqus应力云图的完整流程
  • Unity真机帧率监控:解耦CPU/GPU/Present三帧率
  • C++中显示与隐式加载dll的使用与区别
  • 什么是吱吱OC|2026
  • Unity安卓构建72小时实战指南:从零到真机运行
  • 2026年全国瓷砖美缝剂主流品牌盘点与实测对比:屋顶防水材料、强力瓷砖背胶、强力瓷砖胶、新型防水材料、柔性瓷砖胶选择指南 - 优质品牌商家
  • SSH私钥权限600原理与Linux文件系统安全机制解析
  • 基于肠道菌群与机器学习的帕金森病早期诊断模型BDPM详解
  • Simulink仿真避坑指南:单相全桥逆变电路方波驱动相位设置(θ=30° vs 60°)对输出波形的影响深度对比
  • AssetStudio深度解析:Unity资源加载原理与故障排除实战
  • Unity安卓打包实战指南:从环境配置到APK生成全链路排错
  • 从测速到配置:一套完整的cFosSpeed网络加速保姆级教程(适用于小白)
  • 机器学习识别量子引力相变:从蒙特卡洛数据到相图自动化
  • 假设检验实战 | KS检验:从理论到Python代码的完整指南
  • Unity安卓构建实战指南:解决APK真机安装闪退与构建失败