I've created a simple two-wheeled mobile platform with a Raspberry Pi running ROS Kinetic, and an Arduino that controls motors and relays sensor data via a rosserial node. I can reliably read sensor data via rostopic and move the platform by manually publishing a standard Twist message. I also have Tf running, which takes odometry data published by the Arduino, and updates the world position.
I'm now trying to plug this into the higher-level navigation nodes, with my ultimate goal being to using SLAM to dynamically map a room and navigate within it. What should be my general strategy be to accomplish this?
I've been trying to go through the [navigation stack](http://wiki.ros.org/navigation) docs, but it's a pretty large project and a little overwhelming. Should I start with [move_base](http://wiki.ros.org/move_base) or would this ultimately not be useful for SLAM or be superseded by something else? What interface does my "base controller" need to provide? Just a subscriber to a Twist message, or something else?
I'm having trouble conceptualizing, or even testing, just with the Twist message. I want to be able to instruct my robot to "move forward 1 meter", but Twist only represents velocity, not distance. I want to create my own motion message/action that extends Twist to also include distance or time, but I feel like I'd probably be reinventing the wheel. Are there any message or action types like that?
↧