strands-project / strands_perception_people

long-term detection, tracking and recognition of people
96 stars 70 forks source link

NaN values cause it to hang #150

Closed pet1330 closed 9 years ago

pet1330 commented 9 years ago

The Node crashes or hangs when the input pose contains NaN values.

cdondrup commented 9 years ago

The bayes_people_tracker that is. What contains NaN values? The poses? Or the Array of Poses? Do you have an example?

pet1330 commented 9 years ago

When the PeopleTracker::detectorCallback function is called, and the PoseArray contains a pose which is nan, then it errors.

The debug log contains this:

[DEBUG] [1426525772.305253109]: Service client [/rosservice] wants service [/bayes_people_tracker/set_logger_level] with md5sum [*]
[DEBUG] [1426525772.305651017]: Socket [13] received 0/4 bytes, closing
[DEBUG] [1426525772.305687300]: TCP socket [13] closed
[DEBUG] [1426525772.305703305]: Connection::drop(0)
[DEBUG] [1426525772.305717662]: Connection::drop(2)
[DEBUG] [1426525772.305737344]: Connection::drop(2)
[DEBUG] [1426525772.306323074]: Accepted connection on socket [6], new socket [13]
[DEBUG] [1426525772.306352129]: Adding tcp socket [13] to pollset
[DEBUG] [1426525772.306371806]: TCPROS received a connection from [127.0.0.1:35133]
[DEBUG] [1426525772.306410833]: Connection: Creating ServiceClientLink for service [/bayes_people_tracker/set_logger_level] connected to [callerid=[/rqt_gui_py_node_32371] address=[TCPROS connection to [127.0.0.1:35133 on socket 13]]]
[DEBUG] [1426525772.306431300]: Service client [/rqt_gui_py_node_32371] wants service [/bayes_people_tracker/set_logger_level] with md5sum [51da076440d78ca1684d36c868df61ea]
[DEBUG] [1426525773.238093669]: Connection::drop(2)
[DEBUG] [1426525773.238138756]: TCP socket [13] closed
[DEBUG] [1426525773.238156096]: Connection::drop(0)
[DEBUG] [1426525773.238174531]: Connection::drop(2)
[DEBUG] [1426525773.238189294]: Connection::drop(2)

It doesn't hang on the callback containing NaN, but after the following callback. I output some of the numbers to show this: (robotTF is the same pose after the tf lookup)

Array Input: 
0: 
position: 
  x: -0.240404
  y: 0.00727299
  z: 0.938131
orientation: 
  x: 0
  y: 0
  z: 0
  w: 1

robotTF: 
position: 
  x: -0.0857869
  y: -0.0353511
  z: 0.0416829
orientation: 
  x: 0.908611
  y: 0.225921
  z: -0.0703102
  w: -0.344154

1: 
position: 
  x: -0.0183288
  y: -0.126336
  z: 1.01322
orientation: 
  x: 0
  y: 0
  z: 0
  w: 1

robotTF: 
position: 
  x: 0.0417659
  y: 0.199463
  z: 0.0790897
orientation: 
  x: 0.908611
  y: 0.225921
  z: -0.0703102
  w: -0.344154

Array Input: 
0: 
position: 
  x: -0.112209
  y: -0.0640408
  z: 0.917959
orientation: 
  x: 0
  y: 0
  z: 0
  w: 1

robotTF: 
position: 
  x: 0.0315212
  y: 0.338484
  z: 0.0724725
orientation: 
  x: 0.271619
  y: 0.903436
  z: -0.306856
  w: -0.125961

1: 
position: 
  x: -nan
  y: -nan
  z: -nan
orientation: 
  x: 0
  y: 0
  z: 0
  w: 1

robotTF: 
position: 
  x: -nan
  y: -nan
  z: -nan
orientation: 
  x: 0.271619
  y: 0.903436
  z: -0.306856
  w: -0.125961

Array Input: 
0: 
position: 
  x: -0.241497
  y: 0.00732924
  z: 0.941793
orientation: 
  x: 0
  y: 0
  z: 0
  w: 1

robotTF: 
position: 
  x: -0.0877744
  y: -0.033716
  z: 0.0388573
orientation: 
  x: 0.908611
  y: 0.225921
  z: -0.0703102
  w: -0.344154

1: 
position: 
  x: -0.0184654
  y: -0.125858
  z: 1.00952
orientation: 
  x: 0
  y: 0
  z: 0
  w: 1

robotTF: 
position: 
  x: 0.042866
  y: 0.196887
  z: 0.0815587
orientation: 
  x: 0.908611
  y: 0.225921
  z: -0.0703102
  w: -0.344154
cdondrup commented 9 years ago

We agreed that a detector should not publish nan values in the first place. Will be solved at a different place. Closing for now. Please re-open if you disagree.