Pomysł na zabawę z robotem LEGO Mindstorms

Zabawa z robotem to pewne wyzwanie dla każdego użytkownika, ale oczywiście przyjemne wyzwanie. W cyklu tym postaram się przedstawić przykłady zadań, a raczej przykłady projektów na zajęcia z robotami. Projektem który dziś przed przedstawię to budowa i prezentacja możliwości dźwigu. Zadanie będzie polegało na przeniesieniu obiektów znajdujących się z jednej strony dźwigu na drugą stronę tegoż dźwigu.

Pierwszym etapem realizacji projekt dźwig jest zbudowanie go. Zrobimy go przy pomocy instrukcji przedstawionej poniżej.

Czas potrzebny na realizację tego zadania to około 90 minut. Najciekawszą częścią jest programowanie robota, tak aby on wykonał zgodnie z poleceniem. W tym przypadku jest to pozytywne programowanie, ponieważ robot może być ciągle podłączony do urządzenia, aby wykonywać testy.

Rozwiązując zadanie należy pamiętać a tym, że w tej wersji zamontowane są dwa sensory (dotyku i koloru). Dzięki tym sensorom możemy ustalić pozycję wyjściową ramienia dźwigu. Tak jak to jest przedstawione na tym filmiku.

Przedstawione rozwiązanie jest to przykładowe rozwiązanie w LEGO Mindstorms oraz w języku RobotC.

#pragma config(Sensor, S1, Touch, sensorEV3_Touch)
#pragma config(Sensor, S3, Color, sensorEV3_Color, modeEV3Color_Color)
#pragma config(Motor, motorA, Chwytak, tmotorEV3_Medium, PIDControl, encoder)
#pragma config(Motor, motorB, MotorGD, tmotorEV3_Large, PIDControl, encoder)
#pragma config(Motor, motorC, , tmotorEV3_Large, openLoop)
#pragma config(Motor, motorD, MotorOB, tmotorEV3_Large, PIDControl, encoder)
//*!!Code automatically generated by 'ROBOTC' configuration wizard !!*//

//ustawienie wysokosci
void wys(int s) {
  while(getColorName(S3)!=6) {
    setMotor(MotorGD,-s);
  }
  stopMotor(MotorGD);
}

//ustawienie obrotu
void ob(int s) {
  while(!getTouchValue(S1)) {
    setMotor(MotorOB,s);
  }
  stopMotor(MotorOB);
}

task main()
{
  int speed=10;
  for(int i=0; i<2; i++) {
    //ustawienia poczatkowe dzwigu
    //ustawienie wysokosci
    wys(speed);
    //ustawienie obrotu
    ob(speed);
    //ustawienie chwytaka
    setMotor(Chwytak,-speed);
    wait1Msec(1000);
    setMotor(Chwytak,15);
    wait1Msec(400);
    stopMotor(Chwytak);
    //chwyt przedmiotu
    setMotor(MotorGD,speed);
    wait1Msec(3000);
    setMotor(Chwytak,-10);
    wait1Msec(500);
    //przeniesienie przedmiotu
    while(getColorName(S3)!=6) {
      setMotor(MotorGD,-speed);
    }
    stopMotor(MotorGD);
    setMotor(MotorOB,-speed);
    wait1Msec(3000);
    stopMotor(MotorOB);
    setMotor(MotorGD,speed);
    wait1Msec(3000);
    stopMotor(MotorGD);
    setMotor(Chwytak,10);
    wait1Msec(500);
    stopMotor(Chwytak);
    while(getColorName(S3)!=6) {
      setMotor(MotorGD,-speed);
    }
    stopMotor(MotorGD);
  }
  //ustawienie wysokosci
  wys(speed);
  //ustawienie obrotu
  ob(speed);
}