I think it might be worth to create a python library that provides l
an EZRASSOR class. This would contain all of the state of the robot (world state from ai) and all of the publishers for control, then provide a clean interface for access so upstream controllers don't know about the underlying Ros pubs and subs.
rover = EZRASSOR()
rover.move(movements.FORWARD)
rover.move(movements.BACKWARD, speed=75) # out of 100%, abstract away any twist adjusting with a 100% speed scale
rover.get_battery()
rover.get_position()