The aim of this workshop is to give you an insight on Artificial Intelligence (AI) and especially the robotic side of it. You will learn about how a robot can perceive & interact with its environment and will create simple to more complex behaviors for robots. Yep, we said robots, plural: you will start with a simple robot but will end up quickly with a swarm of them!
This workshop is also a platform for experimentation in new kind of strategy games. In this setup, you don't order/command/control your troops around, but you create (in advance or on the fly) their intelligence so that they decide how to achieve their objectives and react to unforeseen obstacles. A few simple games will punctuate each section, with a bigger one as a red thread. Most are meant to be played with multiple opponents, allowing AI Vs AI kind of competition. One of the aim here is to check the interest in such activity and build a community around with hackathons and other events in mind. The moto of such events: You're a next generation strategist. You don't command your troupes, you build their brain.
During this workshop, we will use the ARGoS robot simulator. After setting up our environment, we will go through a few sections to familiarize ourselves with the robots (actuators, sensors, behaviors & games), then have a cute little extra and finally try out our newly acquired skills on a real game setting.
Robots are always eager to get better, so are teachers. If you have any idea about making this workshop better, be sure to let me know!
Some fundamental advices for beginner and not so beginner programmers:
- Get your hands dirty. You'll only learn if you write and run some code. Each piece of code shared has some meaning, would that be for educational purpose, or just to show some neat visualisation. Run them all, and don't hesitate to tweak them, push them forward and explore both your sensibility and what you can do with it.
- Understand what you're doing. You need to understand each line of your code, especially in this workshop since we'll probably reuse them and make you modify them short after. If you're not 100% you understand, reread the course. Maybe try the next paragraph. Ask a fellow student, a coach, search online... Anything, but don't continue if you don't understand.
- Understand what you're doing! It's fundamental to understand the grammar of your lines of code, but it's as important to understand its meaning, and place in your code. You're coding your line at a specific place, it has a specific role. Understand that role. Not only of your line but also of your group of lines so that a structure of your code emerge. Sometimes you'll be asked to replace some code, it'll be up to you to understand what to replace.
- Don't copy paste. While it might seem as a quick way to advance the material, you will learn less. The more you will write, the more you will remember. And even better, whenever there are number used, try to tweak them, modify them a bit, see what happens.
- Regularly clean your code. It's easy to get lost, even more when you're discovering something new. Cleaning your code means getting rid (or commenting) unused part of the code, so you don't surcharge your code and wonder where is that specific part you're looking for. It means too organising it, so you can infer better meaning from it. And last, the graphic structure. Don't forget to indent (put space at the start of the line) when you enter a new block of code, it eases both the reading and the spotting of bugs.
- Learn how to search out the answer when you're stuck. You are part of a group during the workshop, you can always ask the other students, or the coaches but it's a good reflex to always try to find out by yourself why there is an issue and how to solve it. You can search the Processing reference page, tutorials, forums or even post a question online yourself (knowing how to post a good question would need its own tutorial too...).
Now that we get to know each other, let's dive into the course itself.