Difference between revisions of "Trajectory from gyro/accellerometer/compas"

From RoboWiki
Jump to: navigation, search
Line 39: Line 39:
 
<pre>
 
<pre>
 
   angle = radians(yaw - yawOffset);
 
   angle = radians(yaw - yawOffset);
   delta += 0.5f;
+
   // d - vzdialenosť, ktorú robot prejde
 
   double d = 0.9;  
 
   double d = 0.9;  
 +
  // deltaX, deltaZ - posun robota
 
   double deltaZ = cos(angle) * d;
 
   double deltaZ = cos(angle) * d;
 
   double deltaX = sin(angle) * d;
 
   double deltaX = sin(angle) * d;
 +
  // xx, yy = pozícia robota
 
   xx += deltaX;
 
   xx += deltaX;
 
   yy -= deltaZ;
 
   yy -= deltaZ;
 
</pre>
 
</pre>

Revision as of 18:14, 25 June 2013

Zadanie

Trajectory from gyro/accellerometer/compas. Requirement: must use this part: 9DOF IMU, use any real robot.


O súčiastke

9DOF IMU

V projekte sme mali využiť súčiastku 9DOF IMU a následne zo získaných dát vykresliť prejdenú trajektóriu robota.

Na doske 9DOF IMU sa nachádzajú nasledujúce komponenty:


1. etapa

V prvej etape sme sa snažili prepojiť súčiastku s počítačom a získať z nej potrebné dáta. Postupným testovaním a dolaďovaním sme získali hodnoty:

  • Yaw - udáva uhol zabočenia
  • Pitch - udáva uhol stúpania / klesania
  • Roll - udáva uhol výkyvu doprava / doľava

Yaw, Pitch, Roll

Nami získané údaje vyzerali takto:

1. etapa


2. etapa

Následne sme vykreslili dáta získané v prvej etape pomocou OpenGL:

2. etapa

3. etapa

V tretej etape sme chceli dosiahnuť vykreslenie trajektórie podľa získaného Yaw (uhol zabočenia). S využitím polárnych súradníc a automatického pohybu vpred sme nakoniec dokázali vykresliť trajektóriu v rovine.

3. etapa
  angle = radians(yaw - yawOffset);
  // d - vzdialenosť, ktorú robot prejde
  double d = 0.9; 
  // deltaX, deltaZ - posun robota
  double deltaZ = cos(angle) * d;
  double deltaX = sin(angle) * d;
  // xx, yy = pozícia robota
  xx += deltaX;
  yy -= deltaZ;