odometry not correctly working with humanoid_localization

asked 2014-06-27 09:39:28 -0500

xuningy gravatar image

updated 2014-06-27 13:50:02 -0500

I have humanoid_localization (and only using humanoid_localization as I am looking to only utilize odometry and localization for a rover). I have the following setup:

  • Hokuyo HRG-o4LX-UG01 Laser RangeFinder
  • Kinect
  • no IMU
  • Octomap loaded and ready to go
  • Humanoid_localization compiled

However, I get that the Odometry odomPose at (0,0,0)

I believe this is something wrong with configuring the transforms between all my frames. Given that I have the above sensor and no footprint to torso transform I am NOT sure what to adjust such that the odometry works correctly.

Since I have no footprint to torso transform frames, I tentatively set:

<param name="target_frame_id" value="/odom"/>
<param name="odom_frame_id" value="/odom"/>
<param name="base_footprint_id" value="/base_link"/>

and my /tf tree looks like: http://speedy.sh/aaCeb/frames.pdf

What am I missing here? Why is the odomPose always return (0,0,0)?

EDIT: I realized that Im doing a static transform from odom -> base_link. I dont think humanoid_localization provides an odom -> base_link transform... does anyone suggest laser_scan_matcher for this?

edit retag flag offensive close merge delete


Yes, you will definitely need a working odometry source for humanoid_localization, not a static transform. If you have a wheeled rover, the platform should provide odometry (dead reckoning or similar).

AHornung gravatar image AHornung  ( 2014-06-30 04:18:41 -0500 )edit

Yep.Solved by adding Visual Odometry tf's to my transforms. Worked perfectly. Thanks! EDIT: But this makes me wonder what is the role of the LRF in the package... is it suggested that another odometry source IS the LRF, and two odometry sources are reconciled in humanoid_localization? Please clarify..

xuningy gravatar image xuningy  ( 2014-07-02 13:54:08 -0500 )edit

Odometry usually comes from wheel encoders or kinematics, that's the assumption in humanoid_localization. A LRF is not an odometry source but with a fixed map will give you absolute references in the world (in addition to odometry that is subject to drift and only used incrementally).

AHornung gravatar image AHornung  ( 2014-07-04 07:18:25 -0500 )edit