Daan Timmer
Ik ben programmeur! geen electronicus! http://www.daantimmer.nl/ Er is een ontwerp! nu nog inhoud :-)
Anoniem
tralala
Huidig project: Hexapod
Uitgestrekt is de arm 200 mm. 200 * 400 = 80000 waardes, voor de servo's een 16 bits waarde, dus 2 bytes. En ook nog voor 2 servo's.
200 * 400 * 2 * 2 = 320000 bytes...
Leek mij een beetje veel, dus ik doe het nu maar even zo.
Daan Timmer
Ik ben programmeur! geen electronicus! http://www.daantimmer.nl/ Er is een ontwerp! nu nog inhoud :-)
Dan zet je toch alleen de sin/cos waardes in een LUT? Als je met 8bits werkt zit je op 2x 256 waardes.
tralala
Huidig project: Hexapod
Daan Timmer
Ik ben programmeur! geen electronicus! http://www.daantimmer.nl/ Er is een ontwerp! nu nog inhoud :-)
Anoniem
Heel veel off topic, en net als een ander gebruik je http://www.circuitsonline.net/aanbod/ maar.
[Bericht gewijzigd door Henry S. op (0%)]
Op 18 juli 2009 12:35:15 schreef Daan Timmer:
Dan zet je toch alleen de sin/cos waardes in een LUT? Als je met 8bits werkt zit je op 2x 256 waardes.
Wat dacht je (algemeen gericht, en natuurlijk de topicstarter in het bijzonder) van alleen sinus? Co-sinus is immers een sinus die 90 graden voor loopt. Bovendien lijken alle flanken van zo'n curve op elkaar dus je hebt in principe maar een tabel tussen 0 en 90 graden nodig. De microcontroller kan die waarden makelijk reconstrueren uit hoeken door te spiegelen. En met een beperkt aantal punten moet je ook een redelijke nauwkeurigheid kunnen behalen als je linear interpoleert tussen die waarden. Vroeger (voor de zakjapanner, ... of is die uitdrukking inmiddels ook al ouderwets
) gebruikte men voor het reken gemak een tabel met logaritmen van sinus/cosinus waarden (als ze geen rekenliniaal gebruikten, maar dat is inprincipe dezelfde oplossing). Waardoor je alleen hoefde optellen/aftrekken ipv vermenigvuldigen/delen.
log(a)+log(b)=log(a·b)
En het resultaat dan weer terug 'up-looken' in de tabel. Dus met een beetje ouderwets vernunft moet je zo'n voet positie wel kunnen berekenen in een fractie van een sekonde. De vraag is alleen waarom. Ik denk niet dat een spin zich zorgen maakt over een sinus curve. Die zet zijn poot neer totdat het niet verder kan.
Daan Timmer
Ik ben programmeur! geen electronicus! http://www.daantimmer.nl/ Er is een ontwerp! nu nog inhoud :-)
Op 12 augustus 2009 23:05:26 schreef Valen: Ik denk niet dat een spin zich zorgen maakt over een sinus curve. Die zet zijn poot neer totdat het niet verder kan.
Maar daar zeg je iets zeer interressants, doch duur. Servo's met feedback zijn iets specialer+duurder dan een normale *analoge* servo'.
Ik ken de feedback methode natuurlijk wel
Heb hier een mooi boekje (of toch niet, ligt kennelijk nog bij een vriend)
zie: http://www.ai.mit.edu/projects/genghis/ en bekijk de PDF. Overigens, dat boek is schitterend als je geinterresseerd bent in robotica + AI 
Anoniem
wat is het hier stil de laatste tijd
ik heb nu 9 servo's besteld http://www.rctstore.nl/art!!!!5017!NL
maar die hadden ze niet meer dus heb ik voor dezelfde prijs de http://www.rctstore.nl/112485-servo-hs485hb/art!!!zoek%5Ehs%20485hb!35… gekregen
straks de max II micro kit bestellen als aansturing
ik ben trouwens bezig de hele body zelf te maken op mijn stage adres
ik zou ook graag weer eens een update over u hexapod willen zien
(dit kan nog een strijd gaan worden pic tegen cpld
:):))
tralala
Huidig project: Hexapod
Haha, ben benieuwd! Hoever ben jij nu? Kan je al wat bewegingen maken? Hoe zit het met je hardware?
Ben ook weer bezig geweest, niet erg veel alleen. Ik ben nu bezig met het optimaliseren van de code. Wat ik nu heb en wat ook goed werkt:
CalcAB:
;Servo waardes berekenen van servo Ay en B
; AC uitrekenen
AC = CX * CX ; Kwadraat X
AC = AC + (CY * CY) ; Kwadraat X + Kwadraat Y
AC = SQR(AC) ; Wortel (X*X + Y*Y)
; Hoek c1 uitrekenen
C1flt = (CY / CX)
C1flt = ATAN(C1flt)
C1 = 57.3 * C1flt ; Hoek berekenen in graden (180/pi = 57.295...
; cos Hoek C2 = (AB²-BC²-AC²) / (-2*BC*AC)
; Bereken Cos C2
;AB²-BC²-AC²
C2 = ABAB_BCBC - (AC * AC)
; / (-2*BC*AC)
C2flt = BC2 * AC
C2flt = C2 / C2flt
;Cosinus is berekent, bereken hoek in radialen
C2flt = ACOS(C2flt)
C2 = 57.3 * C2flt ; Omrekenen naar graden
C3 = -180 - C1 + C2
BXflt = C3 / 57.3 ; 57,296 = 180 / pi
BXflt = COS BXflt
BX = BXflt * B_C
BX = CX + BX
BYflt = C3 / 57.3 ; 57,296 = 180 / pi
BYflt = SIN BYflt
BY = BYflt * B_C
BY = CY - BY
Aflt = BY / BX
Aflt = ATAN (Aflt)
Aflt = 57.3 * Aflt ; 180/PI = 57.295...
Aflt = 90 - Aflt
B = CX - BX
Bflt = B /(CY - BY)
Bflt = ATAN (Bflt)
Bflt = 57.3 * Bflt ; 180/PI = 57.295...
Bflt = 180 -(Aflt - Bflt)
Aflt = Aflt / 180 * 1840
Servo0 = 575 + Aflt
Bflt = Bflt / 180 * 1815
Servo1 = 2365 - Bflt
Servo2 = 1500
RETURNVariabalen en constanten:
DIM AX AS DWORD
DIM AY AS DWORD
DIM BX AS DWORD
DIM BXflt AS FLOAT
DIM BY AS DWORD
DIM BYflt AS FLOAT
DIM CX AS DWORD
DIM CY AS DWORD
SYMBOL AB = 76
SYMBOL B_C = 125
SYMBOL ABAB_BCBC = -9849 ; 76^2 - 100^2 = -9849 ; AB kwadraat - BC kwadraat alvast uitgerekend
SYMBOL BC2 = -250 ; -2 * 125 ; -2 * BC alvast uitgerekend
DIM AC AS WORD
DIM C1 AS DWORD
DIM C1flt AS FLOAT
DIM C2 AS DWORD
DIM C2flt AS FLOAT
DIM C3 AS FLOAT
DIM A AS BYTE
DIM Aflt AS FLOAT
DIM B AS DWORD
DIM Bflt AS FLOAT
DIM Servo0 AS WORD
DIM Servo1 AS WORD
DIM Servo2 AS WORDWaarbij de servo's als volgt gebruikt worden:
Servo0 = Omhoog/omlaag bij 'heupen'
Servo1 = Omhoog/omloog bij 'knie'
Servo2 = Zijwaartse beweging, nu nog niet gebruiktServo waardes worden doorgestuurd naar aparte servocontroller. Heb je interesse voor de hele code, mail me.
Bij 1 loop gaat dit nog goed, bij 2 of 3 ook nog wel. Met een oefenprogramma'tje(de vierkante beweging van het filmpje) is de snelheid goed. Alleen wanneer ik de loop 6 keer uitvoer gaat het net te traag...
Mijn vraag is dus, hoe en waar zouden jullie verbeterpunten in de code aanbrengen?
[Bericht gewijzigd door tralala op (22%)]
Daan Timmer
Ik ben programmeur! geen electronicus! http://www.daantimmer.nl/ Er is een ontwerp! nu nog inhoud :-)
Anoniem
de hardware heb ik nu de laatste 9 servo's komen er ook aan
het programma ben ik nog mee bezig zie mijn site voor updates van de code (http://mangavalk.webklik.nl/page/home)
hij wordt alleen niet iedere dag geüpdatet
en de body ben ik bijna mee klaar
(maar ze willen hem loopend zien weggaan(dat wordt dus gewoon een stukje vooruit
de driehoek\driepoots loop ))
tralala
Huidig project: Hexapod
Hardware? Zelf gemaakt of heb je die MSR hardware gekocht?
En je code? Gebruik je inverse kinematics, of gewoon simpele bewegingen?
Op 30 september 2009 18:00:30 schreef Daan Timmer:
overstappen van Basic naar C of assembly?
Ik heb een licentie gekocht voor Proton PICBasic, dus zou dit eigenlijk wel willen gebruiken... Zijn er nog opties? Anders ga ik het waarschijnlijk verdelen over 2 PIC's.
Anoniem
de hardware is mijn mmk max II micro kit
de code staat op mijn site onder hexapod>verilog
de code is nog niet klaar en/of compleet
in het begin
nu dus
wilde ik het rechtstreeks uit het geheugen gaan trekken
maar op lange duur wil ik net zo iets als u heeft gaan gebruiken
tralala
Huidig project: Hexapod
Rechtstreeks uit geheugen trekken? Nog geen wiskunde zegmaar?;)
Met hardware bedoelde ik eigenlijk de robot zelf. Zelf gemaakt? Of ook net zoiets als ik, een pakket gekocht?
Ik ga denk ik maar naar assembley kijken, even tutorial zoeken:P Aanbevelingen?
Daan Timmer
Ik ben programmeur! geen electronicus! http://www.daantimmer.nl/ Er is een ontwerp! nu nog inhoud :-)
bekijk de datasheet van de betreffende PIC's. Achterin staan alle beschikbare instructies.
Her en der door de documentatie staan voorbeelden per peripheral over hoe je het aan moet sturen in assembly.
Het enige wat je moet *leren* is rekenen met assembly. De rest staat al in de datasheet.
neoel
Rather a (_E=MC2_) than a (_?_).
Op 1 oktober 2009 09:14:55 schreef tralala:Ik ga denk ik maar naar assembley kijken, even tutorial zoeken:P Aanbevelingen?
Ik zou gewoon C gaan programmeren met de SDCC. Dat is een prima open source compiler en werkt onder linux en windows.
tralala
Huidig project: Hexapod
Ik ga denk ik liever in C programmeren. Ik heb ervaring met Java, en dat is wel een beetje te vergelijken met C volgens mij.
Ik heb SDCC geïnstalleerd, alleen hoe start je hem op:P Het lijkt me wel wat, alleen ik snap niet hoe ik de compiler opstart...
Anoniem
zou ik mogen vragen hoe u java heeft geleerd via school \ boeken of via een tutorial online
want ik ben op zoek naar een goeie tutorial
want het lijk me toch wel makkelijk om op de pc zelf ook wat programma's te kunnen maken
tralala
Huidig project: Hexapod
http://www.dgp.toronto.edu/~mjmcguff/learn/java/
Met Eclipse als IDE, ik deed het wel met applets. Testje wat ik een keer gemaakt heb: Java Applet
Andere vragen via mail aub...
[Bericht gewijzigd door tralala op (35%)]
