Pi wars is Raspberry Pi robotics competition that takes place at the Cambridge computer laboratory every year. Check out their site to find out more.
So finally, Pi Wars 2019 is here and this would be my first time participating in it. I am brainstorming ideas and features that would make the core of the robot and those will be outlined in this post. Any rover like robot has a few basic structures as part of its driving base:
- A base plate: which would be the ‘foundation’ onto which the drive motors, upper layers and attachments/sensors (optionally) would be mounted.
- A steering mechanism: this could be a separate mechanism that, for example, changes the position of the drive motors/wheels; or be a part of how the motors themselves are controlled by the robot to steer itself.
- The drive motors, motor mounts and wheels: these play a major role in the performance of the robot and there are tons of different types of motors and wheel combos to choose from. I decided to go for geared DC motors (with encoders) due to their simplicity to control in comparison to brushless motors or stepper motors, and the wider range of specs available.
- Motor driver circuitry: usually a module that drives the motors and allows for control of speed and direction. Some may have additional features such as current regulation, in-built protection circuitry, programmable settings etc. I’ve gone for a simple PWM based H-bridge motor driver with undervoltage protection.
- Power and distribution system: Everything needs power to run, I’m using a Li-Po battery to power the whole robot (currently a 3S 2250mAh) and since different modules and systems need different voltages, some form of power distribution board (PDB) is needed. This ‘breaks down’ the voltage from the battery into different voltages for each module (usually 3.3V, 5V and 12V) and keeps everything powered and stable – at least that’s the theory 🙂 .
Although the exact robot design itself is yet to take form, some of the underlying systems and circuitry can be consolidated and possibly finalised.
One such system would be the steering mechanism. The 2 most common types of steering mechanisms in my opinion would be differential steering and Ackerman steering (those used in cars). Their working principles are briefly described below:
Differential Steering (brief)
Differential steering can be done in both, 2 wheel drive and 4 wheel drive robots. It works depending the difference in torque (force), produced by the rotation of the motor, on each side of the robot. If the motors on the left side and right side spin at the same RPM and thus produce the same force in the same direction, the robot drives straight.
If the left side RPM is greater than the right, the robot turns to the right and vice versa, as shown above. The degree of turn depends on the difference in RPM: the greater the difference, the more the turn angle. If the motors on either side rotate at the same RPM but in opposite directions, the robot turns about its center either clockwise or anticlockwise.
Ackerman Steering (brief)
This is the steering mechanism used in cars etc. This changes the position of the wheels to change the course of robot. The mechanism used in the robot will be a much simpler version of those used in cars and other vehicles but the primary principle is the same: changing the angle of the front wheels to turn the robot.
This diagram shows a basic setup of ackerman steering, very similar to the one that will be used in our robot. The wheels are mounted to steering arms which pivot about the kingpins. These are linked by a tie rod, this rod can be positioned any distance from the front axle to cut across the imaginary red dotted lines: from the kingpins to the centre of the rear axle. The tie rod is usually positioned close to the front axle as shown in the diagram and moved sideways in either direction by (in the case of our robot) a servo to change the angle of the wheel and hence turn our robot.
As the tie rod is moved from side to side, you’ll notice the wheel on the inside of the bend turns at a greater angle than the outer wheel. This is due to the inner wheel having a smaller turning radius leading to a smaller turning circle circumference. Therefore, by turning the inner wheel more than the outer, wheel slippage is reduced thus converting more of the torque from the motor into useful output force to move the robot: improving its efficiency. This increased turn angle of the inner wheel is achieved automatically through the linkage in the ackerman mechanism.
Now that we have seen how both types of steering work, how about incorporating both of them into our robot? Yes – a dual steering system!
Why use a dual steering system?
In Pi wars and most other competitions its always good to be able to turn on the spot, manoeuvre a curved path easily and quickly, make course corrections while maintaining a high speed (especially for the straight line speed test challenge) and have versatility. The differential steering allows us to:
- Turn on the spot: very useful for tight situations and narrow courses
- Turn very quickly: useful for battle challenges like Pi-noon
- Make the robot more versatile: for unforseen situations (there’s always something)
Whereas the ackerman steering allows us to:
- Manoeuvre a curved path easily: once the wheel has been turned enough to follow a path approximate to the one being navigated.
- Make fine course corrections at high speeds: a must for the straight line speed test
- Reduce wheel slippage: increasing the overall efficiency (a bonus).
- Make the robot more versatile: just as before, for unforseen situations.
Having a versatile platform also allows it to be used for many more competitions and new challenges in the future. From my past experience, the more flexible, easy to deploy and adaptable the robot is, the more the chance of succeeding during the competition.
In the next post, I’ll be diving into how such a dual steering system maybe implemented and controlled and a few other basic structures that were outlined at the start of this post. Meanwhile, if you have any queries or suggestions please leave and comment below and I’ll get to them as soon as possible. Thank you for reading and stay tuned for the next post!