ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
You have some misunderstandings.
At startup AMCL loads an initial pose that defaults to (0, 0, 0) from the param server, as detailed here. That is when AMCL initializes the particle filter.
The odometry is not used as you have stated. The initialpose is not a nav_msgs/Odometry, but a geometry_msgs/PoseWithCovarianceStamped. The AMCL will subscribes to that topic and reinitialize the particle filter if a pose is published on that topic.
You are wrong assuming odometry is not required. AMCL is very dependent on it, but it uses the odometry from your TF tree, not from a topic, as shown here.
The source code can be found here.