ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
2016-01-01 12:22:27 -0500 | received badge | ● Nice Answer (source) |
2011-03-25 06:29:47 -0500 | received badge | ● Nice Answer (source) |
2011-03-24 02:38:59 -0500 | commented answer | Pose (rvec, tvec) from Opencv But apparently you are right in the case of the Kinect. Here (http://groups.google.com/group/openni-dev/browse_thread/thread/ba354b6bb1606cb3) Suat Gedikli wrote that in ROS points are in meters. |
2011-03-24 02:36:00 -0500 | commented answer | Pose (rvec, tvec) from Opencv I know that openni depthmap gives back coordinates for each pixel in mm. But I don't know which way ros wrapper for openni changes this coords. Maybe you find some useful information here: http://groups.google.com/group/openni-dev/browse_thread/thread/478f9167acc30759/bc6f9c1cb751b72d |
2011-03-24 01:51:35 -0500 | answered a question | Pose (rvec, tvec) from Opencv
Guess contains rvec and tvec transformed some 3d points from abstract coordinate system (that set by fidycial.yaml config and rigidly attached to fidycial markers) to the coordinate system rigidly attached to test camera. It is not in centimeters. Scale of 3d translation depends on calibration parameters of your device. I don't know what is it in the case of the Kinect.
In terms of camera coordinate system. |
2011-03-24 00:54:01 -0500 | commented answer | Does tod_training in object_recognition require fiducial markers on training images? I don't know. Ethan supports this wiki page. I like more the earlier version. |
2011-03-23 13:32:17 -0500 | answered a question | Pose (rvec, tvec) from Opencv In tod_detecting (I think we tell about this transformation) after running recognizer->match you get vector of guesses. Each guess contains PoseRT (rvec, tvec) field (aligned_pose). It is transformation from some abstract coordinate system (defined by fiducial.yaml configuration file: in this system coordinates of corners of fiducial markers must be equals described ones in config) to coordinate system of camera for test image. If you want to find projection of this guess to the test image, you should take any observation of this object from training base(recommend to choose observation with ImageId equals imageIndex from guess->imageIndices). Next you should transform 3d points related with the observation to the abstract coord. system using inverse features3d->camera->pose transformation (for example with using Tools::invert and project3dPoints). Then you should transform obtained 3d points with guess->aligned_pose and project them to the test image (for this purpose you should know intrinsics parameters of the camera, now we assume, that test and train images was photographed with the same camera; we use projectPoints function for this purpose). Let consider a case of solvePnP or solvePnPRansac:
The function returns rvec and tvec. This transformation converts objectPoints to the coordinate system of the camera such a way, that re-projection error between imagePoints and projected points after transformation would be a minimal. In other words we try to find rvec-tvec pair to minimize distance between projection (u, v) of transformed point (x,y,z) calculated on (X,Y,Z) point from objectPoints and corresponding point (x, y) from imagePoints. ki and pi are from distCoeffs, fx, fy, cx, cy are from cameraMatrix. See attached image: |
2011-03-23 07:59:59 -0500 | answered a question | Purpose of pose estimations in tod_detecting? I don't understand first part of your question. We do pose estimation in training for calculation transformation between frames. mode = xx Now tod_detecting contains two recognizers. First version of TOD (textured_object_detection package) was implemented for recognizing objects on 5 MP prosilica dataset. Later Ethan and me began to refactor this code. In result we get two versions of detection algorithms: Kinect mode and TOD mode. Kinect mode gives better results on Kinect data, TOD mode gives better results on 5MP data. |
2011-03-23 07:42:59 -0500 | received badge | ● Teacher (source) |
2011-03-23 05:14:45 -0500 | received badge | ● Editor (source) |
2011-03-23 05:13:53 -0500 | answered a question | Physical setup for collecting tod_training data?
Yes.
Yes.
No. You can use different markers (different cells count, size, etc). But you should change fiducial configuration file (fiducial.yaml) for your markers.
I think no. You should only write bag file with object rotation. |
2011-03-23 05:05:43 -0500 | received badge | ● Supporter (source) |
2011-03-23 05:04:57 -0500 | commented answer | Does tod_training in object_recognition require fiducial markers on training images? Also I recommend you to learn old version of tutorial (for example http://www.ros.org/wiki/tod_training/Tutorials/BaseCreation?action=recall&rev=17). They contain some useful information about fiducial markers and poses. |
2011-03-23 04:32:23 -0500 | answered a question | Does tod_training in object_recognition require fiducial markers on training images? I think it is impossible now. But you can modify tod_training (turn off finding fiducial markers and detection of transformation between current image and the some abstract coordinate system) :-) In tod_training we require fiducial marker(or markers) for detection transformation between different frames in bag file. For each frame we calculate transformation between the camera coordinate system and the some abstract coordinate system (where coordinates of chessboard corners are the same as in fiducial.yaml). Calculated pose is saved to Features3d->Camera->Pose. Using this information we can merge point clouds from different images to the one for example. You can use other fiducial markers (one or some chessboards or grids of circles). Parameters of your fiducial marker/markers should be in fiducial.yaml file. tod_training package contains tool for generating this file. |
2011-03-23 01:59:58 -0500 | answered a question | How to do object recognition with kinect? You can see tod_* packages (textured object detection). It gives good detection rate on Kinect data. |
2011-03-23 01:28:50 -0500 | answered a question | Pose (rvec, tvec) from Opencv rvec and tvec determine transformation between coordinate systems. rvec uniquely determines rotation matrix 3x3 (let it be named R). Transformation equation (T - transpose): (x y z)T = R*(X Y Z)T + tvec Rodrigues function from OpenCV can convert rvec to R or R to rvec. Direction of rvec vector is the same with the axis of rotation, magnitude of the vector is angle of rotation. Also OpenCV contains solvePnPRansac function in calib3d module. If you have incorrect matches you should use it. |
2011-03-22 20:06:12 -0500 | answered a question | Recording a tod_training bag Hello!
For recording bags we have our own program - tod_training image_pcl_recorder
You can launch this for the openni by running:
roslaunch tod_training record_openni.launch bag:= It writes bag file with needed topic names. Best regards, Alexander. |