Робофутбол ev3 инструкция по сборке

  • Описание

  • Отзывы (0)

Описание

футболист Lego EV3 инструкция по сборке

Отзывы

Отзывов пока нет.

Будьте первым, кто оставил отзыв на “футболист Lego EV3 инструкция по сборке”

Ваш адрес email не будет опубликован.

Ваша оценка *

Ваш отзыв *

Имя *

Email *

Сохранить моё имя, email и адрес сайта в этом браузере для последующих моих комментариев.



Проектная деятельность

Войти

26 дек 2018 2:38
TLNaibov

инструкция по сборке робота-футболиста

https://education.lego.com/ru-ru/support/mindstorms-ev3/building-instruc…

Источник информации относится к проекту: 

Робофутбол

  • Войдите, чтобы оставлять комментарии

107061, Москва, ул 2-Пугачевская, 6А
+7 (495) 963-76-77

Обратная связь

Давненько не было вестей от нашей команды. Вы думаете что мы забросили роботов? Не дождетесь!) С середины января находимся в режиме планомерной подготовки к ВРО, снова готовимся к футболу роботов. В этом году алгоритмы машин снова переписаны заново и во многом не повторяют логику работы наших футболистов предыдущих поколений.

Учебный процесс тоже не стоял на месте, в нашей копилке теперь вот такой крупнокалиберный арсенал: «Введение в программирование (C++)» от Академии Яндекса, «Программирование на Python», «Python: основы и применение», «Введение в Linux» от Института биоинформатики, «Введение в архитектуру ЭВМ. Элементы операционных систем» от Computer Science Center.

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

Поиграть против своей автономной команды очень интересно и полезно:

  • Зная слабые места своих автономных роботов можно создавать на поле такие игровые ситуации, в которых они проявятся. Это важно для отладки алгоритмов и конструкций.
  • Управляя роботом ты моделируешь в голове работу некого алгоритма, который затем может быть перенесен в программу автономного игрока
  • Это реальный драйв — ты играешь в игру не на экране, а в реальном мире, с полноценной физикой и красивыми текстурами. Обзор 360 градусов и высокое разрешение!

Так как мы находимся в процессе изучения языка Python, то интересной учебной задачей стала реализация такого управляемого робота-оппонента на базе ev3dev. Можно конечно «не заморачиваться» и использовать смартфон и написанное кем-то приложение, но это не наш путь. На борту у EV3 есть Bluetooth, у китайцев на Aliexpress — дешевые блютузные джойстики — почему бы не поуправлять роботом с реальных кнопок и стика? Используя стандартное ПО LEGO EV3 такую связку заставить работать невозможно, ev3dev открывает перед нами такую возможность.

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

Чтобы джойстик заработал с EV3, необходимо «спарить» устройства привычным образом, после чего в /dev/input должен появиться новый девайс:

robot@ev3dev:~$ ls /dev/input
by-path  event0  event1  event2

Кроме Bluetooth-джойстика можно использовать беспроводной USB-джойстик, воткнув его USB-приемник в соответствующий порт на роботе. Беспроводная клавиатура с интерфейсом USB или Bluetooth тоже подойдет. Технически роботом можно управлять используя даже беспроводную мышку, но это вероятно не особенно удобно. Главное условие — после подключения устройства оно должно появляться в устройствах ввода, в /dev/input

Для получения данных с HID-устройств мы использовали стандартный модуль Python evdev. Ничего доустанавливать в ev3dev не требуется.

Нашу программу для робота можно скачать по ссылке. Основная фишка управления по сравнению со «смартфонным» — реализация плавного разгона и торможения, что обеспечивает комфортное управление. Выглядит программа следующим образом:

#!/usr/bin/env python3


# Подключаем модуль для управления EV3
from ev3dev.ev3 import *
# Подключаем модуль для чтения данных с HID-устройств
import evdev


# Создаем объект device, измените на ваш /dev/input/event2
device = evdev.InputDevice(‘/dev/input/event2’)


StatusGo = 0
StatusLR = 0


# Целевая скорость, робот наберет ее когда разгонится
speed = 100


# Реальная скорость, с нее робот стартует
real_speedB = 0
real_speedC = 0


speedB = 0
speedC = 0


# Признак зарершения программы (нажат акнопка Start на джойстике)
STOP = False


# Создаем объекты — моторы B и C
B = LargeMotor(‘outB’)
C = LargeMotor(‘outC’)


# Цикл пока не нажата кнопка Start на джойстике
while not STOP:
    # Читаем список событий с джойстика
    gen = device.read()
    try:
       # Для всех событий в списке
       for event in gen:
           # Выделяем те, которые возникли при нажатиях кнопок
           if event.type == evdev.ecodes.EV_KEY:
               # преобразуем такие события в строку myStr
               myStr = str(event)
               
               # если отпущена кнопка «Влево»
               if myStr.find(«code 168, type 01, val 00») >= 0:
                   StatusLR = 0
               # если нажата кнопка «Влево»
               if myStr.find(«code 168, type 01, val 01») >= 0:
                   StatusLR = -1
               # если удерживается кнопка «Влево»
               if myStr.find(«code 168, type 01, val 02») >= 0:
                   StatusLR = -2
               # если отпущена кнопка «Вправо»
               if myStr.find(«code 208, type 01, val 00») >= 0:
                   StatusLR = 0
               # если нажата кнопка «Вправо»
               if myStr.find(«code 208, type 01, val 01») >= 0:
                   StatusLR = 1
               # если удерживается кнопка «Вправо»
               if myStr.find(«code 208, type 01, val 02») >= 0:
                   StatusLR = 2
               # если отпущена кнопка «Вперед»  
               if myStr.find(«code 172, type 01, val 00») >= 0:
                   StatusGo = 0
               # если нажата кнопка «Вперед»
               if myStr.find(«code 172, type 01, val 01») >= 0:
                   StatusGo = speed*0.75
               # если удерживается кнопка «Вперед»
               if myStr.find(«code 172, type 01, val 02») >= 0:
                   StatusGo = speed
               # если отпущена кнопка «Назад»
               if myStr.find(«code 114, type 01, val 00») >= 0:
                   StatusGo = 0
               # если нажата кнопка «Назад»
               if myStr.find(«code 114, type 01, val 01») >= 0:
                   StatusGo = -1*(speed * 0.75)
               # если удерживается кнопка «Назад»
               if myStr.find(«code 114, type 01, val 02») >= 0:
                   #print («GO BREAK»)
                   StatusGo = -1*speed
               # если нажата кнопка «Start»         
               if myStr.find(«code 164, type 01, val 02») >= 0:
                   print («BREAK! STOP PROGRAMM»)
                   STOP = True
               # Кнопка — среднее значение скорости
               if myStr.find(«code 164, type 01, val 01») >= 0:
                   speed = 75
               # Кнопка нажата — уменьшить скорость
               if myStr.find(«code 115, type 01, val 01») >= 0:
                   speed = speed — 5
                   if(speed < 5):
                       speed = 5
               # Кнопка удерживается — уменьшить скорость        
               if myStr.find(«code 115, type 01, val 02») >= 0:
                   speed = speed — 1
                   if(speed < 5): 
                       speed = 5
               # Кнопка нажата — увеличить скорость
               if myStr.find(«code 113, type 01, val 01») >= 0:
                   speed = speed + 5
                   if(speed > 100): 
                       speed = 100
               # Кнопка удерживается — увеличить скорость
               if myStr.find(«code 113, type 01, val 02») >= 0:
                   speed = speed + 1
                   if(speed > 100): 
                       speed = 100


    except IOError:
        pass
    
    # перебрасываем статусы нажатий в мощности моторов  
    speedB = StatusGo
    speedC = StatusGo
    
    # Поворот влево
    if(StatusLR < 0):
        speedB = speedB-(25*abs(StatusLR))
        speedC = speedC+(25*abs(StatusLR))         
    # поворот вправо
    if(StatusLR > 0):
        speedC = speedC-(25*StatusLR)
        speedB = speedB+(25*StatusLR)
    
    # ограничение скорости
    if(speedB > 100):
        speedB = 100
    if(speedC > 100):
        speedC = 100
    if(speedB < -100):
        speedB = -100
    if(speedC < -100):
        speedC = -100


    # плавный разгон и торможение
    if(abs(speedB) > 5 and abs(speedC) > 5):
        real_speedB = real_speedB*0.95 + speedB*0.05
        real_speedC = real_speedC*0.95 + speedC*0.05
    if(speedB == 0 and speedC == 0):
        real_speedB = real_speedB*0.95
        real_speedC = real_speedC*0.95
    if(speedB == 0 and abs(real_speedB) < 5):
        real_speedB = 0
    if(speedC == 0 and abs(real_speedC) < 5):
        real_speedC = 0
    
    # подаем рассчитанные мощности на моторы        
    B.run_forever(speed_sp=real_speedB*9)
    C.run_forever(speed_sp=real_speedC*9)


# останавливаем моторы после вылета из цикла         
B.stop(stop_action=»hold»)
C.stop(stop_action=»hold»)


# сигнал завершения программы
Sound.beep()

Инструкции по сборке роботов Lego                                                           Курс по программированию Ev3

Схемы роботов и инструкции по сборке роботов ev3

1 Инструкция по сборке робота ev3 для движения по черной линии

2 Инструкция по сборке робота ev 3 для кегельринга

3 Инструкция по сборке полноприводного робота  ev3 сумо

4 Инструкция по сборке мощного робота сумо ev3

5 Инструкция по сборке гусеничного робота танка ev3

6 Инструкция по сборке маневренного широкого танка ev3

7 Инструкция по сборке захвата ev3

8 Инструкция по сборке шагающего робота ev3

9 Схемы крепления датчика расстояния к роботу ev3

10 Схемы крепления датчика цвета к роботу ev3

Схемы роботов лего роботов nxt

1 Инструкция по сборке шагающего nxt робота

2 Инструкция по сборке nxt сумоиста

Поделиться

Учебный процесс тоже не стоял на месте, в нашей копилке теперь вот такой крупнокалиберный арсенал: «Введение в программирование (C++)» от Академии Яндекса, «Программирование на Python», «Python: основы и применение», «Введение в Linux» от Института биоинформатики, «Введение в архитектуру ЭВМ. Элементы операционных систем» от Computer Science Center.

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

Поиграть против своей автономной команды очень интересно и полезно:

  • Зная слабые места своих автономных роботов можно создавать на поле такие игровые ситуации, в которых они проявятся. Это важно для отладки алгоритмов и конструкций.
  • Управляя роботом ты моделируешь в голове работу некого алгоритма, который затем может быть перенесен в программу автономного игрока
  • Это реальный драйв — ты играешь в игру не на экране, а в реальном мире, с полноценной физикой и красивыми текстурами. Обзор 360 градусов и высокое разрешение!

Так как мы находимся в процессе изучения языка Python, то интересной учебной задачей стала реализация такого управляемого робота-оппонента на базе ev3dev. Можно конечно «не заморачиваться» и использовать смартфон и написанное кем-то приложение, но это не наш путь. На борту у EV3 есть Bluetooth, у китайцев на Aliexpress — дешевые блютузные джойстики — почему бы не поуправлять роботом с реальных кнопок и стика? Используя стандартное ПО LEGO EV3 такую связку заставить работать невозможно, ev3dev открывает перед нами такую возможность.

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

Чтобы джойстик заработал с EV3, необходимо «спарить» устройства привычным образом, после чего в /dev/input должен появиться новый девайс:

robot@ev3dev:~$ ls /dev/input
by-path  event0  event1  event2

Кроме Bluetooth-джойстика можно использовать беспроводной USB-джойстик, воткнув его USB-приемник в соответствующий порт на роботе. Беспроводная клавиатура с интерфейсом USB или Bluetooth тоже подойдет. Технически роботом можно управлять используя даже беспроводную мышку, но это вероятно не особенно удобно. Главное условие — после подключения устройства оно должно появляться в устройствах ввода, в /dev/input

Для получения данных с HID-устройств мы использовали стандартный модуль Python evdev. Ничего доустанавливать в ev3dev не требуется.

Нашу программу для робота можно скачать по ссылке. Основная фишка управления по сравнению со «смартфонным» — реализация плавного разгона и торможения, что обеспечивает комфортное управление. Выглядит программа следующим образом:

#!/usr/bin/env python3


# Подключаем модуль для управления EV3
from ev3dev.ev3 import *
# Подключаем модуль для чтения данных с HID-устройств
import evdev


# Создаем объект device, измените на ваш /dev/input/event2
device = evdev.InputDevice(‘/dev/input/event2’)


StatusGo = 0
StatusLR = 0


# Целевая скорость, робот наберет ее когда разгонится
speed = 100


# Реальная скорость, с нее робот стартует
real_speedB = 0
real_speedC = 0


speedB = 0
speedC = 0


# Признак зарершения программы (нажат акнопка Start на джойстике)
STOP = False


# Создаем объекты — моторы B и C
B = LargeMotor(‘outB’)
C = LargeMotor(‘outC’)


# Цикл пока не нажата кнопка Start на джойстике
while not STOP:
    # Читаем список событий с джойстика
    gen = device.read()
    try:
       # Для всех событий в списке
       for event in gen:
           # Выделяем те, которые возникли при нажатиях кнопок
           if event.type == evdev.ecodes.EV_KEY:
               # преобразуем такие события в строку myStr
               myStr = str(event)
               
               # если отпущена кнопка «Влево»
               if myStr.find(«code 168, type 01, val 00») >= 0:
                   StatusLR = 0
               # если нажата кнопка «Влево»
               if myStr.find(«code 168, type 01, val 01») >= 0:
                   StatusLR = -1
               # если удерживается кнопка «Влево»
               if myStr.find(«code 168, type 01, val 02») >= 0:
                   StatusLR = -2
               # если отпущена кнопка «Вправо»
               if myStr.find(«code 208, type 01, val 00») >= 0:
                   StatusLR = 0
               # если нажата кнопка «Вправо»
               if myStr.find(«code 208, type 01, val 01») >= 0:
                   StatusLR = 1
               # если удерживается кнопка «Вправо»
               if myStr.find(«code 208, type 01, val 02») >= 0:
                   StatusLR = 2
               # если отпущена кнопка «Вперед»  
               if myStr.find(«code 172, type 01, val 00») >= 0:
                   StatusGo = 0
               # если нажата кнопка «Вперед»
               if myStr.find(«code 172, type 01, val 01») >= 0:
                   StatusGo = speed*0.75
               # если удерживается кнопка «Вперед»
               if myStr.find(«code 172, type 01, val 02») >= 0:
                   StatusGo = speed
               # если отпущена кнопка «Назад»
               if myStr.find(«code 114, type 01, val 00») >= 0:
                   StatusGo = 0
               # если нажата кнопка «Назад»
               if myStr.find(«code 114, type 01, val 01») >= 0:
                   StatusGo = -1*(speed * 0.75)
               # если удерживается кнопка «Назад»
               if myStr.find(«code 114, type 01, val 02») >= 0:
                   #print («GO BREAK»)
                   StatusGo = -1*speed
               # если нажата кнопка «Start»         
               if myStr.find(«code 164, type 01, val 02») >= 0:
                   print («BREAK! STOP PROGRAMM»)
                   STOP = True
               # Кнопка — среднее значение скорости
               if myStr.find(«code 164, type 01, val 01») >= 0:
                   speed = 75
               # Кнопка нажата — уменьшить скорость
               if myStr.find(«code 115, type 01, val 01») >= 0:
                   speed = speed — 5
                   if(speed < 5):
                       speed = 5
               # Кнопка удерживается — уменьшить скорость        
               if myStr.find(«code 115, type 01, val 02») >= 0:
                   speed = speed — 1
                   if(speed < 5): 
                       speed = 5
               # Кнопка нажата — увеличить скорость
               if myStr.find(«code 113, type 01, val 01») >= 0:
                   speed = speed + 5
                   if(speed > 100): 
                       speed = 100
               # Кнопка удерживается — увеличить скорость
               if myStr.find(«code 113, type 01, val 02») >= 0:
                   speed = speed + 1
                   if(speed > 100): 
                       speed = 100


    except IOError:
        pass
    
    # перебрасываем статусы нажатий в мощности моторов  
    speedB = StatusGo
    speedC = StatusGo
    
    # Поворот влево
    if(StatusLR < 0):
        speedB = speedB-(25*abs(StatusLR))
        speedC = speedC+(25*abs(StatusLR))         
    # поворот вправо
    if(StatusLR > 0):
        speedC = speedC-(25*StatusLR)
        speedB = speedB+(25*StatusLR)
    
    # ограничение скорости
    if(speedB > 100):
        speedB = 100
    if(speedC > 100):
        speedC = 100
    if(speedB < -100):
        speedB = -100
    if(speedC < -100):
        speedC = -100


    # плавный разгон и торможение
    if(abs(speedB) > 5 and abs(speedC) > 5):
        real_speedB = real_speedB*0.95 + speedB*0.05
        real_speedC = real_speedC*0.95 + speedC*0.05
    if(speedB == 0 and speedC == 0):
        real_speedB = real_speedB*0.95
        real_speedC = real_speedC*0.95
    if(speedB == 0 and abs(real_speedB) < 5):
        real_speedB = 0
    if(speedC == 0 and abs(real_speedC) < 5):
        real_speedC = 0
    
    # подаем рассчитанные мощности на моторы        
    B.run_forever(speed_sp=real_speedB*9)
    C.run_forever(speed_sp=real_speedC*9)


# останавливаем моторы после вылета из цикла         
B.stop(stop_action=»hold»)
C.stop(stop_action=»hold»)


# сигнал завершения программы
Sound.beep()

Инструкции по сборке роботов Lego                                                           Курс по программированию Ev3

Схемы роботов и инструкции по сборке роботов ev3

1 Инструкция по сборке робота ev3 для движения по черной линии

2 Инструкция по сборке робота ev 3 для кегельринга

3 Инструкция по сборке полноприводного робота  ev3 сумо

4 Инструкция по сборке мощного робота сумо ev3

5 Инструкция по сборке гусеничного робота танка ev3

6 Инструкция по сборке маневренного широкого танка ev3

7 Инструкция по сборке захвата ev3

8 Инструкция по сборке шагающего робота ev3

9 Схемы крепления датчика расстояния к роботу ev3

10 Схемы крепления датчика цвета к роботу ev3

Схемы роботов лего роботов nxt

1 Инструкция по сборке шагающего nxt робота

2 Инструкция по сборке nxt сумоиста

Поделиться

Скачиваемые файлы:

  • 17 пошаговых инструкций по сборке в формате pdf;
  • Дополнительные вопросы и задачи (к некоторым урокам);
  • Готовые программы на графическом языке программирования EV3-G (к некоторым урокам).

Необходимое оборудование:

  • Базовый набор Lego Education EV3;
  • Дополнительный набор и поля для соревнований (смотрите в описании к конкретному занятию).

.zip архив будет отправлен на ваш email. Также можно скачать файл в вашем профиле.

  • Описание

  • Отзывы (0)

🕹 Группа в ВК: https://vk.com/robowiki

📖 Статьи и теория: https://robo-wiki.ru/educational-robotics-textbook/

Содержание

  1. 1. Приводные платформы (роботележки) Lego EV3
  2. 2. Модели без мотора. Изучаем механизмы
  3. 3. Шагающие роботы
  4. 4. Игры и соревнования
  5. 5. Захваты
  6. 6. Манипуляторы

1. Приводные платформы (роботележки) Lego EV3

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

Подробное описание на сайте РобоВики:

1.1 Модульная робоплатформа Lego EV3 МРП-В1

1.2 Модульная робоплатформа Lego EV3 МРП-В2

1.3 Модульная робоплатформа Lego EV3 МРП-В3

2. Модели без мотора. Изучаем механизмы

Модели для начала конструирования, изучения механизмов и механических передач.

Подробное описание на сайте РобоВики:

2.1 Инерционная машинка из Lego EV3

2.2 Машинка на резиномоторе из Lego EV3

3. Шагающие роботы

Модели шагающих роботов с различными механизмами.

Подробное описание на сайте РобоВики:

3.1 Шагающий одномоторный робот на КШМ из Lego EV3

3.2 Шагающий шестиногий робот из Lego EV3

4. Игры и соревнования

Модели для проведения занятий в игровой форме.

Подробное описание на сайте РобоВики:

4.1 Игра РобоПенальти с Lego EV3

5. Захваты

Разные варианты конструкций захватов для проведения соревнований по образовательной робототехнике (сортировка и перетаскивание предметов).

Подробное описание на сайте РобоВики:

5.1 Двухпальцевый захват на среднем моторе с червячной передачей V1

5.2 Двухпальцевый захват на среднем моторе с червячной передачей V2

5.3 Двухпальцевый захват на среднем моторе с червячной передачей V3

5.4 Двухпальцевый захват поднимающийся на большом моторе V1

5.5 Двухпальцевый захват на среднем моторе V1

5.6 Опускающийся захват на среднем моторе V1

6. Манипуляторы

Модели мобильных манипуляторов для перемещения предметов.

Подробное описание на сайте РобоВики:

6.1 Вилочный погрузчик из Lego EV3

6.2 Мобильный манипулятор на основе параллелограмма из Lego EV3

6.3 Мобильный однорычажный манипулятор из Lego EV3

Понравилась статья? Поделить с друзьями:
  • Роботы из лего самоделки легкие инструкция
  • Роботы из лего ев3 инструкция
  • Роботы из лего wedo инструкции
  • Роботы vex iq инструкции по сборке
  • Робот чертежник ev3 инструкция по сборке