雅克比矩阵在机器人运动学中的应用

以六轴机械臂为例,设机械臂关节空间为q,位置矩阵为p,速度矩阵为v

q = [ q 0 , q 1 , q 2 , q 3 , q 4 , q 5 ] q=[q_0,q_1,q_2,q_3,q_4,q_5] q=[q0,q1,q2,q3,q4,q5]

p = [ x , y , z ] T = [ f x ( q ) f y ( q ) f z ( q ) ] p=[x,y,z]^T=\begin{bmatrix}f_x(q) \\ f_y(q)\\ f_z(q) \\ \end{bmatrix} p=[x,y,z]T= fx(q)fy(q)fz(q)
联立机械臂速度矩阵、关节空间和位置矩阵的关系如下

v = p ˙ = ( d f x d t d f y d t d f z d t ) = ( ∂ f x ∂ q 0 d q 0 d t ⋯ ∂ f x ∂ q 5 d q 5 d t ∂ f y ∂ q 0 d q 0 d t ⋯ ∂ f y ∂ q 5 d q 5 d t ∂ f z ∂ q 0 d q 0 d t ⋯ ∂ f z ∂ q 5 d q 5 d t ) = ( ∂ f x ∂ q 0 ⋯ ∂ f x ∂ q 5 ∂ f y ∂ q 0 ⋯ ∂ f y ∂ q 5 ∂ f z ∂ q 0 ⋯ ∂ f z ∂ q 5 ) ( q 1 ⋮ q 5 ) v=\dot p=\begin{pmatrix}\frac {df_x}{dt} \\ \frac {df_y}{dt} \\ \frac {df_z}{dt}\\ \end{pmatrix} =\begin{pmatrix}\frac {\partial f_x} {\partial q_0}\frac {dq_0} {dt}& \cdots & \frac {\partial f_x} {\partial q_5}\frac {dq_5} {dt} \\ \frac {\partial f_y} {\partial q_0} \frac {dq_0} {dt} &\cdots&\frac {\partial f_y} {\partial q_5} \frac {dq_5} {dt} \\\frac {\partial f_z} {\partial q_0} \frac {dq_0} {dt} &\cdots & \frac {\partial f_z} {\partial q_5} \frac {dq_5} {dt} \end{pmatrix}= \begin{pmatrix}\frac {\partial f_x} {\partial q_0}& \cdots & \frac {\partial f_x} {\partial q_5} \\ \frac {\partial f_y} {\partial q_0}& \cdots & \frac {\partial f_y} {\partial q_5} \\\frac {\partial f_z} {\partial q_0}& \cdots & \frac {\partial f_z} {\partial q_5} \end{pmatrix}\begin{pmatrix}q_1 \\ \vdots \\ q_5\\ \end{pmatrix} v=p˙= dtdfxdtdfydtdfz = q0fxdtdq0q0fydtdq0q0fzdtdq0q5fxdtdq5q5fydtdq5q5fzdtdq5 = q0fxq0fyq0fzq5fxq5fyq5fz q1q5

将中间矩阵定义为雅克比矩阵J,则

J = ( ∂ f x ∂ q 0 ⋯ ∂ f x ∂ q 5 ∂ f y ∂ q 0 ⋯ ∂ f y ∂ q 5 ∂ f z ∂ q 0 ⋯ ∂ f z ∂ q 5 ) J=\begin{pmatrix}\frac {\partial f_x} {\partial q_0}& \cdots & \frac {\partial f_x} {\partial q_5} \\ \frac {\partial f_y} {\partial q_0}& \cdots & \frac {\partial f_y} {\partial q_5} \\\frac {\partial f_z} {\partial q_0}& \cdots & \frac {\partial f_z} {\partial q_5} \end{pmatrix} J= q0fxq0fyq0fzq5fxq5fyq5fz

v = J q ˙ v=J\dot q v=Jq˙

q ˙ = [ q ˙ 0 , q ˙ 1 , q ˙ 2 , q ˙ 3 , q ˙ 4 , q ˙ 5 ] \dot q=[\dot q_0,\dot q_1,\dot q_2,\dot q_3,\dot q_4,\dot q_5] q˙=[q˙0,q˙1,q˙2,q˙3,q˙4,q˙5]

那么雅克比矩阵J可以用来表示从关节速度空间q_dot到关节末端执行空间速度的映射,即一个末端的位置可以由多个关节空间的速度映射得到,即

q ˙ J ⟶ v \dot q {J \over \longrightarrow }v q˙Jv

同样,末端执行空间速度F同样可以使用雅克比矩阵映射到关节空间力矩

τ J T ⟶ F \tau {J ^T \over \longrightarrow}F τJTF

τ = J T F \tau = J^TF τ=JTF

例如7轴机械臂,具有冗余的一个关节空间(7x1)q_6,所以在末端执行空间的变换矩阵(6x1)(3x3旋转+3x1平移)进行映射的时候q_6无论处在什么位置,都不会影响末端执行空间的位置和速度,称为零空间

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在ROS,可以使用`moveit_commander`库的`RobotCommander`和`MoveGroupCommander`类来求解机器人雅可比矩阵。下面是一个使用Python函数求解机器人速度运动学雅可比矩阵的示例代码: ```python import rospy from moveit_commander import RobotCommander, MoveGroupCommander from geometry_msgs.msg import Pose rospy.init_node('jacobian_example') # 创建RobotCommander和MoveGroupCommander对象 robot = RobotCommander() group = MoveGroupCommander("arm") # 获取机器人的当前关节状态 current_joint_values = group.get_current_joint_values() # 设置机器人的当前关节状态 group.set_joint_value_target(current_joint_values) # 进行正向运动学,获取末端执行器的位姿 fk_pose = group.get_current_pose().pose # 创建一个Pose对象,表示末端执行器的位姿增量 delta_pose = Pose() delta_pose.position.x = 0.01 delta_pose.position.y = 0.01 delta_pose.position.z = 0.01 # 根据位姿增量计算目标位姿 target_pose = Pose() target_pose.position.x = fk_pose.position.x + delta_pose.position.x target_pose.position.y = fk_pose.position.y + delta_pose.position.y target_pose.position.z = fk_pose.position.z + delta_pose.position.z # 求解雅可比矩阵 jacobian_matrix = group.get_jacobian_matrix() # 打印雅可比矩阵 print(jacobian_matrix) ``` 以上代码,我们首先初始化ROS节点并创建了`RobotCommander`和`MoveGroupCommander`对象。然后,我们获取机器人的当前关节状态,并使用`set_joint_value_target`函数将当前关节状态设置为目标状态。接下来,我们使用`get_current_pose`函数获取末端执行器的当前位姿,并创建一个位姿增量对象。通过将位姿增量添加到当前位姿,我们获得了目标位姿。最后,我们使用`get_jacobian_matrix`函数求解雅可比矩阵,并将结果打印出来。 请注意,以上代码只是一个简单示例,你需要根据你的机器人和实际需求进行相应的修改和适配。 希望这个示例能够帮助到你!如果你有任何其他问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值