Proposing addition of map frame despite the fact that the map is a square.
Odometry sensor xy data is initialized at arbitrary values, so robot starting position is not visualized correctly relative to vanilla RVIZ grid, regardless of a hard reset of robot states in EKF. Note RVIZ grid squares are scaled to be same size as robot tiles.
Explored 2 ways of hard resetting robot state: 1) setting initial condition param in robot_localization yaml file and 2) setting x, y, theta in RVIZ, calling /set_pose service which is baked into robot_localization. Both trigger the same function in robotlocalization:
`void FilterBase::setState(const Eigen::VectorXd & state) {state = state;}`
After a hard reset of the state, the next odometry sensor readings nullify the hard reset position. For example, if the robot pose is set in RVIZ
and the next odometry reading has a pose of x = -0.018, y = 0.456, the robot position will switch to this next odometry reading instead of starting in the "correct" starting position and adding changes in odometry to the hard reset position.
A second EKF instance will be needed to publish the transform from map to odom frame. The particle filter could also publish this transform?
Testing Approach
Can be tested using visualization methods in RVIZ.
Complete when the robot intial position in RVIZ can be set and robot correctly tracks state changes relative to RVIZ grid.
Documentation
Here is documentation for setting the initial state parameter and the set_pose service
Description
Proposing addition of map frame despite the fact that the map is a square.
Odometry sensor xy data is initialized at arbitrary values, so robot starting position is not visualized correctly relative to vanilla RVIZ grid, regardless of a hard reset of robot states in EKF. Note RVIZ grid squares are scaled to be same size as robot tiles.
Explored 2 ways of hard resetting robot state: 1) setting initial condition param in robot_localization yaml file and 2) setting x, y, theta in RVIZ, calling /set_pose service which is baked into robot_localization. Both trigger the same function in robotlocalization: `void FilterBase::setState(const Eigen::VectorXd & state) {state = state;}`
After a hard reset of the state, the next odometry sensor readings nullify the hard reset position. For example, if the robot pose is set in RVIZ
[rviz2-1] [INFO] [1709544306.231756313] [rviz2]: Setting estimate pose: Frame:odom, Position(1.24489, 1.25632, 0), Orientation(0, 0, -0.929034, 0.369995) = Angle: -2.38358
and the next odometry reading has a pose of
x = -0.018, y = 0.456
, the robot position will switch to this next odometry reading instead of starting in the "correct" starting position and adding changes in odometry to the hard reset position.Testing Approach
Documentation