I am trying to experiment with the gopigo3, I just got mine few weeks ago, everything seems to be working perfectly.
I have noticed that although the documentation says that the highest speed that motor can reach is 1000 dps, I do not get to make it achieve that speed. The closest I can get is 450 dps. I have tried ‘set_speed’, ‘set_motor_power’, ‘set_motor_limits’ and none of these methods allow me to get higher that 450 dps.
How can I achieve higher speeds?
Below is the output of the Read_Info.py
Manufacturer : Dexter Industries Board : GoPiGo3 Serial Number : 4AD62598514E3437324A2020FF011422 Hardware version: 3.x.x Firmware version: 1.0.0 Battery voltage : 9.012 5v voltage : 5.013
Theoretically, you can set the speed at 4000 and that’s still going to be valid - there’s no upper limit in the software. The only thing that’s limiting you is a mix of different factors: motors used, dragging coefficient, battery voltage, max continuous current, etc. So, we can’t specify an exact range in the API because there isn’t one and it varies from robot to robot.
If you can’t get the GoPiGo3 to move faster than what 450 DPS value gives you than that’s the maximum speed you are going to get.
@Matt maybe you can add a little input to this discussion.
I totally understand, the theoretical part. I did forget to tell what was the setup: it is the rechargeable battery pack from dexter 9.6V 2000mAh NiMH battery pack and the two motors that come with the GoPiGo3 with less than two weeks of using them. Unfortunately the dtasheet for the motor is nowhere to be found so I can not figure out the theoretical maximum for that motor (without burning it) given the voltage and current I have
Any help on where to find the specs/datasheet for the motor?
The GPG3 is designed to run on 9v to 12v, and can be safely run on voltages up to (but not exceeding) 14v. With a higher battery voltage, the motors will have a higher speed potential. As Robert mentioned, there isn’t a specific “highest speed” that the motors can run. A limit such as 1000 DPS would be arbitrary.
Using set_motor_power, you can set the PWM duty cycle to control the motor power (percentage). This is unregulated, and therefore not a precise method for controlling the motors.
You can use set_motor_dps to set a target speed, that the GPG3 will attempt to run the motor(s) at.
If you set the target speed to 500 DPS, but due to the hardware and electrical limits (as explained by Robert), the motor can only run at 450 DPS, the GPG3 will apply full power (trying to go as fast as possible). This is a case where the target exceeds the capability of the hardware. Perhaps by increasing the battery voltage or reducing the load on the motors (take some weight off the GPG3, move it from carpet to a hard floor, etc.) the motors would be able to run at 500 DPS.
If you want the motors to run as fast as possible (unregulated) set the power to 100%. If you want regulated speed (i.e. have the robot drive straighter), set the DPS target to something within the usable speed range (e.g. 300 DPS).