Машурина Юлия Германовна Гусева Арина...
description
Transcript of Машурина Юлия Германовна Гусева Арина...
Машурина Юлия Германовна Гусева Арина Александровна
Руководитель:
Сапожникова Наталья
Владимировна
Робот LEGO рисует геометрические
фигуры
Авторы: Машурина Юлия Германовна Гусева Арина Александровна
Mashurina Yuliya G. Guseva Arina A.
Руководитель: Сапожникова Наталья Владимировна, учитель информатики, м. т. 8-911-041-9381, [email protected]
Россия, г. Великий Новгород, МАОУ «Гимназия «Эврика»,
улица Большая Санкт-Петербургская, дом 94, (8-816) 62-84-46; [email protected]
На базе нашей гимназии работает Городская компьютерная школа «Кэш», в которой можно заниматься программированием и робототехникой.
Мы занимаемся робототехникой первый год. В декабре мы ездили в Санкт-Петербург на Зимние состязания роботов, участвовали в соревнованиях в номинации «Кегельринг» , но к сожалению не стали призерами, хотя были близки . Но мы не отчаиваемся, сейчас готовимся к «Лабиринту».
В Санкт-Петербурге мы увидели выставку роботов и загорелись идеей сделать что-нибудь этакое!!! И решили – наш робот будет рисовать!
Работа посвящена исследованию задач о прокладывании пути гусеничного робота, оснащенного пером (маркером), оставляющим след во время движения робота.В процессе исследования решена задача организации
движения и построения роботом основных геометрических фигур методом подбора данных для расчета угла поворота и длительности движения робота.
Поставлена задача автоматического расчета роботом данных для поворота на произвольный угол, вычисляемый по математической формуле, что даст возможность осуществлять движение робота по заранее заложенной в программе математической функции.
Работа проводилась с использованием роботехнического набора 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);\\ поворот на
нужный угол alphamotor[motorB] = 0; motor[motorC] = 0;\\ стоп моторыmotor[motorB] = 100; motor[motorC] = 100;\\ движение в
заданном направлении на заданную величину dwait1Msec(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.com7. Сайт http://www.robotc.net8. Сайт http://nnxt.blogspot.com
Литература