This repository contains the work-in-progress code for my Spring 2023 CS 498 Machine Perception final project, wrapped into a ROS (Robot Operating System) package. The goal of the project is to implement papers A Bayesian Formulation of Coherent Point Drift and (partially) Geodesic-Based Bayesian Coherent Point Drift for real-time deformable object shape tracking. Most of the development is first done in Python, then ported to C++ for running in real time.
- librealsense and realsense-ros (for testing with RGB-D camera stream)
- Numpy, Scipy, and ros_numpy (for running the Python ROS nodes)
- vedo (used in
bcpd.py
for visualizing results) - pickle (used in
bcpd.py
for loading recorded data)
First, clone the repository into a ROS workspace and build the package:
git clone https://github.com/jingyi-xiang/bcpd-dlo-tracking.git
catkin build
All parameters for the BCPD algorithm are configurable in launch/bcpd_tracker.launch
(only for C++). Rebuilding the package is not required for the parameter modifications to take effect. However, catkin build
is required after modifying any C++ files.
This package has been tested with a Intel RealSense D435 camera. The exact camera configurations used are provided in /config/preset_decimation_4.0_depth_step_100.json
and can be loaded into the camera using the launch files from realsense-ros
. Run the following commands to start the realsense camera and the BCPD tracking node:
roslaunch bcpd-dlo-tracking realsense_node.launch
roslaunch bcpd-dlo-tracking bcpd_tracker.launch
Recorded frames of point cloud are provided under /testing_scripts/data/frames
and can be loaded using pickle. Inside the folder, 12 frames of point cloud (000_pc.json
to 011_pc.json
) and the first 7 frames of corresponding nodes (under folder /nodes
, 000_nodes.json
to 006_nodes.json
) are provided. To test BCPD with these recorded frames, run the following commands:
cd testing_scripts
python3 bcpd.py
Additionally, we provide ROS bag files for testing with recorded RGB-D stream. The bag files can be found here. To test BCPD with these bag files, first download them and place them inside your ROS workspace. Then, run the following commands:
roslaunch bcpd-dlo-tracking replay_bag.launch
roslaunch bcpd-dlo-tracking bcpd_tracker.launch
rosbag play <path_to_bag_file>