Kijk is an! Welkom Kwally, bij de discussie. Schroom niet op je bevindingen, op- en aanmerkingen te geven. Ken wel een beetje tegen kritiek. hehehe

Nog te doen lijstje:
De Pitch functie
Gait studie en programmering
PS3 controller implementeren in code
optimalisatie van de c-code

De robot uitbreiden!

Maar ik denk dat ik nu maar eerst moet gaan beginnen met de optimaliseren van de arduino sketch, voordat ik verder ga. Denk dat hierin nog wel veel ruimte te halen valt.
Ik hoop dat het sowieso allemaal op een Uno gaat passen. Misschien dan toch maar libraries aanmaken, kijken of dat helpt.

[Bericht gewijzigd door Roeper op (13%)]



// verouderde versie //

Zoals jullie zien, het is een bijelkaar geraapt zooitje. en dat er nog veel aan te optimaliseren valt.
Ik ben al lang blij dat ik in ieder geval zover ben gekomen. Nu heb ik alleen 1 verkeerde ontwerp fout gemaakt. Mijn poot zijn niet links en rechts gespiegeld, maar haaks gespiegeld. Als jullie begrijpen wat ik bedoel. dus poot 1 en 4 zijn gespiegeld aan poot 2 en 3.

[Bericht gewijzigd door Roeper op (89%)]

Bij mij compileert dat tot 27k van max 32, jij had meer....

Ik heb even gekeken waar het in gaat zitten....

0k-4k: systeem initialisatie en jou code....
4k-8k: jou code + i2c code + PWM servo driver en stukje USB.
8k-12k: USB code.
12k-16k: USB code.
16k-20k: USB code.
20-24k: USB + arduino (milis micros delay init, main), hardware serial
24k-28k: floating point.

P.S. Op de laatste versie van de USB code, mag je variabele "R" niet meer gebruiken. Ik heb die hernoemd naar "RR".

Die variabele wordt trouwens volgens mij maar in 1 functie gebruikt. Dan kan je hem beter locaal declareren. Als die functie niet draait, gebruik je dat geheugen niet. Dat zal dan wel voor veel meer variabelen ook gelden.

dat klopt, de 27 vd 32. Dit is de code zonder de PS3 besturing. Zodra ik deze in void Loop erbij ga halen dan gaat ie over de limiet heen.

P.S. Op de laatste versie van de USB code, mag je variabele "R" niet meer gebruiken. Ik heb die hernoemd naar "RR".

Die variabele wordt trouwens volgens mij maar in 1 functie gebruikt. Dan kan je hem beter locaal declareren. Als die functie niet draait, gebruik je dat geheugen niet. Dat zal dan wel voor veel meer variabelen ook gelden.

Ik zal sowieso bepaalde variabele opnieuw moeten definieren, want zo valt er bijna niet uit te komen, als er een bug inkomt.
Ik ga even uitzoeken hoe je locaal kan definieren,

kan ik geen integer gebruiken, ipv float voor somigge variabele. Kost toch ook minder geheugen?

Maar hoe komt het dat de USB code zoveel geheugen gebruikt? Want ik zal deze toch nodig hebben voor de controller?

bedankt trouwens dat je er even naar heb willen kijken,

Ik ben niet zeker, maar volgens mij kan je (bijna) alle floats vervangen door integers. Je vermenigvuldigt dan eerst alle floats met 100 (je gebruikt steeds maar 2 decimalen) nu heb je integers waar je mee kan rekenen.
Op het einde zet je eventueel alles terug om naar float om terug de juiste ordegrootte te krijgen.
Maar kom je dan niet in de problemen met goniometrische functies? die zijn altijd float, en met 2 decimalen rekenen is in dat geval niet zo heel nauwkeurig (misschien wel genoeg dat zou je dan moeten testen.)

in de calculate van de hoeken wordt in principe toch alles afgerond naar een heel getal, door de functie round() van math.h.

Dus of de micro nou afrond, of sowieso met hele getallen werkt zou denk ik niet hoeven uitmaken. Ik ga wel even proberen door alle floats te wijzigen in integers en kijken of ie nog steeds hetzelfde reageert.
Maar heeft dit zin, om zodoende de grootte te verkleinen van de sketch?
On a sidenote: Is het normaal om in een sketch zóvéél floats/variabele te definiëren?

Tsja, misschien is een ARM uC meer op z'n plaats.

STM32F4DISCOVERY

STM32F407VGT6 microcontroller featuring 32-bit ARM Cortex-M4F core, 1 MB Flash, 192 KB RAM

boardje kost $14.58 bij ST.

Nadeel is dat je niet het pak libaries en voorbeeld code van de arduino hebt. wel de flash en de power van een 32 bits systeem.

Er zijn al eerder mensen mee bezig geweest:

http://projectproto.blogspot.co.uk/2011/07/quadruped.html

Hier schijnt het toch een verschil van een dikke 1000 bytes te maken en dat is nog niet eens zo een groot programma. De rede is volgens het artikel dat de 8-bit µC standaard niet kan werken met floating point en daar dus nog een extra library voor moet toevoegen aan de machine code. Er is dus wel degelijk een verschil tussen een float afronden en standaard rekenen met integers.
Gezien de grote van je programma zou dat best nog wel eens een aangenaam verschil kunnen maken. Verder scheelt het ook in processortijd, maar dat is misschien niet van belang.

@Roland van Leusden
Ga denk ik geen boardjes wisselen. Het zou en/of moet mogelijk zijn.
Mischien in de toekomst als ik ga uitbreiden, dat ik een andere microp. moet toepassen. Maar voor nu en wat ik wil zou het moeten kunnen.

@Shock6805
Thanks, heel interessant artikel! Blij dat je dit mij toegewezen heb. Scheelt dus wel degelijk om met ints te rekenen dan met floats. In ieder geval met een arduino dan,
:D

Zijn we weer een stapje verder. :)

[Bericht gewijzigd door Roeper op (18%)]

filmpje
Let niet op de snelheid, heb nog geen timing toegevoegd.......;)

Dit zijn de bewegingen welke ik tot nu toe heb met IK.
Ik heb vanavond geprobeerd om een gait te schrijven maar ik kom niet verder dan de poten één voor één bewegen, zoals met servo.write
Mijn kennis van c-taal is niet dusdanig toereikend om het voor elkaar te krijgen. Ik hoop dat het me wel gaat lukken, maar........

Ik heb de floats omgegooid naar doubles en integers. Ik heb de bijgevoegde bibliotheken gekopieerd en zoveel mogelijk gewist aan regels welke ik niet gebruikte. Dit heeft me wat winst gegeven aan geheugen maar niet genoeg
Maar om verder te gaan met het project en de gaits te gaan schrijven heb ik de PS3.Bluetooth bibliotheek eruit gehaald, zodat ik nu maar weer 12kB aan script heb. Dus dit is wel de grootste boosdoener. Zoals rew me in een eerdere post duidelijk maakte.

Ik zit met bewondering je topic te lezen, Roeper. Mooi gemaakt allemaal. Heb ook niets toe te voegen of zo. Dat ding kan straks door je kamer rennen denk ik. Misschien kun je hem zelfs wel autonoom maken, zodat het als een hondje achter je aan loopt.

Hey Ex-fietser, bedankt voor je reactie. Ik hoop dat ik hem door me kamer krijg rennen. :D
Uiteindelijk wil ik hem met me PS3 controller besturen. Ik snap hoe alles werkt en hoe het inelkaar steekt. Nu moet ik dus een programma schrijven, waarbij alle functies aan elkaar worden gevoegd.
Er zijn programma's te gebruiken welke simuleren zonder dat je de robot nodig hebt, die ook de code genereren. Zoals de Python simulator. Ik ga me hierin verdiepen en kijken of ik er wijzer uit wordt. Want moet eerlijk bekennen op het moment loop ik helaas een beetje vast met de code schrijven voor de creep gait. :(

iemand met wat C ervaring die me even een zetje in de juiste richting kan geven?
Ik ben nu een beetje bezig om te kijken of ik wat met python kan doen,

[Bericht gewijzigd door Roeper op (41%)]

Wat moet er met C gebeuren?

een declaratie als:

float R;

mag je in een functie zetten. Direct achter de openings-haak. Bij C++ mag dat ook midden in je code, maar jij schrijft "C", dan is dat ongebruikelijk. (er worden steeds dingen van C++ naar C overgezet, dus sommige C++ dingen mogen tegenwoordig ook in C).

Zo'n variabele VERGEET z'n waarde zodra de functie klaar is.

Even weer een kleine update:
http://www.uploadarchief.net/files/download/p1040507.jpg

Heb de berekeningen voor elkaar voor de horinzontale verplaatsing van de body. Kan hem in een cirkel laten bewegen, dit zal flink van pas komen met de gaits. Zal morgen wel even een filmpje schieten en uploaden.
Nu heb ik alle stilstaande bewegingen voor elkaar en kan ik aan de gaits beginnen. Ben nog steeds bezig met me orienteren met sketches van anderen via github. Ik heb flink wat ideeen opgedaan, en heb een beetje door hoe het zou moeten. Zal hopelijk over een tijd nog wat updates doen.

filmpje

Hij is niet volledig waterpas, maar het voldoet. Misschien omdat ik voor het aansturen van de pwm naar de servo integer gebruikt en dat de uC afrondt.
Voor het schrijven van de master code zal ik hier rekening mee houden.

Als je niet stiekum je filmpje hebt versneld, dan heb je toch echt 1 van de allerbeste quad/hexapods die ik gezien heb....

:D Dank je wel, Ik doe mijn best, doe mijn best. Jammer dat we geen reacties kunnen liken :p Van het weekend nog stad en land afgereisd op zoek naar zwarte gevlochten kabelbescherming, maar bijna geen enkele elektronica winkel in de buurt heeft het in de diameter die ik zoek. Dan maar weer de oude vertrouwde internet op.

Sinds ik hiermee bezig ben zit ik wel eerlijk gezegd de hele tijd te kwijlen bij filmpjes van sommige robots. hahaha

Nee filmpje is volledig de echte snelheid. Maar ik moet nog even verdiepen in de timing / snelheid en hoe ik dat geprogrammeerd krijg.
Heb her en der gelezen iets van interpolatie van de waarden tussen het beginpunt van de poot en het eindpunt. Dat naarmate de poot het eindpunt naardert deze interpolatiewaarden steeds kleiner en kleiner wordt, waardoor de poot nooit het eindpunt eigenlijk echt raakt. Door met de berekeningen van deze waarden te spelen kan je de snelheid van de poten beinvloeden. Iets in die trant...... moet er nog even over inlezen.

Op 5 januari 2015 12:31:35 schreef Roeper:
Van het weekend nog stad en land afgereisd op zoek naar zwarte gevlochten kabelbescherming, maar bijna geen enkele elektronica winkel in de buurt heeft het in de diameter die ik zoek. Dan maar weer de oude vertrouwde internet op.

Zoek je dit toevallig.
http://nl.rs-online.com/web/p/cable-sleeves/0408198/?searchTerm=408-19…
Het RS nummer is: 408-198. Ze hebben ook andere maten.

Het is inderdaad een gaaf ding. :)

Dank je wel, Lambiek.
Maar we zijn er nog lang niet. Er moet nog veel gebeuren aan de quadropod.
Das inderdaad wat ik zoek. Maar zoals altijd met elektronica bestellingen, zit je tegen de verzendkosten aan te hikken. Dus het gaat op me boodschappenlijst en als ik over de xx-bedrag ben, zal ik bestellen.

Ik heb pas een aantal maten in china besteld voor mijn 3D-printer bij deze winkel:
http://www.ebay.com/itm/390793356553

Interessant topic verder, ik ga m ook volgen :-)

Op 24 december 2014 12:26:43 schreef Roland van Leusden:
Tsja, misschien is een ARM uC meer op z'n plaats.

STM32F4DISCOVERY

[bijlage]

STM32F407VGT6 microcontroller featuring 32-bit ARM Cortex-M4F core, 1 MB Flash, 192 KB RAM

boardje kost $14.58 bij ST.

Nadeel is dat je niet het pak libaries en voorbeeld code van de arduino hebt. wel de flash en de power van een 32 bits systeem.

Er zijn al eerder mensen mee bezig geweest:

http://projectproto.blogspot.co.uk/2011/07/quadruped.html

Ik heb onlangs deze besteld:
http://nl.farnell.com/stmicroelectronics/nucleo-f411re/dev-board-stm32…
Pin compatible met Arduino en über snel en goedkoop. Ik moet daarnaast zeggen dat ik ook prima te spreken ben over de mbed IDE en documentatie van de libraries.

Wat? Nog geen tientje voor een 32-bit arduino compatible boardje? Dat moet ik zeker onthouden.

Niet compatible (voor zover ik weet) met de arduino omgeving.... Je kan wel de arduino shields aansluiten omdat de pins op dezelfde plekken zitten.