本项目是一个用 Python 实现的 ROS 节点程序,实现了以下功能:
https://github.com/pnmocap/mocap_ros_py python代码的
-
首先,从 Noitom Mocap 软件获取人体运动数据(BVH 格式)。
-
然后,将 BVH 数据转换为与机器人关节模型对应的数据。此步骤称为 重定向。
目前支持宇树科技 H1 模型机器人的 Retargeting 。
-
最后,将转换后的数据发送到仿真器节点以驱动机器人模型。
除了驱动机器人模型外,它还可以驱动 TF 模型(火柴人具有与真人相同的骨骼结构)。
当与仿真仿真器节点的项目相结合时,可以实现从 Noitom Mocap 软件获取数据并用于驱动机器人的功能。
下图是每个节点的数据流向:
-
Noitom Mocap 软件:Noitom 公司提供专业的动作捕捉软件(如 Axis Studio、Hybrid Data Server 等),负责提供基于真实人体的动作捕捉数据。
请联系 info@noitom.com
-
mocap_ros_py:这个项目。用 Python 实现的 ROS 节点程序。它从 Noitom Mocap 软件中检索数据。重定向后,它将数据发送到模拟器以驱动机器人模型。或者,它可以直接发送 BVH 数据来驱动 TF 模型 (stickman)。
-
mocap_ros_cpp:它与 mocap_ros_py 具有相同的功能,但它是在 C++ 中实现的。
-
mocap_ros_urdf:机器人仿真器,监听来自mocap_ros_py或mocap_ros_urdf的数据并驱动机器人。
文件结构
项目 | 描述 |
---|---|
自由/ | 它包括各种 CPU 架构的动态库文件。此库提供从 Axis Studio 获取运动捕捉数据的接口函数,还封装了将 BVH 数据转换为 URDF 格式的功能。librobotapi |
img/ | 它包含本说明文档中使用的图像。 |
unitree_h1/ | 它存储 Unitree Technology H1 模型的重定向配置文件。 |
README.md | 中文自述 |
README_en.md | 英文自述 |
mocap_robotapi.py | 它封装库以从 Axis Studio 获取运动捕捉数据。同时,它提供了将 BVH 数据转换为符合 URDF 规范的 JSON 数据的功能。librobotapi |
requirements_ros1.txt | 对于 ROS 1 环境,本项目依赖的 Python 库。分享 |
requirements_ros2.txt | 对于 ROS 2 环境,本项目依赖的 Python 库 .分享 |
mocap_to_robot_ros1.py | 在 ROS 1 环境中,作为 ROS 节点,本项目调用库将 BVH 数据转换为 URDF 格式的 JSON 数据。然后,它将 type 的 data 发布到 topic 中,以驱动机器人模型。mocap_robotapi JointState /joint_states |
mocap_to_robot_ros2.py | 在 ROS 2 环境中,功能与 相同。mocap_to_robot_ros1.py |
mocap_to_stickman_ros1.py | 在 ROS 1 环境中,作为 ROS 节点,它调用库将数据类型的原始 BVH 数据发布到 topic 中,驱动机器人的棒状图模型。mocap_robotapi Joy /remoter/action_list |
mocap_to_stickman_ros2.py | 在 ROS 2 环境中,其功能与脚本的功能相同。mocap_to_stickman_ros1.py |
启动步骤
先决条件
- 首先,找到一台 Windows PC,安装 Axis Studio 软件,并完成配置。
- 其次,找到一台 Linux PC 并安装 ROS 环境。(ROS 1 或 ROS 2 都是可以接受的。
- 根据是 ROS 1 还是 ROS 2 环境,启动对应的 simulation emulator 节点。有关详细信息,请参阅:mocap_ros_urdf。
- 根据需要驱动的模型是 TF 还是 robotmodel,启动对应的 ROS 节点。
下载并安装此项目
登录安装了 ROS 的 Linux PC,下载此项目,并根据 ROS 环境安装依赖的软件包。
<span style="background-color:#f6f8fa"><span style="color:#1f2328"><span style="color:#1f2328"><span style="background-color:#f6f8fa"><code>git clone https://github.com/pnmocap/mocap_ros_py.git
cd mocap_ros_py
pip3 install -r requirements_ros1.txt
or
pip3 install -r requirements_ros2.txt
</code></span></span></span></span>
配置动作捕捉软件:Axis Studio
最新一代的动作捕捉软件支持 Perception Neuron Studio 和 Perception Neuron3 (Pro) 动作捕捉产品。有关更多信息,请参阅 Noitom Company 的官方网站。
启动 Axis Studio 并打开运动数据文件
此时,您可以看到 Axis Studio 中的 3D 模型在移动,如下图所示:
配置 BVH 广播
打开设置对话框,选择 BVH Broadcasting 并启用它:
在“本地地址”中填写运行 Axis Studio 软件的 Windows 计算机的 IP 地址,在“目标地址”中填写运行 ROS 节点的 Linux 计算机的 IP 地址。注意,您需要填写局域网 IP 地址,而不是像 127.0.0.1 这样的环回 IP。
对于红框内的其余部分,您需要严格如图所示填写。
启动并配置 Simulation Emulator 节点
这里使用的 ROS URDF 模型是宇树科技的 H1 机器人模型。
请按照文档中的描述启动和配置仿真器节点程序:https://github.com/pnmocap/mocap_ros_urdf.git。
启动此 ROS Node 程序
将 URDF 的相应文件复制到工作区。retarget.json
<span style="background-color:#f6f8fa"><span style="color:#1f2328"><span style="color:#1f2328"><span style="background-color:#f6f8fa"><code>cp -r path/to/mocap_ros_py/unitree_h1/retarget.json mocap_ros_py/retarget.json
</code></span></span></span></span>
您可以根据需要选择驱动 TF 模型或机器人模型。
您只能选择两者之一。
启动 TF 数据节点
<span style="background-color:#f6f8fa"><span style="color:#1f2328"><span style="color:#1f2328"><span style="background-color:#f6f8fa"><code>cd path/to/mocap_ros_py
python mocap_to_stickman_ros1.py
or
python mocap_to_stickman_ros2.py
</code></span></span></span></span>
启动 RobotModel 数据节点
<span style="background-color:#f6f8fa"><span style="color:#1f2328"><span style="color:#1f2328"><span style="background-color:#f6f8fa"><code>cd path/to/mocap_ros_py
python mocap_to_robot_ros1.py
or
python mocap_to_robot_ros2.py</code></span></span></span></span>