Motion Simulator!

Gewoon even offtopic praten over van alles en nog wat.

Moderator: Moderators

Plaats reactie
Gebruikersavatar
DaBit
Donateur
Berichten: 11032
Lid geworden op: 05 dec 2012 13:48
Locatie: Oss

Re: Motion Simulator!

Bericht door DaBit »

Swets schreef: 18 nov 2021 22:06 zit nu te denken hoe ik nu verder moet....
Allereerst: als je nou een huis gaat bouwen, maak je dan ook de bakstenen allemaal zelf? Hak je bomen om om er planken van te zagen? Nee toch? Die benodigdheden koop je gewoon in, anders zou het bouwen van een huis wel erg lang duren.

Begin daar voor je software ook eens mee. Je kunt nu C++ doen in plaats van een of ander PLC-taaltje wat er niet voor gemaakt is, dus bergen lineaire-algebra libraries voor het grijpen die je de benodigde vector en matrixtypes kado doen.

Specifiek voor Arduino vind ik zo gauw deze:
https://www.arduino.cc/reference/en/lib ... -datatype/

Niet specifiek voor Arduino is er nog veel meer:
https://github.com/g-truc/glm
https://github.com/sgorsten/linalg
https://github.com/johnb003/mathing

Enzovoorts.

Bij die niet-specifieke zul je nog wel wat 'PC-specifiek' spul eruit moeten slopen.

Maar die vector_datatype library, die kun je gewoon via PlatformIO->libraries installeren. Aanklikken, Add to Project en PlatformIO doet de rest voor je.

Vervolgens:

Code: Selecteer alles

#include <Arduino.h>
#include <vector_type.h>


void setup() {
	vec3_t hoekpunt_binnenkubus = { -1.0, -1.0, 1.0 };
	vec3_t hoekpunt_buitenkubus = { -100.0, -100.0, -100.0 };
	
	float Lengte = (hoekpunt_buitenkubus - hoekpunt_binnenkubus).mag();

  Serial.begin(9600);
  Serial.println(Lengte);
  Serial.flush();	
}


void loop() {
}
8 hoekpunten kan ook:

Code: Selecteer alles

void setup() {
	vec3_t hoekpunten_binnenkubus[8] = { 
    { -1.0, -1.0, 1.0 },
    {  1.0, -1.0, 1.0 },
    { -1.0,  1.0, 1.0 },
    {  1.0,  1.0, 1.0 },
    { -1.0, -1.0, -1.0 },
    {  1.0, -1.0, -1.0 },
    { -1.0,  1.0, -1.0 },
    {  1.0,  1.0, -1.0 }
  };

	vec3_t hoekpunten_buitenkubus[8] = {
    { -100.0, -100.0, -100.0 },
    {  100.0, -100.0, -100.0 },
    { -100.0,  100.0, -100.0 },
    {  100.0,  100.0, -100.0 },
    { -100.0, -100.0, 100.0 },
    {  100.0, -100.0, 100.0 },
    { -100.0,  100.0, 100.0 },
    {  100.0,  100.0, 100.0 }
  };
	
  float Lengtes[8];

  Serial.begin(9600);

  for (int i=0;i<8;i++) {
    Lengtes[i] = (hoekpunten_buitenkubus[i] - hoekpunten_binnenkubus[i]).mag();
    Serial.println(Lengtes[i]);
  }

	Serial.flush();	
}


void loop() {
}
Enzovoorts. Roteren werkt bij die library met quaternions, daar komen we tezijnertijd wel op.
De belangrijkste wet in de wetenschap: 'hoe minder efficient en hoe meer herrie, hoe leuker het is'
Gebruikersavatar
DaBit
Donateur
Berichten: 11032
Lid geworden op: 05 dec 2012 13:48
Locatie: Oss

Re: Motion Simulator!

Bericht door DaBit »

Kjelt schreef: 19 nov 2021 00:07 wel dat er een groot tekort aan stm32 microcontrollers is, weinig versies zijn nog leverbaar.
Net nog op strooptocht geweest, zonder succes.
Als iemand nog een partijtje STM32L452RET6 weet te liggen; ik ben onderhand bereid het gewicht in goud te betalen voor die dingen :oops:
De belangrijkste wet in de wetenschap: 'hoe minder efficient en hoe meer herrie, hoe leuker het is'
Gebruikersavatar
Swets
Berichten: 2662
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: Motion Simulator!

Bericht door Swets »

pfff wat een berg informatie weer... :-)

nog eens een paar keer lezen... :-)

ik rommel ff (vandaag)verder met wat ik nu heb... om voor me zelf de basis te laten landen....
dan ga ik eens kijken naar die libraries... kijken of ik het gene wat ik dan heb aan de gang kan krijgen door de stukken van mijn code te vervangen met die functie's uit de libraries....

maar ik heb vaak met die libraries... eeh.. ja omdat ik dus heel moeilijk begrijpend kan lezen... (dus ik kan iets hardop voor lezen, foutloos, maar als je aan het einde vraag wat ik gelezen heb, heb ik geen idee... :-) , om een of andere rede dringt het niet door wat er staat....
en ik heb net even voor die librarie specifiek voor arduino zitten bekijken...
https://danceswithcode.net/engineeringn ... nions.html en dan bijvoorbeeld zo helpfile , dan krijg ik gewoon van die autistische wegtrekkers... voor ik door heb wat er nu eigenlijk staat.... pffff

en het gekke is, als iemand het in Jip en Janneke taal uitleg, en het kwartje val, dan snap ik het opeens.... en als ik het dan snap, kan ik het ook beredeneren, en zie dan ook hoe ik verhalen bijvoorbeeld om kan draaien, of samenvoegen... of of...

ik moet wel zeggen dat ik er schijt aan heb om bijvoorbeeld dom over te komen.... als ik het niet snap, durf ik daar ook voor uit te komen....
ik zal nooit zeggen dat ik iets snap, terwijl het niet zo is.... en ook dat had ik op school al, als de leraar vroeg of iedereen het begreep, was ik vaak 1 van de weinige die het dan toe gaf het niet te begrijpen.... maar wel bleek dan vaak, dat 80% van klas het niet begrepen had... :-) en die kwamen dan in de pauze aan mij vragen om het uit te leggen... :-)

en ik ga eens kijken naar zo ander board en een debugger.... heeft iemand links? wat ik heb beste kan kopen...
http://www.arjan-swets.com (met cnc filmpjes)
Gebruikersavatar
Swets
Berichten: 2662
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: Motion Simulator!

Bericht door Swets »

kijk daar begint het al... :-)

maar goed ik moet nog eens even goed gaan lezen....
maar ik zit gelijk al...
quat_t q1 ? wat is quat_t ?, waar kom dat vandaan...?

maar ik denk ook dat ik nu teveel tegelijk aan het doen ben....
zit ook gelijk te kijken naar Platformio....

daar heb ik me project ook in geopend, en kijken of ik dat ook aan de gang kan krijgen....
en gedownload krijg naar me arduino....

en ondanks hij zeg success, als ik build indruk, heb ik toch het idee dat hij nog niet echt in de arduino stand staat zeg maar....
want het programma is het zelfde als in de arduino IDE.. maar ik zie hier nog dingen met rode streepjes er onder....
bijvoorbeeld in mij Pythagora functie...

result = sqrt(TmpXkwadraat + TmpYKwadraat + TmpZKwadraat);
staat onder sqrt een rode streep, en als ik er met me muis op gaat staan:
identifier "sqrt"is undefined C/C++(20)

dus ik denk dat hij nog geen arduino code begrijp....?
ff verder zoeken.... :-)

https://www.dropbox.com/s/owzwc404ja509 ... 2.png?dl=0

ik wil eigenlijk best wel graag deze IDE aan de gang krijgen... omdat ik het gelijk al van begin af aan er duidelijker uit vind zien....
En ik vind het ook wel fijn, fat je tijdens het intypen een beetje hulp krijg.. :-)


Code: Selecteer alles

/*
 This sketch shows to perform operations on quaternions and how to convert arrays to quaternions.
 */

#include <quaternion_type.h>

// Display functions

void printVector( vec3_t vec ) {
  Serial.print( vec.x );
  Serial.print( ", " );
  Serial.print( vec.y );
  Serial.print( ", " );
  Serial.print( vec.z );
  Serial.println();
}

void printQuat( quat_t quat ) {
  Serial.print( quat.w );
  Serial.print( ", " );
  printVector( quat.v );
}

void setup() { 
  Serial.begin(9600);
  Serial.flush();
  
  //-------- Quaternions --------
  quat_t q1 = { 1, 0, 0, 0 };
  quat_t q2 = { 0, 1, 0, 0 };
  quat_t q3 = { 0, 0, 1, 0 };
  quat_t q4 = { 0, 0, 0, 1 };
  quat_t q5;
  
  //-- Operations:
  //   Quaternions can be manipulated in the same way as scalar values

  // Addition
  q5 = q1 + q2;
  printQuat( q5 );

  // Subtraction
  q5 = q5 - q3;
  printQuat( q5 );

  // Negation:
  q5 = -q5;
  printQuat( q5 );

  // Increment:
  q5 += q4;
  printQuat( q5 );

  // Decrement:
  q5 -= q1;
  printQuat( q5 );

  // Scalar product: 
  q5 = q5*5;
  printQuat( q5 );
    // Reverse order
  q5 = -3*q5;
  printQuat( q5 );
  
  // Scalar divide:
  q5 = q5/8;
  printQuat( q5 );

  // Scalar self multiply:
  q5 *= 10;
  printQuat( q5 );

  // Scalar self divide:
  q5 /= 20;
  printQuat( q5 );

  //- Important operations:
  //  These are useful operations that are commonly encountered. They are explicitly named for clarity.
  
    // Conjugate
  printQuat( q5.conj() );

    // Inner product
  Serial.println( q5.inner() );

    // Magnitude
  Serial.println( q5.mag() );

    // Normalize
  printQuat( q5.norm() );  

  //- Quaternion multiplication and division:
  //  Quats can be multiplied together to generate a new quaternion. This can encode simultaneous rotations. 

    // Multiply
  q5 = q5*q2;
  printQuat( q5 );

    // Divide
  q5 = q5/q2;
  printQuat( q5 );

    // Self multiply
  q5 *= q4;
  printQuat( q5 );

    // Self divide
  q5 /= q3;  
  printQuat( q5 );
  
  //- Vector rotation:
  // A quaternion can rotate and stretch a 3D vector

    // A) Rotate by angle about axis
  constexpr float angle = (PI/180.0) * 30;
  vec3_t axis = { 0, 1, 0 };

  quat_t qrot;
  qrot.setRotation( false, axis, angle );     // Unit quaternion: true = small angle approximation ; false = exact rotation
  vec3_t vec = { 1,0,0 };                     // Vector to rotate

    // Rotate into angle
  printQuat( qrot.rotate(true, vec) );
    // Rotate away from angle
  printQuat( qrot.rotate(false, vec) );
 
    // Axes projections
  printVector( qrot.axisX(true) );
  printVector( qrot.axisY(true) );
  printVector( qrot.axisZ(true) );

    // B) Rotate by unit vector 
  qrot.setRotation( false, axis );     // Unit vector has magniude sin(angle)

  printQuat( qrot.rotate(true, vec) );

  //-- Compatibility with arrays:
  //   In operations between a quaternion and an array, the array will be interpreted as a quaternion.

  float arr[] = {1, 2, 3, 4};
  
  printQuat( qrot + arr );
  printQuat( qrot - arr );
  printQuat( qrot*arr );

  // Operations with arrays are not converted to a quaternion type. These need to be explicitly converted.
  printQuat( quat_t(arr)*3 );
  printQuat( quat_t(arr)/10 );

    printQuat( qrot.rotate(true, vec) );

  //-- Compatibility with vectors
  //   Vectors will be interpreted as quaternions without a scalar value (w = 0)

  vec3_t v = {1, 2, 3};
  quat_t q6 = {1, 3, 3, 3};
  
  printQuat( q6 + v );
  printQuat( q6 - v );
  printQuat( q6*v );
}

void loop() {}
http://www.arjan-swets.com (met cnc filmpjes)
Gebruikersavatar
Swets
Berichten: 2662
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: Motion Simulator!

Bericht door Swets »

https://www.dropbox.com/s/g08rtv26j9lkp ... 3.png?dl=0

wel zoeken hoor....

blijft (voor mij) raar dat hij sqrt als identifier is undefined blijft geven?
is toch gewoon een standaard functie...
tis niet iets wat ik gemaakt heb... :-)
http://www.arjan-swets.com (met cnc filmpjes)
Kjelt
Donateur
Berichten: 6306
Lid geworden op: 14 jun 2007 21:51
Locatie: Eindhoven

Re: Motion Simulator!

Bericht door Kjelt »

. bericht wegens offtopic per pb gestuurd.
Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 12033
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

Re: Motion Simulator!

Bericht door hugo stoutjesdijk »

Iets met math.h ?

Die wijsheid haal ik meestal hier https://www.cplusplus.com/reference/cmath/sqrt/
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Gebruikersavatar
DaBit
Donateur
Berichten: 11032
Lid geworden op: 05 dec 2012 13:48
Locatie: Oss

Re: Motion Simulator!

Bericht door DaBit »

Probeer eerst eens gewoon een 'hello world' in PlatformIO aan de gang te krijgen.

Linkonderaan in VSCode met PIO heb je knopjes voor Build (dat vinkje), Upload (pijltje), en de serial monitor (stekkertje).

Voor die sqrt() heb je waaarschijnlijk inderdaad een #include <math.h> nodig bovenaan je bestand
De belangrijkste wet in de wetenschap: 'hoe minder efficient en hoe meer herrie, hoe leuker het is'
Gebruikersavatar
DaBit
Donateur
Berichten: 11032
Lid geworden op: 05 dec 2012 13:48
Locatie: Oss

Re: Motion Simulator!

Bericht door DaBit »

Swets schreef: 19 nov 2021 13:01 dan bijvoorbeeld zo helpfile , dan krijg ik gewoon van die autistische wegtrekkers... voor ik door heb wat er nu eigenlijk staat.... pffff
Daarom had ik ook een hapklaar brokje code gegeven een paar posts hierboven.
Met de opmerking 'die quaternions, negeer ze nog maar effe, dat komt later wel'.

Zie zo'n ding voorlopig maar als een as waaromheen je kunt roteren. Dat kan de X of de Y-as zijn, maar ook 45 graden schuin bijvoorbeeld. Een trackball-controller zoals er in vrijwel alle 3D-software zit is vrijwel onmogelijk te doen zonder die dingen.
en ik ga eens kijken naar zo ander board en een debugger.... heeft iemand links? wat ik heb beste kan kopen...
Deze is wel leuk: https://www.conrad.nl/p/stmicroelectron ... es-1416934

Ik zal ook wel eens kijken of ik nog wat leuks met een STM32F4 heb liggen voor je.
De belangrijkste wet in de wetenschap: 'hoe minder efficient en hoe meer herrie, hoe leuker het is'
Gebruikersavatar
Swets
Berichten: 2662
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: Motion Simulator!

Bericht door Swets »

Kjelt schreef: 19 nov 2021 17:12 . bericht wegens offtopic per pb gestuurd.
echt? want ik zie niets?

vandaag een beetje een k#t dag... :-) ondanks dat ik vrij was, een schip/klant in het buitenland met problemen....
dus de halve dag online gezeten... om hem bij te staan... en een beetje te sturen....

een klep met analoge feedback... nou dan ben je wel ff bezig.... :-)
ik heb ook altijd het idee van die elektrische mensen aan boord dat ze er ook alleen zitten voor het avontuur...

ik had laatst ook een keer een elektrische vent aan boord... ehhh we hadden problemen met compressor 4, en toen deed hij ook de kast open van compressor 3, en ging hij op het oog die 2 kasten met elkaar vergelijken, om zo uit te zoeken waarom die compressor 4 niet wilde draaien.... en toen ik vroeg of dat hij geen Multi-meter had, kreeg ik als antwoord dat hij zijn snoeren kwijt was.... :shock:
http://www.arjan-swets.com (met cnc filmpjes)
Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 12033
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

Re: Motion Simulator!

Bericht door hugo stoutjesdijk »

Swets schreef: 19 nov 2021 23:42.... en toen ik vroeg of dat hij geen Multi-meter had, kreeg ik als antwoord dat hij zijn snoeren kwijt was.... :shock:
Had ie z'n was zeker aan gehangen? :lol:

Bel maar terug als je ze gevonden hebt, zou ik zeggen.

(en vermoedelijk is dat stuk kabel van de klep naar de plc door z'n collega er tussen uit geknipt om zijn was aan op te hangen, want die had geen universeelmeter :lol: :lol: )
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Gebruikersavatar
Swets
Berichten: 2662
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: Motion Simulator!

Bericht door Swets »

DaBit schreef: 19 nov 2021 20:17 Deze is wel leuk: https://www.conrad.nl/p/stmicroelectron ... es-1416934
ga ik die gelijk bestellen.... en daar zit de debugger dan gelijk in?
http://www.arjan-swets.com (met cnc filmpjes)
hfjbuis
Donateur
Berichten: 3070
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: Motion Simulator!

Bericht door hfjbuis »

ga ik die gelijk bestellen.... en daar zit de debugger dan gelijk in?
Ja, die zit er in en je kunt hem eventueel ook los maken (breken) en voor een ander project gebruiken met een "STM32 board" zonder debugger.
Ik heb de 411RE versie van dit bord.
There are only 2 limits, the sky and your imagination
Gebruikersavatar
DaBit
Donateur
Berichten: 11032
Lid geworden op: 05 dec 2012 13:48
Locatie: Oss

Re: Motion Simulator!

Bericht door DaBit »

Yup, zoals hfjbuis al aangaf: die zit er gelijk in
De belangrijkste wet in de wetenschap: 'hoe minder efficient en hoe meer herrie, hoe leuker het is'
Plaats reactie