用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/MIUAV/vibe-coding-ros2 --skill humanoid-kinematics命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | humanoid-kinematics |
| description | 人形机器人运动学技能 - 全身运动学、闭链运动学、根骨跟踪、ROS2 HRGCF |
| argument-hint | 人形机器人 OR humanoid OR whole-body OR HRGCF OR kinematics |
| user-invocable | true |
人形机器人全身运动学
当需要以下帮助时使用此技能:
import numpy as np
class HumanoidKinematics:
def __init__(self):
# 关节定义 (名称, 父关节, DH参数)
self.joints = {
'root': {'parent': None, 'dof': 6},
'torso': {'parent': 'root', 'dof': 3},
'head': {'parent': 'torso', 'dof': 2},
'left_arm': {'parent': 'torso', 'dof': 7},
'right_arm': {'parent': 'torso', 'dof': 7},
'left_leg': {'parent': 'root', 'dof': 6},
'right_leg': {'parent': 'root', 'dof': 6},
}
# 末端执行器
self.end_effectors = [
'left_hand', 'right_hand', 'left_foot', 'right_foot'
]
def solve_wbik(self, root_pose, tasks):
"""
全身逆运动学
tasks: [{'end_effector': 'left_foot', 'pose': T_target}, ...]
"""
q = np.zeros(30) # 30 DOF 人形
for _ in range(50):
# 计算误差
errors = []
for task in tasks:
ee = task['end_effector']
T_target = task['pose']
# 当前末端位姿
T_current = self.fk(ee, q)
# 误差
error = self.pose_error(T_current, T_target)
errors.append((ee, error))
# 堆叠误差
error_stack = np.concatenate([e for _, e in errors])
if np.linalg.norm(error_stack) < 1e-4:
break
# 雅可比
J = self.compute_task_jacobian(errors)
# 阻尼最小二乘
q_delta = self.damped_least_squares(J, error_stack)
q = q + 0.5 * q_delta
return q
def compute_task_jacobian(self, tasks):
"""计算任务雅可比"""
J_total = []
for ee, error in tasks:
Ji = self.fk.get_jacobian(ee, q)
J_total.append(Ji)
return np.vstack(J_total)
def damped_least_squares(self, J, error, lambda_=0.01):
"""阻尼最小二乘"""
H = J.T @ J + lambda_ ** 2 * np.eye(J.shape[1])
return np.linalg.solve(H, J.T @ error)
class RootTracking:
def __init__(self):
self.pelvis_height = 0.9
self.hip_height_offset = 0.05
def compute_foot_targets(self, root_pose, com_position):
"""计算双脚目标位置"""
left_foot = root_pose.copy()
left_foot[2] = self.pelvis_height - self.hip_height_offset
right_foot = root_pose.copy()
right_foot[2] = self.pelvis_height - self.hip_height_offset
right_foot[0] += 0.1 # 步宽
return left_foot, right_foot
def balance_com(self, current_com, foot_positions):
"""质心平衡控制"""
# 支撑多边形
support_poly = self.compute_support_polygon(foot_positions)
# 投影 COM 到支撑多边形
projected_com = self.project_to_support(current_com, support_poly)
return projected_com