Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

asked 2018-01-26 10:30:39 -0500

Cerin gravatar image

Plugging in a mobile platform to higher level navigation nodes

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 docs, but it's a pretty large project and a little overwhelming. Should I start with 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?

Plugging in a mobile platform to higher level navigation nodes

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 docs, but it's a pretty large project and a little overwhelming. Should I start with 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?