140 likes | 476 Views
Робот LEGO рисует геометрические фигуры. Машурина Юлия Германовна Гусева Арина Александровна Руководитель: Сапожникова Наталья Владимировна. Авторы: Машурина Юлия Германовна Гусева Арина Александровна Mashurina Yuliya G . Guseva Arina A .
E N D
Робот LEGO рисует геометрические фигуры Машурина Юлия Германовна Гусева Арина Александровна Руководитель: Сапожникова Наталья Владимировна
Авторы: Машурина Юлия Германовна Гусева Арина Александровна MashurinaYuliya G. GusevaArina A. Руководитель: Сапожникова Наталья Владимировна, учитель информатики, м.т. 8-911-041-9381, natal_sup@mail.ru Россия, г. Великий Новгород, МАОУ «Гимназия «Эврика», улица Большая Санкт-Петербургская, дом 94, (8-816) 62-84-46; temp3@Yandex.ru
На базе нашей гимназии работает Городская компьютерная школа «Кэш», в которой можно заниматься программированием и робототехникой. Мы занимаемся робототехникой первый год. В декабре мы ездили в Санкт-Петербург на Зимние состязания роботов, участвовали в соревнованиях в номинации «Кегельринг» , но к сожалению не стали призерами, хотя были близки . Но мы не отчаиваемся, сейчас готовимся к «Лабиринту». В Санкт-Петербурге мы увидели выставку роботов и загорелись идеей сделать что-нибудь этакое!!! И решили – наш робот будет рисовать!
Работа посвящена исследованию задач о прокладывании пути гусеничного робота, оснащенного пером (маркером), оставляющим след во время движения робота. В процессе исследования решена задача организации движения и построения роботом основных геометрических фигур методом подбора данных для расчета угла поворота и длительности движения робота. Поставлена задача автоматического расчета роботом данных для поворота на произвольный угол, вычисляемый по математической формуле, что даст возможность осуществлять движение робота по заранее заложенной в программе математической функции. Работа проводилась с использованием роботехнического набора LegoMindstorms 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; inty=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