PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe bei Programmierung eines hexapods



der_tom
23.03.2014, 10:51
Hallo,

ich habe mir einen Hexapod gebaut, als controller habe ich eine 24ch Maestro Servocontroll von pololu,

Ich stehe noch recht am anfang, bis jetzt läft er und mit hilfe von zwei IR sensoren entscheidet er ob Rechts oder links bei einem hinternis,

Eure Hilfe benötige ich nun, ich möchte nicht das der Hexa gleich nach dem einschalten losläuft sondern erst eine Sequenz abspielt und nach beendigung dieser dann ganz normal startet und losläuft.

hier ist der code..


start:
# wenn beide sensoren on dann Back
left_sensor right_sensor logical_and
if back back goto start endif

# wenn linker sensor on dann nach rechts
left_sensor if back right right goto start endif

# wenn rechter sensor on dann nach links
right_sensor if back left left goto start endif

# wenn kein sensor dann Vorwärts
forward
goto start


sub left_sensor
19 get_position 512 less_than
return


sub right_sensor
18 get_position 512 less_than
return

### Sequence subroutines: ###


sub back
return

sub forward
return

sub left
return

sub right
return



gruss

der_tom
25.03.2014, 16:38
Hallo,

hat keiner eine idee dazu??

gruss

HannoHupmann
27.03.2014, 07:29
Da antworte ich doch mal ganz klassisch wie ein Roboter: "Kann Anfrage nicht bearbeiten! Zu wenig Daten!"
Aber im ernst, nur jemand der das gleiche Board verwendet wie du könnte jetzt schon eine Antwort geben. Ich kannte das Board bisher gar nicht und habe daher auch keine Ahnung wie es angesteuert wird.

Grundsätzlich hat man dieses Problem aber immer, denn im ausgeschalteten Zustand kann die Position der Servos manuell verändert werden. Wird nun eingeschaltet rucken die Servos sofort in die erste Postion unabhängig davon wo der Servo mechanisch war.

Einzige Möglichkeit das zu verhindern: vor dem Einschalten alle Servos manuell in eine mechanisch definierte Lage bringen und die "erste Position" genau auf diese Position programmieren. Danach können alle Servos sequentiell in ihre Initialposition fahren.

der_tom
28.03.2014, 17:55
Hallo
HannoHupmann

Ich war nicht der meinung das man das selbe board braucht um mir zu helfen.

Ich kenne mich mit der programmierung noch nicht so aus, aber wenn ich mir den code so anschaue wird in den erste paar zeilen nur definiert was passiert wenn die sensoren anschlagen,

Und ich möchte eigendlich nur das am anfang bevor der code goto start ausführt einfach ein subframe "zb anfang" ausführt einmal nach dem start und dann mit goto start weiter macht

Gruss Tom

HannoHupmann
31.03.2014, 11:59
Klingt einfach:


start:
init

loop:
# wenn beide sensoren on dann Back
left_sensor right_sensor logical_and
if back back goto start endif


# wenn linker sensor on dann nach rechts
left_sensor if back right right goto start endif


# wenn rechter sensor on dann nach links
right_sensor if back left left goto start endif


# wenn kein sensor dann Vorwärts
forward
goto loop

sub init
# Initalisieren aller Funkionen
return