Вы находитесь на странице: 1из 18

Включение робота держим кнопку и смотрим на мини экран

сверху

Чтобы перейти к выполнению команды


1. Жмём кнопку
2. Видим нужную команду на экране (в процессе нажатия
команды будут меняться)
3. Отпускаем кнопку
Возможные команды
В обычном не включенном состоянии робота на экране
написано System standby
При первом нажатии кнопки возникает начальная команда
Startup базовое включение робота
switch off(on) – снятие(подача) питания на робот
pc off(on) – выключение(включение) бортового компьютера
motor off(on) – выключение(включение) моторов робота
(Включаем кнопку для подачи питания на манипулятор – если
требуется)
Если компьютер ушел в спящий режим то пароль для
разблокировки youbot
Запуск терминала

sudo – запуск от имени супер пользователя


В командной строке сохраняются несколько последних команд
Поиск по командам ctrl^R и ввод команды для поиска.
sudo date -s "13 OCT 2021 10:44" - установка даты (здесь – 10
часов 44 минуты 13 октября 2021 года)
mc – запуск простейшего файлового менеджера в терминале
переходим в директорию
Если хотим под mc выполнять команды необходимо
воспользоваться сочетанием клавиш ctrl^o
В командной строке сохраняются несколько последних команд
для доступа к ним необходимо нажать стрелочку вверх.
/catkin_ws – директория объявленная как пространство для
компиляции проектов
из данной директории производится компиляция проектов при
помощи команды catkin_make
для компиляции проекта файлы проекта должны быть
обновлены по сравнению с файлами которые были
скомпилированы ранее.
Редактирование файла проекта
Для компиляции проекта меняем файл main.cpp в
директории /catkin_ws/src/hello_world_demo/src
Для редактирования файла заходим проводник в linux
высвечивается подсказка Home Folder

В проводнике переходим в директорию 2 раза щелкаем на файл


main.cpp. Файл открывается в приложении qt creator. Меняем
программу сохранение ctrl^s.
Переходим в терминал
Переходим в директории /catkin_ws/ и выполняем из терминала
команду catkin_make
Если был включен файловый менеджер mc перед запуском
стоит нажать ctrl^o – визуальное “отключение” файлового
менеджера и переход к командной строке
Если проект скомпилировался правильно, то появится на экране
терминала появится красная надпись.
Запуск проекта осуществляется командой
sudo
/catkin_ws/devel/lib/hello_world_demo/youBot_HelloWorldDemo
расположение исполняемого (скомпилированного) файла
используемого проекта
/catkin_ws/src/hello_world_demo/src – расположение исходного
кода (обычно файл main.cpp)
Если проект формирует на выходе текстовый файл, то файл
будет сформирован в директории из которой запускался проект.
Файл будет непустым только если проект запущен от имени
супер пользователя (sudo).
Варианты управления мобильным роботом и получения данных
с датчиков на колесах.
Снятие данных с датчиков на колесах
Снятие моментов с датчиков на колесах робота
Снятие моментов с датчиков колес (учтены знаки у колёс 1 и 3)
myYouBotBase->getBaseJoint(1).getData(sensedTorque);
trq1 =-(sensedTorque.torque)/newton_meter;
myYouBotBase->getBaseJoint(2).getData(sensedTorque);
trq2 =(sensedTorque.torque)/newton_meter;
myYouBotBase->getBaseJoint(3).getData(sensedTorque);
trq3 =-(sensedTorque.torque)/newton_meter;
myYouBotBase->getBaseJoint(4).getData(sensedTorque);
trq4 =(sensedTorque.torque)/newton_meter;
Снятие угловых скоростей с датчиков колес (учтены знаки у
колёс 1 и 3)
myYouBotBase->getBaseJoint(1).getData(sensedVelo);
omega_1=-sensedVelo.angularVelocity/radian_per_second;
myYouBotBase->getBaseJoint(2).getData(sensedVelo);
omega_2=sensedVelo.angularVelocity/radian_per_second;
myYouBotBase->getBaseJoint(3).getData(sensedVelo);
omega_3=-sensedVelo.angularVelocity/radian_per_second;
myYouBotBase->getBaseJoint(4).getData(sensedVelo);
omega_4=sensedVelo.angularVelocity/radian_per_second;
Преобразование угловых скоростей колес в скорости в
связанной системе координат
Vx=0.25*R*(omega_1+omega_2+omega_3+omega_4);
Vy=0.25*R*(-omega_1+omega_2+omega_3-omega_4);
OM=0.25*R/(l)*(-omega_1+omega_2-
omega_3+omega_4);
Преобразование скоростей в связанной системе
координат в координаты относительно начального положения
(по первости ввести системы координат на паре + дальше
добавить картинку)
Задаем начальную неподвижную систему координат – СК
связанная с центром масс робота в начальной точке траектории.
Считаем ее неподвижной и все вычисления проводим в ней.
Текущая система координат – СК связанная с центром масс
робота в произвольной точке траектории.
В каждой точке траектории у нас своя текущая система
координат. И вычисленные скорости Vx,Vy,OM вычислены в
текущей системе координат.
Для того чтобы получить координаты в неподвижной системе
координат необходимо развернуть Vx,Vy на угол курса чтобы
они были спроецированы в исходной системе координат.
Робот движется по плоскости поэтому 2 системы координат
связаны только смещением по 2 осям и разворотом на угол
курса (рыскания) угол psi.

x_o(i)=x_o(i-1)+dt*(Vx(i)*cos(psi(i-1))-Vy(i)*sin(psi(i-
1)));
y_o(i)=y_o(i-1)+dt*(Vy(i)*cos(psi(i-1))+Vx(i)*sin(psi(i-
1)));
psi(i)=psi(i-1)+dt*OM(i);
Управление движением базы за счёт управления колесами
Добавить картинку по нумерации колес с осями связанными с
колесами
Vx – продольная скорость в связанной системе координат (Vx)
Vy – поперечная скорость в связанной системе координат (Vy)
OM – угловая скорость поворота платформы вокруг оси z в
связанной системе координат
h – поперечный размер робота
l – продольный размер робота
R – радиус колес
omega_1 = (Vx - Vy - (h + l)*OM )/R;
setVelo.angularVelocity = omega_1*radian_per_second;
myYouBotBase->getBaseJoint(1).setData(setVelo);
omega_2=( Vx + Vy + (h + l)* OM )/R;
setVelo.angularVelocity = -omega_2*radian_per_second;
myYouBotBase->getBaseJoint(2).setData(setVelo);
omega_3=( Vx + Vy - (h + l)* OM )/R;
setVelo.angularVelocity = omega_3*radian_per_second;
myYouBotBase->getBaseJoint(3).setData(setVelo);
omega_4=( Vx - Vy + (h + l)* OM )/R;
setVelo.angularVelocity = -omega_4*radian_per_second;
myYouBotBase->getBaseJoint(4).setData(setVelo);

Управление платформой засчет задания скоростей в ССК


longitudinalVelocity = Vx * meter_per_second;
transversalVelocity = Vy * meter_per_second;
angularVelocity = OM * radian_per_second;
myYouBotBase->setBaseVelocity(longitudinalVelocity,
transversalVelocity, angularVelocity);

Задание шага отработки движения по траектории


SLEEP_MILLISEC(100);
Добавить таблицы с заданиями траекторий.
Группа С-12Б-20
Шаг счета у всех 0.05 сек
№ ФИО Траектория Модуль Время
бригад скорости движения
ы М/c Сек.
1 Морокина Круг 0.1 20
Быкова
2 Махмутов Прямоугольник 0.2 9
Лаврик
3 Демир Квадрат 0.2 12
Миляева
4 Разорвин Ракета 0.1 20
Гречко характерные
размеры 2x1
высота
оптекателя 1
5 Шведчиков Шестиугольник 0.1 18
Кудряшов
Николаев Прямоугольный
6 Мухамед треугольник 0.1 15
7 Педро, Ромб не квадрат 0.1 12
Фонсека
8 Арефин Восьмиугольник 0.1 16
Попова
9 Азин Сердце 0.1 18
Лепшеев
10 Мбида Семиугольник 0.1 14
Лемучи
11 Булгакова Пятиугольник 0.1 15
Буянов

Группа С-12А-20
Шаг счета у всех 0.05 сек
№ ФИО Траектория Модуль Время
бригад скорости движения
ы М/c Сек.
1 Сионов Стрелочка 0.1 15
Соколов
2 Пикалова Круг 0.2 9
Новиков
3 Бударин Звезда 0.1 15
Паняшин
4 Захаренков Ромб не квадрат 0.2 12
Мартынов
5 Вольнов Квадрат 0.1 20
Викторов
Малагин Прямоугольник
6 Ермаков 3,1 0.1 20
7 Кирсанов Песочные часы 0.1 18
Мелешко
8 Була Сердце 0.1 16
Агоштиньо
9 Карвальо Семиугольник 0.1 14
Нгула
10 Жозе Знак 0.1 14
Антониу бескончености
11 Щиголь Пятиугольник 0.1 15
Горшков
12 Гамбоа Придут получат
Чота
13 Жуниор Придут получат
Мигел
14 Мовсесян Треугольник 0.1 12
Монтейру

Распределение скоростей при движении по траектории


Длина траектории - Модуль скорости*Время движения
Если правильный многоугольник
1 сторона это или ось Y или ось X связанной системы координат
На всех остальных сторонах скорости проецируются при
помощи синуса и косинуса угла который составляет
направление движения относительно направления 1 стороны.
Например, равносторонний треугольник
1 сторона направление по X вперед (Vx= Модуль
скорости*cos(0),Vy= Модуль скорости*sin(0), OM=0)
2 сторона (Vx= Модуль скорости*cos(120),Vy= Модуль
скорости* sin (120), OM=0)
3 сторона (Vx= Модуль скорости*cos(240),Vy= Модуль
скорости* sin (240), OM=0)
Для круга и полукруга
Для полукруга (2*R+R*Pi)= Модуль скорости*Время движения
=>R – радиус движения
Определяемся со временем движения по дуге и по прямой.
Если Модуль скорости*td=R*Pi=> td – время движения по дуге
Условие движения по дуге пока выполняется t<td, Vx= Модуль
скорости*cos(Pi*t/td), Vy= Модуль скорости*sin(Pi*t/td)
Когда t>td Vx= 0, Vy= -Модуль скорости
Для круга
пока t< Время движения, Vx= Модуль скорости*cos(2*Pi*t/
Время движения), Vy= Модуль скорости*sin(2*Pi*t/ Время
движения)
С-12А-20
Для подготовки к ЛР1 требуется сформировать файл со
скоростями Vx,Vy,Om разделенных пробелами. На каждой
строке 3 числа.
Для проверки правильности нахождения скоростей для
траектории выполнить обратную задачу построения траектории
по скоростям (проинтегрировать скорости методом Эйлера с
заданным шагом) и получить массив точек на траектории и
построить график x(y).
Координаты в неподвижной системе координат начало
координат начальная точка траектории (x(0)=0, y(0)=0, psi(0)=0)
x(i)=x(i-1)+dt*(Vx(i-1)*cos(psi(i-1))-Vy(i-1)*sin(psi(i-1)));
y(i)=y(i-1)+dt*(Vy(i-1)*cos(psi(i-1))+Vx(i-1)*sin(psi(i-1)));
psi(i)=psi(i-1)+dt*OM(i-1);

Шаг счета у всех 0.05 сек


№ ФИО Угловая Время
бригад скорость движения
ы вращени Сек.
я OM
1 Морокина -2*Pi/10 10
Быкова
2 Махмутов 2*Pi/15 15
Лаврик
3 Демир -2*Pi/15 15
Миляева
4 Разорвин 2*Pi/16 16
Гречко
5 Шведчиков -2*Pi/10 10
Кудряшов
Николаев 2*Pi/14 14
6 Мухамед
7 Педро, -2*Pi/18 18
Фонсека
8 Арефин 2*Pi/19 19
Попова
9 Азин 2*Pi/8 8
Лепшеев
10 Мбида 2*Pi/19 25
Лемучи
11 Булгакова 2*Pi/30 30
Буянов

Группа С-12а-20
Шаг счета у всех 0.025 сек
№ ФИО Угловая Время
бригад скорость движения
ы вращени Сек.
я OM
1 Сионов 2*Pi/20 20
Соколов
2 Пикалова 2*Pi/12 12
Новиков
3 Бударин 2*Pi/15 15
Паняшин
4 Захаренков 2*Pi/16 16
Мартынов
5 Вольнов 2*Pi/10 10
Викторов
Малагин 2*Pi/14 14
6 Ермаков
7 Кирсанов 2*Pi/18 18
Мелешко
8 Була 2*Pi/19 19
Агоштиньо
9 Карвальо 2*Pi/20 20
Нгула
10 Жозе 2*Pi/16 16
Антониу
11 Щиголь 2*Pi/12 12
Горшков
12 Гамбоа 2*Pi/14 14
Чота
13 Жуниор 2*Pi/18 18
Мигел
14 Мовсесян 2*Pi/19 19
Монтейру

3 работа сложное движение тележки робота по заданной


траектории. Для движения робота будут сформированы
скорости во всех точках траектории, которые не будут меняться
в зависимости от данных полученных по обратной связи.
Группа С-12б-20
Шаг счета у всех 0.05 сек траектория у всех круг
№ ФИО Радиус Время Модуль Угловая
бригад траектори движения скорост скорость
ы и по и поворота
траектори М/c платформ
и ы
2*Pi*R/V (находим
по
формуле
V/R
(+) -
против
часовой
стрелки
(–) - по
часовой
стрелке
1 Морокина 0.4 25.1 0.1 -
Быкова
2 Махмутов 0.35 14.7 0.15 +
Лаврик
3 Демир 0.3 9.4 0.2 -
Миляева
4 Разорвин 0.45 11.3 0.25 +
Гречко
5 Шведчик 0.4 25.1 0.1 -
ов
Кудряшов
Николаев 0.35 14.65 0.15 +
6 Мухамед
7 Педро, 0.3 9.4 0.2 -
Фонсека
8 Арефин 0.25 6.3 0.25 +
Попова
9 Азин 0.4 25.1 0.1 +
Лепшеев
Мбида 0.4 12.6 0.2 -
Лемучи
Булгакова 0.5 12.6 0.25 +
Буянов

Группа С-12а-20
Шаг счета у всех 0.025 сек траектория у всех круг
№ ФИО Радиу Время Мод Угловая скорость
брига с движения уль поворота
ды траек по скор платформы
тории траектории ости (находим по
2*Pi*R/V М/c формуле V/R
(+) - против
часовой стрелки
(–) - по часовой
стрелке
1 Сионов 0.4 25.1 0.1 +
Соколов
2 Пикалова 0.35 14.7 0.15 -
Новиков
3 Бударин 0.3 9.4 0.2 +
Паняшин
4 Захаренко 0.45 11.3 0.25 -
в
Мартыно
в
5 Вольнов 0.4 25.1 0.1 +
Викторов
Малагин 0.35 14.65- 0.15 -
6 Ермаков
7 Кирсанов 0.3 9.425 0.2 +
Мелешко
8 Була 0.45 14.15 0.2 -
Агоштинь
о
9 Карвальо 0.4 12.575 0.2 +
Нгула
10 Жозе 0.35 11 0.2 -
Антониу
11 Щиголь 0.3 12.575 0.15 +
Горшков
12 Гамбоа 0.35 14.675 0.15 -
Чота
13 Жуниор 0.4 16.775 0.15 +
Мигел
14 Мовсесян 0.35 14.675 0.15 -
Монтейру

КМ-3
1. Необходимо снять данные по 3 ЛР.
2. Подготовить программу выполняющую
следующие действия:
-чтение данных из файлов;
- построение разностей идеальных и
реальных скоростей и координат;
- построение реальной и идеальной
траекторий на 1 графике

Вам также может понравиться