annuncio

Comprimi
Ancora nessun annuncio.

ArmQuad quadricottero per riprese aeree e volo acrobatico

Comprimi
X
  • Filtro
  • Ora
  • Visualizza
Elimina tutto
nuovi messaggi

  • #76
    Ciao Ragazzi,
    sia @Danveal che @Ciskje hanno fatto un ottimo lavoro , partendo da approcci molto diversi e comunque altrettando validi . Sicuramente le risorse HW di un arm7 a 60 Mhz non sono paragonabili a un ATmega a 8 bit e 16-20 Mhz di clock. Tante volte pero' e Elnonino ce lo insegna gestire in modo ottimale risorse HW con un linguaggio di basso livello puo' portare a performance di tutto rispetto anche su micro con meno risorse dei fratelli maggiori.
    Un esempio di facile comprensione è la differente efficienza di un hardware con sistemi operativi diversi .. per esempio io sto' usando un mac che se monta Mac OSX o Windows cambia drasticamente nelle sue performances verso l'utente finale ... per esempio all'accensione un mac ci mette 3-4 secondi windows invece se va bene sei attorno al minuto prima di poterlo impiegare normalmente.
    Quindi il fattore di come si scrive il software è fondamentale per l'efficienza dell'HW. Mi fa' piacere ad esempio che i test di Ciskje confermano che qualche mhz in piu' su Multipilot rispetto ad un arduino standard portano ad un incremento interessante delle prestazioni. I compilatori Basic non hanno mai brillato per efficienza del codice prodotto è molto che non li uso e sui micro non li ho proprio mai usati , ma in ambiente pc non hanno mai creato codice troppo ottimizzato.
    Per fare un confronto concreto bisognerebbe scrivere del semplice codice di benchmark sia in C++ che in Basic e vedere sulla stessa piattaforma i risultati dei test che risultati danno. In merito alla possibilità di lavorare assieme a progetti complessi sicuramente il C/C++ è il linguaggio principe.
    Il basic ha un po' di limiti e non ha sui micro community così ampie come quelle di arduino .
    In merito ai problemi del codice nidificato ... mhhh ... il problema non è tanto nei cicli for che comunque indubbiamente rallentano i processi computazionali , ma secondo me il problema è sulle chiamate a funzioni ricorsive , dove su di un micro avendo una profondità di stack molto bassa si rischia di andare out of stack e perdere il controllo del codice ... e da li si esce solo con un buon watchdog. Che purtroppo su di un quad potrebbe avere conseguenze catastrofiche ...

    Questi piccoli accorgimenti a livello di programmazione , come tenere sott'occhio l'allocazione delle variabili che in genere per sicurezza dovrebbero essere tutte pre assegnate a livello globale e non a livello locale , perchè un'assegnazione globale occupa una posizione fissa in ram mentre invece una locale assegna la variabile temporanea in stack a meno che la si definisca static.

    Tutti questi piccoli accorgimenti che garantiscono maggior affidabilità sul firmware non so' come siano gestiti a livello di Basic sui micro e onestamente i problemi nel debug del codice di solito derivini da questi piccoli accorgimenti e non tanto da una corretta sintassi del firmware .
    @Danveal , come avviene l'allocazione della memoria in Basic questi paricolari sono controllabili come in C ?

    Un saluto a tutti e buon lavoro
    Roberto
    Redfox74
    Virtual Robotix ( Arducopter DEVTEAM )
    http://www.virtualrobotix.com
    Canale di supporto FB
    https://www.facebook.com/groups/1606596929592397/

    Commenta


    • #77
      Originariamente inviato da redfox74 Visualizza il messaggio
      CUT
      @Danveal , come avviene l'allocazione della memoria in Basic questi paricolari sono controllabili come in C ?
      Buongiorno a tutti
      anche in ufficio da noi in questo periodo tanti stanno andando fuori di testa
      io dico che è il caldo........
      Per quanto riguarda il basic, non mi piace più, un tempo usavo solo quello, preferisco il C, ma chiariamo subito che i compilatori basic attuali non hanno nulla a che vedere con quelli di una volta.
      Attualmente l'uso del basic o del C non porta più ad una differenza notevole sia nella velocità che nelle diemsione del codice, dipende sempre da come si scrive, da quanto bene si conosce quel compilatore ed ovviamente da compliatore a compilatore, anche nel basic, come nel C, ce nè sono di tutte le razze e di tutti i tipi.
      L'unico vantaggio, forse, del C è la maggior predisposizione ad andare in modo preciso e dedicato sull'hardware ed anche la maggior compatibilità.
      Le nidificazioni, ben conosciute da tutti credo, sono "quasi" sempre da evitare, quasi sempre perchè a volte si fanno di proposito per ragioni specifiche.
      saluti.
      Dommy
      Albums LEOxx
      www.eladin.it
      https://www.facebook.com/Eladin-130272300487833/

      Commenta


      • #78
        Ciao Dommy, se e' il caldo ad Agosto chissa cosa leggeremo / scriveremo


        @Redfox
        Nel mio caso le variabili sono tutte globali di default se dichiarate all'inizio mentre quelle che vengono dichiarate all'interno di subroutine / function sono locali.
        Per quanto riguarda i benchmark, l'unico benkmark che mi interessa e' il tempo di esecuzione del codice che utilizzo e per ora e' molto soddisfacente, se poi il tetris viene eseguito in modo piu veloce su un vic20 preso al mercatino non mi interessa
        Secondo il produttore, il basic su questo scheda esegue 10milioni di linee al secondo, mentre sulla superpro ne esegue 25milioni
        Inoltre esegue 1milione di operazioni I/O al secondo mentre sulla superpro che monta il cortex, 4 milioni
        Per il resto ho sempre dichiarato che il basic su questa scheda e cmq. in genere rispetto al C e' limitato, ci sono state limitazioni che ho dovuto affrontare e superare, ma lastessa scheda puo girare in C.
        Per ora in basic riesco a fare tutto in modo abbastanza efficace, quando non ci riusciro più passerò al C o all' oberon???? che e' supportato dalla scheda Astrobe - An Oberon-07 development system for NXP LPC2000 ARM-based Microcontrollers qualcuno ne ha mai sentito parlare, sara' valido?
        Sul gyro e acc sto per portare a termine la compensazione della temperatura, l'unico problema e' il poco spazio che mi e' rimasto di memoria per il codice, dovro' passare alla superpro, ma prima penso di riuscire a farci stare il controllo altezza.


        Ciao a tutti
        Quadricottero News
        http://www.facebook.com/Quadricottero

        Commenta


        • #79
          Originariamente inviato da danveal Visualizza il messaggio
          Intanto io volo, tu che la menavi con il volo senza mani, invece ondeggi e oscilli, sara' per caso perchè nel tuo sorgente c'e' scritto Thanks a carancho dell'aeroquad, thanks a Roy e via dicendo con relative parti di codice?
          Noto che la tua vena polemica (non solo nei miei confronti) non si abbassa, parli per sentito dire di cose che non conosci, non sai manco capire una sintassi, definisci un pezzo di codice con "molti vanno in crisi" per un banale doppio ciclo annidato, non hai quindi mai usato una matrice a due dimensioni.
          Per me questa è disinformazione, non posso permettere che qualcuno che legge pensi che un programma cosi' semplice si possa definire: "cicli di quel tipo", non ci sono cicli di quel tipo, quel tipo è semplice e basica programmazione banalissima, che CHIUNQUE sappia la differenza tra un repeat e un while ha usato centinaia di volte.
          Un programmatore che non conosce il C è come un idraulico che non capisce un tubo. Ti ho dovuto persino dovuto tradurre un pezzo di 10 righe di codice
          Francamente costruisci un oggetto senza inventare nulla di nuovo, non rilasci sorgenti (cosi' puoi copiare senza dire niente a nessuno) e non aiuti gli altri a capire, fai solo polemiche e non capisci niente di programmazione, a questo punto spiegami cosa serve discutere con te?

          10milioni di linee al secondo non vuol dire niente di niente:
          prova a far 10 milioni di atan o 10 milioni di a+b in floating point o 10 milioni di !a

          Per me la discussione finisce qui.
          Ultima modifica di ciskje; 29 luglio 10, 09:27.
          Informatico Professionista, Amante dei 4x4 e delle auto ibride, costruttore di quadricotteri.

          Commenta


          • #80
            @ciskje: forse ha ragione Dommy, sarà il caldo; sinceramente non capisco l'acidità che usi nei tuoi post ed il mettere in mostra le tue presunte capacità, molte volte nella vita educazione ed umiltà aiutano più che saper programmare in 'C'.

            E ricordati che troverai sempre chi ne sa più di te, è fisiologico.

            Peace & Love
            Fate le cose nel modo più semplice possibile, ma senza semplificare. (A. Einstein)

            Commenta


            • #81
              Originariamente inviato da ciskje Visualizza il messaggio
              Noto che la tua vena polemica (non solo nei miei confronti) non si abbassa, parli per sentito dire di cose che non conosci, non sai manco capire una sintassi, definisci un pezzo di codice con "molti vanno in crisi" per un banale doppio ciclo annidato, non hai quindi mai usato una matrice a due dimensioni.
              Non parlo per sentito dire, sono dati di fatto basta guardare il tuo sorgente.
              Per quanto riguarda il codice non mi riferivo a quel pezzo di codice, ma alle nidificazioni in generale che possono causare problemi a seconda del compilatore che le deve compilare. Un conto sono i cicli semplici altro conto sono le nidificazioni di for next etc. che non sono i nidi che fanno le rondini sotto al tetto.
              Originariamente inviato da ciskje Visualizza il messaggio
              Un programmatore che non conosce il C è come un idraulico che non capisce un tubo. Ti ho dovuto persino dovuto tradurre un pezzo di 10 righe di codice
              Francamente costruisci un oggetto senza inventare nulla di nuovo, non rilasci sorgenti (cosi' puoi copiare senza dire niente a nessuno) e non aiuti gli altri a capire, fai solo polemiche e non capisci niente di programmazione, a questo punto spiegami cosa serve discutere con te?
              A maggior ragione, se mi hai dovuto tradurre righe di codice in C da quali progetti avrei copiato visto che sono tutti in C ma sopratutto visto che nessuno usa il mio hardware? E' semplice logica...come disse la volpe, l'uva e' troppo acerba...
              L'unico che fa polemiche sei tu, se vuoi polemiche eccoti servito:
              hai aperto da 2 mesi un thread su RCGROUPS sul baronpilot e ancora nessuno e' riuscito a volare, rilasciare le cose solo quando funzionano no eh ?
              Fossi io avrei paura di una spedizione punitiva internazionale.
              Nei tuoi 2 video si vede il volo di 2 quad che sembrano sismici...
              L'unico baronpilot esterno che ho visto e' quello di katana che vola legato a terra... Baronpilot, Stable mode on Vimeo
              Hai poca memoria visto che quando scrivevi xxxate su gyro e affini nella sezione FPV, quando stavi sperimentando il tricottero, sono intervenuto piu volte a sottolineare delle cose, anche allora avevi sempre ragione tu mentre oggi dopo averle sperimentate dichiari le stesse cose che dicevo io
              Ti giro la domanda a che serve discutere con te che capisci tutto della programmazione ?
              A che serve l'oggetto che stai costruendo ?
              Poi comunque non ti ho chiamato io in questo thread, se non ti aggrada puoi sempre starne fuori.
              Su non perdere tempo in queste facezie concentrati sulla multipilot che magari stavolta qualcosa di buono riuscirai a combinare, ovviamente aggiungendo un grosso thanks a Roberto, e alla sua multipilot, nel codice.

              Bye
              Quadricottero News
              http://www.facebook.com/Quadricottero

              Commenta


              • #82
                Originariamente inviato da ElNonino Visualizza il messaggio
                @ciskje: forse ha ragione Dommy, sarà il caldo; sinceramente non capisco l'acidità che usi nei tuoi post ed il mettere in mostra le tue presunte capacità, molte volte nella vita educazione ed umiltà aiutano più che saper programmare in 'C'.

                E ricordati che troverai sempre chi ne sa più di te, è fisiologico.

                Ne convengo. Ma se io ho studiato (e tanto e con tanta fatica) e anche per esperienza so che un doppio ciclo for è normale, lo è anche se lo dico con perentorietà (ne convengo che potrei dirlo in altri modi, e che questo è sicuramente un mio difetto).
                Ultima modifica di ciskje; 29 luglio 10, 10:16.
                Informatico Professionista, Amante dei 4x4 e delle auto ibride, costruttore di quadricotteri.

                Commenta


                • #83
                  Signori... prego

                  Noto con dispiacere, che sono costretto spesso e volentieri ad intervenire in veste di mediatore, piu' che per dare contributi..

                  Credo che ognuno abbia il diritto di esere fiero e dignitoso del proprio progetto e non ami le critiche intendendole come polemiche.

                  In realta', siccome anche io sono stato programmatore e forse un pelino lo sono tutora (anche se dicono che dopo i 40 anni i programmatori impazziscono e io li ho passati da parecchio)

                  Cosi' come quando un routine non funziona come abbiamo previsto, si pensa ad altro e si guardano altri parti di codice, si potrebbero interpretare le critiche come differenti punti di vista.

                  E anziche' prenderele come una offesa personale, si potrebbe ringraziare chi ci le ha fatte perche' ci ha fatto vedere le cose da una altra prospettiva.

                  Apro e chiudo due parentesi: la nidifcazione in effetti la conoscevo anche io come una pratica poco gradita ai vari compilatori e nei diversi linguaggi, ad ogni modo non e' un parolaccia e in alcuni casi non se ne puo' fare a meno.

                  Il fatto di prendere parti di codici e riciclarlo o migliorarlo, potrebbe essere una pratica poco signorile, ma il mondo oramai funziona cosi, non abbiamo piu' tempo da perdere.

                  Pensate alle pubblicita' televisivie, agli slogan, al mercato dell'automobile dove tutte le auto oramai si assomigliano.

                  Nessuno oramai si inventa qualcosa, ma si riciclia e migliora cio' che c'e' gia'.

                  La speranza e che ad ogni passaggio si ottenga sempre un prodotto migliore

                  Buoni sviluppi a tutti e vi aspetto a Bologna che sara' un appuntamento oltre che divertente anche utilissimo proprio per avere un confronto diretto e visivo.
                  Ultima modifica di biv2533; 29 luglio 10, 13:34.

                  Commenta


                  • #84
                    Domanda, ma non è che state confondendo la ricorsione con la nidificazione? (la prima effettivamente difficoltosa).

                    La nidificazione non è una pratica esoterica, è proprio roba di tutti i giorni.
                    Informatico Professionista, Amante dei 4x4 e delle auto ibride, costruttore di quadricotteri.

                    Commenta


                    • #85
                      Originariamente inviato da ciskje Visualizza il messaggio
                      Domanda, ma non è che state confondendo la ricorsione con la nidificazione? (la prima effettivamente difficoltosa).

                      La nidificazione non è una pratica esoterica, è proprio roba di tutti i giorni.
                      Mah in effetti... mi chiedo chi possa vendere un compilatore che va in crisi per qualche ciclo nidificato.
                      The number you dialed is imaginary. Please rotate your phone 90 degrees and redial.

                      Commenta


                      • #86
                        Vediamo di ricapitolare, Ciskje mi chiede di eseguire un test, lo eseguo il risultato e' pessimo, lo posto e si inizia a sbroccare.
                        Se lo sapevo prima, di scatenare le ire di Ciskje, scrivevo un numero piu alto, a me non interessa il risultato del test ne ricercare i motivi del risultato, a me interessa il risultato ottenuto con il software di volo, quello che non mi soddisfa lo cambio, FINE.
                        Non mi interessa nemmeno la velocita' computazionale non sono il rappresentate della coridium, per me il loop attuale invece di 2Khz può essere anche di 1hz ma se i risultati sono questi va benissimo cosi pertanto non cambio ne scheda ne compilatore.
                        What is the problem?
                        Poi non e' che vanno analizzate con la lente le parole scritte, a volte ci si esprime male o si capisce male, io ho solo dichiarato che in caso di nesting fatto in un certo modo certi compilatori possono in crisi, che rientra nel discorso piu ampio della validita' dei software di benchmark nel determinare le prestazioni, non sono verità assoluta dipende da come sono scritti e dai compilatori / architettura del processore.

                        Sarò libero di scrivere il software con il linguaggio che voglio utilizzando l' hardware che voglio eventualmente perdendo tempo a scoprire l'acqua calda o no?
                        Ora torno a vendere il cocco sulla spiaggia, buon pomeriggio, salutatemi gli idraulici che capiscono i tubi.
                        Quadricottero News
                        http://www.facebook.com/Quadricottero

                        Commenta


                        • #87
                          Originariamente inviato da danveal Visualizza il messaggio
                          What is the problem?
                          Il problema è fare disinformazione. Lungi da me forzarti a fare qualcosa.

                          Prima dici: "Beh molti vanno in crisi con quel tipo di nidificazioni".
                          E poi "che in caso di nesting fatto in un certo modo certi compilatori possono in crisi".
                          Prima "quel" intendendo quelli del test, e poi "un certo modo" (ma non quello del test?).
                          Poi dici: "Nella DCM si fa uso di matrici e operazioni su matrici". Se mi spieghi come fai a moltiplicare o sommare due matrici senza usare due cicli for annidati te ne sarei grato.

                          Quel che ti chiedo è conosci altri metodi per mettere due cicli for annidati? Puoi farmi un esempio? A quale compilatore ti riferisci quando dici che lo metti in crisi con due cicli for?
                          Ultima modifica di ciskje; 29 luglio 10, 15:22.
                          Informatico Professionista, Amante dei 4x4 e delle auto ibride, costruttore di quadricotteri.

                          Commenta


                          • #88
                            Vi prego di concedermi un breve [OT] progettuale-filosofico.

                            Un velivolo multirotori è un sistema complesso formato in estrema sintesi da 3 blocchi funzionali:
                            1. Acquisizione assetto e comandi.
                            2. Blocco computazionale.
                            3. Regolatori - motori - eliche.

                            Questi 3 blocchi devono essere assolutamente in sintonia e ben bilanciati per portare ad un risultato positivo.
                            E' inutile montare il motore di una F40 sul telaio della Panda con le sospensioni di una bici.

                            Per chi segue il mondo motociclistico si ha un esempio con le Kawasaki, sia GP che SBK; ottimi motori, potenti e pure affidabili, però sono montati su ciclistiche (telaio + sospensioni) non all' altezza e forse anche la gestione elettronica non è il massimo; il tutto sfocia in risultati deludenti con qualsiasi pilota le porti in pista.

                            Il progetto vincente è quello in cui si ottiene il massimo dell'omogeinità dei suoi componenti e per ora mi pare che gli unici ad aver centrato il target (con molti limiti comunque) sono i 2 della MK.

                            Io credo che per migliorare le prestazioni di un multirotore sia necessario sperimentare di più sui motori/eliche e relativi regolatori onde ottenere tempi di risposta accettabili, sono l'anello 'lento' della catena di controllo.

                            IMHO naturalmente.

                            Peace & Love
                            Fate le cose nel modo più semplice possibile, ma senza semplificare. (A. Einstein)

                            Commenta


                            • #89
                              Originariamente inviato da ciskje Visualizza il messaggio
                              Il problema è fare disinformazione. Lungi da me forzarti a fare qualcosa.

                              Prima dici: "Beh molti vanno in crisi con quel tipo di nidificazioni".
                              E poi "che in caso di nesting fatto in un certo modo certi compilatori possono in crisi".
                              Prima "quel" intendendo quelli del test, e poi "un certo modo" (ma non quello del test?).
                              Poi dici: "Nella DCM si fa uso di matrici e operazioni su matrici". Se mi spieghi come fai a moltiplicare o sommare due matrici senza usare due cicli for annidati te ne sarei grato.

                              Quel che ti chiedo è conosci altri metodi per mettere due cicli for annidati? Puoi farmi un esempio? A quale compilatore ti riferisci quando dici che lo metti in crisi con due cicli for?
                              Ma sei ancora su questo punto???
                              Con "questo tipo" intendevo le nidificazioni for next ma era sottointeso profonde, non certo 2, stesso discorso per i compilatori, nidificazioni profonde,non per niente ho subito attribuito il problema al tools collegato visto che nel codice di volo non ho riscontrato problemi di lentezza, tutt'altro.
                              Ma se vuoi che ti dica che non era sottointeso e che ho scritto una caxxxxata lo faccio, quindi ora sei felice? Bene sono contento.
                              Quadricottero News
                              http://www.facebook.com/Quadricottero

                              Commenta


                              • #90
                                Originariamente inviato da ElNonino Visualizza il messaggio
                                Vi prego di concedermi un breve [OT] progettuale-filosofico.

                                Un velivolo multirotori è un sistema complesso formato in estrema sintesi da 3 blocchi funzionali:
                                1. Acquisizione assetto e comandi.
                                2. Blocco computazionale.
                                3. Regolatori - motori - eliche.

                                Questi 3 blocchi devono essere assolutamente in sintonia e ben bilanciati per portare ad un risultato positivo.
                                E' inutile montare il motore di una F40 sul telaio della Panda con le sospensioni di una bici.


                                Per il blocco 3 e' importante accoppiare la giusta elica con il giusto KV motore, WATT motore, e peso dell'elica altrimenti si hanno come minimo consumi elevati e scarsa efficenza complessiva.
                                I regolatori poi bisogna dividerli tra quelli i2c e PWM. Usare normali regolatori PWM richiede un setting particolare del regolatore se non la riprogrammazione del firmware dello stesso. Inoltre la lunghezza dei bracci, peso complessivo tipo di motori ed eliche devono essere ottimizzati anche in considerazione del tipo di volo che si andra' a fare, insomma come dici tu tutto deve essere in sintonia, non dimenticando il rapporto peso / trusth complessivo.
                                Poi i parametri variano a seconda del tipo di impiego, se si fa prevalentemente hovering ci sono più tolleranze mentre il volo sportivo con loop etc e' piu esigente.
                                Quadricottero News
                                http://www.facebook.com/Quadricottero

                                Commenta

                                Sto operando...
                                X