Помощь в написании студенческих работ
Антистрессовый сервис

Образовательная робототехника: робот vex iq — путешественник

РефератПомощь в написанииУзнать стоимостьмоей работы

Дополнительные требования Обращение к датчикам и моторам осуществите по их именам. К порту 2 присоединён датчик touchLED (Touch LED). Робот начнет ехать после нажатия на данный датчик (1 — нажат, 0 — не нажат). После нажатия на touchLED раздается звуковой сигнал. К порту 8 подсоединён датчик bumpSwitch (Bumper Switch). Робот должен ехать вперед пока не уткнется датчиком bumpSwitch в препятствие… Читать ещё >

Образовательная робототехника: робот vex iq — путешественник (реферат, курсовая, диплом, контрольная)

Образовательная робототехника: робот vex iq — путешественник

В статье делается обзор решения задач начального уровня в образовательной робототехнике связанные с автоматизированным передвижением робота.

Сегодня образовательная робототехника становится все более популярной среди школьников, в связи со своей ярко выраженной практической направленностью. Обучающийся не только формирует свое «инженерное» мышление, связанное со сборкой моделей роботов, но и развивают алгоритмическую компетентность в следствии интегрированного изучения принципов программирования робота и принципов его сборки.

Одной из интересных задач начального уровня становится задача передвижения робота по комнате. В качестве базовой основы возьмем робототехнический комплект Vex IQ и язык программирования RobotC.

Для решения задач по передвижению робота будем использовать стандартную модель Clawbot IQ With Sensors.

Расположение моторов и датчиков.

Motor Ports:

VEX IQ Port 1: leftMotor.

VEX IQ Port 6: rightMotor.

VEX IQ Port 10: armMotor.

VEX IQ Port 11: clawMotor.

Sensor Ports:

VEX IQ Port 2: touchLED (Touch LED).

VEX IQ Port 3: colorDetector (Color Sensor/Hue Mode).

VEX IQ Port 4: gyroSensor (Gyro).

VEX IQ Port 7: distanceMM (Distance).

VEX IQ Port 8: bumpSwitch (Bumper Switch).

Для путешествия поднимем руку-схват робота, освободив датчик touchLED (Touch LED).

Задание 1

Ехать вперед пока не уткнемся в препятствие. После обнаружения препятствия остановиться.

Дополнительные требования Обращение к датчикам и моторам осуществите по их именам. К порту 2 присоединён датчик touchLED (Touch LED). Робот начнет ехать после нажатия на данный датчик (1 — нажат, 0 — не нажат). После нажатия на touchLED раздается звуковой сигнал. К порту 8 подсоединён датчик bumpSwitch (Bumper Switch). Робот должен ехать вперед пока не уткнется датчиком bumpSwitch в препятствие, в этом случае датчик bumpSwitch будет нажат и значение переменной данного сенсора будет равно единице (в не нажатом состоянии оно равно 0).

Вариант решения

task main ().

{.

while (getTouchLEDValue (touchLED) == 0 {}.

playSound (soundAirWrench);

while (getBumperValue (bumpSwitch) == 0).

{.

setMotorSpeed (leftMotor, 127);

setMotorSpeed (rightMotor, 127);

sleep (2000);

}.

}.

Задание 2

При обнаружении препятствия робот должен развернуться и поехать вперед. Перед разворотом робот должен немного отъехать назад.

Вариант решения

task main ().

{.

while (getTouchLEDValue (touchLED) == 0).

{}.

playSound (soundAirWrench);

repeat (forever).

{.

if (getBumperValue (bumpSwitch) == 0).

{.

setMotorSpeed (leftMotor, 127);

setMotorSpeed (rightMotor, 127);

sleep (20);

}.

else.

{.

setMotorSpeed (leftMotor, -127);

setMotorSpeed (rightMotor, -127);

sleep (500);

setMotorSpeed (leftMotor, 127);

setMotorSpeed (rightMotor, 0);

sleep (1500);

}.

}.

}.

Задание 3

Обращение к датчикам и моторам осуществите по их портам. Встретив препятствие, робот отъедет назад и развернется влево.

Вариант решения.

task main ().

{.

repeat (forever).

{.

if (SensorValue[port8]==0).

{.

motor[port1] = 127;

motor[port6]=127;

wait1Msec (100);

}.

else.

{.

motor[port1] = -60;

motor[port6]=-60;

wait1Msec (400);

motor[port1] = 60;

motor[port6]=-60;

wait1Msec (400);

}.

}.

}.

Задание 4

Для упрощения программного кода, используйте возможности функций в программном коде. Осуществите поворот случайным образом, скорости моторов при каждом новом развороте должны завесить от случайных чисел.

Дополнительно Используйте функции:

Srand.

void srand (const long nSeedValue).

Генератор псевдослучайных чисел инициализируется с использованием аргумента, переданного как nSeedValue. Для каждого другого начального значения, используемого при вызове srand, можно ожидать, что генератор псевдослучайных чисел генерирует другую последовательность результатов в последующих вызовах rand.

srand (nSysTime) — аргументом генерации может выступить системное время.

Rand.

word rand ().

Возвращает псевдослучайное целое число в диапазоне от 0 до не менее 32 767 (в зависимости от платформы). Типичным способом генерации псевдослучайных чисел в определенном диапазоне с использованием rand является использование по модулю возвращаемого значения диапазоном диапазона и добавление начального значения диапазона:

  • ·? (значение% 100) находится в диапазоне от 0 до 99
  • ·? (значение% 100 + 1) находится в диапазоне от 1 до 100
  • ·? (значение% 30 + 1985) находится в диапазоне от 1985 до 2014 года

Обратите внимание, однако, что эта модульная операция не генерирует по-настоящему равномерно распределенное случайное число в промежутке, но, как правило, это хорошее приближение для коротких промежутков.

Вариант решения.

void move (long lm, long rm, long tm).

motor[port1] = lm;

motor[port6]= rm;

wait1Msec™;

task main ().

repeat (forever).

{.

if (SensorValue[port8]==0).

{.

move (127,127,100);

}.

else.

{.

move (-60,-60,400);

srand (nSysTime);

move (rand () % 61 ,-1*rand () % 61,400);

}.

}.

Задание 5

Используйте конструкцию робота, в котором датчик расстояния прямо смотрит на правую сторону. Возможно использование Clawbot IQ With Sensors. Переставьте местами датчики colorDetector (Color Sensor/Hue Mode) и distanceMM (Distance). Раздвиньте щупальца схвата, чтобы они не мешали датчику. Зайдите в раздел «Motor and Sensor Setup» и отметьте произведенные изменения. В более идеальном варианте желательно переделать конструкцию чтобы датчик прямо смотрел на стену.

Новая конфигурация датчиков:

#pragma config (Sensor, port2, touchLED, sensorVexIQ_LED).

#pragma config (Sensor, port3, distanceMM, sensorVexIQ_Distance).

#pragma config (Sensor, port4, gyroSensor, sensorVexIQ_Gyro).

#pragma config (Sensor, port7, colorDetector, sensorVexIQ_ColorHue).

#pragma config (Sensor, port8, bumpSwitch, sensorVexIQ_Touch).

#pragma config (Motor, motor1, leftMotor, tmotorVexIQ, openLoop, driveLeft, encoder).

#pragma config (Motor, motor6, rightMotor, tmotorVexIQ, openLoop, reversed, driveRight, encoder).

#pragma config (Motor, motor10, armMotor, tmotorVexIQ, openLoop, encoder).

#pragma config (Motor, motor11, clawMotor, tmotorVexIQ, openLoop, encoder).

Робот должен двигаться вдоль стенки на заданном расстоянии, которое определяется в момент старта. Датчик расстояния направлен на стенку справа.

Вариант решения.

task main ().

{.

float u, k=1;

int L=SensorValue[port3]; // замер первоначального расстояния.

while (true).

{.

u=k*(SensorValue[port3]-L); // управляющее воздействие.

motor[motor1]=60+u;

motor[motor6]=60-u;

wait1Msec (1);

}.

}.

Если SensorValue[port3] = L то робот едет прямо, иначе его скорость корректируется.

Для более устойчивого движения предлагается следующий вариант.

task main ().

{.

float u, k1=2, k2=10;

int Sold, L;

Sold=L=SensorValue[port3];

while (true).

{.

u= k1*(SensorValue[port3]-L) + k2*(SensorValue[port3]-Sold);

motor[motor1]=60+u;

motor[motor6]=60-u;

Sold=SensorValue[port3];

wait1Msec (1);

}.

}.

Таким образом, предложенные варианты являются базовыми заданиями, которые можно изучить при решении задач, связанных с передвижением робота. Учащиеся могут экспериментировать с большим количеством вариантов, совершенствуя решения, связанные с функционированием робота. робототехника программирование robotc.

  • 1. Филиппов С. А. Робототехника для детей и родителей. — СПб.: Наука, 2013. 319 с.
  • 2. Филиппов С. А. Основы робототехники на базе конструктора Lego Mindstorm NXT. Занятие 6. Ориентация на местности: объезжаем стены // Компьютерные инструменты в школе. — № 6. 2010. — С. 43 — 50.
  • 3. Горнов О. А. Основы робототехники и программирования с Vex EDR. — М: Издательство «Экзамен», 2016. — 160 с.
Показать весь текст
Заполнить форму текущей работой