How to Solve Complex Tasks

You may come across with some missions which will feel very difficult and hard to start working on them. For these kind of situations you need to be happy because there is a very simple way to get closer to a solution and it is called “goal breakdown structure”.
What is the Goal Breakdown Structure?
If you search on the internet, you will find various definitions, some complicated, some simple to understand. In case of robotics missions as you are given in our competition, you can translate it into breaking the big task into multiple, simpler tasks, which are or are not related between each other.
This kind of practical thinking is something that us, humans, do all the time. For example, when we go to school, we need to do some simple tasks in the process:
- get dressed:
- check weather first;
- get proper clothing;
- fill our schoolbag with whatever we need and equip it;
- make sure we close our house door;
- take the bus:
- find a seat on the bus;
- check we have everything we need to proceed;
- get to class:
- make sure you know to which class you are heading;
- put your stuff in the locker;
- keep only the necessary stuff for the class.
As you can see, there are little goals you need to achieve and have certain subgoals which will finish the main goal. But every each one of them is simple, easy to understand and has little instructions in the process.
Now that you understood this, let’s go back to robotics 🙂 . We will use the mission from stage 3 as an example.
How to breakdown a robotics mission
Understand needed principles
First of all, you need to look at the whole mission and identify what principles apply for it. Let’s have a look at it.

You can see certain elements which are obvious: we have black lines on white background, white lines on black background and maybe some orange lines on black background. Then, there are some blocks which needs to be pushed and some rotating devices on the other side of the table.
So, the principles involved are:
- classic line follower (following black line);
- inverted line follower (following white line);
- color line follower (following orange line);
- push regulated objects (you can push the orange blocks and also the rotating devices).
These are also the simple tasks the robot has to perform.
As you can see, these are basic functions, which need some skills of programming and designing the robot, but it is not something new or unique. I am sure you have done this a couple of times before 🙂 .
Ok, you understood this part. What now? Well, we need to design the robot which can carry out these simple tasks.
Designing the robot
Robot design is very important as many of the simple tasks will be solved by the construction itself. Think how you will push the object so that the robot should just move forward, without the need of having additional claw or mechanisms. The simpler the design, the more effective!
Then, you need to think what programming algorithms you know and how that influences the design. For example, you know how to implement the classic line follower with only one sensor? Good for you! Now where do you put that one sensor so that the robot can move quick and correct?
You need to ask yourself all these questions before starting the design. Maybe you will not get it right at first, because after testing you will see you will need some more stuff. That’s alright, it will surely happen. But, if you are giving it some thoughts before the first iteration, maybe you will not need to make so many of them afterwards.
After you feel the design is ready, you need to create some basic functions so that you will simplify how you will right the code. In most cases, the functions are custom blocks.
Creating basic custom blocks / functions for the robot
This will certainly help you simplify your code. Let’s say you need to create a line follower block. You should create one which will have some parameters, like speed or turn correction. Why? Because in some cases you will want to move faster, in others you will want to move more precise.
For the given example, you can see that if you implement a classic line follower algorithm, which stops whenever intersects a black line, the robot will travel from the start all the way up to the table. Simple, right?
So, the main program will just have one block for line follower instead of 10 blocks for just one path to be followed. It will be much more quicker to go through the code when you will want to make adjustments and will save you lots of time.
Also, if there is a problem in the line follower algorithm, you will need to correct it in just one place instead of many others.
Conclusion
This is just a basic method to solve complex missions for every competition, not just this one. Of course, you should not exaggerate and think of every action as a goal, but little by little you should start to gain progress.
Remember this little thing: whatever you need to solve was created by a human, so there is a solution to it. And most probably, he created the mission in the same way you want to solve it: step by step 🙂 .
Responses