Using an IMU on vertical surface for heading estimation update
My situation: I am working on a robot that is able to drive on a vertical surface using magnet wheels. I am trying to get to robot to navigate autonomously but I only have odometry and an IMU available now. I know navigating using only sensors that are drift-prone is never a good idea but further sensors will be added later to assist with global position.
My question: Is there a way to exploit that the robot is driving on a vertical surface and hence the IMU can give a fairly precise heading if the robot is at a standstill?
I have read up on robot_pose_ekf
and robot_localization
but I can't seem to find a way to use these for this specific situation. I could implement them as they are intended but I feel like i would be missing an opportunity to exploit the fact that it is driving on a vertical surface.
What I am looking for: Any help is much appreciated! Full fledged solutions are of course welcome, but I am also looking just for ideas as to how I could approach this. What I have in mind so far is that the robot gets a pose from the IMU whenever it is standing still and then updates the heading of the robot accordingly. But I would rather that it also was able to do some kind of loop-closure-like update of the position according to the heading given by the IMU, but i realize that it might be wishful thinking that such a node exists for my specific situation.