<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://wiki.me-robotics.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%94%D0%B2%D0%B8%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D1%80%D0%BE%D0%B1%D0%BE%D1%82%D0%B0_%D0%BF%D0%BE_%D1%87%D0%B5%D1%80%D0%BD%D0%BE%D0%B9_%D0%BB%D0%B5%D0%BD%D1%82%D0%B5</id>
	<title>Движение робота по черной ленте - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.me-robotics.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%94%D0%B2%D0%B8%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D1%80%D0%BE%D0%B1%D0%BE%D1%82%D0%B0_%D0%BF%D0%BE_%D1%87%D0%B5%D1%80%D0%BD%D0%BE%D0%B9_%D0%BB%D0%B5%D0%BD%D1%82%D0%B5"/>
	<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%94%D0%B2%D0%B8%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D1%80%D0%BE%D0%B1%D0%BE%D1%82%D0%B0_%D0%BF%D0%BE_%D1%87%D0%B5%D1%80%D0%BD%D0%BE%D0%B9_%D0%BB%D0%B5%D0%BD%D1%82%D0%B5&amp;action=history"/>
	<updated>2026-07-10T23:06:03Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.35.2</generator>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%94%D0%B2%D0%B8%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D1%80%D0%BE%D0%B1%D0%BE%D1%82%D0%B0_%D0%BF%D0%BE_%D1%87%D0%B5%D1%80%D0%BD%D0%BE%D0%B9_%D0%BB%D0%B5%D0%BD%D1%82%D0%B5&amp;diff=264&amp;oldid=prev</id>
		<title>Leer.Meer в 23:33, 28 мая 2021</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%94%D0%B2%D0%B8%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D1%80%D0%BE%D0%B1%D0%BE%D1%82%D0%B0_%D0%BF%D0%BE_%D1%87%D0%B5%D1%80%D0%BD%D0%BE%D0%B9_%D0%BB%D0%B5%D0%BD%D1%82%D0%B5&amp;diff=264&amp;oldid=prev"/>
		<updated>2021-05-28T23:33:23Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия 23:33, 28 мая 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l11&quot; &gt;Строка 11:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 11:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Чтобы подключить ИК-Датчик к роботу, необходимо назначить его в соответствующий слот, в меню &amp;quot;GroundSensorsSlot&amp;quot;, он находится в самом конце при нажатии в контекстом меню на e-puck. Нажимаем на &amp;quot;GroundSensorsSlot&amp;quot;, а затем на значок &amp;quot;+&amp;quot; на панели инструментов сверху для добавления нового датчика.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Чтобы подключить ИК-Датчик к роботу, необходимо назначить его в соответствующий слот, в меню &amp;quot;GroundSensorsSlot&amp;quot;, он находится в самом конце при нажатии в контекстом меню на e-puck. Нажимаем на &amp;quot;GroundSensorsSlot&amp;quot;, а затем на значок &amp;quot;+&amp;quot; на панели инструментов сверху для добавления нового датчика.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Файл:Назначение ИК сканера.png|мини]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Файл:Назначение ИК сканера.png|мини]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Здесь мы сталкиваемся с первой проблемой, а именно, мы не видим в списке ИК-датчик, не пугаемся этого и обращаем внимания на датчик расстояния. Именно он нам сейчас и нужен. добавляем &amp;quot;DistanceSensor&amp;quot;. Теперь в Дереве элементов E-puck у нас появился пункт &amp;quot;DistanceSensor&amp;quot;, переходим в него и ищем строку &amp;quot;type&amp;quot; и выбираем &amp;quot;infra-red&amp;quot;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Здесь мы сталкиваемся с первой проблемой, а именно, мы не видим в списке &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[[Инфракрасный Датчик|&lt;/ins&gt;ИК-датчик&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]]&lt;/ins&gt;, не пугаемся этого и обращаем внимания на датчик расстояния. Именно он нам сейчас и нужен. добавляем &amp;quot;DistanceSensor&amp;quot;. Теперь в Дереве элементов E-puck у нас появился пункт &amp;quot;DistanceSensor&amp;quot;, переходим в него и ищем строку &amp;quot;type&amp;quot; и выбираем &amp;quot;infra-red&amp;quot;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Теперь чтобы получить адекватное движение робота, нам необходимо немного развернуть луч нашего ИК-Датчика влево, для этого переходим снова &amp;quot;DistanceSensor&amp;quot; и редактируем первую строку &amp;quot;translation&amp;quot;, по умолчанию она имеет параметры x=0 y=0 z=0, меняем значение параметра &amp;quot;y&amp;quot; на y=-0.01.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Теперь чтобы получить адекватное движение робота, нам необходимо немного развернуть луч нашего &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[[Инфракрасный Датчик|&lt;/ins&gt;ИК-Датчика&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]] &lt;/ins&gt;влево, для этого переходим снова &amp;quot;DistanceSensor&amp;quot; и редактируем первую строку &amp;quot;translation&amp;quot;, по умолчанию она имеет параметры x=0 y=0 z=0, меняем значение параметра &amp;quot;y&amp;quot; на y=-0.01.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Добавляем аналогичным способом второй ИК-Датчик и меняем у него параметр &amp;quot;translation&amp;quot; на x=0 y=0.02 z=0.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Добавляем аналогичным способом второй &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[[Инфракрасный Датчик|&lt;/ins&gt;ИК-Датчик&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]] &lt;/ins&gt;и меняем у него параметр &amp;quot;translation&amp;quot; на x=0 y=0.02 z=0.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Далее необходимо создать или загрузить из интернета модель ленты.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Далее необходимо создать или загрузить из интернета модель ленты.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Leer.Meer</name></author>
	</entry>
	<entry>
		<id>http://wiki.me-robotics.ru/index.php?title=%D0%94%D0%B2%D0%B8%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D1%80%D0%BE%D0%B1%D0%BE%D1%82%D0%B0_%D0%BF%D0%BE_%D1%87%D0%B5%D1%80%D0%BD%D0%BE%D0%B9_%D0%BB%D0%B5%D0%BD%D1%82%D0%B5&amp;diff=211&amp;oldid=prev</id>
		<title>Leer.Meer: Новая страница: «В этой статье мы рассмотрим вариант движение e-puck по маршруту, проложенному черной ленто...»</title>
		<link rel="alternate" type="text/html" href="http://wiki.me-robotics.ru/index.php?title=%D0%94%D0%B2%D0%B8%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D1%80%D0%BE%D0%B1%D0%BE%D1%82%D0%B0_%D0%BF%D0%BE_%D1%87%D0%B5%D1%80%D0%BD%D0%BE%D0%B9_%D0%BB%D0%B5%D0%BD%D1%82%D0%B5&amp;diff=211&amp;oldid=prev"/>
		<updated>2021-05-28T13:53:50Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «В этой статье мы рассмотрим вариант движение e-puck по маршруту, проложенному черной ленто...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;В этой статье мы рассмотрим вариант движение e-puck по маршруту, проложенному черной лентой. Аналогичное задание присутствует в рамках курса &amp;quot;Системы управления в робототехнике&amp;quot;.&lt;br /&gt;
[[Файл:E-puck (back line).png|ссылка=http://wiki.me-robotics.ru/%D0%A4%D0%B0%D0%B9%D0%BB:E-puck%20(back%20line).png|мини|движение робота по черной линии]]&lt;br /&gt;
К преимуществам данного алгоритма можно отнести его простоту. Этот способ не требует высоких навыков в программировании, и как следствие, прекрасно подойдет в качестве ознакомления для новичка.&lt;br /&gt;
&lt;br /&gt;
Реализуем данной движение в программной среде Webots.&lt;br /&gt;
&lt;br /&gt;
Прежде всего необходимо создать мир в симуляции и добавить в него робота e-puck, эти шаги подробно описаны в интернете, а так же в лабораторной работе №1 по курсу &amp;quot;Системы управления в робототехнике&amp;quot;, поэтому данный момент мы опустим.&lt;br /&gt;
&lt;br /&gt;
И так, после создания арены и добавления робота на нее, нам необходимо добавить сенсоры, с помощью которых он сможет видеть нашу черную линию. Это можно реализовать за счет инфракрасных датчиков или камеры.&lt;br /&gt;
[[Файл:E-puck Сенсор.png|мини]]&lt;br /&gt;
Чтобы подключить ИК-Датчик к роботу, необходимо назначить его в соответствующий слот, в меню &amp;quot;GroundSensorsSlot&amp;quot;, он находится в самом конце при нажатии в контекстом меню на e-puck. Нажимаем на &amp;quot;GroundSensorsSlot&amp;quot;, а затем на значок &amp;quot;+&amp;quot; на панели инструментов сверху для добавления нового датчика. &lt;br /&gt;
[[Файл:Назначение ИК сканера.png|мини]]&lt;br /&gt;
Здесь мы сталкиваемся с первой проблемой, а именно, мы не видим в списке ИК-датчик, не пугаемся этого и обращаем внимания на датчик расстояния. Именно он нам сейчас и нужен. добавляем &amp;quot;DistanceSensor&amp;quot;. Теперь в Дереве элементов E-puck у нас появился пункт &amp;quot;DistanceSensor&amp;quot;, переходим в него и ищем строку &amp;quot;type&amp;quot; и выбираем &amp;quot;infra-red&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Теперь чтобы получить адекватное движение робота, нам необходимо немного развернуть луч нашего ИК-Датчика влево, для этого переходим снова &amp;quot;DistanceSensor&amp;quot; и редактируем первую строку &amp;quot;translation&amp;quot;, по умолчанию она имеет параметры x=0 y=0 z=0, меняем значение параметра &amp;quot;y&amp;quot; на y=-0.01.&lt;br /&gt;
&lt;br /&gt;
Добавляем аналогичным способом второй ИК-Датчик и меняем у него параметр &amp;quot;translation&amp;quot; на x=0 y=0.02 z=0.&lt;br /&gt;
&lt;br /&gt;
Далее необходимо создать или загрузить из интернета модель ленты.&lt;br /&gt;
&lt;br /&gt;
Теперь нам необходимо сделать цвет поверхности арены белым, чтобы он сильно контрастировал с нашей лентой.&lt;br /&gt;
&lt;br /&gt;
Переходим к написанию кода. &lt;br /&gt;
&lt;br /&gt;
Для начала, нам необходимо провести небольшое исследование. Нам необходимо знать, какие значения выдают наши инфракрасные датчики, видя перед собой белый пол и черную ленту. Для этого мы должны добавить в нашу стандартную программу прямолинейного движения пару строчек, которые включат наши сенсоры и будут выводить в консоль снизу значения.&lt;br /&gt;
&lt;br /&gt;
......&lt;br /&gt;
&lt;br /&gt;
left_ir = robot.getDistanceSensor(&amp;#039;имя сенсора 1&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
left_ir.enable(time_step)&lt;br /&gt;
&lt;br /&gt;
right_ir = robot.getDistanceSensor(&amp;#039;имя сенсора 2&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
right_ir.enable(time_step)&lt;br /&gt;
&lt;br /&gt;
while robot.step(time_step) !=-1:&lt;br /&gt;
&lt;br /&gt;
left_ir_value = left_ir.getValue()&lt;br /&gt;
&lt;br /&gt;
right_ir_value = right_ir.getValue()&lt;br /&gt;
&lt;br /&gt;
print(&amp;#039;left: {} right: {}&amp;quot;.format(left_ir_value, right_ir_value)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
......&lt;br /&gt;
&lt;br /&gt;
Если код написан верно, то после запуска симуляции мы сможем увидеть значения в консоли, именно они нам и нужны для задачи верной траектории. &lt;br /&gt;
&lt;br /&gt;
И так у нас есть 2 сканера, которые распознают поверхность и в зависимости от ее цвета выводят различные значения. Зная диапазоны этих значений, мы можем задать нужную нам траекторию с помощью таких простых функций как if и else, для обнаружения линии и поворота. Если левый датчик замечает черную линию-робот должен повернуть налево. Если правый, то соответственно направо.&lt;br /&gt;
&lt;br /&gt;
Реализация в коде:&lt;br /&gt;
&lt;br /&gt;
if (left_ir_value &amp;gt; right_ir_value) and (6 &amp;lt; left_ir_value 15);&lt;br /&gt;
&lt;br /&gt;
left_speed = -max_speed&lt;br /&gt;
&lt;br /&gt;
elif (right_ir_value &amp;gt; left_ir_value) and (6 &amp;lt; right_ir_value 15);&lt;br /&gt;
&lt;br /&gt;
right_speed = -max_speed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
И последняя проблема, с которой здесь можно столкнуться-это выезд робота за пределы линии. Чтобы решить данную проблему-следует замедлить нашего робота, чтобы он не поворачивался так быстро, а шел более плавно&lt;/div&gt;</summary>
		<author><name>Leer.Meer</name></author>
	</entry>
</feed>