The Ros package to track and get position in world of the selected object. Written on Python Opencv with SIFT + Homography + PnP + blur detector.
Run:
roslaunch image_pose_estimation_ros pose_estimation.launch
key "i" - select image
key "s" - save image
key "q" - exit
image_raw (sensor_msgs/Image): Raw image stream from the camera driver.
camera_info (sensor_msgs/CameraInfo): Camera metadata.
find_objectgeometry_msgs/PoseStamped): Position of the found object relative "map_id"
tf2 (geometry_msgs/TransformStamped): Tf2 pose of find object
find_object/image (sensor_msgs/Image): Debug image with draw object.
~rate (float, default: 10)
Frame rate of node. If rate <= 0, work without delay
~blur_threshold (int, default: 300)
Filter of blur detector. The higher the value, the more sensitive the filter.
~min_match_count (int, default: 10)
Value of SIFT detector. The lower the value, the more sensitive the filter.
~camera_name (string, default: "camera")
Name of camera.
~frame_id (string, default: "object")
Name of find object.
~map_id (string, default: "map")
frame id relative to which pose_stamped is published .
~size_image (float, default: 0.1)
The width of the image in meters.
~show_image (bool, default: true)
Uses a known image.
~use_image (bool, default: false)
Show image in window.
~image_path (string, default: "camera")
The path to known image.
~max_dist (float, default: "5.0" )
Maximum distance (meter) of find object (need for filter).