jumpier Inserito: 16 maggio 2011 Segnala Inserito: 16 maggio 2011 Buongiorno a tutti.Questo il mio dilemma .....Mi ritrovo 2 serie di numeri da 400 valori per serie; l'arduo compito èquello di capire quale linea retta approssima meglio ciascuna serie e sele due rette risultano +/- parallele. Il top sarebbe anche capire se le retteparallele tra loro (con una certa tolleranza ovviamente) risultano inclinatedi molto rispetto ad una ipotetica retta verticale. I numeri delle 2 serie possoassumere valori da 0 a 100; la precisione basterebbe circa pari al 15%(diciamo un controllo non troppo serrato). Qualcuno ha qualche ideada suggerirmi? Grazie a tutti per qualsiasi info; buona settimana.Ciao!
Roberto Gioachin Inserita: 16 maggio 2011 Segnala Inserita: 16 maggio 2011 (modificato) Ciao jumpierNon riesco a capire se il tuo calcolo vuole essere matematico o trigonometrico.Mi spiego:Se usi un sistema ad assi cartesiani, non mi spiego quale sia la variabile indipendente (asse delle ascisse), in più non mi spiego come fai a confrontare il tutto con una retta verticale che significherebbe mantenere a zero o perlomeno costante il valore sull'asse delle ascisse.Oltre tutto come intendi distribuire 400 dati con valori non maggiori di 100.I conti potrebbero tornare se ti riferissi a 400 punti sulle ascisse e il confronto fatto con una retta orizzontale.Se invece pensi ad un sistema trigonometrico, non vedo gli angoli e tutto quello che segue.CiaoRoberto Modificato: 16 maggio 2011 da Roberto Gioachin
jumpier Inserita: 16 maggio 2011 Autore Segnala Inserita: 16 maggio 2011 Provo a spiegarmi meglio ed a semplificare quello che vorrei ottenere ....Coordinate X: da 1 a 400Coordinate Y: avrò 400 valori, il loro valore potrà essere tra 0 e 100.Detto ciò. senza avere rette di riferimento, angoli o altro, dovrei calcolarequale retta approssima meglio il mio insieme dei 400 valori.Che io sappia, dovrei fare il calcolo per determinare la retta di regressionema su un sistema plc mi sa che i tempi salgono ....Qualche idea? Spero di essermi spiegato meglio. Grazie, ciao
Livio Orsini Inserita: 16 maggio 2011 Segnala Inserita: 16 maggio 2011 Domanda non banale.Il calcolo deve essere eseguito durante il processo o può essere eseguito solo prima dell'inizio del processo stesso (macchina-impianto fermo).Se poi puoi illustrare anche l'applicazione potremmo, magari, avere qualche idea in più su come ottimizzare la soluzione.
jumpier Inserita: 17 maggio 2011 Autore Segnala Inserita: 17 maggio 2011 Domanda non banale.Il calcolo deve essere eseguito durante il processo o può essere eseguito solo prima dell'inizio del processo stesso (macchina-impianto fermo).Se poi puoi illustrare anche l'applicazione potremmo, magari, avere qualche idea in più su come ottimizzare la soluzione.Ciao Livio.Grazie per la risposta. Dunque, l'ottimale sarebbe eseguire il calcolo durante il processo ma per ora mi può andar beneanche a fine movimentazione della macchina. Per capirci, memorizzo i punti, pongo la macchina in stand-by ed elaboro, riprendo il processo. I punti si riferiscono alla lettura del profilo di un automezzo; in particolare viene misurata l'altezzadel profilo da un punto di riferimento (zero). Una volta determinata la retta (e quindi ragionando in 3d per approssimazione+ tolleranze varie il piano) che più approssima il profilo, inseriti i vari offset di correzione ecc.., passo alla lavorazione delprofilo. Io pensavo di inserire nel plc una funzione di regressione della retta "semplificata" ma in questo momentomi sfuggono alcune basi di matematica . Spero di essere riuscito a fornirti le informazioni in più per compiere altriragionamenti.Grazie in anticipo
Livio Orsini Inserita: 17 maggio 2011 Segnala Inserita: 17 maggio 2011 Provo a "buttar li" un'idea.Io in prima approssimazione calcolerei la retta passante per i due punti estremi, in altri termini fisserei il punto determiantodalla prima coppia e dall'ultima. Poi controllerei lo scostamento degli altri punti da questa retta, aggiustando eventualmente la pendenza della retta per rientrare nella tolloreanza.Così "a occhio" mi sembra più veloce del calcolo della regressione.
jumpier Inserita: 17 maggio 2011 Autore Segnala Inserita: 17 maggio 2011 Ottima idea ma putroppo la lettura degli spigoli non viene fatta in modo ottimalea causa delle varie bombature degli autoveicoli. Mi spiego meglio: l'inizio e la finedella scocca viene rilevata con una precisione del 4-6% (per me accettabile). Il problemaè che se acquisisco altezze errate sugli spigoli, seguendo il tuo ragionamento rischio disballare tutto il profilo. Da qui la necessità di leggere tutti i punti del profilo e calcolarequale "maggioranza" viene meglio approssimata da una retta. Abbi pazienza non avevoaccennato ai problemi degli spigoli nei post precedenti perchè .... mi ero dimenticato .Come detto già in precedenza, non ho bisogno di una grande precisione però, considerandoche l'autoveicolo può essere posizionato perfettamente parallelo alla mia attrezzatura o no(a seconda di quanto è bravo l'autista) e che le letture delle varie bombature tra specchietti,spoiler ecc.. diventa difficile, io ottimisticamente pensavo di cercare il maggior numero dipunti passanti all'incirca su di una retta. Poi il tutto viene supervisionato / filtrato dagliingombri massimi / minimi delle autovetture processabili e dai limiti della mia attrezzaturae quindi parto con la lavorazione. Ho provato ea eseguire calcoli "empirici" e cioè consideraredelle sottoserie di valori (dei 400 punti letti prendo i primi 20 per esempio) e controllo sullasottoserie di 20 valori quali tra i primi 10 è fuori range. Perchè tra i primi 10? Perchè utilizzo isuccessivi 10 valori per capire se sono in presenza di uno spigolo o no e qauindi apportare ledovute correzioni. Mi spiegoconsidero una sottoserie COMPLETA di 5 valori così composta:5, 5, 5, 5, 10Il dubbi sono: il 5° valore è uno spigolo?è errato?lo sostituisco con una valore pari a 5? --> dipende: se leggendo i successivi fossere 5, 5, 5, 5, 10 e poi 6, 5, 5, 4, 5allora ok con la sostituzione pari a 5. Ma se i successivi fossero 5, 5, 5, 5, 10 e poi 9, 10 , 11, 10, 10 allora sarei inpresenza di uno spigolo ....considero una sottoserie MEZZA di 10 valori così composta:5, 5, 5, 5, 10, 5, 5, 4, 5, 5elaboro solo i primi 5 valori ma considero la "tendenza" dei successivi 5 ...così facendo il 5° valore pari a 10 direi che è sbagliato e posso correggerlo in 5Viceversa se avessi i valori pari a5, 5, 5, 5, 10, 9, 10, 9, 10, 10elaboro solo i primi 5 valori ma considero la "tendenza" dei successivi 5 ...così facendo il 5° valore è con buona probabilità uno spigolo.Ora, dopo questa filippica, se il metodo sopra esposta funzionasse, mi rimangono 2 problemi: - il primo è come scrivere una funzione ricorsiva nel plc che sia performante e non troppo laboriosa in termini di calcoli- da quale sottoserie parto dato che l'altezza degli spigoli non viene letta correttamente???Spero di non aver detto troppe fesserie .....
Roberto Gioachin Inserita: 17 maggio 2011 Segnala Inserita: 17 maggio 2011 L'argomento è ostico per un plc, ma..Provo anch'io a buttarla!Valore medio di tutti i 400 punti e trovo la posizione della retta al punto 200Valore medio dei primi 200 punti e trovo una ipotetica posizione della retta al punto 100Valore medio dei secondi 200 punti e trovo una ipotetica posizione della retta al punto 300Mediazione fra questi due risultati per realizzare una retta che passi per il centro calcolato all'inizioSe invece devi per forza fare un calcolo di regressione, ti conviene farlo in molte scansioni sucessive per evitare loop troppo pesanti,ma credo che un calcolo statistico sia ostico da realizzare con un plc.CiaoRoberto
Livio Orsini Inserita: 17 maggio 2011 Segnala Inserita: 17 maggio 2011 Da come descrivi il problema forse l'unica soluzione è calcolare non una retta, ma una spline. COn 400 punti la precisione sarebbe elevatissima però....anche i tempi di calcolo non sarebbero trascurabili. Il tutto dipende dalla CPU che pensi di impiegare. Se puoi permetterti una breve pausa al termine del rilevamento, questa è la soluzione che ti da la maggiore affidabilità.Tanto per darti un'idea con soli 5 punti tramite spline si ricostrusce un sinusoide tra 0 e 90o con errori non significativi.
jumpier Inserita: 17 maggio 2011 Autore Segnala Inserita: 17 maggio 2011 Con la media proposta da Roberto mi sa che non risolvo ....Per il discorso spline proposto da Livio devo documentarmi, scivere codice e fare tante tante prove.Se vengo a capo di qualcosa faccio sapere metodo utilizzato e risultati.Grazie a tutti
Livio Orsini Inserita: 17 maggio 2011 Segnala Inserita: 17 maggio 2011 Se vengo a capo di qualcosa faccio sapere metodo utilizzato e risultatiMi raccomando, tienici comunque informati perchè è un problema interessante.
Henon Inserita: 29 maggio 2011 Segnala Inserita: 29 maggio 2011 Potresti analizzare Il Coeficente angolare m (Cioè la differenza (Ynext - YActual)/(Xnext-XActual) poi esegui ancora un ulteriore elaborazione su questa variazione m (mNext-mAct)/ Delta x in pratica la variazione della variazione (Derivata 2° del Profilo).Così facendo puoi discriminare gli Ostacoli presenti ed escluderli dal profilo dell' Autoveicolo.Segli ora solo i tratti in cui la Derivata 1° è limitata dentro un determinato tuo range di accettabilità.Bene unisci i tratti escludendo gli ostacololi che hai trovato.Il procedimento potrebbe far uso di Array per memorizzare i tratti m, a range costante, per poi unirli.Questa prima elaborazione ti ripulisce la tua curva, e filtra il profilo. Oppure puoi analizzare n+1 punti consecutivi e trovare il polinomio o Spline che interpola questi Punti.Cosi i tuoi 400 punti saranno interpolati da un certo numero di tratti Polinomiali.Se analizzi i Polinomi potrai escludere tutti quei poliniomi che hanno dei coeficenti superiorial grado 2°, oppure il cuoi valore è molto ma molto basso.vedrai che il termine X^1 sarà il tuo coefficente angolare cercato.Penso che potresti far uso di un risolutore di Sistemi all' interno del tuo Programma PLC.Guarda su "Altri Argomenti - Up/Down Load Manager - Sezione Software" Gauss-Jordan Reduction System.Su una CPU 314 girà molto bene (con una matrice per 5 Equazioni di 4° grado) risolve il sistema in meno di 300ms o forse meno.va bene anche per la Regressione lineare.
jumpier Inserita: 26 luglio 2011 Autore Segnala Inserita: 26 luglio 2011 Buongiorno a tutti.Dunque sono in debito della spiegazione di come ho risolto e volevo postarla prima delle ferie;alla fine devo ammettere che ho ... barato !!Prima alcune premesse:1)-Il calcolo lo eseguo in tempo reale (quindi no pausa del processo)2)-Ho installato un po' di dispositivi meccanici che han fatto si che l'autoveicolo venga posizionato in modo molto più preciso o comunque diciamo meno fantasionso da parte del conducente3)-Leggo il profilo dei due fianchi dell'auto contemporaneamente e li vado a lavorare con 2 attrezzature indipendenti dal punto di vista della movimentazione nello spazio x-y-zDei famosi 400 punti, scarto i primi 50 / 75 ad inizio / fine vettura (a secondo della fascia di modello auto processato in termini diutilitaria, station wagon, pick-up ecc...); considero quindi i successivi / precedenti 10 punti (esempio da 51 a 60 e da 340 a 349per capirci). Controllo se sono 2 rette e comunque se i punti stanno tra loro (a 10 a 10) all'interno di un rangeaccettabile e preimpostato; se il controllo da KO, me ne vado a casa e segno pezzo scarto. Ultilizzando quantoesposto in precedenza, ho riscontrato una percentuale del 97,8% ok, quindi ho deciso di utilizzare tale controllo.Successivamente, calcolo una retta fittizia passante per i 2 punti medi delle due rette calcolate in precedenza e controllola distanza da tale retta di 50 punti campione presi nell'intervallo da 50 a 350. Se una percentuale "x" di tali punti mi piace,(di solito 80 / 85%) allora da test eseguiti posso affermare che i punti letti siano circa su di una retta e quindi processabili dalla mia attrezzatura.A questo punto completo l'opera calcolando gli spigoli dell'autoveicolo per approssimazione prolungando prima dei 50 puntied oltre i 350 il valore medio delle rette precedentemente calcolate (quelle dedotte dai 2 gruppi di valori da 10 misure) utilizzando per ilprolungamento la stessa pendenza della retta teorica che più approssimava i 50 punti campione. Poi siccome la mia attrezzatura lavoraporzioni di auto che sono larghe anche 5/6 valori, suddivido ulteriormente tutti i valori letti in sottogruppi (o spezzate di retta) da 10 valoriciascuno e da qui parto con la lavorazione. E' un po' macchinoso ed un poco approssimativo ma alla fine per il fine va alla grande. Cosìfacendo sono riuscito ad incrementare la scansione del plc di 3ms (tanti o pochi non discuto ma per il mio controllo accettabili). Inizialmente contavo di controllare anche il parallelismo tra le 2 serie di valori letti ma con le prove ho capito che non è vincolante, anzi,a volte controproducente perchè specialmente i mezzi recenti molto arrotondati / bombati presentano spesso una rastremazione sufronte / retro autovettura.Vedremo nel corso del tempo con la sporcizia che si deposita sui sensori se e quali problematiche verranno a galla!!! Grazie a tutti per iconsigli. A buon rendere ed alla prox.
NoNickName Inserita: 26 luglio 2011 Segnala Inserita: 26 luglio 2011 (modificato) Leggo solo ora questo thread. Io avrei fatto così. I 400 valori li butti in un vettore.La retta interpolante ha la forma classica dove t è il tempo, ma nel tuo caso è un numero che va da 1 a 400 (l'indice del campione)Attraverso un processo di regressione ricorsivo, vai a cambiare alfa e beta, finchè la somma vettoriale di tutte le 400 differenze tra il punto reale contenuto nel vettore e il punto corrispondente della retta è nulla o inferiore ad una quantità a piacere. In buona sostanza ciò equivale a dire che l'integrale di superficie sotteso dalla curva dei punti e dalla retta è algebricamente pari a zero.Alfa è il tuo angolo (espresso in decimale). Per avere l'angolo è sufficiente calcolare l'atangente di alfa.A ogni nuovo punto che si aggiunge , scarti il più vecchio punto esistente (LIFO) e poi ricalcoli il tutto.Confrontando alfa prima e alfa dopo, puoi capire se la tua retta si sta alzando o abbassando. Modificato: 26 luglio 2011 da NoNickName
jumpier Inserita: 26 luglio 2011 Autore Segnala Inserita: 26 luglio 2011 Grazie NoNickName per la tua soluzione; per ora sono ok ma la tengo in considerazione;ricordo comunque che il mio vincolo era eseguire calcoli accettabili, veloci ed in temporeali con il processo. Infatti era stato ipotizzato il calcolo di regresione della retta maper il mio plc (ed anche per il programmatore ) risultava un po' oneroso intermini di scansione (per il primo) e scrittura del codice (per il secondo).Ciao
NoNickName Inserita: 26 luglio 2011 Segnala Inserita: 26 luglio 2011 Logicamente, in questo caso davo per scontato che i calcoli sarebbero stati eseguiti su un pc industriale affiancato al plc.
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora