content: A new blog about the LegoLeague event held at INFORIT

This commit is contained in:
Rick van Lieshout 2023-09-21 12:06:37 +02:00
parent 8c08ba1c77
commit 4e6b042a44
10 changed files with 119 additions and 19 deletions

View File

@ -11,5 +11,9 @@
"language": "markdown",
"scheme": "file"
}
]
],
"sonarlint.connectedMode.project": {
"connectionId": "public-sonarcloud",
"projectKey": "Mastermindzh_rickvanlieshout.com"
}
}

View File

@ -0,0 +1,96 @@
---
title: LegoLeague - Battling it out with little robots made from Lego
date: "2023-09-18"
template: "post"
category: "Lego"
tags:
- "lego"
- "spike"
- "programming"
- "team"
description: "At INFORIT we love to play! Be it DND, board games or in this case... Legos. Read on to find out what we've been up to this past summer vacation"
socialImage: ./media/lego-spike-set.png
---
![The 2023 LegoLeague play-mat laid out on an improvised table](./media/board.jpg "The 2023 LegoLeague battle board")
A little before the start of the summer period my colleague Jan-Kees came up to me and proposed the idea of an internal LegoLeague. After a little bit of back-and-forth about what LegoLeague exactly was I agreed it would be a great idea to bring the colleagues together and have a little fun during work hours.
Pretty much right away excitement got the better of us and we started drafting a plan... when? where? how? prizes? teams!?? A lot.
But First...
## What is LegoLeague?
LegoLeague is an event where teams come together to build, program and test a [Lego Spike robot](https://www.lego.com/en-nl/product/lego-education-spike-prime-set-45678) to perform autonomous tasks. The tasks range from collecting "power cores", pushing or pulling levers to dropping Lego blocks in a hopper to get some bonus points.
All of this is accompanied by a theme, in our case energy production, which adds a layer of fun to solving these challenges.
The video below shows a teaser of 2022-2023's "SuperPowered" event, the very thing we based our LegoLeague on:
<iframe
width="560"
height="315"
src="https://www.youtube.com/embed/okR1AMFNV3Q?si=cq4KqyVVK6sAsCpY"
title="YouTube video player"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen>
</iframe>
For each task a team completes successfully they will score points.
Teams get 2 minutes and 30 seconds (2:30) to score as many points as they can.
The video below outlines some of the challenges the teams have available to them with a little explanation of how they function and even some info on the scores. This video is especially useful for teams that don't want to peruse the entire rule book but still wanted to figure out an optimal strategy.
<iframe
width="560"
height="315"
src="https://www.youtube.com/embed/ILTjo0LHZQA?si=YqJvSYX3JNclPPeJ"
title="YouTube video player"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen>
</iframe>
To build the robot each team gets a [Lego Spike Prime set](https://www.lego.com/nl-nl/product/lego-education-spike-prime-set-45678) and nothing more!
In the original event, teams had access to a little more Lego in various kits but for our little event at [INFORIT](https://inforit.nl), we were only able to source the basic kits in time.
Having said that, we wouldn't have been able to get our hands on any of the kits at all if it wasn't for the ["PReT" organization in Weesp](https://www.pretweesp.nl/). Thanks guys!
![A Lego spike set](./media/lego-spike-set.png "A Lego spike set laid out on display")
As for the programming... Teams are free to use either "[scratch](https://scratch.mit.edu/)" or "Python" to program their robots.
Scratch being much easier for those who don't spend all day behind their computer working on software development whilst Python allows for more flexibility in what can be achieved.
Spoiler alert: all teams chose scratch, it's much more accessible for non-developers!
## The competition at INFORIT
So yeah, we now know what a LegoLeague is and we have the approval to host the competition at [INFORIT](https://inforit.nl), now what?
Well, Jan-Kees got to work building the arena and setting it up and I set out to gather team members. Given that it is the summer break I had to hustle to get teams together.
Fortunately, [INFORIT](https://inforit.nl) values employee happiness, autonomy and continuous improvement. As such I was able to offer the 2 Friday afternoons free of day-to-day work, to work on the robot whilst providing catering, music, and the like to the teams whilst working!
In the end, we were successful in creating 4 teams of at least 3 people who were all mixed with developers and non-developers to keep the balance fair. Meanwhile, Jan-Kees also finished building the arena which you can see in the header of this blog or the pictures in the picture section.
## Pictures
Of course, we've taken loads of pictures during the event but those are mostly for internal use.
Below I've included some pictures of the event that are all cleared for social media distribution with a little description of what's happening in each picture to, hopefully, convey some of the vibes of the event itself.
![One of the competing robots on display. This one seems to have a little grabby arm to perform the tasks with.](./media/robot-warrior.jpg "one of the competing robots")
![A contestant is looking at the board figuring out where the robot needs to go](./media/lex-counting.jpg "A contestant calculating exactly where to go. Such a pathfinder!")
![two teams continuing to test their implementations](./media/testing-coding-repeat.jpg "code -> test -> repeat. Soooo important")
![a picture of a laptop screen with lots of scratch code blocks on it](./media/complicated.png "This team might have overcomplicated things a tad. Looks impressive though.")
## Winners, losers, etc
In the end, this is still a competition. People competed hard to come out on top and 1 team did so successfully.
Congratulations guys!
![a group picture of all the contestants, some wearing their medals and carrying their candy prize](./media/winners.jpg "All of our winners! (excluding myself 😢)")
## Nah, we are all winners in the end
Having 4 teams gave us the unique opportunity to reward them all with something nice. The 3 teams that got podium places all got their medals and their rewards and the losing team got their consolation prize.
Luckily though, we're all winners, even the Jury members and the organizers.
This event has brought us all closer together and improved the connection between our colleagues.
I, personally, had a blast and would love to do similar things in the future.
That's it again, thanks for reading and see you next time!

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 284 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 297 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 MiB

36
package-lock.json generated
View File

@ -11321,9 +11321,9 @@
}
},
"node_modules/conventional-changelog-core/node_modules/read-pkg/node_modules/semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"version": "5.7.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
"integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"dev": true,
"bin": {
"semver": "bin/semver"
@ -17439,9 +17439,9 @@
}
},
"node_modules/generate-robotstxt/node_modules/semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"version": "5.7.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
"integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"bin": {
"semver": "bin/semver"
}
@ -28099,9 +28099,9 @@
}
},
"node_modules/password-prompt/node_modules/semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"version": "5.7.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
"integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"bin": {
"semver": "bin/semver"
}
@ -30099,9 +30099,9 @@
}
},
"node_modules/read-pkg/node_modules/semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"version": "5.7.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
"integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"bin": {
"semver": "bin/semver"
}
@ -31841,9 +31841,9 @@
}
},
"node_modules/semver": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"bin": {
"semver": "bin/semver.js"
}
@ -35326,9 +35326,9 @@
"integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ=="
},
"node_modules/word-wrap": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
"integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
"integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
"dev": true,
"engines": {
"node": ">=0.10.0"