ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

ManiSkill 中的 WidowX AI 腕部相机机器人(widowxai_wristcam)指南:配置、传感器与控制器详解

ManiSkill 中的 WidowX AI 腕部相机机器人(widowxai_wristcam)指南:配置、传感器与控制器详解 ManiSkill 中的 WidowX AI 腕部相机机器人widowxai_wristcam指南配置、传感器与控制器详解【免费下载链接】ManiSkillManipulation Skill Framework, an open source GPU parallelized robotics simulator and benchmark项目地址: https://gitcode.com/GitHub_Trending/ma/ManiSkill导读本指南以 ManiSkill 官方机器人文档中的widowxai_wristcamWidowX AI 腕部相机版为核心系统讲解该机器人在 GPU 并行化机器人仿真框架中的注册方式、URDF 模型、自由度构成、三种关节 PD 控制器以及安装在夹爪上的 Intel RealSense D405 腕部相机传感器配置。读完本文你将掌握如何在 ManiSkill 中实例化这一 8 自由度机器人、理解其相机传感器与控制器参数的底层实现并能在PickCubeWidowXAI-v1等既有任务中正确使用它。1. 机器人概述WidowX AI 腕部相机版widowxai_wristcam是 ManiSkill 内置机器人widowxaiWidowX AI的变体区别在于其夹爪上额外挂载了一台 Intel RealSense D405 深度相机用于第一人称视角的视觉观测。属性值Robot UIDwidowxai_wristcamAgent 类WidowXAIWristCamwidowxai_wristcam.py基类WidowXAIwidowxai.py质量评级BStable, but some values are unrealistic即仿真稳定但部分数值不真实自由度DoF8可用控制器pd_joint_delta_pos、pd_joint_pos、pd_joint_target_delta_pos相机1 个腕部相机wrist_cameraIntel RealSense D405 模型质量评级参照 机器人文档生成脚本 中定义的等级表QUALITY_KEY_TO_DESCRIPTION与 MuJoCo Menagerie 的模型质量分级一致B 级意味着机器人可以在仿真中稳定运行但部分动力学数值并非通过系统辨识得到存在不真实之处。官方建议在将其用于 sim2real 迁移前自行进行系统辨识system identification。注意机器人各页面文档包括本页均由 generate_robot_docs.py 自动生成脚本从mani_skill.agents.robots模块中反射收集已注册的 Agent 类读取 robot.json 中的质量元数据并在EmptyEnv中渲染前后视角的视觉网格与碰撞网格图像。因此文档中的 UID、DoF、控制器列表均为代码自动推导的运行时事实。2. 模型与自由度8 个主动关节的来源机器人的几何与运动学定义来自 URDF 文件{ASSET_DIR}/robots/widowxai/wxai_follower.urdfASSET_DIR为 ManiSkill 资产目录参见 widowxai_wristcam.py。自由度8由源码中的关节划分直接决定机械臂 7 个关节arm_joint_namesjoint_0joint_5六个转动关节 一个left_carriage_joint夹爪 1 个主动关节gripper_joint_namesleft_carriage_joint。关键细节夹爪只控制left_carriage_joint这一个控制关节另一个right_carriage_joint是镜像跟随关节mimicked joint通过 URDF 的传动关系跟随左侧运动不需要单独驱动。源码注释明确写道 only control the control joint, not the mimicked one。这也是8 自由度 7 臂 1 夹爪的由来。此外末端执行器链为ee_gripper_linkee_link_name_after_loading_articulation钩子中缓存了gripper_left、gripper_right与tcpTCP 点等链接引用供tcp_pos、tcp_pose、is_grasping、is_static等辅助 API 使用见 widowxai.py。3. 腕部相机传感器wrist_camera配置解读WidowXAIWristCam与基类WidowXAI的唯一差异在于重写了_sensor_configs属性返回一个CameraConfig见 widowxai_wristcam.pyproperty def _sensor_configs(self): return [ CameraConfig( uidwrist_camera, posesapien.Pose(p[0, 0, 0], q[1, 0, 0, 0]), width128, height128, fovnp.pi / 2, near0.01, far100, mountself.robot.links_map[camera_link], ) ]各参数含义与 camera.py 中CameraConfig字段一一对应参数值说明uidwrist_camera相机唯一标识观测字典中的键名pose单位位姿p[0,0,0], q[1,0,0,0]相机在挂载点camera_link坐标系下的局部位姿即零偏移width/height128 / 128渲染分辨率像素相对较低以控制 GPU 显存与算力开销fovnp.pi / 290°垂直视场角CameraConfig要求fov与intrinsic二选一near/far0.01 / 100近/远裁剪平面米相机与 D405 一样适合近距离观测mountcamera_link挂载到的机器人连杆相机全局位姿 mount.pose * local_pose相机通过mount参数挂载到camera_link上因此会随夹爪一起运动提供手眼eye-in-hand视角是抓取类视觉任务最常用的观测形式。mount参数支持传Actor或Link运行时由 Camera 类 在场景中创建并自动跟随连杆运动。4. 控制器配置三种关节 PD 控制模式机器人的_controller_configs在基类 widowxai.py 中定义全部基于PDJointPosControllerConfig机械臂与夹爪共享相同的刚度/阻尼/力限参数参数值arm_stiffness1e3arm_damping1e2arm_force_limit100 Ngripper_stiffness1e3gripper_damping1e2gripper_force_limit100 N三种控制模式的差异集中在机械臂部分夹爪始终使用gripper_pd_joint_pos位置范围[0.0, 0.044]pd_joint_pos直接位置控制lowerNone, upperNonenormalize_actionFalse动作即目标关节位置pd_joint_delta_pos增量位置控制动作范围[-0.1, 0.1]弧度use_deltaTrue, use_targetFalse动作表示相对当前关节位置的偏移量pd_joint_target_delta_pos目标增量位置控制是模式 2 的深拷贝仅将use_targetTrue动作表示相对于目标位置的增量控制器内部维护目标状态。这三种模式分别适合不同的使用场景直接位置控制适合规划/脚本控制增量控制更贴合强化学习输出小幅动作的习惯其中pd_joint_target_delta_pos额外引入了目标平滑语义。set_control_mode的实现在 base_agent.py 中模式创建后会对所有连杆禁用重力以平衡被动力PhysX 下通过 disable_gravity 实现因此三种模式均能保持机械臂稳定悬停。5. 注册机制与资产下载WidowXAIWristCam通过装饰器注册进 ManiSkillregister_agent(asset_download_ids[widowxai]) class WidowXAIWristCam(WidowXAI):registration.py 中的register_agent会把类按uid写入全局REGISTERED_AGENTS字典并同时将asset_download_ids登记到assets.DATA_GROUPS。这意味着你可以直接用字符串widowxai_wristcam作为robot_uids创建环境无需导入具体类首次加载时若 URDF 资产不存在base_agent.py 会提示是否下载widowxai资产组。6. 在任务中的实际使用PickCubeWidowXAI-v1仓库中的PickCubeWidowXAI-v1任务即以widowxai机器人运行pick_cube.py其环境类继承自PickCubeEnvregister_env(PickCubeWidowXAI-v1, max_episode_steps50) class PickCubeWidowXAIEnv(PickCubeEnv): def __init__(self, *args, **kwargs): super().__init__(*args, robot_uidswidowxai, **kwargs)而widowxai_wristcam是该机器人的相机增强版本。使用方式与其他机器人一致例如import mani_skill.envs import gymnasium as gym env gym.make( PickCube-v1, robot_uidswidowxai_wristcam, # 使用腕部相机版机器人 obs_modergbd, # 或 state、point_cloud 等 control_modepd_joint_delta_pos,# 文档列出的三种模式之一 render_modesensors, ) obs, _ env.reset()要点说明robot_uids传widowxai_wristcam时观测中将包含wrist_camera键对应的 128×128 相机图像RGB/深度/分割等模态由obs_mode决定control_mode必须是文档列出的三种之一pd_joint_delta_pos默认、pd_joint_pos、pd_joint_target_delta_pos否则会在 set_control_mode 中断言报错PickCube 任务针对不同机器人有独立的调参配置pick_cube_cfgs.pyWidowXAI 使用较小的立方体cube_half_size0.018更贴合其小夹爪的尺寸。另外若希望在已有环境上直接启用腕部相机可在环境初始化时通过sensor_configs覆盖相机参数如把分辨率提升到 256×256update_sensor_configs_from_dictcamera.py支持按相机 uid 或全局批量修改CameraConfig字段。7. 视觉与碰撞模型文档页面中展示的四张渲染图正面/侧面视角展示了该机器人的视觉网格Visual Meshes与碰撞网格Collision Meshes对应图片存放于front_visual.png / side_visual.pngfront_collision.png / side_collision.png这些图像由 generate_robot_docs.py 在EmptyEnv中渲染生成。碰撞网格的着色规则为绿色表示凸包网格Convex Mesh蓝色表示基本形状球体、盒体、胶囊、圆柱、平面等 Primitive Shape Mesh。渲染脚本使用 RT 光线追踪着色器shader_packrt1024×1024进行捕捉因此图片能真实反映机器人装载后的外观与碰撞几何。在 ManiSkill 的机器人总览页面robots/index.md中点击对应缩略图即可进入本页。8. 质量评级与使用建议widowxai_wristcam的质量评级为BStable, but some values are unrealistic这一评级来源于 robot.json 元数据。含义是机器人在仿真中可以稳定运行、外观与运动正常但诸如摩擦力、关节刚度等参数未经过严格的系统辨识。因此用于 RL 训练与算法对比是安全的B 级机器人完全可用于研究用途若目标是将策略迁移到真实 WidowX AI 机器人sim2real官方在 robots/index.md 中建议自行执行系统辨识并根据真实硬件校准摩擦与驱动参数与所有 ManiSkill 机器人一样无法稳定仿真的机器人根本不会包含在框架中因此 B 级本身已代表开箱即用。总结widowxai_wristcam在 ManiSkill 中是一个轻量、实用的视觉抓取研究平台8 自由度7 轴臂 1 夹爪、三种 PD 关节控制模式、夹爪挂载的 128×128 D405 风格腕部相机配合PickCubeWidowXAI-v1等既有任务即可快速开展视觉策略实验。其完整实现可追溯至 widowxai_wristcam.py 与 widowxai.py 两个文件本文所述所有参数均可直接在这些源码与 camera.py、base_agent.py 中验证。【免费下载链接】ManiSkillManipulation Skill Framework, an open source GPU parallelized robotics simulator and benchmark项目地址: https://gitcode.com/GitHub_Trending/ma/ManiSkill创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表