Add support for ES2, improve 6432 config to have xyz and velocity

This commit is contained in:
Pedrhom Nafisi
2024-08-14 14:48:07 -05:00
parent 3cfb96e29d
commit 13c6731589
6 changed files with 28 additions and 39 deletions

View File

@@ -1,29 +0,0 @@
% ***************************************************************
% PresenceDetect: Chirp configuration and Processing chain are
% optimized to detect any kind of motion, including fine movements
% (even small movements that are present while sitting still,
% such as, movement caused by typing, breathing, etc.). However,
% there is no velocity measurement reported in this case.
% It is typically useful for applications such as identifying
% presence or absence of occupants in an indoor setting.
% Localization (Angle estimation) of the object is possible.
% ***************************************************************
channelCfg 7 3 0
chirpComnCfg 18 0 0 128 4 30 0
chirpTimingCfg 6 28 0 90 59.75
frameCfg 8 0 250 1 150 0
guiMonitor 2 0 0 0 0 0 0 0 0 0 0
sigProcChainCfg 64 8 2 0 4 4 0 .5
cfarCfg 2 4 3 2 0 14.0 0 0.5 0 1 1 1
aoaFovCfg -60 60 -40 40
rangeSelCfg 0.1 4.0
clutterRemoval 1
compRangeBiasAndRxChanPhase 0.0 1.00000 0.00000 -1.00000 0.00000 1.00000 0.00000 -1.00000 0.00000 1.00000 0.00000 -1.00000 0.00000
adcDataSource 0 adc_data_0001_CtestAdc6Ant.bin
adcLogging 0
lowPowerCfg 0
factoryCalibCfg 1 0 40 0 0x1ff000
sensorPosition 0 0 1.44 0 0
minorStateCfg 5 4 40 8 4 30 8 8
clusterCfg 1 0.5 2
sensorStart 0 0 0 0

View File

@@ -8,22 +8,28 @@
% presence or absence of occupants in an indoor setting.
% Localization (Angle estimation) of the object is possible.
% ***************************************************************
sensorStop 0
channelCfg 7 3 0
chirpComnCfg 18 0 0 128 4 30 0
chirpTimingCfg 6 28 0 90 59.75
frameCfg 8 0 250 1 100 0
chirpComnCfg 8 0 0 256 4 28 0
chirpTimingCfg 6 63 0 75 60
frameCfg 2 0 250 32 150 0
guiMonitor 1 0 0 0 0 0 0 0 0 0 0
sigProcChainCfg 64 8 2 0 4 4 0 .5
cfarCfg 2 4 3 2 0 15.0 0 0.5 0 1 1 1
sigProcChainCfg 16 16 1 1 4 4 0 15
cfarCfg 2 8 4 3 0 10.0 0 0.5 0 1 1 1
aoaFovCfg -60 60 -40 40
rangeSelCfg 0.05 4.0
rangeSelCfg 0.1 12.0
clutterRemoval 1
compRangeBiasAndRxChanPhase 0.0 1.00000 0.00000 -1.00000 0.00000 1.00000 0.00000 -1.00000 0.00000 1.00000 0.00000 -1.00000 0.00000
adcDataSource 0 adc_data_0001_CtestAdc6Ant.bin
adcDataSource 0 C:/ti/mmwave_lp_sdk/examples/datapath/common/testBench/major_motion/adc_data_0001_CtestAdc6Ant.bin
adcLogging 0
lowPowerCfg 0
factoryCalibCfg 1 0 40 5 0x1ff000
lowPowerCfg 1
factoryCalibCfg 1 0 40 0 0x1ff000
mpdBoundaryBox 1 0 1.48 0 1.95 0 3
mpdBoundaryBox 2 0 1.48 1.95 3.9 0 3
mpdBoundaryBox 3 -1.48 0 0 1.95 0 3
mpdBoundaryBox 4 -1.48 0 1.95 3.9 0 3
sensorPosition 0 0 1.44 0 0
minorStateCfg 5 4 40 8 4 30 8 8
majorStateCfg 4 2 30 10 8 80 4 4
clusterCfg 1 0.5 2
sensorStart 0 0 0 0

View File

@@ -90,7 +90,10 @@ def generate_launch_description():
{"mmwavecli_name": name},
{"mmwavecli_cfg": path},
{"data_port": data_port},
{"data_rate": data_rate}
{"data_rate": data_rate},
{"frame_id": "ti_mmwave_0"},
{"max_allowed_elevation_angle_deg": 90},
{"max_allowed_azimuth_angle_deg": 90}
]
),
Node(

View File

@@ -406,14 +406,18 @@ void *DataUARTHandler::sortIncomingData(void)
//get number of objects
memcpy( &mmwData.numObjOut, &currentBufp->at(currentDatap), sizeof(mmwData.numObjOut));
currentDatap += ( sizeof(mmwData.numObjOut) );
//RCLCPP_INFO(rclcpp::get_logger("rclcpp"),"mmwData.numObjOut = %i", mmwData.numObjOut);
//get xyzQFormat
memcpy( &mmwData.xyzQFormat, &currentBufp->at(currentDatap), sizeof(mmwData.xyzQFormat));
currentDatap += ( sizeof(mmwData.xyzQFormat) );
//RCLCPP_INFO(rclcpp::get_logger("rclcpp"),"mmwData.xyzQFormat = %d", mmwData.xyzQFormat);
}
else // SDK version is at least 3.x
{
mmwData.numObjOut = mmwData.header.numDetectedObj;
//RCLCPP_INFO(rclcpp::get_logger("rclcpp"),"mmwData.numObjOut = %i", mmwData.numObjOut);
}
RScan->header.frame_id = frameID;
@@ -517,6 +521,11 @@ void *DataUARTHandler::sortIncomingData(void)
memcpy( &mmwData.newObjOut.velocity, &currentBufp->at(currentDatap), sizeof(mmwData.newObjOut.velocity));
currentDatap += ( sizeof(mmwData.newObjOut.velocity) );
//RCLCPP_INFO(rclcpp::get_logger("rclcpp"),"mmwData.objOut.x = %f", mmwData.newObjOut.x);
//RCLCPP_INFO(rclcpp::get_logger("rclcpp"),"mmwData.objOut.y = %f", mmwData.newObjOut.y);
//RCLCPP_INFO(rclcpp::get_logger("rclcpp"),"mmwData.objOut.z = %f", mmwData.newObjOut.z);
//RCLCPP_INFO(rclcpp::get_logger("rclcpp"),"mmwData.objOut.velocity = %f", mmwData.newObjOut.velocity);
// Map mmWave sensor coordinates to ROS coordinate system
RScan->points[i].x = mmwData.newObjOut.y; // ROS standard coordinate system X-axis is forward which is the mmWave sensor Y-axis
RScan->points[i].y = -mmwData.newObjOut.x; // ROS standard coordinate system Y-axis is left which is the mmWave sensor -(X-axis)