close

Вход

Забыли?

вход по аккаунту

?

Презентация

код для вставкиСкачать
Робот LEGO рисует
геометрические фигуры
Машурина Юлия Германовна
Гусева Арина Александровна
Руководитель:
Сапожникова Наталья Владимировна
Авторы: Машурина Юлия Германовна
Гусева Арина Александровна
Mashurina Yuliya G.
Guseva Arina A.
Руководитель: Сапожникова Наталья Владимировна,
учитель информатики, м. т. 8-911-041-9381,
natal_sup@mail.ru
Россия, г. Великий Новгород, МАОУ «Гимназия «Эврика»,
улица Большая Санкт-Петербургская, дом 94,
(8-816) 62-84-46; temp3@Yandex.ru
На базе нашей гимназии работает Городская
компьютерная школа «Кэш», в которой можно
заниматься программированием и
робототехникой.
Мы занимаемся робототехникой первый год. В
декабре мы ездили в Санкт-Петербург на Зимние
состязания роботов, участвовали в соревнованиях
в номинации «Кегельринг» , но к сожалению не
стали призерами, хотя были близки . Но мы не
отчаиваемся, сейчас готовимся к «Лабиринту».
В Санкт-Петербурге мы увидели выставку роботов
и загорелись идеей сделать что-нибудь этакое!!! И
решили – наш робот будет рисовать!
Работа посвящена исследованию задач о прокладывании
пути гусеничного робота, оснащенного пером
(маркером), оставляющим след во время движения
робота.
В процессе исследования решена задача организации
движения и построения роботом основных геометрических
фигур методом подбора данных для расчета угла поворота и
длительности движения робота.
Поставлена задача автоматического расчета роботом
данных для поворота на произвольный угол, вычисляемый по
математической формуле, что даст возможность осуществлять
движение робота по заранее заложенной в программе
математической функции.
Работа проводилась с использованием роботехнического
набора Lego Mindstorms NXT 2.0 и средой программирования
RobotC.
Задача 1. Сконструировать робота, способного
перемещаться по плоскости и оставлять за собой след.
а) осуществлен выбор центра тяжести робота;
б) первоначально собранный колесный робот был заменен
на гусеничный для осуществления более точных поворотов;
в) выбрано место крепления маркера таким образом,
чтобы при повороте достигалось минимальное отклонение
маркера от траектории движения робота.
Задача 2. Написать программу для рисования
роботом прямой линии.
task main()
{
motor[motorB] = 100;
motor[motorC] = 100;
wait1Msec(1000);
motor[motorB] = 0;
motor[motorC] = 0;
}
При выполнении этой программы робот движется вперед в течении
1000 миллисекунд и рисует прямую линию.
Задача 3. Написать программу для рисования
роботом квадрата.
task main()
{
for(int i=0;i<4;i++){
motor[motorB] = 50;
motor[motorC] = 50;
wait1Msec(1000);
motor[motorC] = -50;
wait1Msec(500);
motor[motorB] = 0;
}
}
При выполнении этой программы робот рисует квадрат, однако
точность движения маркера во время поворота нуждается в
доработке.
Задача 4. Написать программу для рисования
роботом треугольника.
task main()
{
for(int i=0;i<3;i++){
motor[motorB] = 50;
motor[motorC] = 50;
wait1Msec(1000);
motor[motorC] = -50;
wait1Msec(300);
motor[motorB] = 0;
}
}
При выполнении этой программы робот рисует треугольник.
Задача 5. Написать программу для рисования
роботом окружности.
task main()
{
motor[motorB] = 100;
motor[motorC] = 40;
wait1Msec(4000);
motor[motorC] = 0;
motor[motorB] = 0;
}
При выполнении этой программы робот рисует окружность радиусом
примерно 45 сантиметров. Проведен эксперимент по изменению
радиуса окружности с помощью изменения скорости моторов.
Задача 6. Написать программу для рисования
роботом эллипса.
task main()
{
for(int i=0;i<3;i++){
motor[motorB] = 100;
motor[motorC] = 30;
wait1Msec(1900);
motor[motorB] = 100;
motor[motorC] = 60;
wait1Msec(5000);
}
motor[motorC] = 0;
motor[motorB] = 0;
}
При выполнении этой программы робот рисует эллипс. Проведен
эксперимент по изменению радиуса кривизны эллипса с помощью
изменения скорости моторов.
Задача 7. Написать программу для рисования
роботом спирали.
task main()
{
motor[motorB] = 100;
motor[motorC] = 50;
wait1Msec(5000);
motor[motorB] = 100;
motor[motorC] = 30;
wait1Msec(3500);
motor[motorB] = 100;
motor[motorC] = 20;
wait1Msec(2000);
motor[motorB] = 100;
motor[motorC] = 10;
wait1Msec(1000);
motor[motorC] = 0;
motor[motorB] = 0;
}
При выполнении этой программы робот рисует спираль.
Задача 8. Написать программу для перемещения
робота из точки (0,0) в точку с произвольными
координатами (x, y).
task main()
{
int x0=0; int y0=0;
int x=30; int y=50; // (x,y)=(30,50)
int d; int alpha;
d=sqrt ((x-x0)*(x-x0)+(y-y0)*(y-y0));
alpha=atan((y-y0)/(x-x0));
nMotorEncoder[motorB]=0;
motor[motorB] = 100;
motor[motorC] = -100;
while(nMotorEncoder[motorB]<230/90*alpha);\\ поворот на
нужный угол alpha
motor[motorB] = 0; motor[motorC] = 0;\\ стоп моторы
motor[motorB] = 100; motor[motorC] = 100;\\ движение в
заданном направлении на заданную величину d
wait1Msec(d*1000);
}
Опытным путем мы установили, что при повороте робота на 90 градусов
энкодер поворачивается на 230 градусов вокруг своей оси. Следовательно
повороту на 1 градус соответствует 230/90 оборотов энкодера.
Задача 9. Написать программу для перемещения
робота из точки с произвольными координатами (x, y, alpha)
в точку с произвольными координатами (x1, y1, alpha1), где
alpha – угол поворота робота до начала движения.
Эта задача пока не решена, мы работаем над ее
решением. Как только это произойдет наш робот сможет
автоматически строить заранее заданные в программе
графики математических функций и геометрические
фигуры.
Литература
1. Филиппов С.А. Робототехника для детей и родителей. –
М.: "Наука" , 2011, 263 с.
2. Индустрия развлечений: ПервоРобот. Книга для учителя
и сборник проектов. - LEGO Education.
3. Сайт http://www.lego.com/education/
4. Сайт http://www.legoengineering.com/
5. Сайт http://legomindstorms.ru/
6. Cайт http://nxtprograms.com
7. Сайт http://www.robotc.net
8. Сайт http://nnxt.blogspot.com
Документ
Категория
Презентации
Просмотров
26
Размер файла
1 747 Кб
Теги
1/--страниц
Пожаловаться на содержимое документа