Знакомство с TrikStudio презентация

Содержание

Слайд 2

План занятия Знакомство с TrikStudio Введение в JavaScript Основные объекты

План занятия

Знакомство с TrikStudio
Введение в JavaScript
Основные объекты и определения в JavaScript
Функции

в JavaScript
Работа с файлами в JavaScript
Лабиринт
Навигация
Компьютерное зрение
Межагентное взаимодействие
Задачи профиля ИРС
Слайд 3

Группа в Telegram Наставники НТИ. ИРС https://goo.gl/qcsJ5J

Группа в Telegram

Наставники НТИ. ИРС
https://goo.gl/qcsJ5J

Слайд 4

TrikStudio. Создание программы (1) Создаём новый проект в TrikStudio

TrikStudio. Создание программы (1)

Создаём новый проект в TrikStudio

Слайд 5

TrikStudio. Создание программы (2) Перетаскиваем блок «Конец» на рабочее пространство

TrikStudio. Создание программы (2)

Перетаскиваем блок «Конец» на рабочее пространство
Соединяем блок "Начало",

располо-женный на рабочем пространстве с ним
Слайд 6

TrikStudio. Создание программы (3) В выпадающем меню рядом с кнопкой

TrikStudio. Создание программы (3)

В выпадающем меню рядом с кнопкой TRIK выбираем

"Генерация JavaScript“
Выбираем пункт меню "Генерировать JavaScript код"
Слайд 7

TrikStudio. Редактор кода Кнопки запуска и остановки программы; Выбор режима

TrikStudio. Редактор кода

Кнопки запуска и остановки программы;
Выбор режима запуска (2D эмуляция

или запуск на реальном роботе)
Меню "Настройки";
Генерация и загркзка на контроллер JavaScript кода;
IP адрес контроллера;
Вкладки с программами;
Переключение между редактором программ и симулятором;

1

2

3

4

5

6

7

8

Текущие значения основных переменных (в режиме программирования на JavaScript выводятся только значения датчиков

Слайд 8

TrikStudio. Окно эмуляции (1) Инструменты редактирования поля: Курсор; Добавить стену;

TrikStudio. Окно эмуляции (1)

Инструменты редактирования поля:
Курсор;
Добавить стену;
Добавить прямую линию;
Добавить кривую;
Добавить прямоугольник;
Добавить

произвольную линию;
Добавить картинку;
Параметры сетки;
Скорость эмуляции;
Возврат робота в стартовую позицию;
Запуск программы;
Эмулятор;
Дополнительные параметры робота.

3

Слайд 9

TrikStudio. Окно эмуляции (2) Эмуляция экрана и кнопок управления роботом;

TrikStudio. Окно эмуляции (2)

Эмуляция экрана и кнопок управления роботом;
Конфигурация датчиков;
Конфигурация моторов;
Настройка

физики;
Параметры робота для эмулятора (не изменяемые).

1

2

3

4

5

Слайд 10

TrikStudio. Датчики Ультразвуковой датчик расстояния, цифровой. Подключается к портам D1,

TrikStudio. Датчики

Ультразвуковой датчик расстояния, цифровой. Подключается к портам D1, D2.
Датчик линии

(камера). Подключается к порту VIDEO2.
Датчик касания, аналоговый. Подключается к портам А1- А6
Инфракрасный датчик расстояния, аналоговый. Подключается к портам А1-А6
Датчик освещённости, аналоговый. Подключается к портам А1-А6.

1

4

3

2

5

Слайд 11

TrikStudio. Изменение положения Расположение робота и датчиков можно менять путём

TrikStudio. Изменение положения

Расположение робота и датчиков можно менять путём "перетаскивания" курсором;
Их

направления можно изменить, двигая курсором мыши синюю стрелку (для ровных поворотов кратно 45о – держать клавишу "Shift");
Расположение датчиков всегда рассчитывается относительно робота.
Слайд 12

TrikStudio. Расположение датчиков Геометрия датчиков (проекция) должна практически полностью находиться

TrikStudio. Расположение датчиков

Геометрия датчиков (проекция) должна практически полностью находиться на проекции

робота, иначе будут сложности при поворотах в том же лабиринте.
Слайд 13

Набор ТРИК. Контроллер

Набор ТРИК. Контроллер

Слайд 14

Контроллер ТРИК

Контроллер ТРИК

Слайд 15

Набор ТРИК. Подключения Изменить конфигурацию подключаемых датчиков можно на контроллере в файле system-config.xml

Набор ТРИК. Подключения

Изменить конфигурацию подключаемых датчиков можно на контроллере в файле

system-config.xml
Слайд 16

Введение в JavaScript. Типы данных Узнать тип данных можно оператором

Введение в JavaScript. Типы данных

Узнать тип данных можно оператором typeof:
print (typeof

'abc') print (typeof 123) print (typeof (x))
Слайд 17

Javascript. Числа. Методы и функции

Javascript. Числа. Методы и функции

Слайд 18

JavaScript. Строки. Методы, свойства

JavaScript. Строки. Методы, свойства

Слайд 19

JavaScript. Массивы. Методы, свойства

JavaScript. Массивы. Методы, свойства

Слайд 20

Введение в JavaScript. Операции

Введение в JavaScript. Операции

Слайд 21

Введение в JavaScript. Переменные (1) JavaScript – регистрозависимый язык програм-мирования

Введение в JavaScript. Переменные (1)

JavaScript – регистрозависимый язык програм-мирования с динамической

типизацией данных
Переменные num и Num – разные
Переменные x и X - разные
var x = 0 // typeof x ? тип 'number'
var x = 'abcd' // typeof x ? тип 'string‘
Слайд 22

Введение в JavaScript. Переменные (2) Области видимости переменных Объявление переменных

Введение в JavaScript. Переменные (2)

Области видимости переменных
Объявление переменных через var

создает переменную с доступностью только внутри функции или объекта (локальная переменная). Если var используется вне функции, то переменная будет глобальной, т.е. доступна в любой части программы.
Объявление переменной без оператора var в любом месте программы переводит ее в разряд глобальных переменных – будьте внимательны!
Слайд 23

Введение в JavaScript. Переменные (3) Области видимости переменных (пример)

Введение в JavaScript. Переменные (3)

Области видимости переменных (пример)

Слайд 24

Введение в JavaScript. Комментарии Однострочный комментарий: // Многострочный комментарий: /*

Введение в JavaScript. Комментарии

Однострочный комментарий: //
Многострочный комментарий: /* … */
Закрывающая часть

многострочного комментария
' */ ' должна быть обязательно!
Слайд 25

Основные объекты ТРИК. Brick

Основные объекты ТРИК. Brick

Слайд 26

Основные объекты ТРИК. Script

Основные объекты ТРИК. Script

Слайд 27

Основные объекты ТРИК. Mailbox

Основные объекты ТРИК. Mailbox

Слайд 28

Основные объекты ТРИК. Math

Основные объекты ТРИК. Math

Слайд 29

Вывод информации В виртуальной среде TrikStudio (консоль): print ('Профиль ИРС')

Вывод информации

В виртуальной среде TrikStudio (консоль):
print ('Профиль ИРС')
На экран контроллера ТРИК:
brick.display().addLabel('Профиль

ИРС',10,20)
brick.display().redraw()
Запись в файл:
script.removeFile('file.txt')
script.writeToFile('file.txt', 'Профиль ИРС' + '\n')
Слайд 30

Модель робота для финала НТИ ИРС На финале НТИ в

Модель робота для финала НТИ ИРС

На финале НТИ в профиле ИРС

используется мобильная робототехническая платформа ТРИК с дифференциальным приводом:

D (Diameter, диаметр колеса)

T (Track, колея - расстояние между колесами)

Энкодеры, cpr (counts per rotation – кол-во считываний энкодера за 1 оборот колеса)

Какие характеристики мы будем использовать для управления роботом?

Слайд 31

Переменные с параметрами робота Создадим переменную robot типа "объект" для

Переменные с параметрами робота

Создадим переменную robot типа "объект" для определения констант,

относящихся к виртуальной модели нашего робота:
robot = {
wheelD: 5.6, // диаметр колес робота
track: 17.5, // колея (между колес)
cpr: 360, // cpr "в виртуалке". На моторе – 274 или 385
v: 80 // мощность моторов
}
Также можно добавить:
координаты клетки: cellX, cellY, cellA (азимут)
координаты одометрии: x, y, alpha
Слайд 32

Переменные для управления роботом Создадим переменные для более простого и

Переменные для управления роботом

Создадим переменные для более простого и "быстрого" доступа

к функциям управления робота:
mL = brick.motor('M4').setPower // левый мотор
mR = brick.motor('M3').setPower // правый мотор
eL = brick.encoder('E4').read // левый энкодер
eR = brick.encoder('E3').read // правый энкодер
sF = brick.sensor('D1').read // сенсор спереди (УЗ)
sL = brick.sensor('A2').read // сенсор справа (ИК)
pi = Math.PI
abs = Math.abs
wait = script.wait
….
Слайд 33

Условные операторы JavaScript If / else if / else if

Условные операторы JavaScript

If / else if / else
if (выражение){
инструкции
} [else if]

{
[инструкции]
} [else] {
[инструкции]
}
Тернарная операция:
sgn = num > 0 ? 1 : -1
if (num > 0)
sgn = 1
else
sgn = -1

Switch (переключатель)
switch (переменная) {
case <значение1>:
инструкции
break
case <значение2>:
инструкции
break
default:
инструкции
break
}

Слайд 34

Циклы в JavaScript Безусловный цикл: for (инициализация; проверка; инкремент/декремент){ инструкции

Циклы в JavaScript

Безусловный цикл:
for (инициализация; проверка; инкремент/декремент){
инструкции
}
Условный цикл:
while (<условие_пока_истина>) {
инструкции
}

Слайд 35

Перемещение робота на расстояние Проезд роботом расстояния в 1 оборот колеса: C (длина окружности)

Перемещение робота на расстояние

Проезд роботом расстояния в 1 оборот колеса:

 

C (длина

окружности)
Слайд 36

Перемещение робота на расстояние. Пример Например, надо проехать по прямой

Перемещение робота на расстояние. Пример

Например, надо проехать по прямой 52.5 см
distance

= 52.5 // в см
path = (distance / (pi * robot.wheelD)) * robot.cpr // в cpr
mL(robot.v) // мощность левого мотора
mR(robot.v) // мощность правого мотора
while (eL() < path) { // пока энкодер_левый < пути
wait(10)
}
mL(0)
mR(0)

 

Какие части программы можно
вынести в отдельные функции?

Слайд 37

Перемещение робота на расстояние. Функции function cm2cpr (cm) {return (cm

Перемещение робота на расстояние. Функции

function cm2cpr (cm) {return (cm / (pi

* robot.wheelD)) * robot.cpr }
function motors(vL, vR){
vL = vL == undefined ? robot.v : vL
vR = vR == undefined ? vL : vR
mL(vL)
mR(vR)
}
function straight(cm){
var path = cm2cpr(cm)
motors()
while (eL() < path) { wait(10) }
motors(0)
}
straight(52.5)
Слайд 38

Повороты робота на заданный угол Варианты поворотов робота с дифференциальным

Повороты робота на заданный угол

Варианты поворотов робота с дифференциальным приводом.

vR

vL

vR=0

vL

vL =

-vR

vL > 0; vR = 0

vR

vL

vL > vR

Слайд 39

Повороты робота на заданный угол Пример расчета разворота на 90 градусов (angle):

Повороты робота на заданный угол

Пример расчета разворота
на 90 градусов (angle):

 

 

 

 

 

 

Слайд 40

Повороты робота в TrikStudio Поворот в ТрикСтудии: Вперед (17.5/2) Поворот

Повороты робота в TrikStudio

Поворот в ТрикСтудии:
Вперед (17.5/2)
Поворот
Назад (17.5/2)
На реальном роботе

такие маневры не нужны!
Слайд 41

Повороты робота на заданный угол. Псевдокод функция поворота (угол){ длина_пути

Повороты робота на заданный угол. Псевдокод

функция поворота (угол){
длина_пути = ((колея

* угол) / (D_колеса * 360))* cpr
мощность левого мотора = 40
мощность правого мотора = -40
Пока (энкодер_левый < длина_пути){
ждать 10 мс
}
моторы стоп
}
Слайд 42

Точное перемещение робота (часть 1) Прямолинейное движение с плавным стартом

Точное перемещение робота (часть 1)

Прямолинейное движение с плавным стартом и финишем

разгон

торможение

движение

Зоны

разгона и торможения – по ¼ от всего пути
Зона движения на максимальной скорости – 2/4 от всего пути
Слайд 43

Точное перемещение робота (часть 2) Необходимые данные для функции: Длина

Точное перемещение робота (часть 2)

Необходимые данные для функции:
Длина пути
Максимальная мощность моторов
Начальная

мощность моторов
Дельта приращения/уменьшения скорости
Текущие значения энкодеров
Слайд 44

Точное перемещение робота. Псевдокод функция плавное_движение (cm, v){ v =

Точное перемещение робота. Псевдокод

функция плавное_движение (cm, v){
v = v ==

undefined ? robot.v : v // мощность моторов
var path0 = eL() // текущие значения энкодера (ТЗЭ)
var path = cm2cpr(cm) + path0 // конечное значение энкодера (КЗЭ)
var v0 = 30, vM = v0 // начальная мощность моторов
var startStop = path / 4 // длина разгона/торможения (ДРТ)
var dV = (v - v0)/10 // дискретность разгона/торможения
пока (энкодер_левый < КЗЭ)
если (энкодер_левый < ТЗЭ + ДРТ) vM += dV
иначе если (энкодер_левый > ТЗЭ + ДРТ * 3) vM -= dV
мощность моторов (левый, правый) = vM
ждать 30 мс
}
Слайд 45

Гироскоп MEMS. Описание (1) MEMS (МЭМС) – микроэлектромеханические системы, объединяющие

Гироскоп MEMS. Описание (1)

MEMS (МЭМС) – микроэлектромеханические системы, объединяющие в себе

миркоэлектронные и микромеханические системы
Гироскоп показывает угол отклонения в 3х измерениях:
X – "крен" (roll)
Y – "тангаж" (pitch)
Z – "рыскание" (yaw)
Слайд 46

Гироскоп MEMS. Описание (2)

Гироскоп MEMS. Описание (2)

Слайд 47

Гироскоп в контроллере ТРИК Диапазон работы гироскопа в ТРИК находится

Гироскоп в контроллере ТРИК

Диапазон работы гироскопа в ТРИК находится в пределах

-180 … +180 градусов.

0o

+180o

-180o

Слайд 48

Гироскоп. Обработка в JavaScript Инициализация: brick.gyroscope().calibrate(N) script.wait(N + 1000) в

Гироскоп. Обработка в JavaScript

Инициализация:
brick.gyroscope().calibrate(N)
script.wait(N + 1000)
в ТрикСтудии N = 5000 мс,

в роботе N = 14000 мс
Получение значений углов (значения в миллиградусах!):
g = brick.gyroscope().read() // массив из 7 элементов
g[4] = ось X ? крен (roll)
g[5] = ось Y ? тангаж (pitch)
g[6] = ось Z ? рыскание (yaw) нас интересует это значение!
Слайд 49

Гироскоп. Использование в JavaScript инициализация гироскопа; // функция поворота на

Гироскоп. Использование в JavaScript

инициализация гироскопа;
// функция поворота на абсолютный угол по

гироскопу
функция поворот_по_гироскопу (угол):
если угол < 200 // если значение угла в градусах
угол *= 1000 // переводим в миллиградусы
мощность (левого, правого) моторов = (40, -40)
пока (abs(угол – brick.gyroscope().read()[6] )> 3000)
ждать 10 мс
моторы стоп
Слайд 50

Пропорциональный регулятор. Описание Пропорциональный регулятор – устройство (алгоритм), оказывающее управляющее

Пропорциональный регулятор. Описание

Пропорциональный регулятор – устройство (алгоритм), оказывающее управляющее воздействие на

объект управления пропорционально его отклонению от заданного состояния.
uo(t) = e * k
Слайд 51

Пропорциональный регулятор. Схема w – требуемое значение параметра системы (уставка)

Пропорциональный регулятор. Схема

w – требуемое значение параметра системы (уставка)
P –

сумматор обратной связи и требуемого значения
e – отклонение фактического значения от требуемого (ошибка), e = w - y
u – управляющее воздействие (входной сигнал)
z – внешние воздействия
y – фактическое значение параметра системы
Слайд 52

Пропорциональный регулятор. Псевдокод Движение робота с выравниваем по энкодерам на

Пропорциональный регулятор. Псевдокод

Движение робота с выравниваем по энкодерам на П-регуляторе:
Kp =

2 // Kp - повышающий коэффициент
Пока (истина):
ошибка = энкодер_левый – энкодер_правый
управляющее воздействие (УВ) = ошибка * Kp
мощность мотора (левый) = 60 - УВ
мощность мотора (правый) = 60 + УВ
ждать 20 мс
Слайд 53

Работа с файлами на ТРИК Разберем примеры из задач сезона

Работа с файлами на ТРИК

Разберем примеры из задач сезона 2017/2018: Задача 6.3.1.

Одометрия (файл данных data1.txt)
Задача 6.3.7. Планирование маршрута (data2.txt)
и снимки меток ARTag:
ar_pic1.txt, ar_pic2.txt, ar_pic3.txt
Слайд 54

Работа с файлами на ТРИК. Чтение Чтение данных из файла:

Работа с файлами на ТРИК. Чтение

Чтение данных из файла:
data = script.readAll('c:/nti/data1.txt')
в

итоге 'data' = массив данных, где каждый элемент (строковый тип) – строка из файла.
При работе с файлами в ТрикСтудии лучше указывать абсолютный (полный) путь к файлу. В случае выполнения программы на контроллере ТРИК, путь можно не указывать - он будет размещаться в текущей папке запуска скрипта.
Слайд 55

Работа с файлами на ТРИК. Обработка данных (1) line0 =

Работа с файлами на ТРИК. Обработка данных (1)

line0 = data[0].trim().split(' ')
N

= parseInt(line0[0])
t = parseFloat(line0[1].replace(",","."))
v = [ ], w = [ ]
Для i = 0 до N{
var line = data[i+1].trim().split(‘ ‘)
v.push(parseFloat(line[0] .replace(",", ".")))
w.push(parseFloat(line[1] .replace(",", ".")))
}
Слайд 56

Работа с файлами на ТРИК. Обработка данных (2) lines =

Работа с файлами на ТРИК. Обработка данных (2)

lines = script.readAll('c:/temp/data2.txt')
polygon_nums =

parseInt(lines[0]) // кол-во многоугольников
line = lines[1].trim().split(' ')
maxX = parseInt(line[0])
maxY = parseInt(line[1])
line = lines[2].trim().split(' ')
startX = parseInt(line[0])
startY = parseInt(line[1])
finishXY = lines[3].trim().split(' ').map(Number)
polygons = [ ] // массив для полигонов
Слайд 57

Работа с файлами на ТРИК. Обработка данных (3) line =

Работа с файлами на ТРИК. Обработка данных (3)

line = 4 //

номер строки в файле
Для i от 0 до кол-во_полигонов {
polygons.push([ ]) // добавляем пусто массив
кол-во_вершин = parseInt(lines[line].trim())
для s от 0 до кол-во_вершин {
polygons[i].push(lines[s + line + 1].trim())
}
line += кол-во_вершин + 1
}
Слайд 58

Работа с файлами на JavaScript. Задания Файлы с данными содержат

Работа с файлами на JavaScript. Задания

Файлы с данными содержат 2 строки:
Размер

картинки в пикселях – длина и высота (N M)
Данные по цветности N x M пикселей, в формате RGB24.
Необходимо написать функцию по считыванию данных из файла, преобразованию 1-мерного массива в 2-мерный и преобразованию картинки в черно-белый вариант (0 или 1). Результат вывести в файл в виде 2-мерной матрицы
Имена файлов с входными данными:
ar_pic1.txt ar_pic2.txt ar_pic3.txt
Слайд 59

TrikStudio. Модель мира (1) Для сохранения или загрузки "модели мира"

TrikStudio. Модель мира (1)

Для сохранения или загрузки "модели мира" в TrikStudio

нужно кликнуть правой кнопкой мыши на поле в окне эмуляции и выбрать соответствующий пунк в выпадающем меню.

Файлы хранятся в текстовом виде, в файлах с расширением .xml
В "модели мира" помимо карты также хранится конфигурация моторов и датчиков.

Слайд 60

TrikStudio Модель мира (2) Структуры мира (стены, линии, окружности и

TrikStudio Модель мира (2)

Структуры мира (стены, линии, окружности и т.д.);
Текущая позиция

робота;
Датчики и их расположение (относительно робота);
Стартовая позиция робота;
Моторы.

1

2

3

4

5

Слайд 61

Оффлайн презентации по ИРС https://goo.gl/UVapPu Фильтрация значений датчиков Построение карты.

Оффлайн презентации по ИРС

https://goo.gl/UVapPu
Фильтрация значений датчиков
Построение карты. Локализация
Счисление пути в задачах

навигации
Планирование и построение маршрута
Алгоритмические основы технического зрения
Слайд 62

ОНТИ ИРС. Финал 2016/17 Задачи: Локализация; Построение пути; Считывание штрихкода.

ОНТИ ИРС. Финал 2016/17

Задачи:
Локализация;
Построение пути;
Считывание штрихкода.
Подзадачи:
Движение прямо;
Повороты на 90°;
Движение в лабиринте;
Обнаружение

циклов при движении по лабиринту;
Механизмы выравнивания.
Слайд 63

ОНТИ ИРС. Финал 2017/18 Изменения: Штрихкоды заменены ARTag маркерами; Добавлена

ОНТИ ИРС. Финал 2017/18

Изменения:
Штрихкоды заменены ARTag маркерами;
Добавлена задача на поиск обрушений;
Добавлено

условие верификации задачи в симуляторе.
Убрана задача локализации.
Слайд 64

Контакты Алексей Клячин www.robonest.ru Михаил Фадеев m.fadeew@gmail.com

Контакты

Алексей Клячин
www.robonest.ru
Михаил Фадеев
m.fadeew@gmail.com

Имя файла: Знакомство-с-TrikStudio.pptx
Количество просмотров: 29
Количество скачиваний: 0