A modular, multi-sensor data collection GUI for labelled activity research. It synchronises a TI AWR2243BOOST 77 GHz radar and an Azure Kinect RGB-D camera to capture recordings of any activity.
Each session:
- shows a per-activity demonstration video before capture
- saves data in an experiment → subject → activity folder hierarchy
Infineon 60 GHz radar support is in progress — the module stub is already in place.
- Install mmWave Studio + Azure Kinect SDK (see below)
pip install -r requirements.txt- Update paths in
sensors/kinect_azure.pyandcf.json - Start mmWave Studio and run
radar_server.lua - Run the GUI:
python main.py| Device | Role | Part / Model |
|---|---|---|
| TI AWR2243BOOST | 77 GHz mmWave radar sensor | AWR2243BOOST EVM |
| TI DCA1000EVM | Raw ADC data capture card | DCA1000EVM |
| Azure Kinect DK | RGB-D camera (colour + depth) | Model 1550 |
| Windows 10/11 PC | Host computer and data storage | USB 3.0 port required |
The DCA1000EVM connects to your PC over Ethernet using a fixed IP scheme.
- Plug an Ethernet cable directly between the DCA1000EVM and your PC (no router/switch).
- Configure the PC Ethernet adapter:
- IP address:
192.168.33.30 - Subnet mask:
255.255.255.0 - Gateway: leave blank
- IP address:
- The DCA1000EVM will be at
192.168.33.180(factory default).
If you change these IPs, update
cf.jsonandradar_server.luato match.
Download the installer from the TI download page:
Install to the default path: C:\ti\mmwave_studio_03_00_00_14\
After installation, copy radar_server.lua (from this repo root) into:
C:\ti\mmwave_studio_03_00_00_14\mmWaveStudio\Scripts\
Download and run the installer from the GitHub releases page:
Azure Kinect SDK v1.4.2 — github.com/microsoft/Azure-Kinect-Sensor-SDK/releases/tag/v1.4.2
Install to the default path: C:\Program Files\Azure Kinect SDK v1.4.2\
Verify the recorder tool is present:
C:\Program Files\Azure Kinect SDK v1.4.2\tools\k4arecorder.exe
Important: Plug the Kinect into a dedicated USB 3.0 port — not a USB hub. The combined colour + depth stream requires the full USB 3.0 bandwidth. Sharing the port causes frame-drop errors (
capturesync_drop).
Python 3.10 or later on Windows is required.
pip install -r requirements.txtOr install individually:
pip install PySimpleGUI opencv-python numpy openpyxlTwo files contain paths that must be changed before first use:
Find the K4A_RECORDER constant near the top of the file:
K4A_RECORDER = r'C:\Program Files\Azure Kinect SDK v1.4.2\tools\k4arecorder.exe'Update if you installed the SDK to a different location.
Find the fileBasePath field and replace <YOUR_USERNAME> with your Windows username:
"fileBasePath": "C:\\Users\\<YOUR_USERNAME>\\radar_data"The GUI controls the TI radar through a small Lua TCP server embedded in mmWave Studio.
- Open mmWave Studio
- Connect to the AWR2243BOOST (select the correct COM port)
- Click Power On → RF Enable
- Load your chirp / profile / frame configuration
- Connect to the DCA1000EVM via Ethernet (verify
192.168.33.180is reachable) - Open the Script editor:
Scripts > Open > radar_server.lua - Click Run (or press F5)
- The log window should display:
===========================================
Radar server started on port 55000
Waiting for commands from Python GUI...
===========================================
Leave mmWave Studio open. The GUI will communicate with it over TCP on port 55000.
Open a Windows Command Prompt and run:
python main.pyOn first launch, click Setup Radar — this sends the DCA1000 Ethernet and capture-mode configuration to mmWave Studio over the Lua connection. The status bar should show ● Radar ready.
The Excel workbook has two sheets that populate the GUI dropdowns:
| Sheet | Columns | Example row |
|---|---|---|
Activities |
id (int), name (str) |
0, Activity_Hello |
Experiments |
id (int), name (str) |
0, Exp_Baseline |
To add a new activity or experiment, open the workbook, add a row to the appropriate sheet, and restart the GUI.
Before a recording the GUI shows a preview of the selected activity. To add a demonstration video:
- Record or obtain an
.mp4clip of the activity - Name it exactly matching the
namecolumn inactivities.xlsx - Place it in the
videos/folder
videos/
Activity_Hello.mp4
Activity_Goodbye.mp4
Activity_Thank_You.mp4
...
When an activity is selected in the GUI the first frame of the matching video is shown. If no video is found a placeholder is displayed instead.
Use the ◀ Prev and Next ▶ buttons to cycle through activities without touching the dropdown.
- Check the sensors you want to use (TI Radar, Azure Kinect, or both)
- Enter a Subject identifier (number or short name)
- Select an Experiment and Activity from the dropdowns
- Enter the Duration in whole seconds
- Click ▶ Start Recording
- A 3-2-1 countdown appears in the status bar
- All enabled sensors start simultaneously in background threads
- A live MM:SS countdown shows the remaining time
- Recording stops automatically when the duration expires; saved files are listed in the status panel
- Click ■ Stop Recording to terminate early if needed
All recordings are saved under C:\Users\<YOUR_USERNAME>\radar_data\outputs\ on Windows, organised by experiment → subject → activity:
outputs/
Exp_Baseline/
subj1/
Activity_Hello/
2026_04_16_14_30_00.bin ← TI radar raw ADC data (DCA1000)
2026_04_16_14_30_00_Raw_0.bin ← DCA1000 appends this suffix automatically
2026_04_16_14_30_00_kinect.mkv ← Azure Kinect RGB-D recording (MKV)
2026_04_16_14_30_00_inf.bin ← Infineon radar (when available)
Exp_Controlled/
subj2/
Activity_Goodbye/
...
Each recording session gets its own timestamped set of files inside the activity folder.
├── main.py # GUI entry point
├── activities.xlsx # Activity and experiment definitions
├── cf.json # DCA1000 capture configuration
├── requirements.txt
├── radar_server.lua # Lua TCP server — runs inside mmWave Studio
│
├── sensors/
│ ├── __init__.py
│ ├── kinect_azure.py # Azure Kinect recorder (wraps k4arecorder.exe)
│ ├── ti_radar.py # TI AWR2243 recorder (Lua TCP client)
│ └── infineon_radar.py # Infineon 60 GHz — coming soon
│
├── videos/ # Demonstration video clips (not tracked by git)
│ └── README.txt
│
└── data/
└── blank.png # Placeholder image
| Symptom | Likely cause | Fix |
|---|---|---|
error: Lua server not running |
radar_server.lua not started |
Open in mmWave Studio Scripts editor and press F5 |
capturesync_drop errors from Kinect |
USB bandwidth saturation | Use a dedicated USB 3.0 port; avoid USB hubs |
| Kinect process times out and returns rc=1 | Bandwidth or USB issue | Reduce depth mode to NFOV_2X2BINNED and colour to 720p in sensors/kinect_azure.py (already the defaults) |
k4arecorder.exe not found |
SDK not installed or wrong path | Install Azure Kinect SDK v1.4.2; update K4A_RECORDER in sensors/kinect_azure.py |
No .bin file after recording |
Radar not triggered | Confirm mmWave Studio is configured, radar is armed, and Lua server is running |
| GUI freezes during recording | All sensor operations run in a background thread — this should not happen | Check the console for Python exceptions |
sensors/infineon_radar.py is a stub with the correct interface (start / wait / stop). SDK integration for the Infineon 60 GHz board is in progress.
MIT
