search icon search icon ВЕРСИЯ ДЛЯ СЛАБОВИДЯЩИХ

Инженерный тур. 2 этап

Данный пакет задач подготавливает участников к задаче заключительного этапа. Все знания и навыки, необходимые для этого, востребованы и в задачах второго этапа.

Задачи построены по принципу цепочки, то есть численный ответ, получаемый в первой индивидуальной задаче одной компетенции, является входными данными при решении второй задачи во второй и третьей компетенции.

Для решения требуются компетенции по Robot Operating System, Python3, Arduino, а также школьные знания физики и математики.

Индивидуальные задачи

Индивидуальные задачи второго этапа инженерного тура открыты для решения. Соревнование доступно на платформе Яндекс.Контест: https://contest.yandex.ru/contest/69890/enter/.

Задачи по компетенции 3D-моделирование
Задача 1.1.(34 балла)
Разработка кронштейна
Тема: 3D-моделирование

Условие

На помощь космонавту-программисту Василию с Земли прислали космонавта-конструктора Валеру. Валере надо спроектировать простой кронштейн для сервопривода и рассчитать некоторые его параметры. Помогите ему!

Спроектируйте кронштейн в соответствии с чертежом (рис. 1.1). Выставьте материал кронштейна — алюминий с плотностью 2,700 г/см\(^3\).

Рассчитайте массу кронштейна в граммах с точностью до одного знака после запятой.

На проверку необходимо прикрепить zip-архив с 3D-моделью разработанной детали. В архиве должны содержатся только два файла.

  • STEP/STP файл с деталью.

    Название файла решения NTO2024_[Surname_Name].stp.

    Пример: NTO2024_vasiliev_nikolai.stp (step).

  • Скриншот из САПР с выводом массы детали.

    Название файла решения NTO2024_[Surname_Name].jpeg (png, jpg и т. д.).

    Пример: NTO2024_vasiliev_nikolai.jpeg (png, jpg и т. д.).

Рис. 1.1.

Решение

Ответы получаются автоматически при использовании специального ПО для 3D-моделирования.

Файл с деталью: https://disk.yandex.ru/d/WHw9iNNOvOafkA.

Файл со скриншотом: https://disk.yandex.ru/i/4Y86QpTU8IyGBA.

Ответ

43,7 г (43,727 г — расчетный результат).

Допустимый диапазон: 42–44 г.

Задачи по компетенции электроника
Задача 1.2.(22 балла)
Разработка проекта интеллектуального освещения
Тема: электроника

Условие

На помощь космонавту-программисту Василию с Земли прислали космонавта-электронщика Виталия. Виталию необходимо разработать схему и программу для системы интеллектуального освещения с регулировкой яркости и двумя режимами работы.

Для решения этой задачи необходимо использовать симулятор Arduino: https://wokwi.com.

Для построения системы используйте следующие компоненты из библиотеки Wokwi:

  • контроллер Arduino Mega,
  • светодиод,
  • резистор,
  • кнопка,
  • переключатель ползунковый,
  • резистор переменный/ползунковый,
  • ультразвуковой дальномер HC-SR04.

Требования к работе схемы и программы

  • При запуске программы должно прийти уведомление о старте в монитор порта.
  • В зависимости от начального положения переключателя должен включиться либо ручной режим, либо автоматический режим.
  • В автоматическом режиме светодиод должен включаться только тогда, когда значения расстояния на ультразвуковом дальномере будет меньше или равно 200 см. Также в автоматическом режиме светодиод не должен реагировать на нажатия кнопки.
  • При нажатии на переключатель должен меняться режим работы.
  • В ручном режиме светодиод должен включаться/выключаться по нажатию кнопки. Также в ручном режиме светодиод не должен реагировать на изменение расстояния на ультразвуковом дальномере.
  • В каждом из режимов работы яркостью светодиода можно управлять с помощью переменного/ползункового резистора.
  • При изменении режима работы должно приходить сообщение с текущим режимом в монитор порта.
  • Провода должны быть аккуратно размещены на схеме (по возможности). Допускается использование макетной платы. Также допускается использование общего заземления и общего питания (5V).

Ссылка на пример работы схемы: https://disk.yandex.ru/i/x79ZCFaEwteNGQ.

Оформление результата работы

Результатом задачи является архив с итоговым решением. Загрузить итоговый zip-архив файла проекта можно напрямую на сайте https://wokwi.com, рис. 1.2.

Рис. 1.2.

  • Формат архива — zip.
  • Название файла решения NTO2024_[Surname_Name].zip.

    Пример: NTO2024_vasiliev_nikolai.zip.

  • В архиве должны содержаться только три файла:

    • wokwi-project.txt;
    • sketch.ino;
    • diagram.json.
  • Оценивается и схема, и программный код.

Проверка задания осуществляется в симуляторе Wokwi. Если работа выполнялась в другой программе или сервисе, рекомендуется проверить работоспособность в симуляторе Wokwi перед отправкой.

Решение

Проанализировать требования к схеме и программе, собрать схему в симуляторе, написать программный код, протестировать, скачать архив и прикрепить его к ответу.

Архив с эталонным решением: https://disk.yandex.ru/d/_SVvaZoa1Y_CtA.

Задача 1.3.(10 баллов)
Расчет электрической схемы
Тема: электроника

Условие

Для получения делителя электрического напряжения электронщику по имени Виталий, работающему в космосе, требуется выполнить расчет схемы, состоящей из двух резисторов.

Пожалуйста, окажите ему помощь!

Рис. 1.3. Делитель напряжения

Входящее питание на делитель напряжения снимается с 10-го пина Ардуино PRO Micro. Напряжение на 10-й пин подается командой:

analogWrite(10,102);

Определите номинал нижнего резистора \(R_2\) делителя напряжения, если известно, что верхний резистор \(R_1\) имеет номинал 2 Ом, а выходное напряжение составляет 1 В.

Решение

В соответствии с формулой делителя: \[U_\text{вых} = U_\text{вх}\cdot \frac{R_2}{R_1 + R_2};\] \[R_2 = \frac{U_\text{вых}\cdot R_1}{U_\text{вх}-U_\text{вых}}.\]

Подставим значения \(U_\text{вых} = 1\), \(U_\text{вх} = 2,\) \(R_1 = 2\), получаем результат: \[R_2=2.\]

Ответ

2.

Задачи по компетенции программирование
Задача 1.4.(33 балла)
Разработка программы для управления роботом на ROS
Темы: программирование, ROS, Python

Условие

Космонавт-программист Василий углубляется в изучение системы ROS и желает попрактиковаться в симуляции, прежде чем отправлять команды реальному роботу Федору. Давайте поможем Василию в этом деле. Участникам предоставлен созданный организаторами файл «сцены» для симулятора ROS Gazebo. Также в распоряжении участников находится файл запуска, который разворачивает сцену со стеной и размещает в ней робота turtlebot3 burger.

Для выполнения этого задания потребуются следующие этапы:

  1. Установить ОС Ubuntu 20.04: https://vk.com/video-206862623_456239459.
  2. Установить ROS Noetic: https://vk.com/video-206862623_456239462.
  3. Установить turtlebot3_simulations:
        sudo apt install ros-noetic-turtlebot3-simulations ros-noetic-turtlebot3-description
  4. Скачать файлы wall.world и wall.launch: https://disk.yandex.ru/d/-3r8FQ-YN2eEXw.
  5. Поместить launch файл в директорию launch пакета turtlebot3_gazebo.
  6. Поместить wall.world в директорию worlds пакета turtlebot3_gazebo.
  7. Указать модель робота — turtlebot3 burger:
    export TURTLEBOT3_MODEL=burger
  8. Запустить launch файл как часть пакета turtlebot3_gazebo:
    roslaunch turtlebot3_gazebo wall.launch
  9. Убедиться, что робот и стенка появились в симуляторе (рис. 1.4).

Рис. 1.4.

Напишите программу на языке Python с использованием библиотеки rospy, которая будет выполнять следующую логику.

После запуска программы робот должен развернуться на 240° вокруг оси \(Z\) относительно начального положения. После окончания разворота робот должен переместиться на 0,4 м прямо в системе координат связанной с роботом. Далее необходимо выводить минимальное расстояние до стены. В качестве ответа ожидается число — расстояние до стены, округленное до первого после запятой. Запрещается редактировать wall.launch и wall.world!

Для наибольшей точности предлагаем использовать:

  • угловую скорость: \(\pm ~0{,}05\);
  • линейную скорость: \(\pm~ 0{,}05\).

Отправьте на проверку файл с кодом, написанным для решения задачи. Файл с кодом должен иметь расширение .py.

Формат имени файла решения: NTO2024_[Surname_Name].py.

Пример: NTO2024_vasiliev_nikolai.py.

Решение

Для перемещения робота можно написать программу, которая сначала повернет робота на нужный угол, а затем даст ему команду на движение прямо на необходимое расстояние. После того как робот совершит перемещение для определения минимального расстояния до стены, можно в той же программе вывести на экран минимальное значение массива ranges в топике scan.

Файл с кодом: https://disk.yandex.ru/d/8PSqeJfwjnnJRg.

Ответ

Правильным считается результат в диапазоне: 1,4–1,5 м.

Командные задачи

Командные задачи второго этапа инженерного тура открыты для решения. Соревнование доступно на платформе Яндекс.Контест: https://contest.yandex.ru/contest/69912/enter/.

Задача 2.1.(16 баллов)
Модернизация кронштейна V.1
Тема: 3D-моделирование

Условие

На помощь космонавту-программисту Василию с Земли прислали космонавта-конструктора Валеру. Валере надо спроектировать простой кронштейн для сервопривода и рассчитать некоторые его параметры. Но теперь для этого он будет использовать данные космонавта-электронщика Виталия. Помогите им!

Рис. 2.1.

Спроектируйте кронштейн в соответствии с чертежом из задачи «Разработка кронштейна» 1.1, увеличив значение ширины основания кронштейна с 30 мм на количество миллиметров, полученное космонавтом-электронщиком Виталием как ответ на задачу «Расчет электрической схемы» 1.3.

Например, Виталий получил ответ 3,5 Ом, значит, следует прибавить к ширине основания в 30 мм 3,5 мм, получите ширину нового основания 33,5 мм, перепроектируйте деталь, выставьте материал кронштейна — нержавеющая сталь с плотностью 8,000 г/см\(^3\) и рассчитайте массу кронштейна в граммах с точностью до одного знака после запятой.

Решение

Ответы получаются автоматически при использовании специального ПО для 3D-моделирования.

Файл с деталью: https://disk.yandex.ru/d/uBT0yz3UGYA-2w.

Файл с скриншотом: https://disk.yandex.ru/i/AlAEqqOwoscCkA.

Ответ

133,4 г (133,4 г — расчетный).

Допустимый диапазон: 132–134 г.

Задача 2.2.(16 баллов)
Модернизация кронштейна V.2
Тема: 3D-моделирование

Условие

Рис. 2.2.

На помощь космонавту-программисту Василию с Земли прислали космонавта-конструктора Валеру. Валере надо спроектировать простой кронштейн для робота и рассчитать некоторые его параметры. Но теперь для этого он будет использовать данные космонавта-программиста Василия. Помогите им!

Спроектируйте кронштейн в соответствии с чертежом из задачи «Модернизация кронштейна V.1» 2.1, уменьшив значение высоты обеих стоек кронштейна с 22 мм на количество миллиметров, полученное космонавтом-программистом Василием как ответ на задачу «Разработка программы для управления роботом на ROS» 1.4.

Например, Василий получил ответ 2,5 м, следует вычесть 2,5 из количества миллиметров на чертеже, то есть вычтите из 22 мм 2,5 мм, получите значение 19,5 мм, перепроектируйте деталь, выставьте материал кронштейна — нержавеющая сталь с плотностью 8,000 г/см\(^3\) и рассчитайте массу кронштейна в граммах с точностью до одного знака после запятой.

Решение

Ответы получаются автоматически при использовании специального ПО для 3D-моделирования.

Файл с деталью: https://disk.yandex.ru/d/G5buP5iy-Ti2yw.

Файл с скриншотом: https://disk.yandex.ru/i/yzIzux6jcwAHEQ.

Ответ

128,1–128,9 г.

Допустимый диапазон: 127–130 г.

Задача 2.3.(16 баллов)
Пересчет электрической схемы V.1
Тема: электроника

Условие

Рис. 2.3. Делитель напряжения

На помощь электронщику Виталию, работающему в космосе, с Земли прислали космонавта-конструктора Валерия. Им требуется выполнить расчет схемы, состоящей из двух резисторов для получения делителя электрического напряжения, но теперь они будут использовать данные конструктора Валерия. Пожалуйста, окажите им помощь!

Входящее питание на делитель напряжения снимается с 10-го пина Ардуино PRO Micro. Напряжение на 10-й пин подается командой:

    analogWrite(10,102);

Определите номинал нижнего резистора \(R_2\) делителя напряжения, если известно, что верхний резистор \(R_1\) имеет номинал в омах, который равен массе детали в граммах с округлением до первого знака после запятой, которое получил космонавт-конструктор Валера в своем задании «Разработка кронштейна» 1.1, а выходное напряжение составляет 0,5 В. Округлите ответ в омах до второго знака после запятой и запишите его.

Решение

В соответствии с формулой делителя: \[U_\text{вых} = U_\text{вх}\cdot \frac{R_2}{R_1 + R_2};\] \[R_2 = \frac{U_\text{вых}\cdot R_1}{U_\text{вх}-U_\text{вых}}.\]

Подставим значения \(U_\text{вых} = 0{,}5\), \(U_\text{вх} = 2,\) \(R_1 = 43{,}7\), получаем результат: \[R_2=14{,}57.\]

Ответ

Расчетный диапазон: 14,55–14,58 Ом; допустимый диапазон: 14,4–14,7 Ом.

Задача 2.4.(16 баллов)
Пересчет электрической схемы V.2
Тема: электроника

Условие

На помощь электронщику Виталию, работающему в космосе, с Земли прислали космонавта-конструктора Василия. Им требуется выполнить расчет схемы, состоящей из двух резисторов для получения делителя электрического напряжения, но теперь они будут использовать данные программиста Василия. Пожалуйста, окажите им помощь!

Входящее питание на делитель напряжения снимается с 10-го пина Ардуино PRO Micro. Напряжение на 10-й пин подается командой:

    analogWrite(10,102);

Рис. 2.4. Делитель напряжения

Определите номинал нижнего резистора \(R_2\) делителя напряжения, если известно, что верхний резистор \(R_1\) имеет номинал 2 Ом, а выходное напряжение составляет такое количество вольт, которое равно расстоянию до стены с округлением до десятых долей метра, которое получил космонавт-программист Василий в задании «Разработка программы для управления роботом на ROS» 1.4. Округлите ответ в омах до второго знака после запятой и запишите его.

Решение

В соответствии с формулой делителя: \[U_\text{вых} = U_\text{вх}\cdot \frac{R_2}{R_1 + R_2};\] \[R_2 = \frac{U_\text{вых}\cdot R_1}{U_\text{вх}-U_\text{вых}}.\]

Подставим значения \(U_\text{вых} = 1{,}4\), \(U_\text{вх} = 2,\) \(R_1 = 2\), получаем результат: \[R_2=4{,}7.\]

Ответ

4,7 Ом.

Правильный диапазон: 4,7–6 Ом.

Задача 2.5.(18 баллов)
Обновление программы для управления роботом на ROS V.1
Темы: программирование, ROS, Python

Условие

Космонавт-программист Василий продолжает изучение ROS, но теперь ему помогает космонавт-конструктор Валера. Вместе они достигнут большего! Помогите им решить общую задачу.

Для выполнения этого задания потребуются следующие этапы:

  1. Установить ОС Ubuntu 20.04: https://vk.com/video-206862623_456239459.
  2. Установить ROS Noetic: https://vk.com/video-206862623_456239462.
  3. Установить turtlebot3_simulations:
        sudo apt install ros-noetic-turtlebot3-simulations ros-noetic-turtlebot3-description
  4. Скачать файлы wall.world и wall.launch: https://disk.yandex.ru/d/-3r8FQ-YN2eEXw.
  5. Поместить launch файл в директорию launch пакета turtlebot3_gazebo.
  6. Поместить wall.world в директорию worlds пакета turtlebot3_gazebo.
  7. Указать модель робота — turtlebot3 burger:
        export TURTLEBOT3_MODEL=burger
  8. Запустить launch файл как часть пакета turtlebot3_gazebo:
        roslaunch turtlebot3_gazebo wall.launch
  9. Убедиться, что робот и стенка появились в симуляторе (рис. 2.5).

Рис. 2.5.

Напишите программу на языке Python с использованием библиотеки rospy, которая будет выполнять следующую логику.

После запуска программы робот должен развернуться на количество градусов, которое равно количеству граммов, полученных в задаче «Разработка кронштейна» 1.1, вокруг оси \(Z\) относительно начального положения. После окончания разворота робот должен переместиться на 0,4 м прямо в системе координат, связанной с роботом. Далее необходимо выводить минимальное расстояние до стены. В качестве ответа ожидается число (расстояние до стены), округленное до первого знака после запятой. Запрещается редактировать wall.launch и wall.world!

Для наибольшей точности предлагаем использовать:

  • угловую скорость: \(\pm ~0{,}05\);
  • линейную скорость: \(\pm ~0{,}05\).

Решение

Для перемещения робота можно написать программу, которая сначала повернет робота на нужный угол, а затем даст ему команду на движение прямо на необходимое расстояние. После того как робот совершит перемещение для определения минимального расстояния до стены, можно в той же программе вывести на экран минимальное значение массива ranges в топике scan.

Файл с кодом: https://disk.yandex.ru/d/gaxB-EOJPbRr_g

Ответ

Верный ответ в диапазоне: 2,0–2,1 м.

Допустимый диапазон: 1,9–2,2 м.

Задача 2.6.(18 баллов)
Обновление программы для управления роботом на ROS V.2
Темы: программирование, ROS, Python

Условие

Космонавт-программист Василий продолжает изучение ROS, но теперь ему помогает космонавт-конструктор Валера. Вместе они достигнут большего! Помогите им решить общую задачу.

Для выполнения этого задания потребуются следующие этапы:

  1. Установить ОС Ubuntu 20.04: https://vk.com/video-206862623_456239459.
  2. Установить ROS Noetic: https://vk.com/video-206862623_456239462.
  3. Установить turtlebot3_simulations:
        sudo apt install ros-noetic-turtlebot3-simulations ros-noetic-turtlebot3-description
  4. Скачать файлы wall.world и wall.launch: https://disk.yandex.ru/d/-3r8FQ-YN2eEXw.
  5. Поместить launch файл в директорию launch пакета turtlebot3_gazebo.
  6. Поместите wall.world в директорию worlds пакета turtlebot3_gazebo.
  7. Указать модель робота — turtlebot3 burger:
        export TURTLEBOT3_MODEL=burger
  8. Запустить launch файл как часть пакета turtlebot3_gazebo:
        roslaunch turtlebot3_gazebo wall.launch
  9. Убедиться, что робот и стенка появились в симуляторе (рис. 2.6).

Рис. 2.6.

Напишите программу на языке Python с использованием библиотеки rospy, которая будет выполнять следующую логику.

После запуска программы робот должен развернуться на 240° вокруг оси \(Z\) относительно начального положения. После окончания разворота робот должен переместиться на то количество метров прямо в системе координат связанной с роботом, которое равно количеству ом в ответе на задачу «Расчет электрической схемы» 1.3, прямо в системе координат связанной с роботом. Далее необходимо выводить минимальное расстояние до стены. В качестве ответа ожидается число (расстояние до стены), округленное до первого знака после запятой. Запрещается редактировать wall.launch и wall.world!

Для наибольшей точности предлагаем использовать:

  • угловую скорость: \(\pm ~0{,}05\);
  • линейную скорость: \(\pm ~0{,}05\).

Решение

Для перемещения робота можно написать программу, которая сначала повернет робота на нужный угол, а затем даст ему команду на движение прямо на необходимое расстояние. После того как робот совершит перемещение для определения минимального расстояния до стены, можно в той же программе вывести на экран минимальное значение массива ranges в топике scan.

Файл с кодом: https://disk.yandex.ru/d/t88MuN9oxyhCTQ.

Ответ

Правильный диапазон: 0,1–0,3 м.

text slider background image text slider background image
text slider background image text slider background image text slider background image text slider background image