CDCPD is an implementation of Occlusion-robust Deformable Object Tracking without Physics Simulation by Cheng Chi and Dmitry Berenson.
CDCPD2 is an implementation of Tracking Partially-Occluded Deformable Objects while Enforcing Geometric Constraints by Yixuan Wang, Dale McConachie and Dmitry Berenson.
NOTE: original commit CDCPD2 paper links to is here. But the original one is hard to build.
You could try out virtual machine linked here. Password is 123456. You could run demos under ~/catkin_ws/src/cdcpd/cdcpd_ros/scripts. Note that not all data is downloaded. Now only rope_edge_cover_2.bag is downloaded under ~/catkin_ws/src/cdcpd/cdcpd_ros/dataset. If you would like to see more demoes, please download here.
- Environment:
- Ubuntu 20
- ROS Noetic
- apt dependencies
- other dependencies
Please refer to ROS installation
Run sudo -u USER_NAME ./install_for_noetic_20.sh under install_scripts. It will install all dependency listed above in ~/.local.
NOTE: remove packages you have had under external.
Please refer to catkin. NOTE: using catkin build instead of catkin_make
Gurobi is a proprietary optimization package that we use. Please obtain a free academic license.
cd ~/catkin_ws/src/
mv ~/cdcpd ~/catkin_ws/src
Once you've cloned, it might be a good idea to rosdep install -r --from-paths cdcpd -y to get any ROS packages you might be depending on. Then run catkin build at any folder inside catkin_ws.
To run the demo on offline data, you will need to download some dataset.
Then run roscore, rosrun cdcpd cdcpd_offline, rosrun tf static_transform_publisher 0 0 0 0 0 0 map kinect2_rgb_optical_frame 50, and rviz concurrently.
NOTE: for now it only supports running CDCPD2 on offline zip files. There are still TODOs as below
- enable easy switch between CDCPD and CDCPD2
- switch between real and simulation dataset easily
- add more zip data and support offline bag file
My own running result is here, which includes MP4 files.
Q: It runs without error but doesn't seem to be processing images, help!
A: We use a time synchronizer with "exact" time policy (the deafult). Therefore if your depth, color, and camera_info messages do not have exactly the same time stamps, the synchronizer will ignore it and nothing will happen.