odometry not correctly working with humanoid_localization
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:
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?
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).
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..
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).