Wednesday, April 10, 2024

Last before Cambridge

So this is possibly our last blog entry before we're off to Cambridge with Zyderbot, ready or not. I'm sure we'll take part in everything anyway but this is where we're at right now. 

So we had to make a video, I suppose we could have done it weeks ago but even though it's one of the challenges, somehow it doesn't feel like it. This blog has been going since last September, but even so, it still feels more real. 

Two of us got together in the kitchen with an old camera (well, old for modern times, it was still digital!!!)  and with a basic script took turns to operate the camera and do some impromptu words about Zyderbot. We aren't natural publicists so we're a bit awkward, but it's done.


The video became an explanation of some of the key points, with added picture within picture to provide voice over explanations of key points, this picture showing the emergency fuse to prevent magic smoke emissions.

While it's a competition and we want to compete in all the challenges, we have to enjoy doing it, and the real competition is solving the puzzles we're given. The rest of the pictures here are all from the video of some things we've learnt.

Nerf guns and Stepper motors

Being geeks we had nerf guns, but adapting the mechanism for use in PiWars turned out to have a range of issues. But here it is in all its chaos. Eventually all that is used from the gun is the flywheel acceleration module, and the dart magazine.
We had some fun with the aim of the gun, and have fitted a recycled barrel to increase accuracy. The barrel was originally a croquet mallet handle, which then became a battery holder in a previous Zyderbot iteration, and now a nerf gun barrel. You can just see a cat toy laser clipped on underneath.

The flywheel module of the original gun was easily unscrewed and was easy to remount.

The trigger mechanism wasn't so easily recreated and we ended up using a stepper motor to push the darts into the flywheels. 
Lesson learnt, do not power stepper motors continuously when not in use. So it was left powered on, heated up and shortly the plastic mount for it melted. Replaced with a metal mount and a change to code in a float state when not actually in use.

Magnets

We use a lot of magnets for quick assembly and disassembly of Zyderbot between challenges. Here is the main arm which is reused between the Eco-Disaster and Zombie Apocalypse challenges. The base is attached to the robot rear using a pair of magnets at each corner which gives a very secure base.

 
Four magnets on the arm allow for holding the zombie gun and barrel handling attachments

Four on the attachment line up 

And fully assembled with four matching magnets it's a secure joint.

The nerf gun similarly has four matching magnets

And so has a very secure platform.

Lesson learnt. You don't need four matching magnets for everything. The magnets are strong enough to hold using just a metal washer on one side and magnet on the other. We fitted four pairs to the battery box and now need a crowbar to get it open. They're also not always cheap so it costs twice as much!

Barrel Handler

One of the things we want to avoid in Eco-Disaster is to have barrels rolling around the arena. Partly because they'll be difficult to get into the end zones, and also because they'll potentially get caught under Zyderbot and need a rescue. 


Consequently, last minute mods to the barrel handler to add a plough to push barrels away that accidentally get in the way. This means not lifting the barrels very high, but then also not having to worry about dropping them on another barrel, though stacking them would be an interesting challenge (a la toys). We've also fitted a rear bumper to do the same thing.

Configuration
Zyderbot has a set of 8 dip switches on the rear which allow easy configuration between challenges.

Also shown in the picture is the battery monitor display, the rear light and the stop/start button. The rear light also doubles as an information display. For the Pi-Noon challenge we'll be covering this with a magnetically attached plate to protect the settings!!!!

Ultrasonic sensor
Lots of us will recognise a HC-SR04 ultrasonic sensor, so we couldn't miss one off, it's very easy to use and adds a bit more of a feature than a 5mm square laser sensor on pcb, though we're using one of those as well!!! Might come in for barrel detection as well.


Lighting
We have very little idea of what the lighting will be like on the actual day and most of our testing has been done in very variable conditions, so having a pair of headlights on the robot helps a lot in colour and line detection.


It's also part of the robots image, we can't have a lightbar because of the attachments but these will work well.

Might actually do a blog of the weekend but we'll see how excited we are :) 

Well that's this bit done, just the competition itself, then back to building and demonstrating other robots, but I'm sure we'll find a place for Zyderbot!



Monday, April 1, 2024

Tuning!

 Tuning!

So we build solutions, they should work, and then the real world gets in the way. 

Lava Palaver progress

We'd gone for a camera sensor for the Lava Palaver challenge, not because it was a better option for following a line, but because it was automatically immune to the hump in the course. However, this threw up new issues. The competition course is 7m long and painted black, the only surface available for testing is a light wooden floor which makes for very poor contrast.

 Early testing was plagued with phantom readings from reflections which confused the robot, so testing moved to using a black line instead, with the intention of switching over to white for the competition day. This was much more successful, but space is a limit again. To make a test worthwhile, we're going to have to go for a bigger course outside, using a long roll of black art paper with white electrical tape down the middle and hope for dull days!

Illumination was oddly a very important feature. Off the shelf line follower attachments tend to be IR sensor based and have built in illumination which tends not to be noticed, but for the camera, even illumination is essential to get good contrast for the line, so the robots headlights have to be used to light up the track ahead, together with an overhead light illuminating from above. 



The result is a fairly simple bit of code at the end, but beneath it is a lot background code doing the heavy lifting and interfacing. 

One of the items outdoor testing might help with is coping with bright sunlight and shadow. Watching the competition from previous years, it's obvious that this can have a detrimental impact on robots using optical sensors so we'll be looking at that. It's hasn't been done yet but we'll be experimenting with a sunshade for the robot to give more even lighting for the camera and hopefully reduce errors.


Zombie Shooting
For the Zombie Apocalypse, we've had an idea to use a butchered standard nerf gun which looked very promising out in bits on a table, see an earlier blog post, but we discovered a weakness. Using the servo method of pushing the nerf pellet into the gun worked a lot of the time, but then would jam the gun requiring it to be dismantled to clear the jam, it wasn't suitable for the competition. This held us up for quite a while but an obtuse solution using a stepper motor and a rotating cam came to the rescue, so now we're back in business.


The video shows the cam operating and firing off a magazine of pellets. We then got a cat laser toy and pressed it into service to help with aiming, now how many competitors will be aiming at butterflies?




As the video shows, the gun fires to the left, a bit more work to do but on our way.:) 

Minesweeper
Again, this is one we had a solution to some time ago, but when we come to use it, there's a surprise for us. We're using an overhead camera, but processing the image in memory leaves off a lot of the arena, a 'feature' of the camera.


 The image was always going to be distorted but missing bits is a problem we haven't time to overcome, we'll just have to code round it. This means that the robot will have to search for the red square sometimes instead of just being able to see it and move to it. 

The algorithm for this will be basic, something like the following.



Just how accurate the movement will be isn't known, we were expecting to just move to the red square wherever it was, but this now requires some idea of where the centre of the arena is. Only testing will tell. We're doing this challenge on mecanum wheels. As the arena is 4 x 4 matrix, all red squares will be within it and so a map can be built of the arena based on squares that have already been red. Will this be good enough for the minimum 20 moves required we'll have to see. Anyway, signing off with an errant robot which finds it's square, and then ignores it, ho hum.




 

Friday, March 22, 2024

Days tick by......

 With less than a month to go it seems we have lots of solutions which are all but ready to go. Line followers that can see lines but can they drive seven metres in a straight line? Square finders that can see the squares, but can they drive to one and then the next? All will be revealed on the 21st April in Cambridge but for now here's some progress.

The Lava Palaver line detector works well but instead of a fixed mount, needed a bit of adjustment so has now been given an articulated mount.


This has been 3D printed to be integral with the magnet attached battery box cover. More magnets have been deployed to the rear part of the robot for quick change attachments for shooting zombies and collecting barrels.


It's great to see the layout before dozens of wires obscure the view!!!! More uses for magnets has been found in adjusting the barrel handler. 


This also makes it quicker and easier to change the types of attachment to see which works best. 


This is our barrel handler in serious searchlight mode. It obviously works but needs a bit more software behind it to get barrels to their destination. 

More on this to come. 

The Escape Route challenge still needs a bit of work, but we're working from an old formula so it's more tidying up than new development. To get cleaner lines on the robot we've hidden a VL53 laser range finder inside one of the cab windows, along with IR sensors on the sides and an ultrasonic sensor on the front of the robot.


When not in use we'll be closing the window with bluetack!!!!

First experiments with the sensors aren't perfect, as the following video shows.


But after a bit of tuning and building a test course, it's starting to look the part.

 

This is our goth themed video selection but we just need to get this running a bit more smoothly.

 We've had a solution for Minesweeper for sometime, but we've only just now got round to fitting it to the robot. 

It's an overhead gantry mounted camera which reports an XY co-ordinate of the red illuminated square on demand from the robot. The robot will be running on mecanum wheels for this challenge and the gantry is adjustable to keep the robot within the height limit of 450mm. Navigation is all relative to the red square, so, see a red square and drive to it!! To reduce the impact of the gantry on the image, 4mm black carbon fibre rods have been used for support. Also in the picture is the carry handle for the robot, to make handling easier and safer. A better view here.



With a variety of configurations needed for the competition day, a new control panel is being created for the rear of the robot which will allow the robots Pi to be quickly switched between challenge modes, as well as a battery monitor and a start/stop button. To make sure we've got everything covered for each challenge configuration, we've started a checklist, I'm sure it'll get longer soon!!! Here's where it is now.

Challenge: Lava Palaver
  • Wheels: 105mm
  • Bonnet: Line Detector
  • Back cover: Plain
  • Attachment name: LINES
Challenge: Zombie Apocalypse
  • Wheels: 70mm
  • Bonnet: Plain
  • Back cover: Nerf Gun
  • Attachment name: ZOMBI
Challenge: Eco-Disaster
  • Wheels: 70mm
  • Bonnet: ???Not yet determined???
  • Back cover: Barrel Picker
  • Attachment name: ECODI
Challenge: Minesweeper
  • Wheels: Mecanum
  • Bonnet: Plain
  • Back cover: Camera Gantry
  • Attachment name: MINES
Challenge: Escape Route
  • Wheels: 70mm
  • Bonnet: Ultrasonic detector
  • Back cover: Plain
  • Attachment name: None
Challenge: Pi Noon
  • Wheels: Mecanum
  • Bonnet: Balloon attachment
  • Back cover: Plain
  • Attachment name: RC
Challenge: Temple of Doom
  • Wheels: 105mm
  • Bonnet: Plain
  • Back cover: Plain
  • Attachment name: RC
Next time we hope to have more demonstration videos of being fully ready for all challenges.....but then again maybe not!!!!








Friday, March 8, 2024

Zyderbot inspiration

Zyderbot Inspiration

 

So this is what the 2024 version of Zyderbot is based around, a Hummer disaster rescue truck, though for PiWars rescues the design doesn't quite work and we need appropriately sized wheels to cope with obstacles.

Working with one competition robot means that it needs to be adaptable for each of the challenges, and this involves wheel and accessory changes. To make this standard and easier, USB connectivity has been adopted for connectivity of accessory processors and sensors.

The picture shows the optical line sensor mounted on the bonnet and connected by USB. There are a few additions to this for handshaking but the idea is to be as straightforward as possible. 

To make accessories quick-change, they are designed with magnets to hold them in place.


Here is a bonnet for the Pi-Noon challenge with four magnets fitted and the holder. 


The chassis has four corresponding magnets to which the bonnet is attached. It also gives easy access to the battery compartment!

Eco-Disaster
While the chassis and controller are the core essential components, development of the accessories for some of the challenges needs a lot of coding instead. For Eco-Disaster, the camera sensor gives a development image to give reassurance that it's working as expected, and here are two images of barrels, one red the other green. The background colour is red indicating nothing of interest, white is a definite image detection, and violet shows up the reflections in the image due to uneven lighting.

The images look very similar because the sensor has to be instructed to switch between colours and gives a visual result based on what it's being asked to do, the controller only gets numerical information as feedback. The code for this is all in C++ and published on github here.

Writing the code is all very well, but it has to be used by the controller to steer  the robot and collect barrels. So here is our design for the barrel handler.




Two views of the barrel handler to be mounted on the rear of the chassis. It will reach out over the front of the robot during operation and be lifted out of the way when not required. 


There's lots of adjustment in the arm to allow tuning for lift distances but for most operations it will only need to lift a centimetre or so. It reuses one of the earlier Zombie gun mounts, so is over engineered for the task!!!



If you've read one of our earlier blog posts then you'll know there's a very large bearing inside the plastic gear casing which runs very smoothly and gives the mechanism a very smooth action.


Testing for challenges is difficult if the actual challenge course isn't available, so some sort of simulation has to be devised. For the Minesweeper challenge it's paper based.



This is plain wall paper, found hidden in the back of the garage, stuck together and cut to size with electrical tape to mark out the squares. The red square is three sheets of A4 red paper stuck together and to simulate the challenge, the square is picked up and moved to another square. When reading the challenge arena sizes, it's easy to take the space for granted, but this is the only place in the house that can accommodate the arena size, just!!!!

Time is starting to tick away, so probably more pictures of completed robots soon we hope!!!



Wednesday, February 7, 2024

New Year Progress - Pins and Needles!

Now well into the new year, we got together again to review progress and where we were. 

We now had two Zyderbots to practice with and a visitor from another team, Phil from PiDrogen, came to play too.

Of course most of the meet was about Zyderbot and exchanging what we'd done so far. 

Getting the right version and configuration of OpenCV working on the Raspberry Pi platforms had been a significant task, if only for the compilation time involved. Difficult to show that in a blog, so here's some pictures of laptops with running code. 


This is our idea of a zombie for training the recognition engine. We'll have to revisit this on the day when we get to calibrate against the actual competition zombies.

We didn't get an updated demonstration of the Zombie gun though, the experimental use of solenoids for the trigger mechanism now reverting to more powerful servos for reliable operation. 

The line follower for the Lava Palaver has now reduced to a single camera sensor which detects the white line position, the course 'bump' and the end of course, sending out positional data to the controller on request.. 


The picture shows a streamed version of the detector output which actually slows it down quite a bit but gives confidence that it's doing what it's meant to, here showing three detection zones. Turning the image update and streaming off improves the response time dramatically and isn't necessary for the actual challenge but gives confidence that all is working as it should.

The sensor for the Minesweeper challenge is the same design as the line detector but with a different mounting and software setting. It wasn't setup for demonstration at the meeting, but works on the same principal, reporting the observed relative position of the red square to the controller. The following picture is a test view of what it 'sees'.

This is an uncalibrated image of a red A4 sheet on a noisy floor, we don't have an illuminated 'disco' floor to test it on! It's also surprisingly undistorted for a 160 degree lens, I'm sure the final version will 'fix' that! Code for this sensor will be on Github here.


A lot of the afternoon was occupied with High Noon and we were intending to have some practice with the PiDrogen robot Firefly, but we didn't have a compatible controller so it became a Zyderbot vs Zyderbot challenge. 

Wire coat hangers are becoming more scarce, but we found a couple of ex dry-cleaning hangers and  cut them to size. 

Using bolt cutters might be overkill but works!


We now had the 'official' wire mount and both robots were duly equipped. 






The video is of Phil from PiDrogen vs Colin from EastDevonPirates trying out their skill. We really didn't have enough balloons but we had fun, quite a bit of skill to acquire yet though. It was also a try out of mecanum vs tank steering as the two robots dance inexpertly around each other.


What we now need is more practice and a lot of balloons!


Finally, we took a team picture, might have to do another one, bit of an odd distortion!


Next up will be smaller team meeting to ensure we have solutions for each challenge and possibly some technical info!

 



 


Thursday, January 4, 2024

Zyderbot 9 - A Thoughtful Rebuild - PiWars 2024

Firstly, we have now moved from being a PiWars 2024 reserve team to being in the competition.  It may have seemed like we already were, but now it's official.  

These are a few pictures of the build/rebuild of our robot entry Zyderbot. We wanted two so that we could practice for the High Noon challenge and a rebuild also tidies up the ragged edges of quick modifications that accumulate along the way.

To start, a new design and layout for the front component base.

And with a components attached, from the top, 12V distribution, regulator and LiPo battery box.

Beneath this is the front chassis. The two brushless motors are shown mounted, and the central tunnel is the fitting for the rotation axis of the suspension. 

Next up is the fitting of the cab cover with the battery bay exposed.

And again with the bonnet/battery cover screwed on and a couple of wheels fitted.

The rebuild took a break over Christmas, but was soon underway again afterwards. Always good to see a tidy construction area!!!

While Zyderbot will complete most challenges autonomously, the remote control will be provided by a helicopter RC controller and associated IC's

Once breadboarded, the final circuit is constructed on a piece of stripboard. For the curious, this is a FrSky SBUS receiver / transmitter feeding an SN74AHC14N Schmitt trigger inverter at 5 Volts then a KeeYees level converter to get 3.3 Volts for the Pico

The rear layout of Zyderbot is a separate section with it's own layout.

And with the components fitted. It can look neat until the wiring starts!


Initial wiring, with USB being used to connect Pi and Pico.
Oh dear, it all does something but covering it up for sanity's sake is advisable. 

Completed, here it is, a new build. On/off switch relocated to the top of the cab for easy access, front headlights to evenly illuminate targets. Bonnet colour changed to avoid conflicts with a 360 degree camera looking for red squares.

The rear view, we like to know what voltage our batteries are at!!!!

Christmas rebuild task complete, on to challenge solutions!