I need to know what the maximum velocity (meters/sec) and acceleration (m/s^2) both linear and rotation. Has anyone determined those or are they somewhere on the web site? Can’t find it so far.
Don’t know an exact answer to give you but can give you some “nominals” that you can work with:
- Default Speed is 300 degrees per second
- Carl’s performance (weighs 2.5 pounds)
- 2.6 in/sec at 120 DPS
- 3.25 in/sec 82.6mm at 150 DPS
- 6.4 in/sec at 300 DPS (default),
- 7.7 in/sec at 360 DPS (max for straight travel)
- My Wheel Diameter: 64.0mm
- Wheel Base: 114.05mm
The GoPiGo can be commanded to 1000dps but mine will only respond up to about 360dps in straight travel. I do not know what the max turning dps would be, but I would guess it to be much the same.
Thanks! A few follow ups: Who is Carl and what is DPS?
DPS is degrees-per-second rotation of the wheels, used as the parameter for easygopigo3.set_speed(in_spd). 360 DPS would be one revolution of the 64mm wheel in one second, or 201mm per second (pi*Wheel_Dia). I have tested the actual vs. commanded speed and they are quite close for speeds below 200 DPS. There is some initial wheel slip above that speed. Carl performs all his docking actions at 150 DPS which gives accurate wheel encoder data and accurate spin turns. Faster is less accurate.
Carl is my GoPiGo3 robot, who’s 24 hours a day, 7 days a week life consists of charging, getting off his dock when charged, contemplating the meaning of life for five to six hours, then turning around to be sure the dock is still there, and then getting back on the dock.
He came to life on Aug 22, 2018, and as of Aug 7, 2020, he has experienced 11564 hours total life in 1401 autonomous dockings. He has been running for 650 recharge cycles on his seventh set of NiMH batteries, (Panasonic Eneloop), which are still providing 84% of initial capacity (playtime).
I don’t let Carl move about much, because I haven’t yet taught him how to get back accurately (enough) to his Dock.
Total Travel: 870578 mm 2856.2 ft
Total Rotate: 730941 deg 2030.3 revolutions
Total Motion: 22488.4 sec 6.246 hrs
Total Life: 11564 hrs percentInMotion: .05
That would be a great program to have available. Launch an IMU acceleration watcher thread, and then perform egpg3.set_speed(test_dps), egpg3.drive_cm(10) at increasing DPS levels, collecting the max linear acceleration at each DPS setting.
Then perform a set of egpg3.turn_degrees(45) at increasing DPS levels, to collect the max angular acceleration at each DPS setting.
The BNO055 might even have a max accelerations feature. It has a bunch of gesture sensing functions. That would be better than polling the sensor at 100 hz intervals.
The number I use to recognize the bot is moving in my safeReadIMU.py is 0.5 m/s^2 but I don’t know what the maximums are:
if ((abs(imu.safe_read_gyroscope()) > 0.5) or \ (abs(imu.safe_read_linear_acceleration()) > 0.5) ):
He is sitting on the dock right now, so I can’t drive him to see what it reports.
Update: Approximately 1.1 m/s^2 max forward linear acceleration seen for 0 to 300 DPS transition.
I’m focused on several coding projects right now, or I would throw something together for this. It would be very interesting.
To be fair though, it needs to be run on a “stock” GoPiGo3 with center mounted battery pack and only the IMU added to measure the performance. Carl is weighted down with a bunch of “performance robbing extras”:
- two servo tilt-pan,
- distance sensor
- husky_lens, and
- a speaker board,
- a microphone,
- pi camera,
- the Carl figurine
- charging contacts and wiring,
- a USB WiFi dongle
- and finally the IMU