Pages: [1]   Go Down
Author Topic: error in code wat gaat er fout?  (Read 1489 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo ik krijg error meldingen wie weet wat er fout gaat?
Dit is de code;


Code:
#include <Servo.h>

const float pi = 3.14159, theta_r = radians(48.0), theta_p = radians(23.2), theta_s[] = {-pi/3, 2*pi/3, pi, 0, pi/3, -2*pi/3},
            RD = 2.395, PD = 3.3, L1 = 1.0, L2 = 4.72, z_home = 4.25, Servo_min, Servo_max, servo_mult
            p[2][6] = {{PD*cos(pi/6 + theta_p), PD*cos(pi/6 - theta_p), PD*cos(-(pi/2 - theta_p)), -PD*cos(-(pi/2 - theta_p)), -PD*cos(pi/6 - theta_p), -PD*cos(pi/6 + theta_p)},
                       {PD*sin(pi/6 + theta_p), PD*sin(pi/6 - theta_p), PD*sin(-(pi/2 - theta_p)), PD*sin(-(pi/2 - theta_p)), PD*sin(pi/6 - theta_p), PD*sin(pi/6 + theta_p)}},
            re[2][6] = {{RD*cos(pi/6 + theta_r), RD*cos(pi/6 - theta_r), RD*cos(-(pi/2 - theta_r)), -RD*cos(-(pi/2 - theta_r)), -RD*cos(pi/6 - theta_r), -RD*cos(pi/6 + theta_r)},
                        {RD*sin(pi/6 + theta_r), RD*sin(pi/6 - theta_r), RD*sin(-(pi/2 - theta_r)), RD*sin(-(pi/2 - theta_r)), RD*sin(pi/6 - theta_r), RD*sin(pi/6 + theta_r)}};

/*
theta_r = angle between attachment points
theta_p = angle between rotation points
theta_s = orientation of the servos
RD = distance to end effector attachment points
PD = distance to servo rotation points
L1 = servo arm length
L2 = connecting arm length
z_home = default z height with servo arms horizontal
servo_min = lower limit for servo arm angle
servo_max = upper limit for servo arm angle
servo_mult = multiplier to convert to milliseconds
p = location of servo rotation points in base frame [x/y][1-6]
re = location of attachment points in end effector frame [x/y][1-6]
*/

const int servo_pin[] = {9,3, 5, 11, 6, 10}, servo_zero[6] = {1710, 1280, 1700, 1300, 1680, 1300};
/*
servo_pin = servo pin assignments,
servo_zero = zero angles for each servo (horizontal)
*/

Servo servo[6];
/*
Servos 0, 2, 4: reversed (+ = down, - = up)
Servos 1, 3, 5: normal   (+ = up,   - = down)
*/

void setup()
{
  //Serial.begin(9600);
  for(int i = 0; i < 6; i++)
  {
    servo[i].attach(servo_pin[i]);
    servo[i].writeMicroseconds(servo_zero[i]);
  }
  delay(1000);
}

void loop()
{

  static float pe[6] = {0,0,0,radians(0),radians(0),radians(0)}, theta_a[6], servo_pos[6],
                q[3][6], r[3][6], dl[3][6], dl2[6];
  /*
  pe = location and orientation of end effector frame relative to the base frame [sway, surge, heave, pitch, roll, yaw)
  theta_a = angle of the servo arm
  servo_pos = value written to each servo
  q = position of lower mounting point of connecting link [x,y,x][1-6]
  r = position of upper mounting point of connecting link
  dl = difference between x,y,z coordinates of q and r
  dl2 = distance between q and r
  */
 
  for(int i = 0; i < 6; i++)
  {
    q[0][i] = L1*cos(-theta_a[i])*cos(theta_s[i]) + p[0][i];
    q[1][i] = L1*cos(-theta_a[i])*sin(theta_s[i]) + p[1][i];
    q[2][i] = -L1*sin(-theta_a[i]);
  
    r[0][i] = re[0][i]*cos(pe[4])*cos(pe[5]) + re[1][i]*(sin(pe[3])*sin(pe[4])*cos(pe[5]) - cos(pe[3])*sin(pe[5])) + pe[0];
    r[1][i] = re[0][i]*cos(pe[4])*sin(pe[5]) + re[1][i]*(cos(pe[3])*cos(pe[5]) + sin(pe[3])*sin(pe[4])*sin(pe[5])) + pe[1];
    r[2][i] = -re[0][i]*sin(pe[4]) + re[1][i]*sin(pe[3])*cos(pe[4]) + z_home + pe[2];
  
    dl[0][i] = q[0][i] - r[0][i];
    dl[1][i] = q[1][i] - r[1][i];
    dl[2][i] = q[2][i] - r[2][i];
  
    dl2[i] = sqrt(dl[0][i]*dl[0][i] + dl[1][i]*dl[1][i] + dl[2][i]*dl[2][i]) - L2;
  
    theta_a[i] += dl2[i];
  
    theta_a[i] = constrain(theta_a[i], servo_min, servo_max);
  
    if(i%2 == 1) servo_pos[i] = servo_zero[i] + theta_a[i]*servo_mult;
    else servo_pos[i] = servo_zero[i] - theta_a[i]*servo_mult;  
  }
 
  for(int i = 0; i < 6; i++)
  {
    servo[i].writeMicroseconds(servo_pos[i]);
  }
}

deze meldingen krijg ik;
_6DOF:4: error: uninitialized const 'Servo_min'
_6DOF:4: error: uninitialized const 'Servo_max'
_6DOF:5: error: expected initializer before 'p'
« Last Edit: January 26, 2013, 04:28:24 am by JO3RI » Logged

The Netherlands
Online Online
Edison Member
*
Karma: 49
Posts: 1624
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote from: Hks76
deze meldingen krijg ik;
_6DOF:4: error: uninitialized const 'Servo_min'
_6DOF:4: error: uninitialized const 'Servo_max'
_6DOF:5: error: expected initializer before 'p'

Je maakt spellingfouten.
Je initialiseert servo_min en servo_max, maar wil daarvoor al Servo_min en Servo_max gebruiken.
Dat zijn twee verschillende dingen en daarom krijg je foutmeldingen.
Voor de p in regel 5, heb je regel 4 (die begint met RD) nog niet afgesloten.
Daar ontbreekt iets met een komma of puntkomma vermoed ik.

Je moet heel goed op spelling letten, en dat het eerste controleren als je foutmeldingen krijgt.
Je zult vast nog wel een aantal malen over de puntkomma struikelen.
Overigens geeft de IDE je aan waar je moet kijken.
In de melding staat een getal tussen dubbele punten.
Dat getal is het regelnummer.
_6DOF:4: is dus een fout in regel 4.
Logged

Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bedankt voor je bericht.

Quote
Je initialiseert servo_min en servo_max, maar wil daarvoor al Servo_min en Servo_max gebruiken.
Dat zijn twee verschillende dingen en daarom krijg je foutmeldingen.

Hoe moet ik dit dan oplossen?
Weghalen krijg ik meer foutmeldingen hoe initialiseer ik dan Servo_min?
Logged

Netherlands
Offline Offline
Jr. Member
**
Karma: 0
Posts: 78
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Wat MAS3 bedoeld is dat je bij de een een hoofdletter gebruikt en bij de andere allemaal kleine letters. Overal moet je het op precies dezelfde manier schrijven...
Logged

Watch my stealth-bot @ let's make robots

Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Stealth0113,

Bedankt!!
stom van mij ik heb hem wel 10 keer door zitten kijken en tlken er overheen gekeken.

Bedankt!!
Logged

Netherlands
Offline Offline
Jr. Member
**
Karma: 0
Posts: 78
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ik ken het probleem! Op een gegeven moment zit je je zo blind te staren op je sketch dat je niet meer fatsoenlijk je fouten kan oplossen.
Even je sketch posten en na laten kijken door een ander is dan altijd een goede optie.
Logged

Watch my stealth-bot @ let's make robots

Pages: [1]   Go Up
Jump to: