M&M's Team Line follower drone | MathWorks Minidrone Competition

Поділитися
Вставка
  • Опубліковано 27 гру 2024

КОМЕНТАРІ • 8

  • @selby1780
    @selby1780 Рік тому +1

    best one ive seen so far.

  • @augustomazzei2766
    @augustomazzei2766  2 роки тому +1

    (ENGLISH)
    Hello everyone, this is Augusto Mazzei and Selena Mastrodonato.
    If you want to discover more about our line follower drone, don’t skip the video!
    We heard about the mathworks competition in summer, and we decided to join it because of our aerospace university background and moreover because it looked simply very funny. We worked on the project after graduation. This challenge helped us to keep connected even though we spent summer holidays in distinct cities, sharing one purpose, one passion. We realised that the drone was pretty accurate, but also unaware about the path in exam, so we implemented an easy logic filter on the camera to display it the red line to follow. After a few days, the drone was already able to lift itself up and go from one point of the room to another: we opted for an attitude parallel to the floor, for several reasons. We liked the idea of dealing with a mostly 2D problem, and since we're talking about racing and precision, we wanted the drone to behave like a car, or at least tackle straights in a stable, symmetrical configuration.
    Simplify your life - not a bad choice!
    Before continuing, we show you some of the routes we have created specifically for the tests, here in the video you can see how our drone dealt with them: sometimes images count more than words! We have tried to produce tracks with very different characteristics to prepare our system for each scenario. Thanks to the planar attitude conditions, the almost zero pitch and roll bypassed the need to correct camera images due to perspective distortion, and we could state that the drone's ground projection was in the center of the image. The competition involved a path with no intersections, and we set the system to fly in a narrow range of heights, even quite low... by increasing the altitude you can get a wider overview of the path, but the red line narrows too much: instead, we prefer to exploit the concentration of red pixels for attitude and speed corrections. The decision scheme requires the drone to get up, align with the path, and proceed.
    Then it cyclically flies straight as long as it finds the way clear in front of it, performing slight maneuvers to correct the yaw, which also allow it to overcome the softer curves. When the amount of red in the bow decreases, it has to slow down, and identify the next direction: if it succeeds, it modifies the attitude and continues the track, otherwise, it is very likely that the path is over, and must therefore perform the landing. In the display below, you are seeing exactly the recolored layout via colormap that helped us during the developments, we will discuss this later: better if we expose some other driving characteristics first.
    The drone behaves quite similarly when it goes forwards or backwards, so we thought we could use this property for the sharp turns: we didn't want the drone to take too long due to the rotation, so we taught it to proceed slowly on the corner, to identify direction, rotate quickly along the additional angle, and reverse the direction of travel. We liked the idea of a bidirectional drone because this saves time during the initial alignment, and then because you can reuse the same image processing code by simply rotating the image half a turn (180°). And it was quite "cool" that the control system gave feedback to the vision system specifying in which orientation to analyze the image.
    In fact: for most of the flight, the essential information for the control, all resides in only one half of the image, while the other half relates to a stretch that the drone has already traveled. To make the drone sure that it has identified the new direction, it is necessary that the red stripe touches the edges of the image, with no discontinuity. If there are very short segments it could be difficult to identify the new route: before deducing that the drone has reached the end of the path, it lowers its altitude, thus emulating a zoom-in process: if a new direction is identified, the maneuver gets performed, and later the default height is gradually restored. In order not to burden the code, we decided to make the landing phase rather standardized, without relying on the identification of the red circle, and hoping that the drone would have hit the target spot if it had been aligned enough with the track.
    How did we manage to impose altitude and maneuvers with the speed and precision we wanted?
    PID tuning inside stateflow!
    To ensure the continuity of the path, a group of pixels is analyzed, delimited by some lined and overlapped rectangles. When there is enough red in all the rectangles, the conditions are met for the drone to go straight and accelerate to a limit speed. When the road changes direction, the drone decelerates with an intensity determined by the number of "empty" boxes, but it is vital that the drone does not stop too early, far from the corner.
    A range of rays is analyzed to look for a direction composed exclusively of red pixels. Usually there are several rays fully red: if they are close to each other, they form a group. The final direction of that group is deduced from the average of the angles of the rays.
    In some moments of the simulation there will be distinct groups of beams:
    the drone always gives priority to the one closest to the bow.
    There is a blind sector in the range to prevent the drone from turning back on the route that has already been completed. The shadowed area cannot even be too large, or the vision system may not be able to identify the sharp bends. Each path ends in a dead-end segment, and for a good landing, the strategy is to position the drone in line with the segment: the unbalance between the red sticks, on the right and left, helps the drone to reposition itself in the middle during the straights. In addition, some regions of interest on the sides of the track are filled with different quantities of red.
    That distribution helps to correct the yaw with respect to the deviation established by the ray system, facilitating alignment.
    This is synthetically what we achieved in two weeks of work. It has been a pleasure to participate to this competition, and we’re curious to know what kind of solutions the other teams have come up. From the M&M’s team it’s all for now. Thanks for watching.
    CLC, CLEAR ALL!

  • @prathamvjain7569
    @prathamvjain7569 5 місяців тому

    can you tell what pre requsites we must know to start working for competation

  • @kushagrayadav6629
    @kushagrayadav6629 4 місяці тому

    bro can you pls provide me with the source code or algorithm becoz i am finding many issues in it

  • @worthystuff
    @worthystuff 5 місяців тому

    Sir, How can I reach you? I don't have anyone to help me. Thanks and grateful to you 😢

  • @augustomazzei2766
    @augustomazzei2766  2 роки тому

    (ITA)
    Ciao a tutti, sono Augusto Mazzei e Selena Mastrodonato.
    Se vuoi scoprire di più sul nostro drone line follower, non saltare il video!
    Abbiamo sentito parlare del concorso di matematica in estate e abbiamo deciso di parteciparvi per via del nostro background universitario aerospaziale e inoltre perché sembrava semplicemente molto divertente. Abbiamo lavorato al progetto dopo la laurea. Questa sfida ci ha aiutato a rimanere in contatto anche se abbiamo trascorso le vacanze estive in città diverse, condividendo uno scopo, una passione. Ci siamo resi conto che il drone era abbastanza preciso, ma anche inconsapevole del percorso in esame, quindi abbiamo implementato un semplice filtro logico sulla telecamera per mostrargli la linea rossa da seguire. Dopo qualche giorno, il drone era già in grado di alzarsi e spostarsi da un punto all'altro della stanza: abbiamo optato per un atteggiamento parallelo al pavimento, per diversi motivi. Ci piaceva l'idea di affrontare un problema principalmente 2D e, poiché si tratta di corse e precisione, volevamo che il drone si comportasse come un'auto, o almeno affrontasse i rettilinei in una configurazione stabile e simmetrica.
    Semplifica la tua vita - non è una cattiva scelta!
    Prima di continuare vi mostriamo alcuni dei percorsi che abbiamo creato appositamente per i test, qui nel video potete vedere come li ha affrontati il nostro drone: a volte le immagini contano più delle parole! Abbiamo cercato di produrre binari con caratteristiche molto diverse per preparare il nostro sistema ad ogni scenario. Grazie alle condizioni di assetto planare, il beccheggio e il rollio quasi nulli hanno aggirato la necessità di correggere le immagini della telecamera a causa della distorsione prospettica e possiamo affermare che la proiezione al suolo del drone era al centro dell'immagine. La gara prevedeva un percorso senza incroci, e abbiamo impostato il sistema per volare in un range di altezze ristretto, anche abbastanza basso... aumentando la quota si ha una visione più ampia del percorso, ma la linea rossa si restringe troppo : preferiamo invece sfruttare la concentrazione dei pixel rossi per le correzioni di assetto e velocità. Lo schema decisionale richiede che il drone si alzi, si allinei con il percorso e proceda.
    Poi ciclicamente vola dritto fintanto che trova la via libera davanti a sé, eseguendo delle leggere manovre di correzione dell'imbardata, che gli permettono anche di superare le curve più morbide. Quando la quantità di rosso a prua diminuisce, deve rallentare, e individuare la direzione successiva: se ci riesce, modifica l'assetto e prosegue il percorso, altrimenti è molto probabile che il percorso sia finito, e quindi deve eseguire l'atterraggio. Nel display sottostante, vedete esattamente il layout ricolorato tramite colormap che ci ha aiutato durante gli sviluppi, di questo parleremo più avanti: meglio se esponiamo prima alcune altre caratteristiche di guida.
    Il drone si comporta in modo abbastanza simile quando va avanti o indietro, quindi abbiamo pensato di poter utilizzare questa proprietà per le curve strette: non volevamo che il drone impiegasse troppo tempo a causa della rotazione, quindi gli abbiamo insegnato a procedere lentamente sul angolo, per identificare la direzione, ruotare rapidamente lungo l'angolo aggiuntivo e invertire la direzione di marcia. Ci è piaciuta l'idea di un drone bidirezionale perché consente di risparmiare tempo durante l'allineamento iniziale, e poi perché è possibile riutilizzare lo stesso codice di elaborazione dell'immagine semplicemente ruotando l'immagine di mezzo giro (180°). Ed è stato piuttosto "cool" che il sistema di controllo ha fornito un feedback al sistema di visione specificando in quale orientamento analizzare l'immagine.
    Infatti: per la maggior parte del volo, l'informazione essenziale per il controllo, risiede tutta solo in una metà dell'immagine, mentre l'altra metà riguarda un tratto che il drone ha già percorso. Per fare in modo che il drone abbia individuato la nuova direzione, è necessario che la striscia rossa tocchi i bordi dell'immagine, senza discontinuità. Se sono presenti tratti molto brevi potrebbe essere difficile identificare il nuovo percorso: prima di dedurre che il drone è arrivato alla fine del percorso, abbassa la sua quota, emulando così un processo di zoom-in: se viene individuata una nuova direzione, il viene eseguita la manovra e successivamente viene ripristinata gradualmente l'altezza predefinita. Per non appesantire il codice, abbiamo deciso di rendere piuttosto standardizzata la fase di atterraggio, senza fare affidamento sull'identificazione del cerchio rosso, e sperando che il drone avrebbe colpito il punto bersaglio se fosse stato sufficientemente allineato con la pista.
    Come siamo riusciti a imporre quota e manovre con la velocità e la precisione che volevamo?
    Ottimizzazione PID all'interno di STATEFLOW!
    Per garantire la continuità del percorso, viene analizzato un gruppo di pixel, delimitato da alcuni rettangoli allineati e sovrapposti. Quando c'è abbastanza rosso in tutti i rettangoli, sono soddisfatte le condizioni affinché il drone vada dritto e acceleri a una velocità limite. Quando la strada cambia direzione, il drone decelera con un'intensità determinata dal numero di scatole "vuote", ma è fondamentale che il drone non si fermi troppo presto, lontano dall'angolo.
    Viene analizzata una gamma di raggi per cercare una direzione composta esclusivamente da pixel rossi. Di solito ci sono più raggi completamente rossi: se sono vicini tra loro formano un gruppo. La direzione finale di quel gruppo si deduce dalla media degli angoli dei raggi.
    In alcuni momenti della simulazione ci saranno distinti gruppi di fasci:
    il drone dà sempre la priorità a quello più vicino alla prua.
    C'è un settore cieco nel raggio per impedire al drone di tornare indietro sul percorso che è già stato completato. L'area in ombra non può essere nemmeno troppo ampia, altrimenti il ​​sistema di visione potrebbe non essere in grado di identificare le curve strette. Ogni percorso termina in un segmento senza uscita e, per un buon atterraggio, la strategia è quella di posizionare il drone in linea con il segmento: lo squilibrio tra le levette rosse, a destra e a sinistra, aiuta il drone a riposizionarsi nella al centro durante i rettilinei. Inoltre, alcune regioni di interesse ai lati della pista sono riempite con diverse quantità di rosso.
    Tale distribuzione aiuta a correggere l'imbardata rispetto alla deviazione stabilita dal sistema di raggi, facilitando l'allineamento.
    Questo è sinteticamente ciò che abbiamo ottenuto in due settimane di lavoro. È stato un piacere partecipare a questa competizione e siamo curiosi di sapere che tipo di soluzioni hanno escogitato gli altri team. Dal team di M&M per ora è tutto. Grazie per la visione.
    CLC, CLEAR ALL!

  • @prathamvjain7569
    @prathamvjain7569 5 місяців тому

    Bro can you give some resources where we can get started

    • @augustomazzei2766
      @augustomazzei2766  5 місяців тому +1

      If you are interested in the 3D visualization of the drone along the path you'll find all the material in the official mathworks minidrone competition website. The color map in the video has been developed by us with 'imagesc' function using the data of the bus signal of the drone-camera inside the simulink model. The drone-model offered by mathworks has 2 types of control: A (xyz,yaw) B(yaw pitch roll z) and every winning team opted for A choice because it is more reliable and precise. Getting off-the track makes you out of the competition, you know...