P20 was a ground up re-design following the lessons learned in the 2019 games. Here are the main differences between P20 and P19:
P19 has a touch screen mounted on it’s back. Since the screen connects directly to the RPi header and the screen must be accessible, the RPi has to be mounted outside of the robot hull too. This leaves it vulnerable. It also means that the software requires a built-in user interface.
When we designed P20 we decided that the Pi should be mounted inside the hull, without a screen attached. Configuration of the robot software could be performed over an IP interface, hopefully using Wi-Fi, but via a cable if a stable Wi-Fi connection couldn’t be established readily (as is likely during the competition).
The software was essentially split in two. The code on the Pi in the robot presents an IP interface with two (latterly three) ports exposed. One port offers a control interface where parameters can be changed, the game can be selected and controlled, and some commands for the Pi can be issued. The second port provides a stream of marked-up video frames. A third port was added (on P21) to permit voice command of the robot.
The second part of the software runs on a PC and presents a user interface onto the robot IP ports.
The left pane shows the marked up images from the robot camera, the right pane shows the parameter set, the lower pane offers various control options.
Subsequently a simplified user interface was added to the back axle of the robot. This has a small screen and four buttons to provide some simple controls without a PC and IP connection.
The screen shows the battery voltage since over discharging LiPos is a problem!
There’s more about the software construction in this blog post.
3D Printed Chassis
When we started building P19 we started with a kit which was made from laser cut acrylic. Over time we replaced every part of the kit (except for the motor mounting screws!) but we copied the build method. Hence, P19 was made from laser cut acrylic sheets with some 3D printed aesthetic parts.
P19 has an articulated back axle so that the chassis can keep it’s wheels in contact with the ground even on uneven terrain. In use this proved to be the weakest part of the whole robot, we redesigned and replaced the back axle acrylic components on many occasions. But we like this chassis configuration; we think there is benefit in the wheels staying on the ground (the World’s tractor designers can’t all be wrong). And anyway, suspension looks cool!
By the time we started building P20 we had bought a 3D printer. So, we built a 3D printed test chassis with an articulated back axle and we drove it under radio control. We drove it on carpet. On grass. On gravel. We drove it off steps. We reversed it into walls. We did all the things that had broken P19’s back axle. It turns out that a PLA chassis is stronger and lighter than an acrylic one.
Our robots are now 3D printed.
Four Motor Drivers
We didn’t do well in the 2019 Pi Noon game: we were knocked out in round two.
In an effort to do better we decided to use mecanum wheels so that we could drive sideways. This would allow us always face our opponent whilst rotating around them. (This sounds like a good idea, but it takes a lot of driving skill!)
But to use mecanum wheels you have to have four independent motor drivers; so that’s what P20 has.
P19 uses an Arduino Due as a robot peripheral controller. A Due is pretty large and we were trying to make P20 smaller.
We wanted a new robot controller with the following features:
- We wanted it to be smaller.
- Four independent motor drivers were needed so that we could use mecanum wheels.
- We decided to use three time of flight (ToF) sensors for the 2020 game Escape Route. We wanted this to be a feature on the base robot, rather than a game specific add-on. We had had reliability problems with the ToF sensor on P19 and resorted to connecting it via an intermediate micro that rebooted it when required.
- We needed a way to be able to shut down the Raspberry Pi from the back axle user interface without an IP connection.
- On P19 the Due was connected to the RPi via a USB cable. USB cables require a lot of room! We wanted to connect a new Arduino controller via the RPi header (which has a 3v3 serial port and GPIO lines).
We looked for a powerful Arduino compatible with lots of connections but in a small form factor. After some experimentation we opted for a Teensy 4.
The new robot control system uses:
- A main Teensy 4 which interfaces to the RPi header via a 3v3 serial connection. Two further GPIO lines are connected; one triggers the RPi to close down, the other detects when it has closed down. This Teensy connects to the IMU (via the I2C bus), to the implement connector (via a serial port), to the back axle Teensy 4 and to the face Teensy (via serial ports). It interfaces the front motor driver circuits. A further serial port connects to the radio receiver.
- A second Teensy 4 is mounted on the back axle. It drives the back screen, battery status LED and the back axle motor drivers. It connects to the main T4 via a serial connection.
- A third Teensy 4 is mounted on the front face of the robot. It connects to the three ToF sensors via three I2C busses. Connection to the main T4 is via a serial port.
P19’s top was designed to accept a Nerf gun mounted on a turret; this was used for the Space Invaders game. We made it fairly straight forward to remove the turret when it wasn’t required.
For the 2020 games we decided that a more general purpose connection system would be useful: we would still need to attach a gun for Zombie Apocalypse, but would want to use a barrel lifter for Eco-Disaster and some sort of camera system for Minesweeper.
The game implement connector was created. Four M4 nuts are mounted in P20’s lid and an electrical connector is provided so that a game specific implement can quickly be added. P20 has servo compatible connections, P21 has a serial port to the main Teensy.
P21 also has mounting holes with captive nuts on it’s underside too.
Where is P20 Now?
Poor P20 never got to compete at a competition: the 2020 games were postponed due to the COVID pandemic. And to add insult to injury, P20 was dismantled so that the parts could be absorbed into P21. Oh dear!