ARTICLE DETAIL

资讯详情

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

XLeRobot ManiSkill 更多场景实战指南:在 ReplicaCAD、AI2THOR、Robocasa 与 OpenCabinetDrawer 环境中运行双臂移动机器人

XLeRobot ManiSkill 更多场景实战指南:在 ReplicaCAD、AI2THOR、Robocasa 与 OpenCabinetDrawer 环境中运行双臂移动机器人 XLeRobot ManiSkill 更多场景实战指南在 ReplicaCAD、AI2THOR、Robocasa 与 OpenCabinetDrawer 环境中运行双臂移动机器人【免费下载链接】XLeRobotXLeRobot: Practical Dual-Arm Mobile Home Robot for $660项目地址: https://gitcode.com/GitHub_Trending/xl/XLeRobot本篇指南聚焦 XLeRobot 在 ManiSkill 仿真平台上的场景扩展能力除了默认的ReplicaCAD_SceneManipulation-v1你还可以让双臂移动机器人运行在 AI2THOR、Robocasa 厨房台面以及OpenCabinetDrawer-v1等更多环境中。读完本文你将掌握 XLeRobot 与 ManiSkill 场景系统的对接原理、场景切换方法以及关节控制、末端执行器控制、Rerun 相机可视化三套演示脚本的完整运行方式。场景系统为什么需要更多场景ManiSkill 的任务环境Environment与场景Scene是两个层次的概念场景决定机器人与之交互的物理世界墙面、家具、台面、抽屉等静态/半静态物体而环境如SceneManipulation-v1则定义在该世界中放置哪些机器人、如何初始化和如何渲染。XLeRobot 的仿真演示默认使用ReplicaCAD_SceneManipulation-v1——即由 ReplicaCAD 数据集构建的室内场景当需要验证机器人在不同家居环境中的操作能力如厨房台面、客厅柜体、抽屉开关就需要切换到更多场景。在 simulation/Maniskill 目录中官方文档明确列出的可用场景如下ReplicaCAD_SceneManipulation-v1默认AI2THOR 场景Robocasa 厨房台面场景OpenCabinetDrawer-v1支持场景总览场景 / 环境 ID类型说明数据准备ReplicaCAD_SceneManipulation-v1场景构建器Scene Builder默认场景基于 ReplicaCAD 数据集构建的室内房间需下载 ReplicaCAD 数据集见下文安装与准备AI2THOR 场景场景构建器AI2THOR 系列场景构建器提供多种虚拟家居房间按 ManiSkill 场景构建器注册机制启用Robocasa 厨房台面场景场景构建器面向厨房台面操作的场景适合验证倒水、取物等桌面级任务需相应数据集OpenCabinetDrawer-v1任务环境Task Env开关柜门/抽屉的经典操作任务可配合xlerobot机器人直接运行需下载 OpenCabinetDrawer 资产说明场景的具体数据集下载命令与 ReplicaCAD 一致均通过 ManiSkill 提供的python -m mani_skill.utils.download_asset 名称方式获取本文不输出外部站点链接详细清单请查阅 ManiSkill 官方文档中的场景scenes章节。源码视角场景是如何接入 XLeRobot 的场景切换能力并非魔法而是由环境类的可插拔场景构建器机制支撑的。仓库中的 base_env.py 是实现这一机制的核心register_env(SceneManipulation-v1, max_episode_steps200) class SceneManipulationEnv(BaseEnv): SUPPORTED_ROBOTS [panda, fetch, xlerobot] def __init__(self, *args, robot_uidsfetch, scene_builder_cls: Union[str, SceneBuilder] ReplicaCAD, build_config_idxsNone, init_config_idxsNone, ...):关键点有三scene_builder_cls参数base_env.py默认值为ReplicaCAD允许按名称字符串或场景构建器类传入从该类的 docstring 可以看到环境明确支持 any of the AI2THOR SceneBuildersRobocasa 场景同样以构建器形式挂载这正是更多场景能在同一套环境逻辑下工作的原因。环境 ID 的拼装规则ManiSkill 会把场景名称前缀与已注册的基础环境组合成完整环境 IDReplicaCAD_SceneManipulation-v1即ReplicaCAD场景SceneManipulation-v1环境拼接而成。切换场景时只要把命令行中的-e参数换成对应场景的前缀即可例如 AI2THOR 场景对应AI2THOR_SceneManipulation-v1这类 ID可依据上述命名规则推断。SUPPORTED_ROBOTSbase_env.py将xlerobot注册为可放置的机器人之一因此无论切换到哪个场景都可以用-r xlerobot把 XLeRobot 放入场景中。机器人侧xlerobot.py 中Xlerobot类通过register_agent()注册uid xlerobot第 28 行URDF 指向 assets/xlerobot/xlerobot.urdf并定义了rest关键帧位姿17 维 qpos覆盖底座 x/y/旋转、双臂各 5 关节、头部 pan/tilt 与双夹爪。这意味着机器人是场景无关的——换场景只需要换-e机器人的 URDF、控制器与传感器配置保持不变。安装与准备运行更多场景的前提是完成 ManiSkill 与 XLeRobot 仿真环境的搭建完整步骤见 getting_started/index.md这里摘要关键环节# 1. 创建 conda 环境建议 Python 3.11 conda create -y -n lerobot python3.11 conda activate lerobot # 2. 安装 ManiSkill pip install mani-skill # 3. 下载 ReplicaCAD 场景数据集 python -m mani_skill.utils.download_asset ReplicaCAD # 4. 安装交互与可视化依赖 pip install pygame pip install rerun-sdk随后将仓库simulation/Maniskill下的内容放入 conda 环境中 ManiSkill 包对应目录agents/robots、assets/robots、envs/scenes、examples并在agents/robots/__init__.py中注册 XLeRobot。若数据集下载失败也可通过官方提供的备份渠道获取后手动放置到~/.maniskill/data/scene_datasets/replica_cad_dataset。安装完成后可用随机动作命令验证环境是否就绪python -m mani_skill.examples.demo_random_action -e ReplicaCAD_SceneManipulation-v1 \ --render-modehuman --shaderrt-fast提示如果你的电脑不支持光线追踪渲染请把--shaderrt-fast改为default以获得更快的渲染反过来追求照片级真实感时可从default切换到rt-fast更慢但更真实。运行演示在不同场景中控制 XLeRobot以下所有演示命令均在 ManiSkill 包根目录执行即把示例脚本放入examples/后以-m mani_skill.examples.*方式运行。切换场景时只需修改-e参数若目标场景需要特定数据集请先完成对应资产下载。关节控制python -m mani_skill.examples.demo_ctrl_action -e ReplicaCAD_SceneManipulation-v1 \ -r xlerobot --render-modehuman --shaderdefault -c pd_joint_delta_pos_dual_arm该脚本对应 demo_ctrl_action.py使用 pygame 弹出控制面板W/S控制底座前进后退A/D控制转向7/8/9/0/-与H/J/K/L/;等键逐关节增减双臂目标位置F/G切换两个夹爪开合R将目标重置为当前值。脚本内置 50 步预热阶段warmup预热期间动作强制归零之后按比例控制器P 控制输出关节速度。末端执行器控制双臂 / 单臂原始双臂版本python -m mani_skill.examples.demo_ctrl_action_ee_keyboard -e ReplicaCAD_SceneManipulation-v1 \ -r xlerobot --render-modehuman --shaderdefault -c pd_joint_delta_pos_dual_arm单臂版本python -m mani_skill.examples.demo_ctrl_action_ee_keyboard_single -e ReplicaCAD_SceneManipulation-v1 \ -r xlerobot_single --render-modehuman --shaderdefault -c pd_joint_delta_pos对应源码 demo_ctrl_action_ee_keyboard.py 与 demo_ctrl_action_ee_keyboard_single.py。双臂版本的核心是末端执行器EE坐标控制脚本内置了两连杆逆运动学求解器inverse_kinematics(x, y, l10.1159, l20.1350)大臂/小臂长度分别约 0.1159 m 与 0.1350 m按键盘改变 EE 目标坐标后实时解算肩、肘关节角实现控制末端而非关节的操作体验。双臂键盘布局如下按键功能按键功能W/S底座前进/后退A/D底座左转/右转8/U臂 1 末端 Y 增/减9/I臂 1 末端 X 增/减7/Y臂 1 关节 2 增/减0/O臂 1 pitch 增/减-/P臂 1 腕部增/减J/M臂 2 末端 Y 增/减K/,臂 2 末端 X 增/减H/N臂 2 关节 7 增/减L/.臂 2 pitch 增/减;/?臂 2 腕部增/减R/T头部电机 1 增/减F/G头部电机 2 增/减V/B切换夹爪 1 / 夹爪 2 开合X复位所有位置控制面板会实时显示 17 维关节角度底座、双臂、夹爪、头部与目标值、EE 坐标及动作速度便于观察 P 控制的跟踪效果。脚本对不同关节配置了差异化的比例增益demo_ctrl_action.py底座转向增益 0.5、夹爪 0.04 以保持平滑头部与臂关节为 1.0这保证了多自由度同时运动时的稳定性。通过 Rerun 进行相机可视化python -m mani_skill.examples.demo_ctrl_action_ee_cam_rerun -e ReplicaCAD_SceneManipulation-v1 \ -r xlerobot --render-modehuman --shaderdefault -c pd_joint_delta_pos_dual_arm对应 demo_ctrl_action_ee_cam_rerun.py。该脚本通过 Rerun SDKpip install rerun-sdk实时可视化机器人携带的相机数据。XLeRobot 的相机配置定义在 xlerobot.py 的_sensor_configs中一颗 256×256 的头部主相机head_camera_link用于工作区全局观察与两颗 128×128 的手腕相机分别挂在Right_Arm_Camera、Left_Arm_Camera上用于精细操作。脚本提供--use-rerun、--show-cameras、--debug-cameras参数可控制是否启用 Rerun、是否展示相机画面及是否输出调试信息——这对于采集仿真数据、验证视觉感知链路非常有用。演示脚本通用命令行参数所有演示脚本基于tyro解析参数见各脚本的Args数据类常用参数如下参数别名默认值说明--env-id-e各脚本不同要仿真的任务/场景 ID切换场景的核心参数--robot-uids-rxlerobot放入场景的机器人 UID支持逗号分隔多机器人--control-mode-cpd_joint_delta_pos_dual_arm控制模式见下文--render-mode无humanhuman为交互式渲染--shader无default渲染着色器default快rt-fast/rt光线追踪更真实但更慢--obs-mode-osensor_data/none观测模式sensor_data可获取相机图像--num-envs-n1并行环境数量--sim-backend-bauto仿真后端auto/cpu/gpu--seed-sNone随机种子--pause-pFalse加载后自动暂停仿真控制模式说明XLeRobot 的控制模式在 xlerobot.py 的_controller_configs中注册常见的包括pd_joint_delta_pos_dual_arm双臂关节增量位置控制本文演示默认使用每臂各 5 个关节 夹爪 底座速度控制pd_joint_pos_dual_arm双臂绝对位置控制pd_joint_delta_pos/pd_joint_pos单臂模式配合-r xlerobot_single使用更多变体pd_joint_vel、pd_joint_delta_pos_vel、pd_joint_delta_pos_stiff_body等可查看控制器配置字典。控制参数刚度/阻尼/力限在 xlerobot.py 中定义双臂关节刚度2e4、阻尼1e2、力限 250夹爪刚度 50、阻尼1e2、力限 2.8头部电机刚度1e4。这些参数与 URDF 中的关节定义一一对应是仿真手感与 sim2real 迁移的基础。在更多场景中运行切换方法与注意点结合上文的环境 ID 拼装规则将演示命令中的-e替换即可# 示例切换到 OpenCabinetDrawer-v1 任务环境 python -m mani_skill.examples.demo_ctrl_action -e OpenCabinetDrawer-v1 \ -r xlerobot --render-modehuman --shaderdefault -c pd_joint_delta_pos_dual_armOpenCabinetDrawer-v1_rt_thumb_first.png 展示了该任务环境的仿真渲染效果可供运行前直观参考几点注意事项机器人初始位姿不同场景的家具布局差异较大若机器人出生点与柜体/台面过远或发生穿模需调整场景构建器中的机器人初始位姿robot_initial_pose见 base_env.py。新机器人注册按官方文档说明对于新的机器人 ID需要先将它们添加到 ReplicaCAD 场景构建器中修改utils/scene_builder/replicacad/scenebuilder.py才能正常生成初始位姿。数据集依赖AI2THOR、Robocasa 等场景依赖各自的数据集首次运行前务必完成对应download_asset否则场景加载会失败。自定义硬件与场景适配如果使用不同硬件版本的 XLeRobot例如更换了 URDF 或关节数量变化可从以下两点入手适配见英文版 simdemos 文档修改 URDF 路径在agents/robots对应的机器人类中将urdf_path指向assets/下你自己的 URDF 文件。仓库中 xlerobot.py 即采用f{PACKAGE_ASSET_DIR}/robots/xlerobot/xlerobot.urdf的方式引用资产。调整 qpos 维度根据你的硬件配置调整qpos的大小。XLeRobot 默认是 17 维底座 3 双臂 10 头部 2 夹爪 2若更换硬件导致关节数变化需要同步修改关键帧定义xlerobot.py以及演示脚本中get_mapped_joints的关节映射关系。常见问题排查根据官方文档与源码运行演示时可能遇到以下问题link 名称不匹配若报错提示找不到某个 link请定位到报错脚本将代码中引用的 link 名称改为 URDF 中实际定义的名称例如Fixed_Jaw、Moving_Jaw及对应的_2后缀双臂版本见 xlerobot.py。碰撞检测误报如果机器人初始状态与场景物体发生异常碰撞可定位到脚本注释掉避碰avoid collision列表中冲突的物体项后再试。延伸阅读完整安装与数据下载流程getting_started/index.md场景环境实现simulation/Maniskill/envs/scenes/base_env.pyXLeRobot 机器人代理URDF、控制器、相机simulation/Maniskill/agents/xlerobot/xlerobot.py机器人模型与网格资产simulation/Maniskill/assets/xlerobot关节控制演示demo_ctrl_action.py双臂末端控制演示demo_ctrl_action_ee_keyboard.py单臂末端控制演示demo_ctrl_action_ee_keyboard_single.pyRerun 相机可视化demo_ctrl_action_ee_cam_rerun.pyVR 遥操作教程Meta Quest3getting_started/vr_sim.md【免费下载链接】XLeRobotXLeRobot: Practical Dual-Arm Mobile Home Robot for $660项目地址: https://gitcode.com/GitHub_Trending/xl/XLeRobot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表