Springen naar inhoud

Probleem met lijnvolger (robot)


  • Log in om te kunnen reageren

#1

Cerium

    Cerium


  • >250 berichten
  • 449 berichten
  • Ervaren gebruiker

Geplaatst op 25 mei 2007 - 19:06

Hallo,

Ik ben samen met 2 medestudenten aan het werken aan een lijnvolger. Dus een robot die volledig autonoom een witte lijn volgt op een zwarte achtergrond. Nu zitten we met een probleem dat een inventieve oplossing vereist.

De robot gaat namelijk te snel. In de opdracht die we kregen staat dat de robot 10 km/h moet kunnen halen. Dit is nu blijkt zo goed als onmogelijk. Het probleem is dat de robot volledig gemonteerd is en er dus niets meer aan verandert kan worden. Nu is mijn vraag: hoe kan ik de robot langzamer laten rijden?

Ik heb al een paar oplossingen bedacht maar die blijken niet zo goed te werken. In eerste instantie dacht ik eraan om met PWM de motoren op half vermogen te laten draaien. Maar dan geraakt de robot niet meer vooruit. Als ik de PWM zo afstel dat de robot in beweging komt gaat hij te snel. Dus hiermee is het niet mogelijk. Een ander idee was om met gewichten de robot zwaarder te maken. Dit werkt goed tot de robot een bocht moet nemen. Een laatste idee wat ook al niet mogelijk was is om de wielen kleiner te kiezen. Het chassis hangt met de oorspronkelijke wielen 3 millimeter van de grond, dus kleinere wielen zijn uit den boze.

Kan er iemand iets bedenken?


Alvast heel erg bedankt

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

Rogier

    Rogier


  • >5k berichten
  • 5679 berichten
  • VIP

Geplaatst op 26 mei 2007 - 09:15

Iets met remblokjes?
In theory, there's no difference between theory and practice. In practice, there is.

#3

Cerium

    Cerium


  • >250 berichten
  • 449 berichten
  • Ervaren gebruiker

Geplaatst op 27 mei 2007 - 10:28

Ja, dat is misschien wel een oplossing. Maar dan zou dat systeem toch regelbaar moeten zijn, niet? Bij het opstarten moet de remkracht klein zijn, en als de robot op bedrijfstoeren is moet de remkracht groter zijn. Moet ik eens over nadenken. Bedankt !

Veranderd door Cerium, 27 mei 2007 - 10:28


#4

Ruben01

    Ruben01


  • >1k berichten
  • 2902 berichten
  • Ervaren gebruiker

Geplaatst op 27 mei 2007 - 10:44

Is het niet mogelijk de robot te programeren zodat het vermogen daalt wanneer hij aan het rijden is (afhankelijk van de snelheid). Wanneer de snelheid te laag is kan je vermogen dan terug doen stijgen. Dit zal wel om enige elektronica vragen.
BOINC mee met het WSF-team: <a href="http://www.wetenscha...howtopic=60653" target="_blank">http://www.wetenscha...topic=60653</a>

#5

StefanH

    StefanH


  • >25 berichten
  • 43 berichten
  • Gebruiker

Geplaatst op 27 mei 2007 - 10:54

allereerst: hoe wordt je robot aangedreven? elektromotor? via een batterij? indien mogelijk kan je een reductie plaatsen op je elektromotor, je snelheid wordt dan lager, je koppel daarentegen stijgt nog, dus in beweging geraken zal zeker nog lukken...

#6

Franske

    Franske


  • >250 berichten
  • 337 berichten
  • Ervaren gebruiker

Geplaatst op 27 mei 2007 - 15:19

Is het niet mogelijk de robot te programeren zodat het vermogen daalt wanneer hij aan het rijden is (afhankelijk van de snelheid). Wanneer de snelheid te laag is kan je vermogen dan terug doen stijgen. Dit zal wel om enige elektronica vragen.


De PWM geregeld maken. Kan aan de hand van het toerental of gewoon de snelheid. Waarschijnlijk is het koppel dat hij bij het starten moet leveren heel erg groot.
Ik zou ook voor een dergelijke oplossing gaan.
"I can't stand burnt toast. I loathe bus terminals. Full of lost luggage and lost souls. Then there's unrequited love, and tyranny, and cruelty." (the 7th Doctor)

#7

High-Voltage

    High-Voltage


  • >250 berichten
  • 384 berichten
  • Ervaren gebruiker

Geplaatst op 27 mei 2007 - 15:50

Iets met remblokjes?

Dat is natuurlijk geweldig.
Met al die CO2 normen van tegenwoordig moet alles zo milieuvriendelijk mogelijk en jij gaat even remblokjes gebruiken om het wagentje trager te laten rijden. De motor maar vermogen maken terwijl de helft in warmte wordt opgedoempt.

(NOFI uiteraard)


@TS:
Zoals Franske al aangaf, variabele PWM gebruiken. Maar in plaats van de snelheid of het toerental te meten kan je ook gewoon een vaste tijd instellen. Je geeft bijvoorbeeld gedurende 1.5 seconden 100% pulsbreedte om je losbreekkoppel te overwinnen, daarna val je terug op de ingestelde pulsbreedte. Wil je het iets beter en iets moeilijker maken dan kan je inderdaad nog een snelheidsmeting hierbij voegen. Voordeel van dit laatste is dat zijn snelheid ook op hellingen constant gaat blijven terwijl met een vaste instelling dit niet het geval is.

Als je toch je doelstelling van 10km/h wil halen zul je je sensoren moeten aanpassen. Nu heb je waarschijnlijk één sensor die recht boven de lijn staat. Je neemt dan best twee sensoren die juist op de rand van de lijn kijken. Met een beetje differentiaalsturing kan je dan een veel nauwkeurigere aansturing doen waardoor hogere snelheden mogelijk zijn.

Je robot stuurt waarschijnlijk via een servo in een voorste/achterste wieletje ? (gewoon even nieuwsgierig)

#8

Cerium

    Cerium


  • >250 berichten
  • 449 berichten
  • Ervaren gebruiker

Geplaatst op 27 mei 2007 - 20:26

Bedankt voor de antwoorden!

De robot wordt aangedreven met 2 DC-motortjes vooraan en een loshangend derde wiel achteraan. Dus de struring geschiedt door differentiele bekrachtiging van de motortjes.

Ik heb gebruik gemaakt van 4 sensoren. 2 sensoren die zich gelijktijdig op de lijn begeven. Ze staan achter elkaar zodat de voorste sensor de microcontroller tijdig kan 'waarschuwen' dat er een bocht aankomt. Dan heb ik links en rechts van de lijn nog een sensor die effectief de lijn gaan detecteren als er bijgestuurd moet worden.

Ik denk nu ook dat het inderdaad beter is om met variabele PWM te werken. 100% pulsbreedte om de robot op te starten en dan tot 60 procent terugvallen ofzoiets. De juiste pulsbreedte zal experimenteel bepaald moeten worden.

Bedankt!

#9

High-Voltage

    High-Voltage


  • >250 berichten
  • 384 berichten
  • Ervaren gebruiker

Geplaatst op 27 mei 2007 - 20:45

Als je zoveel sensoren gebruikt dan moet je volgens mij toch hogere snelheden kunnen halen hoor. Maar goed, je zou het eventueel op de volgende manier kunnen opvatten:
Zolang de eerste "vooruitkijkende" sensor niets opmerkt dan kan je volle snelheid gaan en vanaf dat deze iets opmerkt haal je onmiddelijk je snelheid omlaag zodat je op een normale manier de bocht kan nemen. Het ligt natuurlijk ook heel aan je parcours of dit haalbaar is of niet.

Edit:
Als je met die PWM gaat werken ben je natuurlijk ook iets vrijer in de aansturing. Vroeger had je bekrachtigd of niet, nu heb je nog een hoop ertussen. Dus nu zou je de algemene snelheid toch iets kunnen opdrijven zonder de lijn te verliezen door te brute stuurbewegingen.

Veranderd door High-Voltage, 27 mei 2007 - 20:47


#10

Rogier

    Rogier


  • >5k berichten
  • 5679 berichten
  • VIP

Geplaatst op 27 mei 2007 - 23:33

Dat is natuurlijk geweldig.
Met al die CO2 normen van tegenwoordig moet alles zo milieuvriendelijk mogelijk en jij gaat even remblokjes gebruiken om het wagentje trager te laten rijden. De motor maar vermogen maken terwijl de helft in warmte wordt opgedoempt.

Uhm, de TS geeft aan dat de robot zelf niet meer veranderd kan worden. Voor dit ene experimentele model lijkt me de vervuilingsprobleem dus redelijk te verwaarlozen. Ik neem aan dat ze een en ander nog even herzien alvorens hij in massa-productie wordt genomen :D
In theory, there's no difference between theory and practice. In practice, there is.

#11

Cerium

    Cerium


  • >250 berichten
  • 449 berichten
  • Ervaren gebruiker

Geplaatst op 28 mei 2007 - 11:55

Ik zou eventueel de snelheid kunnen opdrijven. Maar ik denk toch echt dat 10 km/h onhaalbaar is. Maar ik kan het wel uittesten.

Wat betreft die PWM, heeft iemand daar ervaring mee? Want ik zou de motoren in stappen willen opstarten. Stel dat het opstarten in 2 seconden moet gebeuren en dat de motoren in 10 stappen opgestart worden. Dan zou ik in 10 stappen van 200ms kunnen werken. In de eerste stap de motoren 10% bekrachtigen, in de volgende stap 20% , enz...

Ik heb alleen geen flauw idee hoe ik hieraan moet beginnen. Ik heb dit namelijk nog nooit gedaan. Kan ik hierover misschien ergens voorbeeldcodes vinden of iets dergelijks?

#12

High-Voltage

    High-Voltage


  • >250 berichten
  • 384 berichten
  • Ervaren gebruiker

Geplaatst op 28 mei 2007 - 12:01

Zet in je software een module die de relatieve pulsbreedte (procentuele waarde dus) omzet naar een effectieve waarde, dan is het heel simpel. Gewoon je relatieve pulsbreedte laten varieren in functie van de verlopen tijd.
Best werk je wel andersom, je begint met 100% en je laat het terugvallen naar een ingestelde waarde. Anders blijf je met het probleem dat je aangaf in je SP (het niet vertrekken vanwege een losbreekkoppel).

Over de PWM zelf, dat ligt heel aan je programmeertaal en je controller. Werk je in C of in ruwe assembler of nog iets anders?

#13

Cerium

    Cerium


  • >250 berichten
  • 449 berichten
  • Ervaren gebruiker

Geplaatst op 28 mei 2007 - 12:39

Ik werk in C en de processor is een ATtiny2313. Ik heb al een klein stukje code geschreven. Ik heb het nu wel gedaan waarbij ik van 0 tot 100% ga. Maar dat is snel aangepast:

for( iTeller = 5 ; iTeller <= 200; iTeller = iTeller + 5 )
{
PINB = 0x18;
delay_ms(iTeller);
PINB = 0x0;
delay_ms(200-iTeller);
};

Ik betwijfel of dit klopt :-P. PINB = 0x18 betekent praktisch gezien dat beide motortjes bekrachtigd worden en PINB = 0x0 betekent dat ze niet bekrachtigd worden.





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures