State

We won't be needing a new state in our State Machine since we can use some of the already developed. But there is a great catch. We must modify the way we calculate in which state we are to make sure both sensors have detected both lines. Only then we can calculate the correct state and behaviour for our robot.

Tasks description, submission and evaluation are available to subscribed users.

English

In this video we continue with the line following, but this time on a crossed section, we must decide to move right. So the robot comes from this side and when it reaches this section, it must move right.

What we must do in this case is the following. When we have a line both to the left and to the right, we must turn right. State 3 is turning left, state 2 detected with sensor 1 is turning right. And this seems pretty clear. When we detect something on the left we enter state 3, but then if we are detecting something on the right we enter state 2. Sо this program would probably work and we'll turn to the right if we detect with both sensor something. So if we detect a crossed section. Just to make sure we need to add some delay, after the sensor on port 3, the left sensor detect a line we need to make sure that we wait for a very small amount of seconds, before we decide whether the right sensor is detecting something. For this I'll add a very small delay, that's like 0,05 seconds, just to make sure that the right sensor had enough time to move and to detect a black line. Download and run. We start the program from here, just close to the section.

And we turn right. Let's start the robot from here.

Now the delay was not very much and what happened is that we actually turned left. Let's try to repeat the behavior.

Again. we turn left. What happens is that the robot approaches the line in the following way. It's not aligned to the section and the left sensor detects a line to the left, so it decide to turn to the left. What we must do is somehow stop this and detect the black line on the right. Let's try to increase this constant that we are using for waiting. After increasing the value to waiting for 0.1 seconds. This is the result of our program. We follow, we detect a gap, we turn right, we detect another gap and then we continue forward.

So on this section we turn right, which is the desired behavior. In the next video we'll try to run this whole program on the larger field, but before that, we have one more case to look at.

Courses and lessons with this Tutorial

There comes a time when you need to program the robot to "follow a line, but if another sensor detects something you would like to stop, do some work, and then continue following the line". This is applicable to competition robots as it is applicable to real-life robots.

There comes the State Machine Pattern. An advanced and very powerful concept that allows you to easily implement complex robot behaviours with a simple, well-organized, extensible, bug-free program where the robot could be in 1,2, 10 or 100 states and you will still be able to manage the complexity of the world around the robot.