Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 9 лет назад пользователемКлара Алампиева
1 Основы робототехники Сергей Александрович Филиппов Президентский Физико-математический лицей 239
2 План занятия Программирование и управление Команды высокого и низкого уровня Среда Ceebot Высокоуровневое управление Базовые команды перемещения Операции с объектами Поиск выход из лабиринта Управление роботом на низком уровне Регуляторы Ралли по коридору Полеты
3 Что такое робот? Устройство Управления (контроллер) Датчики Исполнительное устройство (моторы) Окружающая среда (по отношению к «телу» робота)
4 Программирование и управление Программирование Алгоритмические структуры Жесткое принятие решений «Таймерные модели» Управление Циклическое воздействие Высокая частота Корректировка по отклонению
5 Команды низкого уровня Команды действия Выполняются мгновенно Сразу передают управление следующей команде Их последствия ограничиваются только аналогичными командами и концом программы Примеры: включить моторы Команды ожидания Не выполняют никаких физических действий Останавливают следование программы до совершения определенного события Передают управление следующей команде после наступления ожидаемого события Примеры: ждать время, цикл «пока»
6 Команды высокого уровня Понятны начинающим Имеют встроенный алгоритм работы с использованием датчиков робота Не предполагают циклического управления с высокой частотой Примеры: Проехать вперед 1 метр Повернуться на месте на 90° move(a); // вперед a метров turn(b); // налево b градусов
7 Среда программирования Ceebot Язык CBot, подобный C++ Трехмерная среда исполнителей Операции с объектами Гонки, полеты и воздушные бои Футбол роботов Управление на низком и высоком уровне
8 Использование РАДАРА Датчик высокого уровня Тип object Категории объектов: Titanium, Converter, … Объявляем переменную и находим объект object ruda, home; ruda=radar(TitaniumOre); goto(ruda.position); grab(); home=radar(Converter); goto(home.position); drop();
9 Параметры команды RADAR Radar ( Категория объекта, Направление радара (в градусах), Угол обзора, Минимальное расстояние обзора, Максимальное расстояние обзора )
10 Применение РАДАРА while(radar(TitaniumOre)!=null) { // Переместить руду в конвертер... while(radar(Titanium,0,30)==null); // Взять титановый куб из конвертера... }
11 Тип Point Сложный тип из 3 значений типа float: x,y,z Обращение через точку Соответствует свойству объекта position point a; a=this.position; // позиция робота goto(ruda.position); grab(); a.x=a.x+2; // смещение на 2 метра goto(a);
12 Обход лабиринта ПОКА (не база) { ЕСЛИ (справа_свободно) { вправо(90); вперед(1); } ИНАЧЕ ЕСЛИ (спереди_свободно) вперед(1); ИНАЧЕ влево(90); } while(radar(GoalArea,0,360,0,1)==null) { if(radar(Barrier,-90,1,0,5)==null) { turn(-90); move(5); } else if(radar(Barrier,0,1,0,5)==null) move(5); else turn(90); }
13 Ралли по коридору Следование по ориентирам (флаги, мины) Низкоуровневые команды motor (mB, mC); // -1mB1, -1mC1 drive (v, u); // -1v1, -1u1 Ориентация по стене Релейный регулятор П-регулятор ПД-регулятор Ориентация по двум стенам
14 Ориентация по флагам while(true) { object item=radar(BlueFlag,...); float d=direction(item.position); turn(d); float dist=distance(this.position, item.position); move(dist); }
15 Низкоуровневое управление моторами while(true) { object item=radar(BlueFlag,...); float d=direction(item.position); float v=1; //Скорость float u=d/180; //Управляющее воздействие drive(v, u); wait(0.01); }
16 Движение вдоль стены на реле while(this.position.x10) // Если до стены больше 10 м drive(1, 0.5); else drive(1, -0.5); wait(0.01); }
17 Движение вдоль стены на П-регуляторе while(this.position.x
18 Движение вдоль стены на ПД- регуляторе с двумя датчиками float eold=0, k1=0.1, k2=0.5, k3=0.2; while(this.position.x
19 Защита от потери стены float s1, s2; while(this.position.x
20 Полеты while(radar(AlienWasp)!=null) { object item=radar(AlienWasp); float alpha=direction(item.position); float dist=distance(item.position,this.position); float dz=item.position.z-this.position.z; jet(dz/5); drive((dist)/5,alpha/3); if ((dist
21 Благодарю за внимание! Сергей Александрович Филиппов Президентский Физико-математический лицей 239 Санкт-Петербург
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.