This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

IWR6843ISK: ROS PEOPLE COUNTING DETECT POINTS AFTER MOVEMENT STOPS

Part Number: IWR6843ISK
Other Parts Discussed in Thread: MMWAVEICBOOST, ,

Hello,

On using the people counting tracking ROS, I get a point cloud that does not disappear totally after the person stopped moving and I also get these warnings 

[ WARN] [1687719085.502730928]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719085.564778972]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719085.607364351]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719085.667396534]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719085.727788357]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719085.772505433]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719085.832161777]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719085.892081510]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719085.937377604]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719085.997587706]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719086.057258217]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719086.102761293]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719086.162463055]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719086.222125493]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719086.267197261]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719086.328512222]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719086.387610434]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719086.432064120]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719086.492570372]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719086.552409219]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719086.599482265]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719086.657866612]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719086.717423840]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719086.762638683]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719086.823155248]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719086.882049707]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719086.927451427]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719086.987744759]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719087.047480376]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719087.092766990]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719087.152617035]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719087.212874273]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719087.257754476]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719087.317952495]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719087.377267532]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719087.422036848]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
[ WARN] [1687719087.484720891]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
QObject::connect: Cannot queue arguments of type 'QVector<int>'
(Make sure 'QVector<int>' is registered using qRegisterMetaType().)
QObject::connect: Cannot queue arguments of type 'QVector<int>'
(Make sure 'QVector<int>' is registered using qRegisterMetaType().)
^C[rviz-5] killing on exit


as in the video below

  • Hello,

    It seems that PointCloud2 is not updating when there are no points coming in and for some reason not clearing the points that once did exist. What version of ROS was this done with and with what launch file? The problem seems to be on the ROS end and not the mmWave Sensor end. You could confirm this via using the Industrial Visualizer that can be downloaded in the Radar Toolbox on TI Resource Explorer.

    https://dev.ti.com/tirex/explore/node?a=1AslXXD__1.10.00.13&node=A__AP5GcU3TNQear.Zm3pCcTA__radar_toolbox__1AslXXD__LATEST

    This visualizer does work with Ubuntu/Linux, you just have to make the COM port equal to either ttyACM0 or ttyUSB0 depending on your setup.

    Best Regards,

    Pedrhom

  • hello,

    thanks for the reply

    Am using ROS Melodic and ROS driver v2.2 tracker 

    Best Regards 

    Abdullah

  • Hello Abdullah,

    Which launch file and CFG are you using? I have never seen this behavior. Are all your ROS packages up to date? You could do a check via apt commands

    Best Regards,

    Pedrhom

  • hello Pedrhom 

    thanks for the reply 

    well I hadv use the follow cfg file 

    % SDK Parameters
    % See the SDK user's guide for more information
    % "C:\ti\mmwave_sdk_[VER]\docs\mmwave_sdk_user_guide.pdf"
    % *****************SENSOR RESET*********************
    sensorStop
    flushCfg
    % *****************STANDARD MMWAVE SDK COMMANDS******************
    dfeDataOutputMode 1
    channelCfg 15 7 0
    adcCfg 2 1
    adcbufCfg -1 0 1 1 1
    lowPower 0 0

    % Radar and Point Cloud Detection Layer Parameters
    % See the Detection Layer Tuning Guide for more information
    % "C:\ti\mmwave_industrial_toolbox_[VER]\labs\people_counting\docs\3D_people_counting_detection_layer_tuning_guide.pdf"
    profileCfg 0 60.75 30.00 25.00 59.10 657930 0 54.71 1 96 2950.00 2 1 36
    chirpCfg 0 0 0 0 0 0 0 1
    chirpCfg 1 1 0 0 0 0 0 2
    chirpCfg 2 2 0 0 0 0 0 4
    frameCfg 0 2 96 0 50.0 1 0
    % *************DETECTION LAYER PARAMETERS ***********************
    dynamicRACfarCfg -1 4 4 2 2 8 12 4 12 10.00 8.00 0.40 1 1
    staticRACfarCfg -1 6 2 2 2 8 8 6 4 8.00 15.00 0.30 0 0
    dynamicRangeAngleCfg -1 0.75 0.0010 1 0
    dynamic2DAngleCfg -1 3 0.0300 1 0 1 0.30 0.85 8.00
    staticRangeAngleCfg -1 0 8 8
    % ************* BOARD REALTED PARAMETERS ************************
    antGeometry0 0 0 -1 -1 -2 -2 -3 -3 -2 -2 -3 -3
    antGeometry1 0 -1 -1 0 0 -1 -1 0 -2 -3 -3 -2
    antPhaseRot 1 -1 -1 1 1 -1 -1 1 1 -1 -1 1
    fovCfg -1 70.0 10.0
    compRangeBiasAndRxChanPhase 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0

    % Tracker Layer Parameters
    % See the Tracking Layer Tuning Guide for more information
    % "C:\ti\mmwave_industrial_toolbox_[VER]\labs\people_counting\docs\3D_people_counting_tracker_layer_tuning_guide.pdf"

    % ************* TRACKING LAYER PARATMETERS **********************
    staticBoundaryBox -1.8 1.8 0.4 7.8 -0.2 1.8
    boundaryBox -2 2 0.5 8 0 2
    sensorPosition 2 0 15
    gatingParam 3 2 2 2 10
    stateParam 10 5 5 50 1 600
    allocationParam 20 100 0.1 20 2 2
    maxAcceleration 0.1 0.1 0.1
    trackingCfg 1 2 250 10 20 260 94
    presenceBoundaryBox -4 4 0.5 6 0 3
    % *****************SENSOR START*********************
    sensorStart
    and the following launch file 
    <!--
      This file will launch rViz along with the mmWave sensor node and configure a TI mmWave 6843 sensor using a 3D config
     -->
    
    <launch>
    
      <!-- Input arguments -->
      <arg name="device" value="6843" doc="TI mmWave sensor device type [1443, 1642]"/>
      <arg name="config" value="3d_Tracking" doc="TI mmWave sensor device configuration [3d_best_range_res (not supported by 1642 EVM), 2d_best_range_res]"/>
      <arg name="max_allowed_elevation_angle_deg" default="90" doc="Maximum allowed elevation angle in degrees for detected object data [0 > value >= 90]}"/>
      <arg name="max_allowed_azimuth_angle_deg" default="90" doc="Maximum allowed azimuth angle in degrees for detected object data [0 > value >= 90]}"/>
    
      <!-- mmWave_Manager node -->
      <node pkg="ti_mmwave_tracker_rospkg" type="ti_mmwave_tracker_rospkg" name="ti_mmwave" ns="radar_1" output="screen">
        <param name="command_port" value="/dev/ttyUSB0"  />
        <param name="command_rate" value="115200"   />
        <param name="data_port" value="/dev/ttyUSB1"  />
        <param name="data_rate" value="921600"   />
        <param name="max_allowed_elevation_angle_deg" value="$(arg max_allowed_elevation_angle_deg)"   />
        <param name="max_allowed_azimuth_angle_deg" value="$(arg max_allowed_azimuth_angle_deg)"   />
        <param name="frame_id" value="ti_mmwave_1"/>
        <param name="mmWaveCLI_name" value="/mmWaveCLI" />
        <remap from="/ti_mmwave/radar_scan_pcl" to="/ti_mmwave/radar_scan_pcl_1"/>
      </node>
    
      <!-- mmWaveQuickConfig node (terminates after configuring mmWave sensor) -->
      <node pkg="ti_mmwave_tracker_rospkg" type="mmWaveQuickConfigTracker" name="ti_mmwave_config" ns="radar_1" args="$(find ti_mmwave_tracker_rospkg)/cfg/AOP_3d_Tracking.cfg" output="screen" >
        <param name="mmWaveCLI_name" value="/mmWaveCLI" />
      </node>
    
      <node pkg="tf" type="static_transform_publisher" name="radar_baselink_1" args="5 0 0 0 0 0 ti_mmwave_pcl ti_mmwave_1 100"/>
    
      <node pkg="rviz" type="rviz" name="rviz" args="-d$(find ti_mmwave_tracker_rospkg)/launch/rviz/ti_mmwave_multi.rviz"/>
    
    </launch> 

    we also get the following warning


    [ INFO] [1689023519.026532859]: DataUARTHandler Read Thread: Failed to open Data serial port with error: IO Exception (16): Device or resource busy,
    file /home/hm/mmwave_ti_ros/ros_driver/src/serial/src/impl/unix.cc, line 151.
    [ INFO] [1689023519.027232400]: DataUARTHandler Read Thread: Waiting 20 seconds before trying again...
    [radar_1/ti_mmwave_config-3] process has finished cleanly
    log file: /home/hm/.ros/log/646696ce-1f66-11ee-9dcf-48b02d51f7aa/radar_1-ti_mmwave_config-3*.log
    [ WARN] [1689023539.132992124]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
    [ WARN] [1689023539.177295314]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
    [ WARN] [1689023539.222622269]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
    [ WARN] [1689023539.282323337]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
    [ WARN] [1689023564.783241889]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
    [ WARN] [1689023564.827874304]: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
    QObject::connect: Cannot queue arguments of type 'QVector<int>'
    (Make sure 'QVector<int>' is registered using qRegisterMetaType().)
    QObject::connect: Cannot queue arguments of type 'QVector<int>'
    (Make sure 'QVector<int>' is registered using qRegisterMetaType().)
    ^C[rviz-5] killing on exit
    [radar_1/ti_mmwave-2] killing on exit
    [radar_baselink_1-4] killing on exit
    [rosout-1] killing on exit
    [master] killing on exit
    shutting down processing monitor...
    ... shutting down processing monitor complete



    the system continue to provide the same result
  • Hello,

    "[ INFO] [1689023519.026532859]: DataUARTHandler Read Thread: Failed to open Data serial port with error: IO Exception (16): Device or resource busy,
    file /home/hm/mmwave_ti_ros/ros_driver/src/serial/src/impl/unix.cc, line 151."

    This line usually means that the port is either being held by another application or that the port mentioned is incorrect.

    When you use "ll /dev/" does ttyUSB0 and ttyUSB1 show up here? I imagine it should as it seems you were getting a point cloud output earlier. Is this line only printed when the point cloud is not outputting anything?

    Best Regards,

    Pedrhom

  • hello 

    thanks for the response 

    well we have successful launching and getting pointcloud but we keep getting a single pointcloud when there is no moving object 

    note the configuration file was test using the visualizer as we faced the same challenge as shown in our previous video 

    sorry for the late response it is due to the website not responding 

    regards 

    Abdullah

  • Hello Abdullah,

    Can you confirm if this also happens when using the small_obstacle_detection_68xx.bin and non-tracking version of the ROS driver?

    Best Regards,

    Pedrhom

  • hello Pedrhom

    this has been done but we had the following result above!!!!

  • We flashed with 3d_people_counting binary in the tracking ros bin folder
    And test it With AOP_3d_tracking.cfg

    It works (see the first attached video) but we have noise, and there are some points that still appear when no one in the field of view.

  • Hello,

    This is a different case now and involves Radar tuning.

    First off you have a 6843ISK correct? The 6843AOP EVM has a different antenna pattern than the ISK. This means that the calculations done for the point cloud will be incorrect due to the mismatch of antenna calculations. Use the ISK_3d_Tracking in mmwave_ti_ros\ros_driver\src\ti_mmwave_rospkg\cfg or at least grab the following lines as it is needed for ISK and overwrite the ones in the AOP config.

    antGeometry0 0 -1 -2 -3 -2 -3 -4 -5 -4 -5 -6 -7
    antGeometry1 -1 -1 -1 -1 0 0 0 0 -1 -1 -1 -1
    antPhaseRot 1 1 1 1 1 1 1 1 1 1 1 1

    The sensor also seems to be too sensitive for the environment it is in. You can change this behavior by turning down the SNR CFAR thresholds within the dynamicRACfarCfg and staticRACfarCfg. For more details on those two parameters and which value is the threshold one, check the detection layer tuning guide below.

    https://dev.ti.com/tirex/explore/node?a=1AslXXD__1.10.00.13&node=A__AIQPG9x7K34A8l4ZELgznA__radar_toolbox__1AslXXD__1.10.00.13

    Best Regards,

    Pedrhom Nafisi

  • Hello Pedrhom,

    I used Device:

    IWR6843ISK-ODS + MMWAVEICBOOST

    We used the geometry values of ODS but then I used ISK which you suggested I got this ( see the attached file)

  • If you have a IWR6843ISK-ODS then you must use the IWR6843ISK-ODS antenna geometry 

    antGeometry0 -1 -1 0 0 -3 -3 -2 -2 -1 -1 0 0
    antGeometry1 -1 0 -1 0 -3 -2 -3 -2 -3 -2 -3 -2
    antPhaseRot 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1

    Best Regards,

    Pedrhom

  • Hello Pedrhom

    Thank you for your response,I changed according to your suggestion and I got this performance ( see the attached video). Could I check with you if I on the right way and what can I adjust to get the best thing

    because the performance of the first reply was better

    % SDK Parameters
    % See the SDK user's guide for more information
    % "C:\ti\mmwave_sdk_[VER]\docs\mmwave_sdk_user_guide.pdf"
    % *****************SENSOR RESET*********************
    sensorStop
    flushCfg
    % *****************STANDARD MMWAVE SDK COMMANDS******************
    dfeDataOutputMode 1
    channelCfg 15 7 0
    adcCfg 2 1
    adcbufCfg -1 0 1 1 1
    lowPower 0 0

    % Radar and Point Cloud Detection Layer Parameters
    % See the Detection Layer Tuning Guide for more information
    % "C:\ti\mmwave_industrial_toolbox_[VER]\labs\people_counting\docs\3D_people_counting_detection_layer_tuning_guide.pdf"
    profileCfg 0 60.75 30 25 59.1 657930 0 54.71 1 96 2950 2 1 36
    chirpCfg 0 0 0 0 0 0 0 1
    chirpCfg 1 1 0 0 0 0 0 2
    chirpCfg 2 2 0 0 0 0 0 4
    frameCfg 0 2 96 0 55 1 0
    % *************DETECTION LAYER PARAMETERS ***********************
    dynamicRangeAngleCfg -1 0.75 0.0010 1 0
    dynamicRACfarCfg -1 4 4 2 2 8 12 4 8 5.00 8.00 0.40 1 1
    dynamic2DAngleCfg -1 3 0.0300 1 0 1 0.50 0.85 8.00
    staticRangeAngleCfg -1 0 8 2
    staticRACfarCfg -1 6 2 2 2 8 8 6 4 8.00 15.00 0.30 0 0
    % ************* BOARD REALTED PARAMETERS ************************
    antGeometry0 -1 -1 0 0 -3 -3 -2 -2 -1 -1 0 0
    antGeometry1 -1 0 -1 0 -3 -2 -3 -2 -3 -2 -3 -2
    antPhaseRot 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1
    fovCfg -1 70.0 20.0
    compRangeBiasAndRxChanPhase 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
    % Tracker Layer Parameters
    % See the Tracking Layer Tuning Guide for more information
    % "C:\ti\mmwave_industrial_toolbox_[VER]\labs\people_counting\docs\3D_people_counting_tracker_layer_tuning_guide.pdf"
    % ************* TRACKING LAYER PARATMETERS **********************
    staticBoundaryBox -3 3 1 6 0 3
    boundaryBox -4 4 0 8 0 3
    sensorPosition 2 0 15
    gatingParam 3 2 2 2 4
    stateParam 3 3 6 500 5 6000
    allocationParam 40 100 0.1 20 0.5 20
    maxAcceleration 0.1 0.1 0.1
    presenceBoundaryBox -4 4 -4 4 0.5 2.5
    trackingCfg 1 2 800 20 46 96 55
    % *****************SENSOR START*********************
    sensorStart
  • Hello,

    You should play around with the CFAR thresholds found in the dynamicRACfarCfg and staticRACfarCfg parameters. Think of this value as "sensitivity" where a lower value is more sensitive and higher value is less sensitive. Try increasing them to reduce noise. More details on the parameters can be found in the 3D_people_counting_detection_layer_tuning_guide.pdf

  • Hello Pedrhom,

    Thank you for your cooperation.

    Actually, I haven't found the radar tune yet, but I have a question regarding the document (3D_people_counting_detection_layer_tuning_guide.pdf - page 42). Which Chirp Cfg values should be used for IWR6843ISK-ODS?

    Since we are using the IWR6843ISK-ODS antenna geometry:
    antGeometry0 -1 -1 0 0 -3 -3 -2 -2 -1 -1 0 0
    antGeometry1 -1 0 -1 0 -3 -2 -3 -2 -3 -2 -3 -2
    antPhaseRot 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1

    Are there any other parameters that will be different based on (IWR6843ISK-ODS) when we follow the guide of the document setup?

    Thank you.

  • Hello,

    There is no difference between IWR6843ISK and IWR6843ISK-ODS outside of the antenna pattern and geometry. Those lines you sent will be the only thing needed to be different.

    Best Regards,

    Pedrhom Nafisi