DROW detector

This is the DROW detector package (http://arxiv.org/abs/1603.02636). Given a laser scan it will detect two types of mobility aids and publish these as a pose array.

As input only a laser scan is needed (of type LaserScan). Currently there are three output topics (all of type PoseArray), two class specific ones for wheelchairs and walkers and one class agnostic one, that summarizes both topics. Our pretrained model was trained based on a Laser scanner with a field of view of 225 degrees and an angular resolution of 0.5 degrees at a height of ~37cm. The model will generalize to different field of views and should be robust to slight height deviations. In order to apply it to different angular resolutions or completely different heights you will need to train it on your own data though. See the paper for further info.

Params

  • laser_topic default: /scan the input laser scan.
  • wheelchair_detection_topic default: /wheelchair_detections the topics wheelchair detections will be published on.
  • walker_detection_topic default: /walker_detections the topics walker detections will be published on.
  • class_agnostic_detection_topic default: /mobility_aid_detections the topic where both types of mobility aid detections will be published to jointly.
  • threshold default: 0.5 the detection threshold. This will increase the precision at the cost of recall and vice versa.
  • use_cudnn, default: false determines if we force cudnn for the convolutions. With is faster, but harder to setup. (see dependencies)
  • network_param_file no default, the path to the network parameter file.

Dependencies

Running the detector

In order to run the detector, make sure all dependencies are installed and download the network model from our server. * $ roscd wheelchair_detector * $ cd scripts * $ sh get_network_parameter_file.sh The launch file is configured in such a way that it will look for the network in the resources folder, but you can put it anywhere you like it to be as long as you change the launch file accordingly.

In order to launch the node, you will need to provide the theano flags: * $ THEANO_FLAGS='cuda.root=/usr/local/cuda/,floatX=float32,device=gpu0' roslaunch wheelchair_detector drow.launch If you have cuda somewhere else, make sure to adapt the flag. All of these can also be set in a theano config once instead.

TODO

  • Make the voting parameters public. This is especially important for lasers with a larger FoV.
  • Add a project page with training code, data, etc.
  • Change the name to DROW?

Original page: https://github.com/strands-project/strands_perception_people/blob/indigo-devel/wheelchair_detector/README.md