ROS2 GoPiGo3 Dave's 1k Run

Dave’s training for his upcoming 1k run continued today with several 70 meter sprints inside the house to:

  • estimate the size of the ros2 bag file of data collection during his run
  • test nohup execution of ROS code to allow for loss of WiFi connectivity
  • refine SNES gamepad configuration for commanding Dave’s path during the run

For his latest “training run”:

  • Non-ROS programs running:
    • gopigo3_power.py
    • loglife.py
    • safetyShutdown.py
    • wheellog.py
       
  • ROS2 Nodes running:
    • gopigo3 node,
    • imu node,
    • gamepad nodes (joy_node, teleop_node)
    • ros2 bagger node
       
  • start motion: 11:16
  • stop motion: 11:21
  • traveled 68 meters in roughly 6 minutes
  • average pace 1:28/1k (Great “race pace”)
  • Data file collected 16M bytes
  • Estimated 1k data file: 280M bytes - will not be a problem 18GB free on card
$ ros2 bag info rosbag2_2021_09_29-11_13_14/

Files:             rosbag2_2021_09_29-11_13_14_0.db3
Bag size:          15.9 MiB
Storage id:        sqlite3
Duration:          499.149s
Start:             Sep 29 2021 11:13:17.82 (1632928397.82)
End:               Sep 29 2021 11:21:36.232 (1632928896.232)
Messages:          68562
Topic information: Topic: /odom | Type: nav_msgs/msg/Odometry | Count: 14879 | Serialization Format: cdr
                   Topic: /motor/status | Type: ros2_gopigo3_msg/msg/MotorStatusLR | Count: 14883 | Serialization Format: cdr
                   Topic: /battery_voltage | Type: std_msgs/msg/Float64 | Count: 14888 | Serialization Format: cdr
                   Topic: /tf | Type: tf2_msgs/msg/TFMessage | Count: 14876 | Serialization Format: cdr
                   Topic: /cmd_vel | Type: geometry_msgs/msg/Twist | Count: 9036 | Serialization Format: cdr


In other training news:

2 Likes

Sure good to prototype things. Thought I was going to fasten it under the motor nuts. Can’t hold the screw heads with the cover over the motors! I guess I could have put some finger holes in the bottom and cover them after installation, but with the paper prototype the holes can still work to hold on to the little bit of screws that extend beyond the nuts.

 

 

 

Hopefully those sharp corners won’t catch on rugs or flooring transition strips.

(From this design I see I made the right choice to become a software engineer after getting a mechanical engineering degree.)

2 Likes

Didn’t know about nohup. On Finmark when I SSH in I actually run the screen command. Also lets the programs continue to run. In addition I can configure several shell windows on the one terminal screen, which can be handy.
/K

2 Likes

I’ve tried to use screen several times and always get confused what is where. I usually open three ssh shells on Dave, three for the Desktop ROS VM, one for Carl, one for my DeskPi, and one for my Mac. Anything that runs all the time is started via nohups by the root crontab.

For the 1k, I guess I could use screen to start the ROS stuff before going outside and then reconnect to that term when I get back inside to run killit, but opening a new shell will be nearly as easy as remembering which screen to reconnect to, I think. Maybe I just never learned how to use screen right. Self taught and all.

1 Like

I have the same problem with classes and methods.  They confuse the heck out of me and I don’t see what they buy me that a simple procedure and function won’t.

But that’s me.

Then again, we both really need to get a decent 3D printer.

However I am sure you have the same issues justifying such an expensive purchase, (a 3D printer that’s actually worth buying and isn’t a toy), and getting it past the “finance committee”. :wink:

I’d love a good 3D printer myself. There are about ten different things, (including a servo-controlled pen holder for the Gigglebot), that I’d love to make.

First there’s the purchase.

Then there’s the steep learning curve for tools like Blender to make the model from.

Then there’s figuring out how to actually make a successful print!

It’s not like I have anything better to do.
:wink:

1 Like

Yeah - for me that just happens to be what I learned to keep ROS from crashing on a remote robot. Not necessarily the best option - just the one I know. It did take a fair bit of googling to figure out how to configure it, but now that I have that I do enjoy having three terminals on one screen (downsides are you see less in any given terminal, and scrolling in screen requires remembering the right key sequence).

The price has really come down - still not cheap, but you can get a very good 3D printer for about US$400 (see this review of the Prusa Mini+ [I’ve always had good luck with Wirecutter reviews - it’s my first go-to when I’m looking for a new product]).

The design learning curve is real. I’ve been using Fusion 360 - they have a free license for hobbyists (although don’t know if that’s available in Russia). I like the parametric design features. Blender does seem to be a popular program. There is also FreeCAD, which some people seem to like.

And I think the machines are less fiddly than they used to be (or the slicers and firmware is better) - it’s more plug and play than before.

/K

2 Likes

For quite some time I have been baffled by the “low” maximum speed Dave would go under ROS control.

When I first built Dave, I did hardware testing and characterizations to make sure he was working and to understand any differences of the “new GoPiGo3” from Carl’s generation. I recorded in my “Dave Specifications” a max speed of 0.25m/s for command of 450 DPS.


 
But the fastest I was getting out of my ROS2 GoPiGo3 node was 0.1m/s.

First discovery was that my wheel logger was resetting the GoPiGo3 red board “speed limit”.

After fixing that, I still was only seeing 0.17 m/s which is about 300 DPS. That number triggered a connection. The GoPiGo3 class instantiates with a DEFAULT_SPEED of 300 DPS. There is a NO_LIMIT_SPEED constant of 1000, but the true no limit speed is actually set by gpg.set_motor_limits(MOTOR_LEFT+MOTOR_RIGHT, 0) - zero means no speed limit!

I added this line to Dave’s ROS “on_twist” callback and sure enough, he could zip like he did with my “no ROS” wheelDiaDriveTest program.

BUT he doesn’t drive straight when the “turbo charger” is invoked. I had to program turbo bias and bias threshold parameters into the ROS node, and tune the SNES gamepad parameters again.

I also had to train myself to slow before stopping to prevent faceplants, and train my fingers on the faceplant recovery maneuver (turbo reverse, immediate turbo forward, immediate release).

Now Dave should be able to do his “ROS GoPiGo3 1k Time-Trial” at 0.25m/s for an expected 1k pace around 1:07.

Progress!

2 Likes

You make that sound like a real thing.

Up until now, I assumed that this was some arbitrary tongue-in-cheek name you had given to trying to get Dave to travel distances at speed.

Is this a Real Thing?  Is there a link to it?

1 Like

Neurotics build castles in the air.
Psychotics move in.

No it is not a thing to anyone but me.

2 Likes

Oh, it’s a thing for me as well - looking forward to following the progress. Not quite the Indy Autonomous Challenge, but close. Might not make the ERPN* main channel, but would definitely make ERPN2
/K

  • ERPN = Electronics and Robotics Programming network. Which is a delusion I have I personally would find it way more interesting than ESPN. Although maybe that’s what YouTube is for :slight_smile:
2 Likes

Went to the Wirecutter article, (Wow! Really well written), and then to the Prusa site. Impressive! (@cleoqc, @mitch.kremm, are you looking for a 3D printer?)

It reminds me of my own GoPiGo review article.

I was howling at one of the reviews though, where this Army guy is talking about all the El-Crappo printers he has in his collection, (for target practice, I presume), and then he gets to the Prusa printer:

It’s like the googly eyes on the GoPiGo. Silly? Yes. But it’s fun; and even ancient and cobwebby hobbiests need a laugh now and then.

Then he talks about the printer.

You’d think he got religion! Well, after five or so prior printer purchases that turned out, (ahem!), “sub-par”, his enthusiasm is understandable.

On the other side, there appear to be a few issues of build quality as several users reported units with varying problems on arrival. One reported the cross-member seriously out of alignment, which is scary.

All were resolved, but the thought of ordering a printer, going through the hassle of getting it shipped to Russia, and then finding out that it doesn’t work scares the bejesus outta me.

All in all it sounds good, with the few grains of salt thrown in.

My biggest concern is the un-supported cross-member. I can easily imagine it slooooowly drooping over time.

2 Likes

Count me in for a subscription to ERPN/ERPN2!

Beats the :face_with_symbols_over_mouth: out of The Weather Channel’s inane coverage and endless reality TV reruns.

And yes, I am watching this with both anticipation and shame while Charlie collects dust.

@cyclicalobsessive, what happened to your YouTube channel(s)? One day I had an active subscription, the next day - nothing. I looked forward to your videos about Carl and I wonder what happened.

2 Likes

It’s complicated. Sorry.

2 Likes

with confirmation that raspistill works on Ubuntu 20.04. So the lack of 64-bit support for the Python picamera module will not prevent Dave from taking a few snapshots along his run.

Raspistill has a time lapse capability that can snap 640x480 jpeg images at 1 fps without needing to skip frames. (Will have to confirm it can keep up when the processor is also loaded by ROS nodes.)

I stole the tilt mount from Carl’s discarded Husky-Lens. Now Dave’s camera angle can be adjusted so the bottom of the frame shows the ground 12 inches ahead, and the top of the frame shows the top of my head when I stand 10 feet away.

Running raspistill at 1 fps for a max of 2 hours will generate 7200 frames, which at 640x480 should take about 2.5GB of file space. (19GB free currently)

Running the time lapse image capture also adds about 40mA load on the battery, which will steal about 20 to 30 minutes off an endurance run, but should not be a factor for this 1k run.

Hopefully I will be able to use the images for testing Dave’s future “ROS2 Autonomous Driving on the Sidewalk” node that he will need to up his 1k running game.

2 Likes

Cool beanies!

Glad that YOU are celebrating some success.

Here’s my poor excuse for a project, being torn down. . . .

. . . . waiting for a different board to be installed.

At least I will have LOTS of spare parts!

2 Likes

and mourning some setbacks.

On Mondays and Fridays, I transport myself for a 5k run/walk over the self-same sidewalks Dave has been planning to travel for his “Great GoPiGo Gallup”. My mother used to scold me for looking down so much while walking, and I guess I haven’t licked the habit. As I was running and looking down I realized -

These sidewalks are not safe for Dave!


 

That bottle cap is about 28mm across. Dave’s little castor ball is only about 18mm across, and GoPiGo3 robots don’t jump - not tall buildings, not over the moon, and certainly not over these sidewalk expansion joints.

Ugh - reality is a pain.

2 Likes

You gotta get your 'bots away from the kryptonite. . . and wash the suit with the red cape. :wink:

Or rig up something with a couple of 360° servos/stepper motors so Dave can vault over the cracks.

Or maybe a larger trailing wheel?  Maybe the running track at the local park/school had a more suitable surface?

Yup!

Famous quote:
“No battle plan survives contact with the enemy” and certainly no programming effort survives contact with reality. :stuck_out_tongue:

2 Likes

Yes, that is a possible answer to both of the issues discovered yesterday:

  • neighborhood sidewalk is not safe for Dave’s record attempt
  • wife doesn’t want us to be in the mouths of the neighborhood

There is a sidewalk around a lake, near where we go birding, that might just work. Dave might have to tolerate getting sniffed by a dog or two…

2 Likes

This might not be totally out of the possible, if Dave could learn a “balance bot caster jump”. After crossing the sidewalk crack with his main wheels, he could initiate an intentional face plant motion into a balance bot mode, and make his caster “jump” over the cracks.

Unfortunately for Dave, his coach doesn’t have the patience to teach him that maneuver.

2 Likes

How about a bigger caster, maybe on the same order of magnitude as the main wheels?

You could use that 3D printer you’ve been hiding from the wife to print that trailing axle and mounts. :crazy_face: :wink:

2 Likes