This repository contains a ROS node for real-time raw ADC I/Q sample data capture and processing from TI AWR/IWR radar EVMs + DCA1000EVM combo. It was developed for and used in the following papers:
BatMobility: Towards Flying Without Seeing for Autonomous Drones
Emerson Sie, Zikun Liu, Deepak Vasisht
ACM International Conference on Mobile Computing and Networking (MobiCom), 2023
Radarize: Enhancing Radar SLAM with Generalizable Doppler-Based Odometry
Emerson Sie, Xinyu Wu, Heyu Guo, Deepak Vasisht ACM International Conference on Mobile Systems and Services (MobiSys), 2024
example.mp4
- Tested on ROS Melodic/Noetic, Ubuntu 18.04/20.04.
- Tested on xWR1843, xWR6843ISK, xWR6843ISK-ODS, xWR2944, xWR1843AOP, xWR6843AOP
- Can be used to collect I/Q samples and point clouds at the same time (see
example.mp4
).
configs/
- Example radar configs.nodes/
radar.py
- Starts radar EVM and publishes data from DCA1000 EVM.visra.py
- Subscribes to radar samples to visualize range-azimuth heatmaps.visda.py
- Subscribes to radar samples to visualize doppler-angle heatmaps.
src/
xwr_raw/
- Python package containing code for nodes.radar_pub.py
- Handles all communication with EVMs.dsp.py
- Low level signal processing functions (beamforming, etc.)
recver.cpp
- Implementation of raw data receiver in C.
launch/
radar.launch
- Run raw sample node.radar_pcd.launch
- Visualize point cloud + get raw samples at same time.- To run this, make sure you have installed ti_mmwave_rospkg as well.
radar_visra.launch
- Visualize range-azimuth heatmaps from raw samples in real-time.radar_visda.launch
- Visualize doppler-azimuth heatmaps from raw samples in real-time.radar_visra_c.launch
- Same as above, but with optimized C receiver.
udev/
- udev rules for USB ports (optional).
mkdir -p ~/catkin_ws/src
- Clone repository.
cd ~/catkin_ws/src && git clone https://github.com/ConnectedSystemsLab/xwr_raw_ros.git
- Install ROS and Python dependencies.
cd ..
rosdep install --from-paths src --ignore-src -iry && pip install -r src/xwr_raw_ros/requirements.txt
- Build node.
cd ~/catkin_ws && catkin build
- Source overlay.
source devel/setup.bash
- (Optional) Copy udev rule files under
udev
to/etc/udev/rules.d
and run
sudo udevadm control --reload-rules
sudo usermod -a -G dialout $USER
Make sure to logout and log back in so usermod takes effect.
-
Connect radar + DCA1000EVM to the host (see Hardware Setup). Set host + DCA1000EVM IPs and ports accordingly.
-
Edit and launch a
.launch
file e.g.
roslaunch xwr_raw_ros radar_visra.launch
Make sure the parameters (e.g. IP addresses and ports, serial ports, radar config) in the .launch
file are correct. You should see an output similar to example.mp4
if using xWR1843.
Connect the wires + set pins and switches on the board as follows.
- Config port:
/dev/tty1843_00
- Data port:
/dev/tty1843_03
- Make sure SOP switches set to functional mode on EVM.
- Power the DCA1000EVM through the EVM by pass-through.
Connect the wires + set pins and switches on the board as follows.
- Config port:
/dev/ttyISK_00
- Data port:
/dev/ttyISK_01
- Make sure SOP switches set to functional mode on EVM.
- Power the DCA1000EVM using barrel connector directly.
- Config port:
/dev/ttyISK_00
- Data port:
/dev/ttyISK_01
- Make sure SOP switches set to functional mode on EVM.
- Power the DCA1000EVM using barrel connector directly.
Connect the wires + set pins and switches on the board as follows.
- You need a 12V 2.5A barrel connector to power the radar AND a normal 5V barrel connector to power the DCA1000EVM.
- Ensure SOP1 jumper is removed before powering the radar EVM.
- You must first power the radar EVM and make sure the XDS ports show as connected, and only then turn on the DCA1000EVM.
- Best way to do this is to only flip on the DCA1000EVM power switch after powering the radar.
Connect the wires + set pins and switches on the board as follows.
- Config port:
/dev/ttyISK_00
- Data port:
/dev/ttyISK_01
Connect the wires + set pins and switches on the board as follows.
- Config port:
/dev/ttyISK_00
- Data port:
/dev/ttyISK_01
If you found this repository useful, please cite the following:
@inproceedings{sie2023batmobility,
author = {Emerson Sie and Zikun Liu and Deepak Vasisht},
title = {BatMobility: Towards Flying Without Seeing for Autonomous Drones},
booktitle = {The 29th Annual International Conference on Mobile Computing and Networking (ACM MobiCom '23)},
year = {2023},
doi = {10.1145/3570361.3592532},
isbn = {978-1-4503-9990-6/23/10},
}
@inproceedings{sie2024radarize,
author = {Sie, Emerson and Wu, Xinyu and Guo, Heyu and Vasisht, Deepak},
title = {Radarize: Enhancing Radar SLAM with Generalizable Doppler-Based Odometry},
booktitle = {The 22nd ACM International Conference on Mobile Systems, Applications, and Services (ACM MobiSys '24)}
year = {2024},
doi = {10.1145/3643832.3661871},
}
We would like to thank to OpenRadar and iwr_raw_rosnode for providing useful help + code snippets.