机械臂运动控制_学习笔记

机械臂两种控制方式:

开环控制、闭环控制

  1. 开环控制:感知部分得到物体坐标→控制机械臂末端执行器到达这个坐标
  2. 闭环控制:感知部分同时得到物体坐标与机械臂未端执行器坐标>控制机械臂末
    端执行器坐标与物体坐标两坐标重合
  • 区别:开环控制中机械臂末端执行器的坐标为机械臂正逆解得到(无反馈),而
    闭环中的末端执行器坐标为感知部分得到(有反馈)

视觉机械臂抓取流程

在这里插入图片描述

**加粗样式**

4.机械臂的描述方式-DH表示法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
左上角的3x3的矩阵是旋转矩阵,右上角的3X1矩阵是从i-1Frame的角度去看,是角度和长度的复合
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

运动空间和关节空间

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Craig version方法
在这里插入图片描述

Standard方法
第二种表达方法,就是i和i-1顺序的问题,不同架构,各有好坏
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
殊途同归,不同的表示方法,但是对于大地参考系而言最后表示一个点的矩阵是相同的


在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

逆运动学

在这里插入图片描述

求解概念

在这里插入图片描述

  • Dexterous workspace
  • Reachable workspace
    在这里插入图片描述
    在这里插入图片描述

多组解

在这里插入图片描述
在这里插入图片描述### 求解方法
在这里插入图片描述
这个是上下矩阵相等,解出来每个关节的角度
在这里插入图片描述

几何解

在这里插入图片描述
在这里插入图片描述

代数解

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三角函数方程式求解

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
控制机械臂末端沿末端方向前进位移,可以使用以下步骤: 1. 创建机械臂模型并加载到PyBullet中。 2. 获取机械臂末端的位置和姿态。 3. 计算末端方向向量,即机械臂当前姿态下的z轴向量。 4. 将向量标准化并乘以所需的位移量,得到末端沿末端方向的位移向量。 5. 将位移向量加到末端位置上,得到新的末端位置。 6. 将机械臂控制器设置为新的末端位置和姿态。 下面是一个示例代码,用于将机械臂末端沿末端方向前进10个单位长度: ```python import pybullet as p import numpy as np # 创建机械臂模型并加载到PyBullet中 p.connect(p.GUI) robot = p.loadURDF("path/to/urdf/file.urdf", [0, 0, 0], [0, 0, 0, 1]) # 获取机械臂末端的位置和姿态 end_effector_id = 7 # 假设机械臂末端的link id为7 end_effector_pos, end_effector_ori = p.getLinkState(robot, end_effector_id)[:2] # 计算末端方向向量,即机械臂当前姿态下的z轴向量 end_effector_dir = np.array(p.getMatrixFromQuaternion(end_effector_ori)).reshape(3, 3)[:, 2] # 将向量标准化并乘以所需的位移量,得到末端沿末端方向的位移向量 displacement = 10 # 假设要让机械臂末端前进10个单位长度 displacement_vec = end_effector_dir * displacement # 将位移向量加到末端位置上,得到新的末端位置 new_end_effector_pos = np.array(end_effector_pos) + displacement_vec.tolist() # 将机械臂控制器设置为新的末端位置和姿态 p.setJointMotorControlArray(robot, [0, 1, 2, 3, 4, 5], p.POSITION_CONTROL, targetPositions=[0, 0, 0, 0, 0, 0]) p.setJointMotorControlArray(robot, [0, 1, 2, 3, 4, 5], p.POSITION_CONTROL, targetPositions=p.calculateInverseKinematics(robot, end_effector_id, new_end_effector_pos)) ``` 注意,上述示例代码中的机械臂模型和末端link id等参数需要根据具体情况进行修改。此外,还需要根据机械臂控制方式进行适当的调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值