MoCap 动作捕捉开源库教程
系列文章目录
前言
一、motion_capture_tracking
该资源库是一个 ROS 2 软件包,可接收来自各种运动捕捉系统的数据:
- VICON
- Qualisys
- OptiTrack
- VRPN
- NOKOV
- FZMotion
- Motion Analysis
对于大多数系统,有三种不同的跟踪模式可供选择:
- 通过官方软件(如 Vicon Tracker)使用独特的标记排列跟踪刚体姿势。
- 通过自定义坐标系跟踪刚体姿势,使用相同的标记排列。
- 使用自定义的坐标系到坐标系跟踪技术跟踪无标记的标记位置。
数据通过 tf2 和支持不同 QoS 设置的 /poses 主题直接发布。
该软件包最初是为 Crazyswarm 开发的,用于跟踪多达 50 个飞行机器人。
1.1 构建
要从源代码编译,请从该版本库克隆最新版本到 ROS 2 工作区,然后使用以下命令编译软件包
cd ros_ws/src
git clone --recurse-submodules https://github.com/IMRCLab/motion_capture_tracking
cd ../
colcon build
1.2 使用方法
ros2 launch motion_capture_tracking launch.py
各种选项可在 config/cfg.yaml 中进行配置。
1.2.1 Optitrack: 特定供应商说明
有两种可能的后端。
- “Optitrack "使用直接 Depacketizers 选项。它适用于所有平台,但往往与未经测试的 Motive 版本存在兼容性问题,而且不支持所有功能。
- “optitrack_closed_source" 使用官方 SDK(版本 4.1.0)(仅适用于 x64 Linux;以二进制库形式发布)
确保在 Motive 中进行了以下设置:
菜单 “编辑/设置/流媒体”:
- 启用 NatNet
- 使用 “传输类型 ”组播
- 启用无标记 Markers 和刚体
- 使用 “向上轴”: Z 轴
- 使用默认端口(1510 命令,1511 数据)
我们建议您先试用 “optitrack”,如果遇到任何问题,再切换到 “optitrack_closed_source”。
1.2.2 NOKOV: 供应商特定说明
由于 SDK 不公开,因此需要添加 SDK 并从源代码构建。
- 将 SDK 放入 motion_capture_tracking/deps/libmotioncapture/deps/nokov_sdk(例如文件 motion_capture_tracking/deps/libmotioncapture/deps/nokov_sdk/lib/libSeekerSDKClient.so)。
- 在 motion_capture_tracking/CMakeLists.txt 中,将 set(LIBMOTIONCAPTURE_ENABLE_NOKOV OFF) 更改为 set(LIBMOTIONCAPTURE_ENABLE_NOKOV ON)
使用 colcon build 重新构建
1.3 技术背景
ROS 软件包是对 libmotioncapture 和 librigidbodytracker 的封装。前者是一个 C++ 库,提供了不同运动捕捉 SDK 的统一接口,用于收集刚体的姿态信息和/或无标记点云。后者是一个 C++ 库,需要以下输入:i) 一阶动力学模型;ii) 刚体的初始姿态;iii) 每一帧的点云。它为每一坐标系输出机器人姿势的最佳估计值。
有关刚体姿态跟踪的更多信息,请参见
@inproceedings{crazyswarm,
author = {James A. Preiss* and
Wolfgang H\"onig* and
Gaurav S. Sukhatme and
Nora Ayanian},
title = {Crazyswarm: {A} large nano-quadcopter swarm},
booktitle = {{IEEE} International Conference on Robotics and Automation ({ICRA})},
pages = {3299--3304},
publisher = {{IEEE}},
year = {2017},
url = {https://doi.org/10.1109/ICRA.2017.7989376},
doi = {10.1109/ICRA.2017.7989376},
note = {Software available at \url{https://github.com/USC-ACTLab/crazyswarm}},
}
无标签标记跟踪采用的是每一帧最小成本最大流量公式的最优分配。
1.4 相关工作
如果不需要定制跟踪,这些是当前的替代方案:
- https://github.com/MOCAP4ROS2-Project (VRPN、Vicon、Optitrack、Qualisys、Technaid 各为独立软件包)
- https://github.com/ros-drivers/mocap_optitrack (仅 Optitrack;Direct Depacketizers)
- https://github.com/alvinsunyixiao/vrpn_mocap (仅 VRPN)
- https://github.com/ros-drivers/vrpn_client_ros (仅 VRPN)