# 笛卡尔速度控制循环中机械臂忽略姿态控制的问题

> 原文链接：https://robotics.hellobike.com/pitfalls/2022-09-06-robotics-se-23797
> 频道：pitfalls | 更新日期：2022-09-06 | 标签：auto, stackexchange, kalman-filter
> 核心摘要：Franka机械臂仿真中笛卡尔速度控制仅响应位置不响应姿态，给出了正确的姿态误差计算方法

# 笛卡尔速度控制循环中机械臂忽略姿态控制的问题

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[cartesian velocity control loop implementation](https://robotics.stackexchange.com/questions/23797/cartesian-velocity-control-loop-implementation)（Robotics Stack Exchange #23797）

**状态**：有绕过办法

## 问题

使用ROS Noetic和panda_robot包在Gazebo中仿真控制Franka机械臂，扩展卡尔曼滤波器输出的位姿和速度经rviz确认无误，但机械臂仅能响应鼠标的位置控制，完全忽略姿态控制指令

## 环境

软件版本：ROS Noetic，使用panda_robot包，Gazebo仿真器，rviz可视化工具；控制对象为Franka机械臂

## 解决办法

1. 将当前姿态和目标姿态的四元数转换为SO(3)旋转矩阵R_a、R_d
2. 按公式e_o = 0.5 * Σ(r_a,i × r_d,i)（i=1到3，r为对应旋转矩阵的列向量）计算姿态误差
3. 用计算得到的姿态误差替换原代码中RPY直接相减得到的姿态误差项

原问题作者：dcfg；采纳答案作者：domo_arigato。原内容依 CC BY-SA 4.0 授权，本页摘要同样依 CC BY-SA 4.0 授权。
:::

## 原始参考来源 (Sources)

- [Robotics Stack Exchange #23797：cartesian velocity control loop implementation](https://robotics.stackexchange.com/questions/23797/cartesian-velocity-control-loop-implementation)