ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
your TF tree is completely wrong. The slam algorithm (Hector in this case) defines the transformation from inertial frame (map) to body frame (scanmatcher_frame). Then you need to define the transformation inside your body frame (i.e. laser, base_link, base_footprint). Plus u need to use hector_imu_attitude_to_tf to define a transformation from base_stablized to base_link if i am not mistaken. Moreover you have a node "map_baselink_broadcaster" which makes no sense, if you already know the transformation from map to base_link (in this case you have used a static tf publisher to publish it) why do u need the slam algorithm?? so you need to disable that node.
At the end your TF tree should look like This: map => scan_matcher => base_link => laser => ...
about the pose_estimation, I am not sure if you can easily use it with hector_slam because that is meant to be used to fuse IMU and GPS. one thing that you can do is supplying the information that you get from hector_slam with an appropriate variance Matrix to pose_estimation so u use 2D slam data as a reliable source for your pose estimation. in this case u need to write a node to interface it...
To summarize you need to rethink what you are doing and make sure you understand pros and cons of indoor slam algorithms and outdoor localization algorithms. Then you can choose what you works the best for u
Good Luck :)