All Projects → wlmeng11 → rtl-ultrasound

wlmeng11 / rtl-ultrasound

Licence: GPL-3.0 license
🔊 Ultrasound imaging with RTL-SDR

Programming Languages

Jupyter Notebook
11667 projects
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to rtl-ultrasound

LED-Zappelin
An OpenSource LED stimulator for visual and optogenetics stimulation in combination with 2-photon recording
Stars: ✭ 19 (-68.33%)
Mutual labels:  open-hardware
sixi
Sixi Robot Arm
Stars: ✭ 23 (-61.67%)
Mutual labels:  open-hardware
us-rawdata-sda
A Deep Learning Approach to Ultrasound Image Recovery
Stars: ✭ 39 (-35%)
Mutual labels:  ultrasound-imaging
OpenAmigaMouseTrigger
Control Amiga add-on boards through mouse buttons
Stars: ✭ 21 (-65%)
Mutual labels:  open-hardware
SDR Matlab LTE
📡 Using Software Designed Radio to transmit LTE downlink signals at 2.4 GHz
Stars: ✭ 21 (-65%)
Mutual labels:  software-defined-radio
OpenAmiga600RamExpansion
Open Hardware 1 MB Chip RAM Expansion for the Commodore Amiga 600 Computer
Stars: ✭ 48 (-20%)
Mutual labels:  open-hardware
aaduino-zero
Hardware and software for the Arduino Zero
Stars: ✭ 38 (-36.67%)
Mutual labels:  open-hardware
openEMSstim
openEMSstim: open-hardware module to adjust the intensity of EMS/TENS stimulators.
Stars: ✭ 90 (+50%)
Mutual labels:  open-hardware
socitrack
A wearable platform for social interaction studies
Stars: ✭ 16 (-73.33%)
Mutual labels:  open-hardware
stabilizer
Firmware and software for the Sinara Stabilizer module with high speed, low latency ADC/DAC data processing and powerful DSP algorithms in between
Stars: ✭ 61 (+1.67%)
Mutual labels:  open-hardware
QNICE-FPGA
QNICE-FPGA is a 16-bit computer system for recreational programming built as a fully-fledged System-on-a-Chip in portable VHDL.
Stars: ✭ 51 (-15%)
Mutual labels:  open-hardware
Projeto-EAR-Celso
e-AR - Emergency Ventilator
Stars: ✭ 17 (-71.67%)
Mutual labels:  open-hardware
omega-dock-new
A dock for Onion omega, omega2 and omega2+. It features: Microusb for power supply, USB host, Ethernet
Stars: ✭ 36 (-40%)
Mutual labels:  open-hardware
penny
3 servos, 10 dollars hexapod
Stars: ✭ 26 (-56.67%)
Mutual labels:  open-hardware
SDR-Detector
GSM Scanner, RTL-SDR, StingWatch, Meteor
Stars: ✭ 56 (-6.67%)
Mutual labels:  software-defined-radio
ice-chips-verilog
IceChips is a library of all common discrete logic devices in Verilog
Stars: ✭ 78 (+30%)
Mutual labels:  open-hardware
df-aggregator
Networked DFing software that can handle multiple DOA receivers.
Stars: ✭ 47 (-21.67%)
Mutual labels:  software-defined-radio
composable-sdr
SDR DSP utilities embedded in Haskell
Stars: ✭ 26 (-56.67%)
Mutual labels:  software-defined-radio
ITKUltrasound
ITK module with classes particularly useful for ultrasound.
Stars: ✭ 41 (-31.67%)
Mutual labels:  ultrasound-imaging
OpenAmiga2000CoproAdapter
Move your Amiga 2000 CPU to the Coprocessor slot!
Stars: ✭ 20 (-66.67%)
Mutual labels:  open-hardware

rtl-ultrasound

by William Meng

rtl-ultrasound is the software component of the first-ever ultrasound imaging system based on Software Defined Radio (SDR).

SoftwareFirmwareHardware

PyPI version License: GPL v3 HitCount

As featured on the official RTL-SDR blog:
Featured on official RTL-SDR blog

Latest results

See the Aug 21, 2018 writeup for more details.

Hardware setup with SimpleRick v1.1, 12.5 MHz low pass filter, and RTL-SDR setup

Piezoelectric transducer is swept by servo motor
gif

Experimental results
summary

Introduction

Why SDR?

The analog signal produced by a B-mode ultrasound (ie. 2D imaging) is essentially an Amplitude Modulated (AM) signal. The signal's envelope (ie. amplitude) corresponds to boundary information in the physical media, and the signal's carrier frequency is equal to the resonant frequency of the transducer.

Most ultrasound systems take one of two approaches for data acquistion:

  1. Direct sampling of the ultrasound signal: This method preserves the original signal in the time domain, accomodates any transducer frequency, and offers the best flexibility for post-processing and analysis. Both amplitude and phase information can be extracted the signal, so it is useful for both B-mode and Doppler mode imaging. However, this method requires a high sample rate ADC, as well as high bandwidth and storage for the digital data.
  2. Envelope detection with analog hardware: Perform Amplitude Demodulation (typically with a diode-based rectifier and low pass filter) to yield an envelope signal, then acquire the envelope signal at a lower sample rate. This method reduces the bandwidth and storage requirements for the digital data, but there are a number of drawbacks:
    • Unless the low pass filter is adjustable, this method cannot accommodate different transducer frequencies.
    • The non-linearity of the diode may produce harmonic distortion.
    • All phase information in the signal is lost, rendering it useless for Doppler mode imaging.

It has been demonstrated by Peyton et al that quadrature sampling can be used to reduce bandwidth requirements in an ultrasound imaging system.

It turns out that quadrature modulation is essential to Software Defined Radio (SDR) because any type of amplitude modulation, frequency modulation, phase modulation, or combination of these can be expressed as a special case of quadrature modulation. Therefore, many of the software and hardware techniques used in SDR can be applied to ultrasound imaging.

Why RTL-SDR?

The RTL2832U chip in the RTL-SDR takes a hybrid approach for data acquisition. It employs a high sample rate ADC (28.8 Msps), followed by a software-configurable Digital Down Converter (DDC) that produces IQ data at a lower sample rate (up to 2.56 Msps), thus reducing bandwidth and storage requirements. We can then perform envelope detection in software.

Plus, the RTL-SDR is really cheap (under $25 on Amazon in the United States)! As such, there is a lot of software support and a large community for the RTL-SDR.

With a few software tweaks, it should be possible to substitute the RTL-SDR with a more expensive SDR (eg. AirSpy HF+, LimeSDR) for use cases that require better ADC resolution and SNR.

TODO: total system cost

Installation

System Dependencies

Install the system dependencies:

  • Python 3 with pip
  • librtlsdr

Mac OSX

brew install python3 librtlsdr

Warning: If you previously installed software that bundles an out-of-date version of librtlsdr, you may have to remove it, or overwrite the symlinks for librtlsdr: brew link --overwrite librtlsdr

Automatic installation

Install rtl-ultrasound:
pip3 install rtl-ultrasound

Manual installation

Clone the development repo:
git clone [email protected]:wlmeng11/rtl-ultrasound.git

Install the python package dependencies:
pip3 install -r requirements.txt

Run the install script:
pip3 install .

Usage

Hardware Setup

This software is designed to be used with the RTL-SDR v3 in conjunction with the SimpleRick hardware.

TODO: block diagram

However, this software can be also used with any ultrasound hardware which provides an analog signal output that can be fed to the input of the RTL-SDR.

Capturing images

To capture approximately 1 second of data from the RTL-SDR and save it to a .npz file, run:
rtl_to_npz -v -n 5120000

Next, generate an image from the .npz file:
B_mode -v --data (data file name).npz

In the future, this process will be streamlined into a single script and possibly a GUI.

Documentation

A fairly comprehensive overview of the entire process from data acquisition to rendered image can be found in the Aug 13, 2018 experiment.

Essentially, it boils down to these steps:

  • acquire IQ samples from RTL-SDR
  • upsample
  • extract envelope
  • split signal into scan lines
  • stack scan lines into image
  • perform polar to cartesian image transformation

TODO: these steps will be parallelized with multithreading in order to provide a fast image update rate with pipelining

DISCLAIMER

This software is NOT meant to be used for any medical or diagnostic purposes.

Absolutely no warranty is provided, express or implied.

License

The software contained in this repository makes use of the pyrtlsdr module, and is therefore a derivative work of pyrtlsdr. As such, this work respects the GPL v3 license of pyrtlsdr and is similarly distributed under GPL v3.

The full text of the license can be found in the COPYING file.

pyrtlsdr is Copyright (C) 2013 by Roger https://github.com/roger-

rtl-ultrasound is Copyright (C) 2018 William Meng

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].