Advanced algorithm for moving along the line. Advanced Line Movement Algorithm Line Robot ev3

In order to make the robot move smoothly along the black line, you need to make it calculate the speed of movement itself.

A person sees a black line and its clear boundary. The light sensor works a little differently.

It is this property of the light sensor - the inability to clearly distinguish between the border of white and black - that we will use to calculate the speed of movement.

First, let's introduce the notion “Ideal point of the trajectory”.

The readings of the light sensor range from 20 to 80, most often on white, the readings are about 65, on black, about 40.

The ideal point is a conditional point approximately in the middle of white and black colors, following which the robot will move along the black line.

Here, the location of the dot is fundamental - between white and black. It will not be possible to set it exactly on white or black for mathematical reasons, why - it will be clear later.

Empirically, we have calculated that the ideal point can be calculated using the following formula:

The robot must move strictly along the ideal point. If a deviation occurs in either direction, the robot must return to that point.

Let's compose mathematical description of the problem.

Initial data.

Perfect point.

The current readings of the light sensor.

Result.

Motor power B.

Motor rotation power C.

Solution.

Let's consider two situations. First: the robot deviated from the black line towards the white.

In this case, the robot must increase the rotation power of motor B and decrease the power of motor C.

In a situation where the robot drives into the black line, the opposite is true.

The more the robot deviates from the ideal point, the faster it needs to return to it.

But the creation of such a regulator is a rather difficult task, and it is not always required in its entirety.

Therefore, we decided to confine ourselves to a P-regulator that adequately responds to deviations from the black line.

In the language of mathematics, this would be written as:

where Hb and Hc are the total powers of motors B and C, respectively,

Hbase - a certain base power of the motors, which determines the speed of the robot. It is selected experimentally, depending on the design of the robot and the sharpness of the turns.

Itech - current readings of the light sensor.

I id - calculated ideal point.

k is the coefficient of proportionality, selected experimentally.

In the third part, we will look at how to program this in the NXT-G environment.

In this lesson, we will continue to explore the use of the color sensor. The material presented below is very important for further study of the robotics course. After we learn how to use all the Lego mindstorms EV3 sensors in solving many practical problems, we will build on the knowledge gained in this lesson.

6.1. Color Sensor - Reflected Light Intensity Mode

So, we are starting to study the next mode of operation of the color sensor, which is called "Brightness of Reflected Light". In this mode, the color sensor directs a beam of red light at a nearby object or surface and measures the amount of reflected light. Darker objects will absorb light, so the sensor will read a lower value than lighter surfaces. The sensor value range is measured from 0 (very dark) to 100 (very bright). This mode of operation of the color sensor is used in many tasks in robotics, for example, to organize the movement of the robot along a given route along a black line drawn on a white coating. When using this mode, it is recommended to place the sensor in such a way that the distance from it to the surface under study is approximately 1 cm (Fig. 1).

Rice. one

Let's move on to practical exercises: the color sensor is already installed on our robot and directed down to the surface of the coating on which our robot will move. The distance between the sensor and the floor is as recommended. The color sensor is already connected to the port "2" EV3 Brick. Let's load the programming environment, connect the robot to the environment, and use the color stripe field we made to complete the tasks in Section 5.4 of Lesson #5 to take measurements. Install the robot so that the color sensor is located above the white surface. "Hardware Page" programming environments switch to the mode "View ports" (Fig. 2 pos. 1). In this mode, we can observe all the connections we have made. On the Rice. 2 ports connected displayed "B" and "C" two large motors, and to the port "2" - color sensor.

Rice. 2

To select the option for displaying sensor readings, click on the sensor image and select the desired mode (Fig. 3)

Rice. 3

On the Rice. 2 pos. 2 we can see that the value of the color sensor reading above the white surface is 84 . In your case, you may get a different value, because it depends on the material of the surface and the lighting inside the room: part of the light, reflected from the surface, hits the sensor and affects its readings. Having installed the robot in such a way that the color sensor is located above the black strip, we fix its readings (Fig. 4). Try to measure the reflected light values ​​above the remaining color bands yourself. What values ​​did you get? Write your answer in the comments to this lesson.

Rice. four

Let's now solve practical problems.

Task number 11: it is necessary to write a program for the movement of the robot, which stops when it reaches the black line.

Solution:

The experiment showed us that when crossing the black line, the value of the color sensor in the mode "Brightness of Reflected Light" equals 6 . So, in order to fulfill Tasks #11 our robot should move in a straight line until the desired value of the color sensor becomes smaller 7 . Let's use the program block already familiar to us "Expectation" Orange palette. Let us choose the mode of operation of the program block required by the condition of the problem "Waiting" (Fig. 5).

Rice. 5

You must also configure the program block parameters "Expectation". Parameter "Type of comparison" (Fig. 6 pos. 1) can take the following values: "Equals"=0, "Not equal"=1, "More"=2, "More or equal"=3, "Less"=4, "Less or equal"=5. In our case, we set "Comparison type" into meaning "Less". Parameter "Threshold" set equal to 7 (Fig.6 pos. 2).

Rice. 6

As soon as the color sensor value is set to less than 7 , what happens when the color sensor is above the black line, we will need to turn off the motors, stopping the robot. Problem solved (Fig. 7).

Rice. 7

To continue our studies, we will need to make a new field, which is a black circle with a diameter of about 1 meter, applied to a white field. The thickness of the circle line is 2 - 2.5 cm. For the base of the field, you can take one sheet of paper measuring A0 (841x1189 mm), glue together two sheets of paper measuring A1 (594x841 mm). On this field, mark the line of the circle and paint over it with black ink. You can also download the layout of the field, made in Adobe Illustrator format, and then order its printing on banner fabric in a printing house. The layout size is 1250x1250 mm. (You can view the layout downloaded below by opening it in Adobe Acrobat Reader)

This field will be useful to us for solving several classical tasks of the robotics course.

Task number 12: it is necessary to write a program for a robot moving inside a circle bordered by a black circle according to the following rule:

  • the robot moves forward in a straight line;
  • reaching the black line, the robot stops;
  • the robot moves back two revolutions of the motors;
  • the robot turns to the right by 90 degrees;
  • the movement of the robot is repeated.

The knowledge gained in the previous lessons will help you create a program that solves Problem 12 on your own.

Solution of problem No. 12

  1. Start straight ahead (Fig. 8 pos. 1);
  2. Wait for color sensor to cross black line (Fig. 8 pos. 2);
  3. Move back 2 turns (Fig. 8 pos. 3);
  4. Turn right 90 degrees (Fig. 8 pos. 4); the value of the angle of rotation is calculated for the robot assembled according to the instruction small-robot-45544 (Fig. 8 pos. 5);
  5. Repeat commands 1 - 4 in an endless loop (Fig. 8 pos. 6).

Rice. eight

To the operation of the color sensor in the mode "Brightness of Reflected Light" we will return many times when we consider algorithms for moving along the black line. In the meantime, let's analyze the third mode of operation of the color sensor.

6.2. Color Sensor - Ambient Light Intensity Mode

Color Sensor Mode "Ambient Light Brightness" very similar to the mode "Brightness of Reflected Light", only in this case the sensor does not emit light, but measures the natural light of the environment. Visually, this mode of operation of the sensor can be determined by a weakly glowing blue LED. Sensor readings vary from 0 (lack of light) to 100 (the brightest light). When solving practical problems that require measuring ambient light, it is recommended to position the sensor so that the sensor remains as open as possible and is not obstructed by other parts and structures.

Let's attach the color sensor to our robot the same way we attached the touch sensor in Lesson #4 (Fig. 9). Connect the color sensor with a cable to the port "2" EV3 Brick. Let's move on to solving practical problems.

Rice. 9

Task #13: it is necessary to write a program that changes the speed of our robot depending on the intensity of external lighting.

To solve this problem, we need to learn how to get the current value of the sensor. And the Yellow palette of program blocks, which is called "Sensors".

6.3. Yellow palette - "Sensors"

The yellow palette of the Lego mindstorms EV3 programming environment contains programming blocks that allow you to receive current sensor readings for further processing in the program. Unlike, for example, the program block "Expectation" Orange palette, yellow palette program blocks immediately transfer control to the following program blocks.

The number of programming blocks in the Yellow Palette is different in the home and educational versions of the programming environment. In the home version of the programming environment, there are no programming blocks for sensors that are not included in the home version of the constructor. But, if necessary, they can be connected independently.

The educational version of the programming environment contains programming blocks for all sensors that can be used with the Lego mindstorms EV3 constructor.

Let's get back to the decision. Tasks #13 and see how you can receive and process color sensor readings. As we already know: the range of values ​​of the color sensor in the mode "Ambient Light Brightness" is within the range of 0 before 100 . The parameter that regulates the power of the motors has the same range. Let's try to adjust the power of the motors in the program block by reading the color sensor "Steering".

Solution:


Rice. ten

Let's load the resulting program into the robot and run it for execution. Did the robot move slowly? Let's turn on the LED flashlight and try to bring it to the color sensor at different distances. What's going on with the robot? Let's close the color sensor with the palm of our hand - what happened in this case? Write the answers to these questions in the comments to the lesson.

Task - Bonus

Load into the robot and run the task shown in the figure below. Repeat the experiments with the LED flashlight. Share your impressions in the comments to the lesson.

15.01.2012, 18:51

Until now, in articles about algorithms used when moving along a line, such a method was considered when the light sensor, as it were, followed its left or right border: as soon as the robot moved to the white part of the field, the controller returned the robot to the border, the sensor began to move deep into the black lines - the regulator straightened it back.
Despite the fact that the picture above is for a relay controller, the general principle of the movement of a proportional (P-regulator) will be the same. As already mentioned, the average speed of such a movement is not very high and several attempts were made to increase it by slightly complicating the algorithm: in one case, "soft" braking was used, in the other, in addition to turns, forward movement was introduced.
In order to allow the robot to move forward in some areas, a narrow section was allocated in the range of values ​​​​produced by the light sensor, which could be conditionally called "the sensor is on the border of the line."
This approach has a small drawback - if the robot "follows" the left border of the line, then on the right turns it does not seem to immediately determine the curvature of the trajectory and, as a result, spends more time searching for the line and turning. Moreover, it is safe to say that the steeper the turn, the longer this search takes.
The following figure shows that if the sensor was located not on the left side of the border, but on the right side, then it would have already detected a curvature of the trajectory and would begin to make turn maneuvers.

Therefore, it is a good idea to equip the robot with two sensors at once, which are located on opposite sides of the line and, accordingly, would help the robot respond more quickly to a change in direction of movement.
Now it is necessary to determine how such a design change will affect the program. For simplicity, we should again start with the simplest relay controller, and therefore, first of all, we are interested in the possible positions of the sensors relative to the line:

In fact, one more acceptable state can be singled out - on difficult routes it will be the intersection of an intersection or some kind of thickening on the path.
Other positions of the sensors will not be considered, because they are either derived from those shown above, or these are the positions of the robot when it left the line and will no longer be able to return to it using information from the sensors. As a result, all of the above provisions can be reduced to the following classification:
  • the left sensor, as well as the right one, is above a light surface
  • left sensor above light surface, right sensor above dark
  • left sensor above dark surface, right sensor above light
  • both sensors are above the dark surface
If at a certain point in time the program on the robot detects one of these positions, it will have to react accordingly:
    If both sensors are above the white surface, then this is a normal situation in which the line is between the sensors, so the robot must go straight. If the left sensor is still above the light surface, and the right sensor is already above the dark one, then the robot drove its right side onto the line, which means he needs to turn to the right so that the line is again between the sensors. If the left sensor is above the dark surface, and the right one is still above the light one, then the robot needs to turn to the left to align. If both sensors are above the dark surface, then in general, the robot again keeps going straight.

The diagram above immediately shows how exactly the behavior of the motors should change in the program. Now, writing the program should not be difficult. You should start by choosing which sensor will be polled first. It doesn't really matter, so let it be left. It is necessary to determine whether it is over a light or dark surface:
This action does not yet allow you to say in which direction the robot should go. But it will divide the states listed above into two groups: (I, II) for the upper branch and (III, IV) for the lower. Each of the groups now has two states, so you need to select one of them. If you look closely at the first two states I and II, they differ in the position of the right sensor - in one case it is above a light surface, in the other - above a dark one. This is what will determine the choice of what action to take:
Now you can insert blocks that define the behavior of the motors according to the tables above: the upper branch of the nested condition defines the combination "both sensors on light", the upper one - "left on light, right on dark":
The lower branch of the main condition is responsible for another group of states III and IV. These two states also differ from each other in the level of illumination that the right sensor picks up. So it will determine the choice of each of them:
The resulting two branches are filled with movement blocks. The upper branch is responsible for the "left on dark, right on light" state, and the lower branch is responsible for "both sensors on dark".
It should be noted that this design only determines how to turn on the motors depending on the readings of the sensors in a certain place in the field, naturally, after a moment, the program must check whether the readings have changed in order to correct the behavior of the motors accordingly, and after a moment again, again, and so on. .d. Therefore, it should be placed in a loop that will provide this repeated check:

Such a fairly simple program will provide a fairly high speed of the robot moving along the line without overshooting its limits, if you correctly set the maximum speed when moving in states I and IV, and also set the optimal method of braking in states II and III - the steeper the turns on the track , the "harder" the braking should be - the speed should drop faster, and vice versa - with smooth turns, it is quite possible to apply braking through turning off the energy or even even through a slight drop in speed.

A few separate words should also be said about the placement of sensors on the robot. Obviously, the same recommendations will apply to the location of these two sensors relative to the wheels as for one sensor, only the middle of the segment connecting the two sensors is taken as the vertex of the triangle. The very distance between the sensors should also be chosen from the characteristics of the track: the closer the sensors are located to each other, the more often the robot will level out (perform relatively slow turns), but if the sensors are spaced wide enough, then there is a risk of flying off the track, so you will have to perform tighter turns and slower movement on straights.




To view a presentation with pictures, design, and slides, download its file and open it in PowerPoint on your computer.
Text content of presentation slides:
“Algorithm for moving along a black line with one color sensor” Circle on “Robotics” Teacher before Yezidov Ahmed Elievich At MBU DO “Shelkovskaya CTT” To study the algorithm for moving along a black line, a Lego Mindstorms EV3 robot with one color sensor will be used Color sensor Color sensor distinguishes between 7 colors and can detect the absence of color. As in the NXT, it can work as a light sensor. Line S Robot Competition Field The proposed "S" shaped track will allow you to conduct another interesting test of the created robots for speed and reaction. Let's consider the simplest algorithm for moving along a black line on a single color sensor on EV3. This algorithm is the slowest, but the most stable. The robot will not move strictly along the black line, but along its border, turning either left or right and gradually moving forward The algorithm is very simple : if the sensor sees black, then the robot turns in one direction, if it sees white - in the other. Tracing a Line in Reflected Light Mode with Two Sensors Sometimes the color sensor may not be able to distinguish between black and white very well. The solution to this problem is to use the sensor not in color detection mode, but in reflected light brightness detection mode. In this mode, knowing the values ​​of the sensor on a dark and light surface, we can independently say what will be considered white and what will be black. Now let's determine the brightness values ​​on the white and black surfaces. To do this, in the menu of the EV3 Brick we find the tab "Brick Applications" Now you are in the port view window and you can see the readings of all sensors at the current moment. our sensors should glow red, which means they are in reflected light detection mode. If they shine blue, in the port view window on the desired port, press the center button and select the COL-REFLECT mode. Now we will place the robot so that both sensors are located above the white surface. We look at the numbers in ports 1 and 4. In our case, the values ​​are 66 and 71, respectively. These will be the white values ​​​​of the sensors. Now let's place the robot so that the sensors are located above the black surface. Again, let's look at the values ​​​​of ports 1 and 4. We have 5 and 6, respectively. These are the meanings of black. Next, we will modify the previous program. Namely, we change the settings of the switches. As long as they have Color Sensor -> Measurement -> Color installed. We need to set the Color Sensor -> Comparison -> Reflected Light Intensity Now we have to set the "comparison type" and "threshold value". The threshold value is the value of some "gray", the values ​​below which we will consider black, and more - white. For the first approximation, it is convenient to use the average value between the white and black of each sensor. Thus, the threshold value of the first sensor (port #1) will be (66+5)/2=35.5. Round up to 35. Threshold value of the second sensor (port #4): (71+6)/2 = 38.5. Let's round up to 38. Now we set these values ​​in each switch, respectively. That's all, the blocks with movements remain in their places unchanged, because if we put the sign " in the "comparison type"<», то все, что сверху (под галочкой) будет считаться черным, а снизу (под крестиком) – белым, как и было в предыдущей программе.Старайтесь ставить датчики так, чтобы разница между белым и черным была как можно больше. Если разница меньше 30 - ставьте датчики ниже. Это было краткое руководство по программированию робота Lego ev3, для движения по черной линии, с одним и двумя датчиками цвета

One of the basic movements in legoconstruction is following the black line.

The general theory and specific examples of creating a program are described on the site wroboto.ru

I will describe how we implement this in the EV3 environment, as there are differences.

The first thing the robot needs to know is the value of the “ideal point” located on the border of black and white.

The location of the red dot in the figure just corresponds to this position.

The ideal calculation option is to measure the value of black and white and take the arithmetic mean.

You can do it manually. But the cons are immediately visible: during even a short time, the illumination can change, and the calculated value will turn out to be incorrect.

So you can make a robot do it.

In the course of experiments, we found that it is not necessary to measure both black and white. Only white can be measured. And the value of the ideal point is calculated as the value of white divided by 1.2 (1.15), depending on the width of the black line and the speed of the robot.

The calculated value must be written to a variable in order to access it later.

Calculation of the “ideal point”

The next parameter involved in the movement is the turn rate. The larger it is, the more sharply the robot reacts to changes in illumination. But too high a value will cause the robot to wobble. The value is selected experimentally individually for each robot design.

The last parameter is the base power of the motors. It affects the speed of the robot. An increase in the speed of movement leads to an increase in the response time of the robot to changes in illumination, which can lead to departure from the trajectory. The value is also selected experimentally.

For convenience, these parameters can also be written to variables.

Steering ratio and base power

The logic of moving along the black line is as follows: the deviation from the ideal point is measured. The larger it is, the stronger the robot should strive to return to it.

To do this, we calculate two numbers - the power value of each of the motors B and C separately.

In formula form, it looks like this:

Where Isens is the value of the light sensor readings.

Finally, the implementation in EV3. It is most convenient to issue in the form of a separate block.

Implementation of the algorithm

This is the algorithm that was implemented in the robot for the middle category WRO 2015

Similar articles

2022 parki48.ru. We are building a frame house. Landscaping. Construction. Foundation.