PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programmierung meines Hexapods



lucaosswald
06.12.2011, 17:18
Hallo

Ich habe vor einiger Zeit schonmal von meinem Projekt berichtet.
Ich wollte als Maturaarbeit einen Roboter bauen, des sich gleich wie eine Ameise bewegt. Dazu habe ich den Körper der Ameise im Masstab 1:115 vergrössert und in dieser Grösse einen Roboter gebaut. Danach analysierte ich den Schritt der Ameise genau und habe für jedes einzelne der 18 Gelenke eine Funktion aufgestellt, die die genaue Bewegung des Gelenks beschreibt im Verhältnis zur zurückgelegten Distanz des Körpers. Wenn die Ameise einen Schritt macht, bewegt sich ja der Körper nach vorne. Diese Bewegung habe ich in 12 gestoppt und die Winkel in jedem Punkt ausgemessen (mit GeoGebra^^). Auf jeden Fall wollte ich damit klar machen, dass die x-Achse bei allen 18 Funktionsthermen gleich ist.

Mein Problem ist nun, dass ich nur noch 1.5 Wochen Zeit bis zur Abgabe habe, aber der Roboter noch nicht programmiert ist.
Ich habe leider keinerlei Ahnung vom Programmieren und wollte daher fragen, ob mir jemand kurz helfen könnte.
Ich verwende ein Arduino Mega zur Steuerung der Servos.
Die ganz grundlegenden Schritte konnte ich schonmal anschauen und ich habe die Servos schon so getrimmt, dass alle Winkel (Nicht die Servos!) in einer 90° Position sind. Ich kenne also die Abweichung der einzelnen Servos. Hier mal der bisherige Code:


#include <Servo.h> //Definition der Servobibliothek


Servo s11,s12,s13,s21,s22,s23,s31,s32,s33,s41,s42,s43,s5 1,s52,s53,s61,s62,s63;
//Deklaration der Servoobjekten


//Servos werden ports zugeordnet
void setup()
{
s11.attach(25);
s12.attach(23);
s13.attach(27);
s21.attach(37);
s22.attach(35);
s23.attach(39);
s31.attach(22);
s32.attach(26),
s33.attach(24);
s41.attach(49);
s42.attach(53);
s43.attach(51);
s51.attach(34);
s52.attach(38);
s53.attach(36);
s61.attach(52);
s62.attach(48);
s63.attach(50);
}




//Setze alle Servos in 90' Position
void neutral()
{
s11.write(90-2);
s12.write(90-3);
s13.write(90-10);
s21.write(90+4);
s22.write(90-8);
s23.write(90-7);
s31.write(90+4);
s32.write(90-3);
s33.write(90-10);
s41.write(90+4);
s42.write(90+8);
s43.write(90-4);
s51.write(90-2);
s52.write(90+8);
s53.write(90+3);
s61.write(90+7);
s62.write(90+6);
s63.write(90+6);
}








void loop()
{
neutral();
}


Jetzt muss ich wie gesagt noch den Schritt programmieren.
Äusserst nützlich wäre ein Befehl, wo ich alle Funktionen der Servos eingeben könnte, die dann alle simultan mit den Werten von 0-12 durchgegangen werden. Wie geht das am einfachsten?

Lieber Gruss
Luca

avrrobot
06.12.2011, 17:26
Hallo,
Es wäre schön, wenn du mal einen Link von dem Thread posten würdest.
Ach ja: Sowas wäre vielleicht einfacher in code Tags zu schreiben.
Da ich jetzt den andren Thread nicht kenne,
kann ich nur vermuten, dass du c verwenden willst.(wegen dem #include....)
Aber das mit dem s11.attach.. sieht eher wie java aus,
aber egal, ist ja noch kein Quellcode.
Welchen Controller willst du verwenden?
Und ist es nicht etwas spät, erst so kurz vor Abgabe über die Programmierung nachzudenken oder gehts auch ohne?

lucaosswald
06.12.2011, 19:10
Also:
1. Meinst du mit dem Thread die vorherigen Posts von mir? -->https://www.roboternetz.de/community/threads/50776-Hexapod-als-Maturarbeit?highlight=maturaarbeit
2. Ich verwende einen Mikrocontroller von Arduino (www.arduino.cc). Die liefern auch eine Software, mit der man das Board programmieren kann. Geschrieben wird in einer Mischung aus c und c++. Die Software übersetzt dann alles für den Controller(glaube ich).
3. Ja es ist sehr spät um mit der Programmierung anzufangen. Dennoch ändert das nichts. Der Grund für den Verzug liegt darin, dass es sehr aufwändig war einen Roboter zu bauen, ohne jegliche Vorlagen zu verwenden und den genauen Schritt der Ameise zu analysieren. Die Ameise hat nämlich 3 unterschiedlich lange Beinpaare, was die ganze Sache zusätzlich verkompliziert.
Ausserdem hatte ich zu Beginn keine Ahnung von Robotik und Elektronik.

Lieber Gruss
Luca

5Volt-Junkie
11.01.2012, 16:01
Hallo Luca!

Welche Version des Arduino Mega Boards verwendest du? Und welche Version der GUI?
Bis irgendeiner Version von Arduino (glaube es ging um GUI) war die Ansteuerung von so vielen Servos mit dem MEGA-Board nicht möglich. Da waren die Servo-Bibliotheken noch etwas buggy. Oder hast du es schon ausprobiert und es läuft alles?;)