Schlagwort-Archive: Farbsensor

Der SR-F-500 IR

Die Arbeiten am SR-F-500 IR haben schon vor ein paar Wochen begonnen. Die Arbeiten mußten aber wegen Lieferengpässe der benötigten Bauteile unterbrochen werden. Inzwischen konnte der erste Prototyp weitestgehend fertiggestellt werden. Es fehlen nur noch die für die Steuerung der Arme benötigten Kettenglieder.

Der SR-F-500 IR basiert auf dem Daniele Benedettellis JohnNXT. Jedoch wurde der Tonsensor durch einen IR-Empfänger ersetzt, wodurch eine Steuerung über eine normale Lego-Fernbedienung möglich wird. Auch habe ich die größeren Lego-Technic-Ketten verwendet, sowie einige Anpassungen am Laser vorgenommen.

Aktuell erfolgt die Steuerung des SR-F-500 ausschließlich über den Master-NXT-Baustein, an dem die beiden Motoren für die Fortbewegung, der Motor für den Torso, sowie der IR-Empfänger angeschlossen ist. Über den Kanal 1 kann der Roboter vorwärts und rückwärts fahren (roter Hebel), sowie sich nach links und rechts drehen (blauer Hebel). Kanal 2 steuert den Torso (roter Hebel).

Der Code für SR-F-500_IR.nxc

#define IR_RECEIVER IN_1
#define DRIVE_CHANNEL 0
#define TORSO_CHANNEL 1

#define RIGHT_MOTOR OUT_B
#define LEFT_MOTOR OUT_C
#define BOTH_MOTORS OUT_BC

#define TORSO_MOTOR OUT_A

void ReadIRReceiver(byte channel, int &Red, int &Blue)
{
  int count;
  byte inI2Ccmd[];
  char outbuf[];

  if (channel > 3)
  {
    return;
  }

  // set the buffer to hold 2 values (initially all are zero)
  ArrayInit(inI2Ccmd, 0, 2);
  inI2Ccmd[0] = 0x02;
  inI2Ccmd[1] = 0x42+channel*2;

  //read count set to 8 bytes
  count = 2;

  //read the acceleration sensor on port 1
  I2CBytes(IR_RECEIVER, inI2Ccmd, count, outbuf);
  Red = outbuf[0];
  Blue = outbuf[1];
}

task main()
{
  int drive, steering;
  int torso, steering_torso_mode;
  SetSensorLowspeed(IR_RECEIVER);

  TextOut(0, LCD_LINE1, "Spitzohr Robotics");
  TextOut(4*6, LCD_LINE2, "SR-F-500 IR");

  while (true)
  {
    ReadIRReceiver(DRIVE_CHANNEL, drive, steering);
    ReadIRReceiver(TORSO_CHANNEL, torso, steering_torso_mode);
    if (steering == 0)
    {
      OnRev(BOTH_MOTORS, drive);
    }

    if (steering != 0)
    {
      OnRev(LEFT_MOTOR, steering);
      OnFwd(RIGHT_MOTOR, steering);
    }
    else if (steering_torso_mode != 0)
    {
      OnRev(LEFT_MOTOR, steering_torso_mode);
      OnFwd(RIGHT_MOTOR, steering_torso_mode);
    }

    OnRev(TORSO_MOTOR, torso);
  }
}
Veröffentlicht unter Aktuelles, Roboterfahrzeuge (SR-F) | Verschlagwortet mit , , , , , | Hinterlasse einen Kommentar

SR-F-010 Test #612

Im Test 612 wurde an das Roboterfahrzeug ein Farbsensor angebaut. Die zentrale Steuereinheit wurde so programmiert, dass das Fahrzeug der schwarzen Linie folgt. Falls die schwarze Linie nicht mehr in Sensorenreichweite ist, wird ein Suchprogramm gestartet. Der Roboter dreht sich dabei bis zu 90° nach Links und anschließend 180° nach Rechts. Das Suchprogramm wird abgebrochen, sobald der Farbsensor wieder die Farbe Schwarz entdeckt. Dann fährt der Roboter weiter.

Der Sensor hat leider Schwierigkeiten den Teppich von Schwarz zu unterscheiden, wodurch dieser Test leider nicht erfolgreich war. Sobald der Farbsensor mehr als 2cm vom zu messendem Objekt entfernt ist, meldet dieser ebenfalls die Farbe Schwarz zurück. Unser Labor empfiehlt daher, farbige Linie zu verwenden und grundsätzlich alle Tests auf hellen Untergründen durchzuführen.

Veröffentlicht unter Roboterfahrzeuge (SR-F), Video | Verschlagwortet mit , , | 5 Kommentare