meiqua / pose_refine

cuda icp for 6D pose estimation
BSD 2-Clause "Simplified" License
96 stars 25 forks source link

Multiple ICPs #4

Open aditya2592 opened 4 years ago

aditya2592 commented 4 years ago

Hi,

I wanted to understand how to you use the code to do multiple ICPs at once. I tried to look at test.cpp but that seems to be doing one ICP if I am not wrong

meiqua commented 4 years ago

That's right for one ICP. Unlike rendering multiple poses, multiple ICPs may have different number of points, so I decided to use cuda per thread stream. A simple usage can be found here.

aditya2592 commented 4 years ago

Thanks. If I want to run the code on a dataset of images, will the function process_batch in this file be the best one to refer to?

meiqua commented 4 years ago

process_batch here is a test for multiple initial poses ICP around one targeted pose so we can jump out of the local minimum a little bit. You can refer to it if having similar problems.

aditya2592 commented 4 years ago

What is the use of the below flag?

#ifdef USE_PROJ
meiqua commented 4 years ago

switch between projective or nearest neighbor association

wly2020-robot commented 2 years ago

Thanks. If I want to run the code on a dataset of images, will the function process_batch in this file be the best one to refer to?

Hi! Mat K = (Mat_(3,3) << 572.4114, 0.0, 325.2611, 0.0, 573.57043, 242.04899, 0.0, 0.0, 1.0); Mat Rren = (Mat(3,3) << 0.34768538, 0.93761126, 0.00000000, 0.70540612, -0.26157897, -0.65877056, -0.61767070, 0.22904489, -0.75234390); Mat tren = (Mat(3,1) << 0.0, 0.0, 300.0); Mat tren2 = (Mat(3,1) << 20.0, 20.0, 320.0);

Mat K = (Mat_(3,3) << 572.4114, 0.0, 325.2611, 0.0, 573.57043, 242.04899, 0.0, 0.0, 1.0); Mat Rren = (Mat(3,3) << 0.04994138, 0.98619508, -0.15787705, 0.72859222, -0.14409367, -0.66961957, -0.68312458, -0.08158627, -0.7257303 ); Mat tren = (Mat(3,1) << 74.90934988, -156.41012715, 1051.41730131);

Mat K = (Mat_(3,3) << 572.4114, 0.0, 325.2611, 0.0, 573.57043, 242.04899, 0.0, 0.0, 1.0); Mat Rren = (Mat(3,3) << 0.04994138, 0.98619508, -0.15787705, 0.72859222, -0.14409367, -0.66961957, -0.68312458, -0.08158627, -0.7257303 ); Mat tren = (Mat(3,1) << 74.90934988, -156.41012715, 1051.41730131);

How did you get these initial data matrices?

Are these the camera's internal parameter matrix and external parameter rotation matrix and translation matrix?