仓库有什么
-
适用于特罗森人工智能机器人的MuJoCo XML模型:
-
WidowX 人工智能(单臂操纵器)
-
固定式AI(双臂固定平台)
-
移动式人工智能(双臂移动机械手机)
-
-
用于笛卡尔末端效应控制的差分逆动运动控制器
-
示范脚本的取景和目标
-
运动捕捉与联合控制模拟环境
-
用于模仿学习的数据采集和可视化工具
安装
bash
#克隆仓库
git clone https://github.com/TrossenRobotics/trossen_arm_mujoco.git ~/trossen_arm_mujoco
#创建并激活Conda环境
conda create --name trossen_mujoco_env python=3.10
conda activate trossen_mujoco_env
#安装包及依赖
cd ~/trossen_arm_mujoco
pip install -e .
#验证安装 若看到机器人执行 pick-and-place 动作,则安装成功
python3 trossen_arm_mujoco/scripts/wxai_pick_place.py
Assets
所有机器人模型均位于 trossen_arm_mujoco/assets中
资源文件夹包含按机器人类型组织的所有机器人模型,以及网格文件和场景配置
trossen_arm_mujoco/assets/
├── meshes/ # STL files for robot components
├── wxai/
│ ├── wxai_base.xml # WidowX AI base model
│ ├── wxai_follower.xml # WidowX AI follower arm with camera
│ ├── scene.xml # Basic visualization scene
│ ├── scene_wxai_pick_place.xml # Pick-and-place scene
│ └── scene_wxai_follow_target.xml # Target following scene
├── stationary_ai/
│ ├── stationary_ai.xml # Dual-arm stationary platform
│ ├── stationary_ai_mocap.xml # Mocap-enabled model with weld constraints
│ ├── scene.xml # Basic visualization scene
│ ├── scene_stationary_ai_pick_place.xml # Pick-and-place with handoff
│ ├── scene_joint.xml # Joint-controlled setup
│ └── scene_mocap.xml # Motion capture-controlled setup
└── mobile_ai/
├── mobile_ai.xml # Mobile base + dual-arm
├── scene.xml # Basic visualization scene
└── scene_mobile_ai_pick_place.xml # Mobile pick-and-place
WidowX AI - 单臂操纵器:
-
6-DOF 臂:
wxai_base.xml -
带摄像头的6-DOF臂:
wxai_follower.xml
固定式AI - 双臂固定平台:
- 共享基座上的双臂WXAI
移动式人工智能 - 移动操控器:
-
差分驱动移动底座
-
双WXAI臂
运动捕捉与关节控制环境
动作捕捉 (stationary_ai/scene_mocap.xml):
-
使用预定义的mocap机身,根据脚本端效应器运动来移动机器人手臂
-
用于定义任务轨迹和生成参考动议
关节控制 (stationary_ai/scene_joint.xml):
-
为每个接头使用位置控制器,类似于实际机器人设置
-
用于重放录制的轨迹,并具有逼真的关节水平控制
-
实现在渲染输出中可见的模拟图像,无需移动图像
Demo
WidowX AI - 单臂操纵器:
bash
python3 trossen_arm_mujoco/scripts/wxai_pick_place.py
固定式AI - 双臂固定平台:
bash
python3 trossen_arm_mujoco/scripts/stationary_ai_pick_place.py
移动式人工智能 - 移动操控器:
bash
python3 trossen_arm_mujoco/scripts/wxai_follow_target.py
目标跟踪演示:
bash
python3 trossen_arm_mujoco/scripts/wxai_follow_target.py
模块
trossen_arm_mujoco 文件夹包含运行仿真、执行策略、录制行程和可视化结果所需的所有 Python 模块
模拟
-
ee_sim_env.py
-
负载
stationary_ai/scene_mocap.xml(基于动作捕捉的控制)。 -
武器通过跟随指挥位置移动到MOCAP机身来移动。
-
用于生成脚本策略,以预定义的方式控制机器人的手臂。
-
-
sim_env.py
-
负载
stationary_ai/scene_joint.xml(位置控制接头)。 -
使用联合控制器而不是模卡器。
-
重播来自 ee_sim_env.py 的联合轨迹,实现在渲染输出中可见的 mocap 机身,实现清晰的仿真视觉效果。
-
脚本策略执行
-
protemed_policy.py
-
为机器人手臂设计预脚本动作,以执行拾取物体等任务。
-
利用运动捕捉体生成平滑的运动轨迹。
-
在当前设置中,策略旨在拾取一个红块,并在环境中随机设置块位置。
-
数据收集
数据收集过程通过两个阶段模拟机器人行为:由mocap驱动的录制阶段,然后是一个用于观察的清晰回放阶段。 该管道可让您在笛卡尔空间中定义机器人移动,捕捉相应的关节轨迹,然后采集逼真的传感器数据
运动捕捉
运动捕捉(动捕)刚体
运动捕捉刚体是虚拟刚性刚体 ,通过刚性约束固定在每条机械臂的最终关节 link_6 上。该设计支持直观的运动定义,并自动完成逆运动学求解
刚性约束特性
动捕刚体通过焊接约束 刚性固连于 link_6。当动捕刚体运动时,仿真器会保证机器人末端执行器与其同步跟随。
笛卡尔空间控制
无需手动下发关节角度指令,只需通过脚本策略在三维空间(x、y、z)移动动捕刚体,机械臂各关节会自动调整姿态以实现跟随。
关节状态记录
在末端执行器跟踪动捕刚体的过程中,仿真器会记录每个时间步所需的关节构型,这些数据将被保存为动作轨迹。
在关节控制环境中回放
录制好的关节轨迹会在第二个仿真场景中回放,该场景满足以下条件:
- 移除动捕刚体(例如在
stationary_ai/scene_joint.xml中) - 机械臂直接通过关节位置指令控制
- 采集观测数据时不会引入动捕相关的干扰信息
回放过程中:
- 采集多视角相机图像
- 记录关节状态反馈
- 记录奖励函数值及其他元数据
流程
1.生成数据
运行 record_sim_episodes.py
启动由 mocap 驱动的仿真 ee_sim_env.py。
执行一份有剧本的笛卡尔政策。
保存生成的联位轨迹。
立即在一个干净的关节控制模拟 sim_env.py 中重放轨迹以收集观测结果。
从4个不同角度传输摄像头
执行期间的固定立场
行动(输入联合职位)
表示成功或失败的奖励值
bash
python trossen_arm_mujoco/scripts/record_sim_episodes.py \
--task_name sim_transfer_cube \
--data_dir trossen_arm_mujoco/data/sim_transfer_cube \
--num_episodes 5 \
--onscreen_render
1.保存数据
所有观测和元数据均以 .hdf5 格式保存,每集包含一个文件
~/trossen_arm_mujoco/trossen_arm_mujocodata/sim_transfer_cube/episode_0.hdf5
~/trossen_arm_mujoco/trossen_arm_mujocodata/sim_transfer_cube/episode_1.hdf5
2.可视化数据
使用 wisual_eps.py 脚本将剧集转换为视频:
bash
python trossen_arm_mujoco/scripts/visualize_eps.py \
--data_dir trossen_arm_mujoco/data/sim_transfer_cube \
--output_dir trossen_arm_mujoco/data/output/videos \
--fps 50
3.模拟到真实
要将该集部署在真实硬件上,请运行:
bash
python trossen_arm_mujoco/scripts/replay_episode_real.py \
--data_dir trossen_arm_mujoco/data/sim_transfer_cube \
--episode_idx 0 \
--fps 10 \
--left_ip 192.168.1.5 \
--right_ip 192.168.1.4