Project

In this page is possible to obtain the code implementation from GitHub regarding such project. In the following lines I am going to give details about the shared files.

Hierarchical view

  • Depth Module:
    • distance_measurements.py = it extracts the distance of the framed subject;
    • obstacle_localization.py = it extracts the portions of image where close obstacles reside.
  • Detection Module:
    • detection.py = given path to the SVM models, it performs detection on the input image;
    • non-maxima-sup.py = it deletes overlapping detections (caused by similar images obtained via Sliding Window).
    • SVM Models:
      • real-diag-handle-hog-sqrt-pyr.pkl = HOG-descriptor based classifier for recognizing door handles;
      • real-diag-handle-pyr.pkl = PCA-vectors based classifier for recognizing door handles of the DIAG department of Sapienza university;
      • real-human-legs-side-hog-sqrt-pyr.pkl = HOG-descriptor based classifier for recognizing human legs;
      • sun-floor-depth.pkl = depth image based classifier that recognizes sun projected on the floor.
  • Image Retriever:
    • saver.py = it acquires images in a ROS system and save them in a specified path with name "my_image<i>.png" where <i> is an incremental integer that starts from zero.
  • Preprocessing and training:
    • data-augmentation.py = it creates training instances from the image already existent;
    • generate-labels.py = it generates a "labels.txt" file where in every line there is the label of the correspondent image in the folder;
    • training.py = it trains a SVM model with the images present in the same folder.
  • Test Folder:
    • test.py = test the SVM model created on stored images.
    • Simulated Navigation:
      • depth-listener.py = a ROS node that processes depth images obtained through the camera in order to not collide with anything and enable the detection module;
      • navigate_sim.py = a ROS node that takes care of the Twist messages sent to the topic "/cmd_vel" in order to make the robot move, and it is the bridge from depth-listener to rgb-listener nodes.
      • rgb-listener.py = a ROS node that analyzes and recognizes obstacles or people in the image and issues the correspondent actions to undertake.