SDR: gr-ais Ubuntu 12.04

From OnnoWiki
Jump to navigation Jump to search

Nama proyek

Contributors: Nick Foster
External Site:  https://github.com/bistromath/gr-ais
Project Root:  https://github.com/bistromath/gr-ais

GNU Radio Compatibility:

  • di test di GnuRadio 3.3svn harusnya bekerja di versi sebelumnya juga.


Dasar

Modul ini mengimplementasikan penerima AIS untuk GNURadio. AIS adalah Automatic Identification System, sebuah protokol yang di rancang untuk keamanan di laut dengan cara mem-broadcast data kapal seperti kecepatan, arah, rate of turn, berat, nama kapal, tujuan dll. Aturan di Amerika Serikat, kapal dengan panjang lebih dari 65 feet & berat > 150 ton harus di lengkapo AIS transceiver.

Modul akan mengeluarkan frame NMEA 0183, di rancang untuk di sambungkan ke receiver standard NMEA. Untuk implementasi Linux yang free

The module outputs processed NMEA 0183 frames, designed to interface with any standard NMEA receiver. For a free Linux implementation, see ESR's gpsd program ( http://gpsd.berlios.de/), specifically the program ais.py included with the gpsd source distribution. The output of ais.py can be further parsed, to KML for instance, for a map implementation. If I had the first idea how to work the Google Maps API, I might try it myself. If you're into that sort of thing, please, pick up the baton, I'd really like to have a map interface. =)

There's also a TCP server option (--tcp) to pipe the data around the net, or to interface locally to gpsd. It comes up on port 9987.

Technical details

AIS is a GMSK modulated packet broadcast at 9600bps on two channels: the A channel is 161.975MHz, and the B channel is 162.025MHz. The packets contain either 168 or 440 bits of information and are prefaced with a preamble and suffixed with a checksum. Packets are bit-stuffed to ensure timely bit transitions for clock recovery and that the HDLC frame markers are unambiguous, and then NRZI-encoded.

The receiver uses a quadrature demodulator followed by a low-pass filter to demodulate the signal. A frequency estimator based on the square-and-fft method is used to ensure the signal lies at baseband. The demodulated signal is passed to a M&M clock recovery module. From there, a modified decision-feedback estimator attempts to correct ISI caused by the GMSK modulation and channel distortion. The DFE is based on the gr.lms_dfe block included in GR, but with a reset input designed to accept a correlator output which is keyed to the training sequence. The DFE then resets its taps and runs through the first 150 bits of the packet 12 times, training the DFE for the channel. It then runs through the packet with the trained taps and outputs the ISI-corrected soft data, which then gets sliced. (NB: this is not the best way to go about this, but it works). The sliced data is differentially-decoded and inverted to decode the NRZI encoding.

Two receivers are instantiated in ais_decode.py, one for each channel, by tuning the receiver to the center of both channels (162.000MHz) and using frequency-xlating filters to shift either channel to baseband.


Perbaikan

If you're really good at this sort of thing, the optimal receiver for GMSK is a coherent demodulator using the Viterbi algorithm on a combined trellis. The gr-trellis module by Achilleas Anastasopolous includes basically everything necessary to do this except carrier synchronization and a reset input. The -v option currently instantiates the decoder using Rimoldi's CPFSK decomposition method, but without initial carrier phase estimation and a Viterbi decoder reset input, it hardly receives anything. It does work spectacularly well on phase- and packet-aligned data, such as a generated signal source.

Instalasi

Gunakan perintah

./bootstrap
./configure
make
sudo make install


Menjalankan

Jalankan

cd src/python ./ais_rx.py -g 60

Kita mungkin ingin menulis address UHD dan option subdev tergantung dari setup. Kita juga dapat menggunakan option -F <filename> untuk menyimpan data yang berhasil di terima.


Referensi

Pranala Menarik