Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Why jaco_arm/joints_pos shape is (1, 6, 2) and how to do joint position control?

未关闭
#489 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
25/100
Issue 类型
文档
描述清晰度
需要澄清
活跃度
停滞
技术栈
python

调研方向

首先运行最小 Gymnasium 示例,并检查 lift_large_box_features-v0 报告的观测和动作规格。跟踪该环境使用的 Jaco 机械臂观测和控制配置。完成的标准是记录清楚 jaco_arm/joints_pos 为什么具有形状 (1, 6, 2)、它与 qpos 的关系,以及是否支持关节位置控制,或者应如何配置。

由索引模型根据 Issue 内容生成。

描述

@yuvaltassa @kevinzakka

Hi dm_control developers team,

As the title suggested, I have 2 questions:

  1. For the default manipulation env with kinova jaco arm, why the joint position has 2 dim for each joint for a 6-DoF jaco arm? How to convert this observation to qpos, which has exactly 1 dim per joint?

  2. For the same env, how to turn the torque control to joint position control (control qpos)?

The minimum code is:

import gymnasium as gym
env = gym.make("dm_control/lift_large_box_features-v0", render_mode="rgb_array")
print(env.observation_spec())
print(env.action_spec())

and this gives me:

env.observation_spec(): OrderedDict([
        ('jaco_arm/joints_pos', Array(shape=(1, 6, 2), dtype=dtype('float64'), name='jaco_arm/joints_pos')),
        ('jaco_arm/joints_torque', Array(shape=(1, 6), dtype=dtype('float64'), name='jaco_arm/joints_torque')),
        ('jaco_arm/joints_vel', Array(shape=(1, 6), dtype=dtype('float64'), name='jaco_arm/joints_vel')),
        ('jaco_arm/jaco_hand/joints_pos', Array(shape=(1, 3), dtype=dtype('float64'), name='jaco_arm/jaco_hand/joints_pos')),
        ('jaco_arm/jaco_hand/joints_vel', Array(shape=(1, 3), dtype=dtype('float64'), name='jaco_arm/jaco_hand/joints_vel')),
        ('jaco_arm/jaco_hand/pinch_site_pos', Array(shape=(1, 3), dtype=dtype('float64'), name='jaco_arm/jaco_hand/pinch_site_pos')),
        ('jaco_arm/jaco_hand/pinch_site_rmat', Array(shape=(1, 9), dtype=dtype('float64'), name='jaco_arm/jaco_hand/pinch_site_rmat')),
        ('unnamed_model/angular_velocity', Array(shape=(1, 3), dtype=dtype('float64'), name='unnamed_model/angular_velocity')),
        ('unnamed_model/linear_velocity', Array(shape=(1, 3), dtype=dtype('float64'), name='unnamed_model/linear_velocity')),
        ('unnamed_model/orientation', Array(shape=(1, 4), dtype=dtype('float64'), name='unnamed_model/orientation')),
        ('unnamed_model/position', Array(shape=(1, 3), dtype=dtype('float64'), name='unnamed_model/position')),
    ])

env.action_spec(): (
        BoundedArray(shape=(9,), dtype=dtype('float64'), name='jaco_arm/joint_1\tjaco_arm/joint_2\tjaco_arm/joint_3\tjac
        o_arm/joint_4\tjaco_arm/joint_5\tjaco_arm/joint_6\tjaco_arm/jaco_hand/finger_1\tjaco_arm/jaco_hand/finger_2\tjac
        o_arm/jaco_hand/finger_3', minimum=[-0.62831853 -0.62831853 -0.62831853 -0.83775804 -0.83775804 -0.83775804
         -5.         -5.         -5.        ], maximum=[0.62831853 0.62831853 0.62831853 0.83775804 0.83775804
        0.83775804
         5.         5.         5.        ])
    

by processing info from above we have:

('jaco_arm/joints_pos', Array(shape=(1, 6, 2), dtype=dtype('float64'), name='jaco_arm/joints_pos')),

And I just wonder why it's (1, 6, 2).

主要语言
Python
星标
4.7k
派生
765
PR 合并指标
30 天内没有已合并 PR

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

google-deepmind/dm_control 的其他 Issue

查看 google-deepmind/dm_control 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。