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

  • 7426 private projects
  • 385 public projects
  • 16180353 lines compiled
  • 58212 builds
NIBO @ facebook YouTube Twitter
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
  • Seite:
  • 1

THEMA: [NIBO2] Probleme bei Linienverfolgung

[NIBO2] Probleme bei Linienverfolgung 12 Jahre 4 Monate her #763

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: 12 Jahre 4 Monate her von Robot_chris.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: [NIBO2] Probleme bei Linienverfolgung 12 Jahre 3 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: 12 Jahre 3 Monate her von Egon.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: [NIBO2] Probleme bei Linienverfolgung 12 Jahre 3 Monate her #765

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 12 Jahre 3 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.051 Sekunden

Werbung