Mad-Metal-Machines Vol. 21: Featherweight Schnauzer

In the last blog post I have written at great length about the Mad-Metal-Machines Vol. 21 event and the participating robots. This blog post serves as a write up about how well (or bad) Schnauzer was doing at the event. In total there were 6 rounds to be fought with a minimum of 2 and a maximum of 3 robots in the arena. A total of 3 points good were to be gained each round (awarded to the winner of the round) with the second best being awarded 2 points and so forth. Schnauzer was paired with two opponents during all of its fights.

For a start I'd like to give you a impression about Schnauzer's pit and pre-fight appearance:

In round #1 Schnauzer was paired with Attila of Team Robocop (Italy) and Mattock of team Eventorizon (Great Britain)

Attila is a pushing robot with a controllable front wedge. It's a delicately built machine which did well in the event until it suffered its first spinner contact.

Mattock is an electrically powered Axe-Bot. It uses its pointy end to hit on opponents. Nothing more to say here 🙂

The fight itself wasn't very spectacular. Mostly shoving and pushing. Due to drive train problems (one axis worked itself loose) Schnauzer did not have full power on the drive train and was unable to contribute much to the fight. Unfortunately the drive train problems continued throughout the event although the breaking point was always at a different spot (Obviously - since I fixed the weakest spot after one fight the next weakest link in the chain broke in the next ...). At some point Mattock landed in a sideways position from where it could not self right itself - 2 points for Schnauzer.

In round #2 Schnauzer was paired with the Omega of team Metal Skull Robotics (The Netherlands) and Eisenschwein III of DK Robots (Germany).

Omega is a powerful pusher with a complete Hardox shell and a strong brushless powered drive train. You can see inside of the robot on the next picture:

Eisenschwein III is a wedge shaped pushing robot built mostly for having fun 🙂 - It's the green one on the right side of the picture:

About the fight: After some pushing and shoving Omega managed to drive itself in the arena pit. Well that sucks. Eisenschwein III had the upper hand against Schnauzer since it was repeatedly able to get underneath Schnauzer and push it around. However, one driving mistake got it very close to the arena pit and a gentle nudge of Schnauzer sent it over the edge - 3 points for Schnauzer.

In round #3 Schnauzer was paired with Daredevil of team The Devil Crew (Germany) and Binky of team Eventorizon (Great Britain).

Daredevil is a powerful drum spinner. However, with the new Hardox frame I was terribly concerned.

Binky is a vertical spinner. It has a powerful spinning disc but problems with maneuverability due to the very prominent gryoscopic effect.

The fight is starting aaaaaaaand .......... its over. That was anticlimatic. Daredevil managed to locate Schnauzer in such a way on top of Binky that neither robot could move. Yeah. Schnauzer still got 2 points 😉

In round #4 Schnauzer was paired with BonX of team BonX (The Netherlands) and Hannibalito 3 of Team RCC (The Netherlands).

BonX is a wedge made out of Hardox plus drive train. Loads of pushing power, loads of armour. It is what Schnauzer could have been would I not be in love with four wheel drive 🙂

Hannibalito 3 is the ever changing, ever improving CO2 powered flipper of the infamous team RCC.

Hannibalito 3 had problems with its valve which drastically reduced the power it could put in it's flips. This was a great advantage to Schnauzer which suffered once more of drive train problems. Ultimately Hannibalito 3 pushed BonX into the arena pit - and also drove itself into the pit. 3 points for Schnauzer 🙂

In round #5 Schnauzer was paired with Equinox of Team Metal Skull Robotics (The Netherlands) and Binky of Team Eventorizon (Great Britain).

Equinox is a very powerful drum spinner not to be messed around with. Its path through the tournament was littered death and destruction leaving behind severely damaged or broken robots.

Since I already fought Binky in round #3 no further introduction is required.

Binky made one or two contacts with Equinox and had by then sustained enough damage to be out of the round. Schnauzer was taking Equinox head on which proved an excellent tactic. Due to Schnauzers angled front + the forward looking "horns" the tooth of Equinox drum of death were not able to reach Schnauzers front. However, at some point Schnauzer ran out of luck and got hit in the side. The top plate shattered, one axis broke, the electronics hung out, the frame was bent and the axis were dislodged within the axis mounts.

What followed was one of the longest in-the-field repair sessions ever done but ultimately Schnauzer could be brought back for round #6.

Also, Schnauzer got 2 points.

In round #6 Schnauzer was paired with Bulls*it of team K.A.l.M. (The Netherlands) and KFCOS of team Pyro-Bots (Germany).

Bulls*it is a bull inspired pushing robot with a thick (20 mm) HDPE frame.

KFCOS is a superbly built CO2 powered flipper whose power can be compared to Hannibailto 3. Sadly, I have no picture of it.

In the fight Schnauzer was on the receiving end of some powerful flips by KFCOS. Bulls*it stayed in the fight only for a short time until it managed to drive itself in the arena pit. Suddenly smoke came out of Schnauzers shell - as it turned out later the right drive train motor had fully burned out. Still Schnauzer eared 2 points.

In the end Schnauzer had amassed 14 out of 18 possible points. The top robots all had 15 points so Schnauzer missed the finals by one mere point. However, it was mostly due to luck (and some driving skille 😛 ) that Schnauzer progressed so far, there were major problems with the drive train and by the end of fight #6 Schnauzer can be considered a total loss due to the damages sustained. And now it is time to show you the real footage of all of Schnauzers fights:

Although the final round was missed in this event I still got to go home with a trophy. The European Robot Combat Championship title which I did win in 2015 was finally awarded to me by Marcel Kussmann (German Roboteers Association) and Marien van der Meer (Dutch Robot Games):

Schnauzer is a wreck but that does not mean that LXRobotics robot fighting days are over. However a complete rebuild based on the lessons learned is necessary and a lot of time shall be invested in planning.


Mad-Metal-Machines Vol. 21: The Robots

Last weekend on 8th and 9th of April 2017 the 21st edition of the Mad-Metal-Machines combat robot event hosted by the German Roboteers Association (GRA) took place. The event was run as a part of the Intermodellbau rc model faire in Dortmund. A total of 26 teams participated with no less than 21 Antweights (150 g), 10 Beetleweights (1,5 kg), 24 Raptorweights (6 kg) and 30 Featherweights (13,6 kg). The following pictures should give you a good feeling about the size of the event and the builder area:

Builder/Robot area:

The arena itself with observers to three sides of it (one side was reserved for the roboteers):

Update: Video with best of scenes as filmed by LXRobotics now available:

One of the best things about such an event is that you get to see an incredible amount of robots and also get to look "under the hood" which allows you make deductions about how your own design can be improved. As a result I made tons of pictures which I'd like to present to you now (Caveat: Robots are presented in ascending alphabetical order by team name).

Team BonX - BonX (Featherweight) / This heavily armoured pusher won 2nd place in the featherweight class.

Team BonX - Catharsis (Featherweight) / Vertical Spinner

Team Dark-Voltage - Dark Galaxy (Raptorweight) / Vertical Spinner made with considerable parts made out of of Kevlar

Team The DevilCrew - Anubis (Featherweight) / Horiztonal Spinner / Formerly known as Caliope by Team RCC.

Team The DevilCrew -  Blackheart (Raptorweight) / Pusher

Team The DevilCrew - Daredevil (Featherweight) / Drum Spinner - This fearsome drum spinner made 3rd place in the competition.

Team The DevilCrew - Luzifer (Heavyweight) / While not competing at the event (well, how could it :P) Luzifer was drawing a lot of attention from the faire visitors.

Team DK-Robots - ED607 (Raptorweight) / Blob (Raptorweight) / Eisenschwein III (Featherweight)

Team Eventorizon - Binky (Featherweight) / Vertical Spinner

Team Eventorizon - Conker 3 (Featherweight) / Eggbeater (A special version of a drum spinner where instead of a round zylinder a rectangular frame is spinning).

Team Fierce Fighting Robots - Lt.Lee (Raptorweight) / Pusher

Team Fierce Fighting Robots - Some Antweights (150 g!)

Team IBF - Blähboy (Featherweight) / Lifter with onboard compressor

Team IBF - Paul - B (Beetleweight) / Pusher

Team IBF - Rat-Rap (Raptorweight) / Electrically powered lifter

Team IBF - Weps (Raptorweight) / Horizontal Spinner / This robot won 3rd place in the raptorweight competition (some luck was involved 😉 )

Team Just do it - Ballista (Featherweight) / CO2 powered Flipper

Team Just do it - Brobot (Featherweight) / CO2 powered Flipper

Team Just do it - DX-11 (Featherweight) / Horizontal Spinner

Team K.a.L.M. - Bulls*it (Featherweight) / Pusher

Team Last Minute - Surgeon (Raptorweight) / Pusher with electric saw / Made for a fantastic show 😉

Team LXRobotics - Schnauzer (Featherweight) / Heavily armoured pusher. On the top left corner you can see the robot Adios by Team Redeye Robotics - Thank you for borrowing me your drill bits. They were very helpful on sunday since Schnauzer's axis worked themselves loose (again) and I shall return them at the next event 😉

Team Metal Skull Robotics - Equinox (Featherweight) / This extremely powerful drum spinner was the scarecrow of the event and ultimately won the competition. The design is quite ingenious which is why one can learn a lot by studying the following pictures:

Team Metal Skull Robotics - Omega (Featherweight) / A fully hardox armoured pusher

Team Metal Skull Robotics - Otis (Raptorweight) / This drum spinner won 2nd place in the raptorweight competition.

Polyurethane used by Team Metal Skull Robotics for the their wheels:

Team Pyro-Bots - Captain Spaulding (Raptorweight) / Pusher / Special thanks to jojo for letting me have some of your tools during the event - Schnauzer would have not been able to drive otherwise.

Team RCC - Hannibalito 3 (Featherweight) / This infamous CO2 powered flipper had an upgrade with Hardox front armour.

Team RCC - Kashei Bessmertnye (Featherweight) / Electrically powered hammerbot

Team RCC - Perun (Raptorweight) / Pusher

Team Robocop - Attila (Featherweight) / Pusher with an electrically powered wedge / Also the first ever italian team to compete at a german event.

Team Upstart - Bintang (Raptorweight) / Pusher / This nimble pusher from the Dutch team Upstart had their robot booth next to ours. I'd like to give special thanks to John for borrowing me a 2.5 hexagonal drill bit which I shall promptly return upon our next encounter 😉

Dear reader,: Although you made it to the bottom of this lengthy picture spam post I have to divulge that their is no golden pot waiting for you here (as this might be the case with reaching the end of the rain bow). I hope you could also learn a bit from those pictures and hopefully show up at the next event with your own robot 😉


TM-D700 Portable Ham Radio Rig

Since the first blog post announcing the start of my adventure into the world of ham radio a couple of months have passed in which I have tried to come up with a creative solution to my main problem: I do have two QTH's and whilst the reception is great at my secondary location (OE3) reception is miserable at my primary location (OE5). Since I spend most of my time in OE5 the only solution is to go mobile.

Now this is were my other problem arises: I do only have one radio which I am carrying from QTH OE5 to the car, from the car to QTH OE5, from QTH OE5 to car to QTH OE3, ... The front panel of my Kenwood TM-D700 is not connected with the transceiver which means I have to carry a lot of sensitive equipment around everytime I move the radio. Since I am also starting to look into SOTA participation I have realised the need for a rugged setup for easily carrying around my radio. Let's begin ...

The basic chassis for the portable ham radio rig consists of CNC milled aluminium plates connected via 3D printed connectors:

The transceiver part of the Kenwood TM-D700 is mounted in the middle of the chassis:

In front a 10 mm macrolon plate is mounted to serve as a base plate for the display which is glued to the macrolon plate.

On the bottom of the chassis rubber feet are applied to prevent scratches when keeping the radio rig on smooth surfaces such as your dining room table 🙂

On the next picture you can actually see the portable ham radio rig happily sitting on the dining table:

On this picture you can clearly see that the display mount is glued to the macrolon plate. No external glue was applied since the display mount is delivered with an extremely adhesive base.

A handle was added on top to have an easy way of picking the radio up and move it somewhere else:

Side view of the complete portable ham radio rig with handle

It works terrific 🙂 Setting up ham radio in my car takes now less than half of the time previously needed. I could only further reduce that time by buying a second radio but I'd rather not amass too much different radios this early on my ham radio journey 🙂


std::numeric_limits::min() vs. std::numeric_limits::lowest()

While this is quite a technical blog post it took me a little while to fully understand the implications on my code and I therefore would like to share this insight with my readers. This article applies to everyone who likes to use software constructs like the following one:

Looks reasonable, doesn't it? However, the tricky bit is that min() does return the minimum representable finite POSITVE value of the type provided as template argument (in this case float). If x and some_other_value are always positive, this is not a problem. If some_other_value can also be negative, above statement will not work as intented.

What is the correct solution? Use std::numeric_limtis<T>::lowest() (Only available from C++11 on!). If I print the concrete values of min(), max() and lowest() on my dev system I do get the following results:

The correct code sequence should therefore be:

This stumbling block is especially heinous because the following software construct works as desired in every case:

Seite 1 von 47 12345...»