Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Abbiamo provato per una settimana intera la Can-Am Origin, la Dual Sport elettrica del gruppo canadese BRP: ecco com'è andata tra città, autostrada e un primo assaggio di sterrato
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Nelle ultime settimane abbiamo provato il mouse Logitech G305, la tastiera G316 X 98 e le cuffie G325. Si tratta del setup entry-level di Logitech che ormai, di "entry-level" ha ben poco. Tastiera e mouse offrono prestazioni di livello competitivo con quasi nessuna rinuncia e un livello di personalizzazione estremamente elevato. Le cuffie, invece, hanno mostrato qualche debolezza, ma propongono un ventaglio di funzionalità completo che consente di abbandonare completamente i cavi
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
POCO F9 Pro arriva sul mercato con l'obiettivo di portare prestazioni da smartphone top di gamma in una fascia di prezzo "più aggressiva", senza rinunciare a un comparto fotografico finalmente all'altezza. Dopo averlo testato sul campo, emerge uno smartphone molto più completo rispetto alla generazione precedente, ma anche con alcuni piccoli compromessi che diventano difficili da ignorare quando il prezzo di listino sfiora i 1.000 euro.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 14-08-2011, 12:24   #1
Rubberick
Senior Member
 
L'Avatar di Rubberick
 
Iscritto dal: Nov 2002
Messaggi: 11907
[php] trilaterazione, localizzazione sorgente GSM, WIFI, RADIO, etc..

ciao a tutti

mi sto divertendo a giochicciare con google earth e i suoi kml...

ho a disposizione una serie di dati sulle celle 2g/3g della zona, ho gia' scriptato tutto quello che mi serve tranne una funzione di trilaterazione per la localizzazione + accurata delle torrette

in pratica ho una lista di valori

latitudine, longitudine, altezza (in m), potenza (in dBm), accuratezza gps (in m)

dovrei realizzare una funzione che utilizzando un minimo di 3 o 4 record a salire mi restituisca principalmente latitudine e longitudine (e possibilmente in un secondo momento altezza) della sorgente di segnale basandomi sulle misurazioni

andrei per step...

prima di tutto realizzare una trilaterazione solo latitudine / longitudine basandomi su 3 punti

poi lo estendo su + punti realizzando una MULTILATERAZIONE

poi faccio un discorso di pesi, dove do maggior peso ai record che mi danno maggiore potenza in dBm e discorso inverso per i punti che mi danno minore accuratezza (ad es 50m invece che 3m)

ho trovato uno snippet di codice in phyton e stavo cercando di convertirlo in php ma non ho ben capito tutti i passaggi... qualcuno mi aiuta a capirli un po' meglio? inoltre usa un riferimento sferico se ho capito e non ellissoide

non so bene cosa è numpy, ma comunque pare che si debbano fare un pò di calcoli con matrici... in matlab credo il problema sarebbe realizzabile in pochi min... in php diventa un pò + complesso...

Codice:
from math import *
from numpy import *

#assuming elevation = 0
earthR = 6371
LatA = 37.418436
LonA = -121.963477
DistA = 0.265710701754
LatB = 37.417243
LonB = -121.961889
DistB = 0.234592423446
LatC = 37.418692
LonC = -121.960194
DistC = 0.0548954278262

#using authalic sphere
#if using an ellipsoid this step is slightly different
#Convert geodetic Lat/Long to ECEF xyz
#   1. Convert Lat/Long to radians
#   2. Convert Lat/Long(radians) to ECEF
xA = earthR *(math.cos(math.radians(LatA)) * math.cos(math.radians(LonA)))
yA = earthR *(math.cos(math.radians(LatA)) * math.sin(math.radians(LonA)))
zA = earthR *(math.sin(math.radians(LatA)))

xB = earthR *(math.cos(math.radians(LatB)) * math.cos(math.radians(LonB)))
yB = earthR *(math.cos(math.radians(LatB)) * math.sin(math.radians(LonB)))
zB = earthR *(math.sin(math.radians(LatB)))

xC = earthR *(math.cos(math.radians(LatC)) * math.cos(math.radians(LonC)))
yC = earthR *(math.cos(math.radians(LatC)) * math.sin(math.radians(LonC)))
zC = earthR *(math.sin(math.radians(LatC)))

P1 = array([xA, yA, zA])
P2 = array([xB, yB, zB])
P3 = array([xC, yC, zC])

#from wikipedia
#transform to get circle 1 at origin
#transform to get circle 2 on x axis
ex = (P2 - P1)/(numpy.linalg.norm(P2 - P1))
i = dot(ex, P3 - P1)
ey = (P3 - P1 - i*ex)/(numpy.linalg.norm(P3 - P1 - i*ex))
ez = numpy.cross(ex,ey)
d = numpy.linalg.norm(P2 - P1)
j = dot(ey, P3 - P1)

#from wikipedia
#plug and chug using above values
x = (pow(DistA,2) - pow(DistB,2) + pow(d,2))/(2*d)
y = ((pow(DistA,2) - pow(DistC,2) + pow(i,2) + pow(j,2))/(2*j)) - ((i*x)/j)

# only one case shown here
z = sqrt(pow(DistA,2) - pow(x,2) - pow(y,2))

#triPt is an array with ECEF x,y,z of trilateration point
triPt = P1 + x*ex + y*ey + z*ez

#convert back to lat/long from ECEF
#convert to degrees
lat = math.degrees(math.asin(triPt[2] / earthR))
lon = math.degrees(math.atan2(triPt[1],triPt[0]))

print lat, lon`
__________________
Ho fatto affari con: troppi per elencarli

Vendo: NAS PRO QNAP 4 BAIE 419P+ CON LCD
Rubberick è offline   Rispondi citando il messaggio o parte di esso
Old 14-08-2011, 12:32   #2
Rubberick
Senior Member
 
L'Avatar di Rubberick
 
Iscritto dal: Nov 2002
Messaggi: 11907
ora che ci penso ma è corretto questo ragionamento?

che sono DistA DistB e DistC?

io ho delle rilevazioni basate sul mio gps quindi la posizione sicura (a meno dell'accuratezza del gps) e' la mia non quella della torre ^^ altrimenti avrei risolto

io alla fine ho gia' tutti i punti che mi servono...

potrei fare una media di lat e lon pesata su potenza e accuratezza?

viene uno schifo eh?
__________________
Ho fatto affari con: troppi per elencarli

Vendo: NAS PRO QNAP 4 BAIE 419P+ CON LCD

Ultima modifica di Rubberick : 14-08-2011 alle 12:35.
Rubberick è offline   Rispondi citando il messaggio o parte di esso
Old 14-08-2011, 12:56   #3
Rubberick
Senior Member
 
L'Avatar di Rubberick
 
Iscritto dal: Nov 2002
Messaggi: 11907
ok, credo di avere capito sono o i raggi o i diametri delle sorgenti...

che a questo punto potrebbero essere basati direttamente sulla potenza tramite la perdita in free loss dal segnale
__________________
Ho fatto affari con: troppi per elencarli

Vendo: NAS PRO QNAP 4 BAIE 419P+ CON LCD
Rubberick è offline   Rispondi citando il messaggio o parte di esso
Old 14-08-2011, 18:29   #4
Rubberick
Senior Member
 
L'Avatar di Rubberick
 
Iscritto dal: Nov 2002
Messaggi: 11907
uff mi sto incazzando come una iena complice anche il caldo per fare un calcolo quantomeno banale...

sto cercando di fare una funzioncina semplice x il calcolo della distanza in base ai decibel..

è un primo step per iniziare poi la raffino considerando l'attenuazione data da possibili ostacoli

In spazio libero la faccenda dovrebbe funzionare così:

http://en.wikipedia.org/wiki/Free-space_path_loss

la formula e' la seguente:



con d espressa in metri e f in Hz

benissimo pertanto faccio la formula inversa

dB = 20log10(d) + 20log10(f) - 147.55

dB/20 = log10(d) + log10(f) - 147.55/20

dB/20 = log10(d) + log10(f) - 7.3775

passando i 2 termini dall'altra parte...

dB/20 - log10(f) + 7.3775 = log10(d)

fin qui giusto no? sto facendo un passaggino alla volta x non sbagliare

a questo punto semplicemente faccio 10^ da un lato e dall'altro

10^( dB/20 - log10(f) + 7.3775 ) = 10^( log10(d) )

10^( dB/20 - log10(f) + 7.3775 ) = d

dove ricordiamo la freq e' espressa in Hz e la d in metri

quindi mi preparo una funzioncina

Codice PHP:
db_distance($db,$f) {
    return 
pow(10,($db/20 + 7.3775 - log10($f)));
} 
da qui se faccio un

Codice PHP:
echo db_distance(-80,2.45*pow(10,9)); 
(ho usato 2.45 GHz per provare il caso WIFI)

mi esce 0.000000973495426720451714742120 m

ora...

se prendo una funzione già fatta da un tizio che e' valida solo per il wifi (2.45GHz)

function db_km($db){
$cst=-40.4;
return pow(10,($cst-$db)/20)/1000;
}

mi da 0.095499258602144 km

che in m sono 0.000095499258602144 m

mi trovo 2 ordini di scarto... in cosa ho sbagliato? O_o'

prima di usarla x le altre frequenze 850MHz, 900Mhz, 1800Mhz etc.. vorrei essere sicuro che la funzione sia corretta..
__________________
Ho fatto affari con: troppi per elencarli

Vendo: NAS PRO QNAP 4 BAIE 419P+ CON LCD

Ultima modifica di Rubberick : 14-08-2011 alle 18:40.
Rubberick è offline   Rispondi citando il messaggio o parte di esso
Old 14-08-2011, 18:58   #5
Rubberick
Senior Member
 
L'Avatar di Rubberick
 
Iscritto dal: Nov 2002
Messaggi: 11907
forse ho trovato il problema c'e' un doppio meno che va considerato per l'attenuazione...

non si puo' inserire -80 db ma tocca usare 80 o altrimenti se si vuole usare i -80 va messo un - davanti a $db

Codice PHP:
function db_distance($db,$f) {
    return 
pow(10,(-$db/20 + 7.3775 - log10($f)));
} 
e cosi' funziona correttamente

lo so sto facendo un monologo ma prima o poi qualcuno interessato comparira' xD
__________________
Ho fatto affari con: troppi per elencarli

Vendo: NAS PRO QNAP 4 BAIE 419P+ CON LCD
Rubberick è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2011, 12:22   #6
Luciano69
Senior Member
 
L'Avatar di Luciano69
 
Iscritto dal: Aug 2005
Messaggi: 1025
Ciao
posso sapere le tue info di partenza
le cordinate delle celle GSM o UMTS come le hai trovate?
__________________
oltre 50 trattative sul forum controllate i miei messaggi
Luciano69 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia) Test ride Can-Am Origin: la moto elettrica che f...
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco Logitech G325, G305 e G316 X: il tris per chi no...
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio Recensione POCO F9 pro: potenza da vero top di g...
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI Tra audio e AI: la ricetta di Qualcomm per l'age...
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6 Qualcomm annuncia la nuova generazione di SoC Sn...
Il satellite LINK è rientrato nel...
L'ESA risponde alle critiche di Jared Is...
La NASA annuncia il nuovo telescopio spa...
HONOR pubblica The Sea Between Us, un co...
L'Olanda punta su NixOS e open source pe...
OPPO Find X10 Pro Max, il flagship con t...
Gli smartphone Samsung potrebbero avere ...
GeForce Now arriverà sui Googlebo...
Opus 5.5 e GPT-6 Sol nello stesso pomeri...
Weekend Amazon, le prime 5 offerte sono ...
Mini Compressore a 21,84€: gonfia le gom...
Gemini si aggiorna, ora può conne...
Da 32 a 65 pollici: ecco le TV più...
Xiaomi Redmi Note 17 a 269€: ecco perch&...
ASUS avverte i clienti: accesso non auto...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 03:34.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v