to set the encoder ticks value if no gpg3_config.json file exists.
(Ignore my non-standard C++ bracing - hate those things, and the semi-colons too, and compiling for that mater, and having to include standard libraries, and should I mention I taught C++ in 1987 and hated it then too. Templates? bah humbug! )
Since the file only has the serial texts, it is not likely to have a matching fake serial from non-text variables being serialized into the file with the text.
This is a test case where no gpg3_config.json file is found, and the serial is in the list of 16 tick GoPiGo3s:
gives me a goal that will produce something of value to someone else (not likely to be anyone, but it is part of my dream for the GoPiGo3)
Provides a set of specific programming tasks to refresh my C++ knowledge and to compare with Python
I hit the processing limit of a single Pi4 with my Python ROS2 GoPiGo3 doing mapping, leaving no “headroom” for navigation or a decision tree controller, (the functionalities needed to complete an autonomous ROS mobile robot).
Supposedly C++ can do the same ROS2 GoPiGo3 functions in 1/7th to 1/10th processing load, so I want to reimplement my ROS2 GoPiGo3 and sensor drivers in C++.
The GoPiGo3 C++ API is very basic compared with the Python GoPiGo3 (and EasyGoPiGo3) API and because Dave is a “16 tick” GoPiGo3 the Python load_robot_constants() function is the first place to start (and possibly the most complex coding challenge I expect in this).
And Carl is laughing with his triple speech recognition (key word spotting, command grammars, and large vocabulary tri-gram language model modes) with autonomous decisions, power management, advanced logging, odometry, and self health “awareness” averaging only 15% of a RPi3B, not even a 3B+ or the power packing Li-ion supercharger!
(But he never finished the task of learning to map his room that ROS dangles in front of Dave. It is entirely possible Carl could learn to map and navigate with less effort on my part than for Dave to learn mapping, navigation, and decision trees, but Carl’s advances don’t have the possibility of reuse by others that Dave’s ROS2 successes may have.). Again I am dreaming of the great herd of GoPiGo3 fans materializing.
And how much I miss @RobertLucian creating code for the GoPiGo3.
I ask that when he says “I’m pounding my head against a wall” or “a unicorn” and expresses the idea “I must be a masochist”.
If he doesn’t enjoy it, why do it?
I haven’t messed with my robots for a while because I’m so bummed out over the lack of support I have been getting and the criticisms about “playing [with] toys” as if it’s a completely useless thing to do.
Interestingly enough, “playing” with the flight simulator doesn’t get criticized. Go figure.
But that’s me.
BTW, I renewed my SSL certificate for “gopigo.com” (gopigo3.com) and will be renewing the domain soon.
Anyone who needs a “secure” domain for their GoPiGo robot is welcome to use it.
Progress! C++ versions of check_serial_number_for_16_ticks() and load_robot_constants() working today (and instance variables for the “constants”):
./drive
**** GoPiGo3 Robot Constants:
- WHEEL_DIAMETER: 66.100 mm
- WHEEL_BASE_WIDTH: 105.590 mm
- ENCODER_TICKS_PER_ROTATION: 16
- MOTOR_GEAR_RATIO: 120
****
fwd w
left a spin s d right
bkwd x
****
Cmd: (q to exit): q
Tested for no gpg3_config.json file, and for serial found/not-found in the .list_of_serial_numbers.pkl file - so ready to move on to set and save robot_constants() APIs tomorrow.
I’m happy you found a way to make C++ work, but I remember moving away from pkl to a json file. Did I forget to push it to Github? Did I dream about it?