Skip to content

Commit

Permalink
Merge pull request radar-lab#4 from zrmaker/master
Browse files Browse the repository at this point in the history
multi-sensor successful
  • Loading branch information
zrmaker authored Oct 8, 2018
2 parents 07c5219 + df654f6 commit 1906c10
Show file tree
Hide file tree
Showing 37 changed files with 669 additions and 629 deletions.
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
reference/
.vscode/
src/.vscode
cfg/archive
launch/archive
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ add_library(mmwave
src/mmWaveCommSrv.cpp
src/DataHandlerClass.cpp
src/mmWaveQuickConfig.cpp
src/parameter_parser.cpp
src/ParameterParser.cpp
)

## Add cmake target dependencies of the library
Expand Down
120 changes: 120 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
# TI mmWave ROS Package (Customized)

### Auhor and Maintainer: Leo Zhang
### Organization: University of Arizona
### Email: dr.leo.zhang@outlook.com
---
Initially derived from TI's origin ROS package in Industrial Toolbox 2.3.0 (new version available [Industrial Toolbox 2.5.2](http://dev.ti.com/tirex/#/?link=Software%2FmmWave%20Sensors%2FIndustrial%20Toolbox)).

### Differences from origin TI's version:
1. Added all radar parameters from calculations and can be read from `rosparam get`.
2. Added Doppler data from detecting targets and form a customized ROS message `/ti_mmwave/radar_scan`.
3. Added support for multiple radars working together.
4. Working with xWR1443 and xWR1642 ES1.0 and ES2.0 (ES1.0 is deprecated from TI)
---
### Available devices:
```
TI mmWave AWR1443BOOST
TI mmWave AWR1642BOOST
TI mmWave AWR1642BOOST ES2.0 EVM (not tested)
TI mmWave AWR1642BOOST ES2.0 EVM
```
---
### Quick start guide (AWR1642BOOST ES2.0 EVM):
1. Mount AWR1642BOOST ES2.0 EVM (as below), connect 5V/2.5A power supply and connect a micro-USB cable to host Ubuntu with [ROS Kinetic](http://wiki.ros.org/kinetic).

![](./auxiliary/mounting.jpg =250x)

2. Download SDK 2.0 or above from [here](http://www.ti.com/tool/MMWAVE-SDK) and use [UNIFLASH](http://www.ti.com/tool/UNIFLASH) to flash xwr16xx_mmw_demo.bin to your device. **Do not forget SOP2 jumper when flashing.**

Note:
AWR1642 ES1.0 (usually purchased before May 2018) uses SDK ver. 1.2. AWR1642 ES2.0 (usually purchased after May 2018) uses SDK ver. 2.0. Same applies to AWR1443. (You can refer to [this thread](https://e2e.ti.com/support/sensors/f/1023/t/692195?tisearch=e2e-sitesearch&keymatch=%20user:356347))

3. Clone this repo and ROS serial onto your `<workspace dir>/src`:

```
git clone https://github.com/radar-lab/ti_mmwave_rospkg.git
git clone https://github.com/wjwwood/serial.git
```
4. Go back to `<workspace dir>`:

```
catkin_make && source devel/setup.bash
echo "source <workspace_dir>/devel/setup.bash" >> ~/.bashrc
```

5. Launch AWR1642 short range:
```
roslaunch ti_mmwave_rospkg 1642es2_short_range.launch
```

6. ROS topics can be accessed as follows:
```
rostopic echo /ti_mmwave/radar_scan
```
7. ROS parameters can be accessed as follows:
```
rosparam list
rosparam get /ti_mmwave/max_doppler_vel
```
---
### Message format:
```
header:
seq: 6264
stamp:
secs: 1538888235
nsecs: 712113897
frame_id: "/ti_mmwave" # Frame ID used for multi-sensor scenarios
point_id: 17 # Point ID of the detecting frame (Every frame starts with 0)
x: 8.650390625 # Point x coordinates (front from antenna)
y: 6.92578125 # Point y coordinates (left/right from antenna, right positive)
z: 0.0 # Point y coordinates (up/down from antenna, up positive)
range: 11.067276001 # Radar measured range
velocity: 0.0 # Radar measured range rate
doppler_bin: 8 # Doppler bin location of the point (total bins = num of chirps)
bearing: 38.6818885803 # Radar measured angle (right positive)
intensity: 13.6172780991 # Radar measured intensity (in dB)
```
---
### Multiple devices support (dual AWR1642 ES2.0 EVM):
1. Connect two devices and try `ll /dev/serial/by-id`. In this case, `/dev/ttyACM3` should shown.
2. Launch first device:

```
roslaunch ti_mmwave_rospkg multi_1642_0.launch
```
3. Launch second device:

```
roslaunch ti_mmwave_rospkg multi_1642_1.launch
```
4. Change radars' location in first three arguments (stands for x,y,z for positions) in `args` in launch file `multi_tf_rviz.launch`:

```
<node pkg="tf" type="static_transform_publisher" name="radar_baselink_0" args="0 -1 0 0 0 0 ti_mmwave_pcl ti_mmwave_0 100"/>
```
5. Show point clouds using rviz:

```
roslaunch ti_mmwave_rospkg multi_tf_rviz.launch
```

Note: As serial connection and the original code, you need to launch devices separately using different launch files.

---
### Changelog:

```
v3.0.0
Added README.
Improved rviz looking for point cloud data.
Added support for multiple radars working together.
Improved radar's all around working conditions.
v2.0.0
Added support for ES2.0 EVM devices.
v1.0.0
Added Doppler from TI's mmWave radars.
```
Binary file added auxiliary/mounting.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
25 changes: 0 additions & 25 deletions cfg/1443_long_range.cfg

This file was deleted.

23 changes: 0 additions & 23 deletions cfg/1443_micro_doppler.cfg

This file was deleted.

File renamed without changes.
27 changes: 0 additions & 27 deletions cfg/1642_long_range.cfg

This file was deleted.

45 changes: 0 additions & 45 deletions cfg/1642_micro_doppler.cfg

This file was deleted.

45 changes: 0 additions & 45 deletions cfg/1642_short_range.cfg

This file was deleted.

15 changes: 7 additions & 8 deletions cfg/1642_mid_range.cfg → cfg/1642es1_short_range.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,14 @@ dfeDataOutputMode 1
channelCfg 15 3 0
adcCfg 2 1
adcbufCfg -1 0 0 1 0
profileCfg 0 76 49 7 28.48 0 0 35.112 1 128 6249 0 0 30
profileCfg 0 76 63 7 40 0 0 25 1 80 2499 0 0 30
chirpCfg 0 0 0 0 0 0 0 1
chirpCfg 1 1 0 0 0 0 0 2
frameCfg 0 1 128 0 40 1 0
lowPower 0 0
frameCfg 0 1 64 0 33.333 1 0
guiMonitor -1 1 0 0 0 0 0
cfarCfg -1 0 0 8 4 4 0 5120
cfarCfg -1 1 0 4 2 3 0 5120
peakGrouping -1 1 0 0 1 127
cfarCfg -1 0 0 8 4 4 0 3072
cfarCfg -1 1 0 4 2 3 0 3072
peakGrouping -1 1 0 1 1 255
multiObjBeamForming -1 1 0.5
clutterRemoval -1 0
calibDcRangeSig -1 0 -5 8 256
Expand All @@ -22,7 +21,7 @@ lvdsStreamCfg -1 0 0 0
nearFieldCfg -1 0 0 0
compRangeBiasAndRxChanPhase 0.0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
measureRangeBiasAndRxChanPhase 0 1.5 0.2
CQRxSatMonitor 0 3 4 63 0
CQSigImgMonitor 0 63 4
CQRxSatMonitor 0 3 4 79 0
CQSigImgMonitor 0 79 4
analogMonitor 1 1
sensorStart
43 changes: 43 additions & 0 deletions cfg/1642es2_short_range.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
% ==============================
% List of parameters
% ==============================
% Number of range samples: 256
% Number of chirps: 16
% f_s: 5.209 MHz
% f_c: 79.210 GHz
% Bandwidth: 3440.200 MHz
% PRI: 96.140 us
% Frame time: 33.333 ms
% Max range: 11.154 m
% Range resolution: 0.044 m
% Max Doppler: +-4.921 m/s
% Doppler resolution: 0.615 m/s
% ==============================
sensorStop
flushCfg
dfeDataOutputMode 1
channelCfg 15 3 0
adcCfg 2 1
adcbufCfg -1 0 0 1 0
profileCfg 0 77 39 7 57.14 0 0 70 1 256 5209 0 0 30
chirpCfg 0 0 0 0 0 0 0 1
chirpCfg 1 1 0 0 0 0 0 2
frameCfg 0 1 16 0 33.333 1 0
lowPower 0 1
guiMonitor -1 1 0 0 0 0 0
cfarCfg -1 0 0 8 4 4 0 3072
cfarCfg -1 1 0 4 2 3 0 3072
peakGrouping -1 1 0 1 1 255
multiObjBeamForming -1 1 0.5
clutterRemoval -1 0
calibDcRangeSig -1 0 -5 8 256
extendedMaxVelocity -1 0
bpmCfg -1 0 0 1
lvdsStreamCfg -1 0 0 0
nearFieldCfg -1 0 0 0
compRangeBiasAndRxChanPhase 0.0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
measureRangeBiasAndRxChanPhase 0 1.5 0.2
CQRxSatMonitor 0 3 5 123 0
CQSigImgMonitor 0 127 4
analogMonitor 1 1
sensorStart
Loading

0 comments on commit 1906c10

Please sign in to comment.