ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Basic Question Mobile Robot cmd_vel

asked 2011-07-13 01:36:02 -0500

davo gravatar image

updated 2011-07-16 13:04:26 -0500

kwc gravatar image

I'm on cturle, base is maverick and robot node is arm lucid and cturtle with an arduino as the actual robot controller.

My physical robot is a small cheap 4 wheel drive using skid steering,

I'm limited physically so my mobile robot is is the apartment, which is not small but tricky, with a bad floor surface for odometry and some areas's of magnetic variance....which I've got managed to a point. And some pretty tight doorways.

The robot has a compass and odometers and a sharp ir. I am using a crude gyro setup to detect where the compass goes off and the robot is not actually turning via the gyro.

But upshot is that what works best is driving to bearing and distance in straight lines and stop and skid turn to new bearing.

So I have my robot programmed from the arduino to follow waypoints. The surface magnetics motors/odometry are not upto variable speed turns on the go...I tried and lost that one.

From a ROS perspective I've got odom and laser scan working and sending the fixed transform base link -> base scan

So manually driving the arduino around things look quite good in rviz.

I have n't started mapping yet as I'm following the tutorials carefully.

I'm just writing (plagerising) a joystick teleop package and starting to hit some fundamentals. For teleop I can interface quite easily to the beagle/ board arduino, but I'm concerned I'm on the wrong path for move_base cmd_vel base_controller

Could I please just make sure I understand the output of cmd_vel.....

x and z I'm taking it that x is velocity and z is rate of angle change or is this x distance and bearing......

If the former is correct (what I fear) velocities how do I obtain/convert manage this over site in my work? waypoint data and not screw the nav stack ? The arduino side of my robot is not dumb and has taken quite alot of work to over come some issues.

Sorry to ask this one, I've been searching for a while.


edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted

answered 2011-07-13 03:42:24 -0500

If you take a look at the definition of the geometry_msgs/Twist message, it's fairly straightforward. Generally, the coordinates are aligned such that linear/x is the forward/backward direction for your robot,. Since your robot is likely non-holonomic, you can probably ignore linear/y and linear/z. Angular/z is in-plane rotation, and you can ignore x and y.

Linear velocities are generally in meters/s, and angular velocities in radians/s.

edit flag offensive delete link more

answered 2011-07-13 10:31:46 -0500

davo gravatar image

thanks.....I can see the twists....

I can use the base to set a bool drive true false and keep driving would n't need to disturb the arduino code would prefer an odometer distance on the robot though, much safer....

is there anyway of getting a x y coordinate or vector (angle, distance) from the nav stack or "planner" ?


edit flag offensive delete link more

Question Tools


Asked: 2011-07-13 01:36:02 -0500

Seen: 1,548 times

Last updated: Jul 13 '11