Edge Avoider

Prosty projekt na jedno popołudnie. Tak można podsumować tego robota. Jego zadanie jest proste - utrzymywać się na stole i nie spaść. Efekty widać na pierwszym z filmów. Stół musi być nieprzeźroczysty, a im jaśniejszy tym lepiej. Aby umożliwić działanie robota komuś, kto nie posiada stołu lub blatu, zrobiłem też drugą wersję, w której robot nie wykracza za czarną linię.

Konstrukcja jest podobna do robota Linefollower. W rzeczywistości nie wzorowałem się na niej. Postanowiłem zrobić nową, uniwersalną bazę na dwóch kołach dla potrzeb przyszłych projektów. Nie będę opisywał szczegółów tak prostej budowy. Zainteresowanym polecam obejrzenie instrukcji budowy.

Program również nie należy do najtrudniejszych. W kilku linijkach zawiera się ciągły odczyt czujnika koloru. W przypadku wykrycia znacznej zmiany natężenia światła, robot zatrzymuje się, cofa kawałeczek, a następnie obraca w losową stronę i o losowy kąt. Każdy może dostosować program do swoich warunków oświetleniowych i rodzaju powierzchni po której robot się porusza. Wystarczy modyfikacja parametru CRITICALDIFF.

Po skończeniu budowy i programowania przystąpiłem do jazdy próbnej, podczas której wszystko od razu działało poprawnie. Nic nie cieszy bardziej konstruktora jak efekt jego pracy działający bezbłędnie od samego początku. Radzę jednak uważać - jest możliwe, że robot będzie jechał pod tak małym kątem do krawędzi stołu, że najpierw koła spadną za krawędź, a dopiero potem czujnik wykryje tą krawędź. W takim przypadku możliwe jest uszkodzenie robota. Zalecam więc używanie stołu w kształcie okręgu (którym sam nie dysponowałem). Możliwe jest przebudowanie robota, dodanie obrotowego czujnika z przodu lub zmniejszenie odległości między kołami. Ja uznałem, że gra nie jest warta świeczki. Niemniej jednak odczułem potrzebę posiadania większej ilości czujników oświetlenia. Czujniki tego typu nie są trudne w budowie, na pewno w niedługim czasie podejmę próbę takowej konstrukcji.

Podsumowując, Edge Avoider jest bardzo prostą konstrukcją dającą jednak wiele radości. Jak zwykle, polecam każdemu!

Wideo



Galeria

Galeria 3D

Obrazy w tej galerii możesz oglądać jedynie przy użyciu specjalnych czerwono-niebieskich okularów. Można je nabyć w wielu sklepach internetowych za bardzo małe pieniądze.


Kod programu

//author: Krzysztof Kapusta, All rights reserved #define MOTORS OUT_BC #define SEN S1 #define WHOLETURN 950 #define DRIVEPWR 100 #define CRITICALDIFF 150 #define TM 60000 task main() { SetSensorType(SEN, IN_TYPE_COLORRED); SetSensorMode(SEN, IN_MODE_RAW); ResetSensor(SEN); int ambient = SensorRaw(SEN); int thld = ambient - CRITICALDIFF; OnFwd(OUT_BC, DRIVEPWR); long ctick = CurrentTick(); while (CurrentTick()-ctick < TM ) { if (Sensor(SEN) < thld) { Off(MOTORS); RotateMotorEx(MOTORS, DRIVEPWR, -250, 0, 1, 0); RotateMotorEx(OUT_BC, DRIVEPWR, Random(WHOLETURN/2), (Random(2)*2 - 1)*100, 1, 0); OnFwd(OUT_BC, DRIVEPWR); //Wait(2000); } } Off(MOTORS); }

Pokaż/ukryj cały kod

Komentarze

Thx. Próbowałem z czujnikami dotyku, ale nie byłem zadowolony. Programuję w Not eXactly C.

Dodane przez: Admin | 2012-04-22

A i może zrób coś chodzącego, albo jeżdżącego na 2 kołach ;]

Dodane przez: Ten co wcześniej :) | 2012-04-22

Robot prosty, ale fajny do zabawy :] Można by było go zrobić z 2 czujnikami dotyku :] PS. W czym programujesz? NQC?

Dodane przez: Anonymous | 2012-04-22

Taki jest mój skryty zamiar :D

Dodane przez: admin | 2012-04-16

Czy mógłbyś zbudować line followera v3, gdy robisz ten czujnik światła? Tylko takiego, który po drodze może napotkać cegłę

Dodane przez: Lego mindstorms | 2012-04-16

Dodaj swój komentarz