RoboterCC - Robotic Code Compiler
Forum Robot Kits NIBO 2 [NIBO2] Probleme bei Linienverfolgung

Welcome

Nachrichten

Sie sind nicht eingeloggt.

Werbung

Letzte Themen

  • •Keine Beiträge vorhanden•

Site-Statistic

  • 7507 private projects
  • 385 public projects
  • 16433719 lines compiled
  • 58483 builds
NIBO @ facebook YouTube Twitter
•Willkommen•, •Gast•
•Benutzername:• •Passwort:• •Angemeldet bleiben:•
  • •Seite:•
  • 1

•THEMA:• [NIBO2] Probleme bei Linienverfolgung

[NIBO2] Probleme bei Linienverfolgung •13 •Jahre• 5 •Monate• her• #763

  • Robot_chris
  • •Robot_chriss Avatar•
  • •OFFLINE•
  • Fresh Boarder
  • •Beiträge:• 3
Hallo erstmal zusammen,

ich habe mir versucht nachdem ich das Tuturial durchgemacht habe, mein erste Programm zu Linienverfolgung zu schreiben.

Leider folgt er doch nicht so der Linie wie ich das gerne hätte, zwar zeigen die Sensoren abweichungen an, aber er folgt nicht der Linie.

Hier mein kleines Programm, hoffe ihr könnt mir helfen. Danke:

#include <nibo/niboconfig.h>
#include <nibo/display.h>
#include <nibo/gfx.h>
#include <nibo/copro.h>
#include <nibo/delay.h>
#include <nibo/iodefs.h>
#include <nibo/bot.h>
#include <avr/interrupt.h>
#include <nibo/spi.h>
#include <stdio.h>
#include <nibo/leds.h>

#include <nibo/floor.h>
#include "nibo/pwm.h"
#include "nibo/adc.h"


#include <avr/interrupt.h>
#include <stdint.h>
#include <avr/pgmspace.h>


#define sense 60

int16_t speed_l = 0;
int16_t speed_r = 0;

int main()
{
sei();
bot_init();
spi_init();
floor_init();
display_init();
gfx_init();
leds_init();
pwm_init();

gfx_move (22, 0);
gfx_set_proportional (1);
gfx_print_text ("Linie folgen");
gfx_set_proportional (0);

gfx_move (5, 10);
gfx_print_char ('R');

gfx_move (118, 10);
gfx_print_char ('L');


copro_ir_startMeasure();
delay (10);
copro_setSpeedParameters(5, 6, 7);



while (1==1)
{


floor_update();
char text [20]="-- -- -- -- --";

// Bodensensoren

floor_update();
sprintf(text, "%02x %02x %02x %02x",
(uint16_t) (floor_relative[FLOOR_RIGHT]/8),
(uint16_t) (floor_relative[FLOOR_LEFT]/8),
(uint16_t) (floor_relative[LINE_RIGHT]/8),
(uint16_t) (floor_relative[LINE_LEFT]/8));
gfx_move(22, 30);
gfx_print_text(text);




if ((floor_relative[LINE_LEFT])>sense && (floor_relative[LINE_RIGHT])>sense)
{
copro_setSpeed(speed_l, speed_r);
speed_l = 20; speed_r = 20;
leds_set_status(2, 4);
leds_set_status(2, 5);
}

if ((floor_relative[LINE_LEFT])<sense && (floor_relative[LINE_RIGHT])>sense)
{
copro_setSpeed(speed_l, speed_r);
speed_l = 20; speed_r = 0;
leds_set_status(2, 5);
leds_set_status(0, 4);
}

if ((floor_relative[LINE_LEFT])>sense && (floor_relative[LINE_RIGHT])<sense)
{
copro_setSpeed(speed_l, speed_r);
speed_l = 0; speed_r = 20;
leds_set_status(2, 4);
leds_set_status(0, 5);
}


Bin momentan echt etwas ratlos :(


// Spannung

bot_update();
float volt = 0.0166 * bot_supply - 1.19;
sprintf(text, "%3.1fV", (double)volt);
gfx_move(30, 10);
gfx_set_proportional (1);
gfx_print_text("supply: ");
gfx_set_proportional (0);
gfx_print_text(text);

}
return 0;
}
•Letzte Änderung•: •13 •Jahre• 5 •Monate• her• • von • Robot_chris.
•Der Administrator hat öffentliche Schreibrechte deaktiviert.•

Aw: [NIBO2] Probleme bei Linienverfolgung •13 •Jahre• 5 •Monate• her• #764

  • Egon
  • •Egons Avatar•
  • •OFFLINE•
  • Gold Boarder
  • •Beiträge:• 316
Hallo Robot_chris

So wie ich es auf die schnelle sehe:

1.) Du hast in Deiner while(1==1)-Schleife KEIN "copro_update()" => das ist aber für die Übernahme der speed-Werte nötig (also nach dem "floor_update()" sollte das "copro_update()" stehen ;)

2.) Du solltes VOR dem "copro_setSpeed(speed_l, speed_r)" die Werte für speed_l und speed_r setzen, die willste ja verändert haben ;)

müßte dann gehen

mfg

Egon
lokalisieren, eliminieren, Vollzug melden
•Letzte Änderung•: •13 •Jahre• 5 •Monate• her• • von • Egon.
•Der Administrator hat öffentliche Schreibrechte deaktiviert.•

Aw: [NIBO2] Probleme bei Linienverfolgung •13 •Jahre• 5 •Monate• her• #765

  • Robot_chris
  • •Robot_chriss Avatar•
  • •OFFLINE•
  • Fresh Boarder
  • •Beiträge:• 3
Hallo Egon,

danke für die Antwort, ja damit läuft es viel viel besser :).

Bei einer geraden Linie klappt es sehr gut nur wenn die Linie eine Kurve macht reagiert der Nibo teilweise zu langsam bzw. zuspät, oder er dreht zu weit und kommt dann aus der Spur.

Gibt es eine Möglichkeit die Sensität zu erhöhen oder muss ich einfach langsamer drehen?

Gruß Christian
•Der Administrator hat öffentliche Schreibrechte deaktiviert.•

Aw: [NIBO2] Probleme bei Linienverfolgung •13 •Jahre• 5 •Monate• her• #766

  • Egon
  • •Egons Avatar•
  • •OFFLINE•
  • Gold Boarder
  • •Beiträge:• 316
Hallo Robot_chris

Hm, da mußt Du wohl "fine tunen" ;) - d.h. mal ausprobieren, was passiert, wenn

- der NIBO langsamer dreht
- die Sensibilität erhöht ist

Das Folgen einer Linie stellt schon Ansprüche an den Pogrammier-Algorithmus;es gibt auch ein paar Programme ("line" und "line2" im .../examples2 - Directory), die sind evtl auch ganz hilfreich.

Ich habe mich bislang noch nicht mit Linienverfolgung befasst (also dem erstellen eines eigenen Programms zur Linienverfolgung), kann deshalb keine großartigen Tipps geben :( (hatte bislang keine Zeit dafür)

mfg

Egon
lokalisieren, eliminieren, Vollzug melden
•Der Administrator hat öffentliche Schreibrechte deaktiviert.•
  • •Seite:•
  • 1
•Ladezeit der Seite: 0.103 Sekunden•

Werbung

Protected by R Antispam