Body Tracking with ROS 2

The ROS 2 wrapper offers full support for the Body Tracking module of the ZED SDK.

The Body Tracking module can be configured to use one of the available detection models:

MODELDescription
HUMAN_BODY_FASTKeypoints based, specific to human skeleton, real time performance even on NVIDIA® Jetson™ or low end GPU cards
HUMAN_BODY_MEDIUMKeypoints based, specific to human skeleton, compromise between accuracy and speed
HUMAN_BODY_ACCURATEKeypoints based, specific to human skeleton, state of the art accuracy, requires powerful GPU

The Body Tracking module can be configured to use one of the available body formats:

FORMATDescription
BODY_1818 keypoints model. Basic Body model
BODY_3434 keypoints model. Body model, requires body fitting enabled
BODY_3838 keypoints model. Body model, including feet simplified face and hands

The result of the detection is published using a new custom message of type zed_interfaces/ObjectsStamped defined in the package zed_interfaces.

Enable Body Tracking #

Body Tracking can be started automatically when the ZED Wrapper node starts by setting the parameter body_tracking.bt_enabled to true in the file common.yaml.

It is also possible to start the Body Tracking processing manually by calling the service ~/enable_obj_detwith the parameterTrue`.

In both cases, the Body Tracking processing can be stopped by calling the service ~/enable_obj_detwith the parameterFalse`.

See the services documentation for more info.

Body Tracking results in RVIZ 2 #

To visualize the results of the Body Tracking processing in Rviz2 the new ZedOdDisplay plugin is required. The plugin is available in the zed-ros2-examples GitHub repository and can be installed following the online instructions.

📌 Note: the source code of the plugin is a valid example about how to process the data of the topics of type zed_interfaces/ObjectsStamped.

Parameters:

  • Topic: Selects the body tracking topic to visualize from the list of available images in the combo box.
  • Depth: The depth of the incoming message queue.
  • History policy: Set the QoS history policy. Keep Last is suggested for performance and compatibility.
  • Reliability Policy: Set the QoS reliability policy. Best Effort is suggested for performance and compatibility.
  • Durability Policy: Set the QoS durability policy. Volatile is suggested for compatibility.
  • Transparency: the transparency level of the structures composing the detected bodies.
  • Show skeleton: enable/disable the visualization of the skeleton of the detected persons.
  • Show Labels: enable/disable the visualization of the label.
  • Show Bounding Boxes: enable/disable the visualization of the bounding boxes of the detected bodies.
  • Link Size: the size of the bounding boxes’ corner lines and skeleton link lines.
  • Joint Radius: the radius of the spheres placed on the corners of the bounding boxes and on the skeleton joint points.
  • Label Scale: the scale of the label of the bodies.