Thinking in ROS - Uncomfortable but it makes sense

After three years of programming Carl, I feel comfortable knowing what he will do when I ask of him.

In ROS, I don’t even know what to ask.

For example, I know that Carl is most accurate at 150DPS.

I don’t know how fast 150DPS is without referring to my notes, but I know Carl can wander in my little 5 by 6 foot office and I have time to look away without worrying about him crashing or face planting.

I know that the GoPiGo3 default “speed” is 300DPS. That is really zipping along, AND Carl will face-plant if told to stop from that speed.

I once figured out that asking for more than 360DPS doesn’t make Carl go any faster, but at that speed I feel like he is going to break something.

I watch videos of other people’s robots zipping around in their large spaces, and think what a whimp Carl is, but it really is that I found out that I am comfortable with a “speed” of 150DPS even though I have no idea how fast that is.

Looking at my “Carl’s Spec Sheet” and seeing that 150DPS is 3.25 inches per second or 82.6mm per second, those numbers do not register for me to know how fast Carl will go.

Carl’s “Specification”

Speed	2.6 in/sec at 120 DPS
        3.25 in/sec 82.6mm at 150 DPS (myconfig)
        6.4 in/sec at 300 DPS (default),
        7.7  in/sec at 360 DPS (max for  straight travel)

So today I get to the HandsOnROS chapter that says tell your robot to turn at 1 radian per second or drive at 1 meter per second. Now I have absolutely no sense of how fast 1 meter per second is, but boy did Dave go zipping across the room faster than I could type the command to stop him.

I grabbed him by the ears and lifted him off the floor with one hand while fumbling to find which terminal window I had pre-typed the “stop” command.

It really does make more sense to talk about speed in meters per second or inches per second across the floor, than degrees per second of the wheels are rotating, but I have no basis to know what Dave is going to do when I ask, nor what to even ask.

P.s. 0.1 m/s and 1 rad/s are going to be ROSbot Dave’s new “defaults”


FYI (to help visualize)

1 meter = just a smidge more than a yard

1 cm = slightly more than 1/3 inch.

Millimeters are just like 1/16th’s of an inch, though a smidge smaller if you want to be picky.

The problem is not metric vs English, the problem is familiarity with speeds.

I know what a baseball hitting my nose at 60 mph feels like.

I know what 23 miles per hour feels like because it is the speed limit in my neighborhood.

Do I know how fast I run to the bathroom when duty calls, or how fast I run when my wife says “ouch” in another room?

I know what “150 Degrees Per Second” looks like because that is how fast Carl ambles across the floor.

I had no clue what any of these would look like in my office:

  • 1 meter per second or 1 yard per second,
    (luckily neither Carl nor Dave can go that fast as it turns out)

  • 30 cm per second or 1 foot per second,
    (Turns out these are around max speeds for GoPiGo3 bots before crash and break)

  • 10 cm per second or 4 inches per second
    (Turns out this is easy to type - 0.1 m/s and is a bit sprightly at 180DPS but no robots get hurt)

  • 3 cm or 1 inch per second
    (Turns out it will take Dave all week to cross the office at this rate)

  • 1cm per second or roughly 1/2 inch per second
    (Dave appears a bit timid - lurching very slowly forward)

  • 1 mm per second or roughly 1/16 inch per second
    (Sneaky Dave doesn’t appear to be moving, but when you check back later he’s gone)

At this point of my learning, I had to tell ROS to tell the robot how fast to go, and I had no clue how fast I would feel comfortable with Dave “speeding” across the floor. AND the book was telling me to type in 1 m/s, which no indoor robot should ever be told to go!


After chasing after Dave all morning, righting his face-plants, and adding an audio speaker on the back to raise the face-plant speeds,


I present:

Dave’s "Speed Spec"


- 0.23 m/s in reverse will cause face-plant
- Stops from 0.25 m/s will cause face-plant	

0.25 m/s max linear  (450DPS)

0.1 m/s "normal" linear  (180 DPS)

0.01 m/s slow linear  (timid Dave)

0.001 m/s linear   (sneaky Dave)

1 rad/s "normal" rotation  (57 deg turn/sec)

4.8 rad/s max rotation  (275 deg turn/sec)

And “My Spec”:

  • 2.5 m/s exercise running ← reason my github user is “slowrunner”
  • 1.5 m/s exercise walking

but don’t know how fast I was running after that thunder clap.