This software tool could be used to obtain robust 6d poses of objects with 3d point cloud models in the presence of noisy segmentation data
By Chaitanya Mitash, Abdeslam Boularias, Kostas Bekris (Rutgers University).
In Proceedings of British Machine Vision Conference (BMVC), Newcastle, England, UK, 2018
To cite the work:
@article{mitash2018robust,
title={Robust 6D object pose estimation with stochastic congruent sets},
author={Mitash, Chaitanya and Boularias, Abdeslam and Bekris, Kostas},
journal={arXiv preprint arXiv:1805.06324},
year={2018}
}
- OpenCV
- PCL
- Download the repository.
- mkdir build
- cd build
- cmake ../
- make
- RGB and depth images
- Per-pixel object class probability (scaled to range 0-10000 and stored as uint16). Can be set as a constant mask if probability is not available.
best_pose_candidate_{object_name}
6D pose of the object (3 rows of the transformation matrix) stored in row-major order.best_pose.ply
andscene.ply
visualization of the transformed object model and the scene.
- Set the
repo_path
in filesmodel_preprocess.cpp
andstocs_match_one_object.cpp
- Preprocess the 3d model
./build/model_preprocess "024_bowl"
- Run pose estimation
./build/stocs_single "{path_to_repo}/examples/ycb/" "024_bowl"
-
Change the following parameters in the file
model_preprocess.cpp
float voxel_size = 0.005;
-
Change the following parameters in the file
stocs_match_one_object.cpp
std::vector<float> cam_intrinsics = {615.957763671875, 308.1098937988281, 615.9578247070312, 246.33352661132812};
float depth_scale = 1/8000.0f;
- Change the following parameters in the file
model_preprocess.cpp
float voxel_size = 10;
float normal_radius = 5;
float model_scale = 1.0f/1000;
- Change the following parameters in the file
stocs_match_one_object.cpp
std::vector<float> cam_intrinsics = {572.4114, 325.2611, 573.57043, 242.04899};
float depth_scale = 1/1000.0f;