Max Polzin
Keyanna Coghlan
Sami Nassif-Lachapelle
This project uses deep learning models to search for objects inside indoor spaces.
The system consists of three main components:
- A object detector using version of YOLACT
- A custom "room detector" that takes in detected objects infers the room labels for the current position of the robot
- A filter and mappings system that better defines the boundaries of each room
- A path planner that creates a route to the most likely room that a desired object may be found in
- Clone this repository
- Install ROS 20.04 Noetic
- Install Python 3.8.5 and Pip 20.0.2 or greater
- Install the Intel RealSense SDK Python wrapper with the following command: "pip install pyrealsense2"
- Install the Intel RealSense ROS wrapper
- Open a terminal and cd into the "support_scripts/ros_scripts" folder.
- Run: "bash run_cameras.sh"
This will allow the cameras to start collecting data to generate a map. - Stop the first bash script and run: "bash run_rosbag.sh && export_data.sh"
This will bag the data and export the pose data. Make sure the data is then stored in the relevant folders under "/dataset/" such as "images", "maps", and "poses". \
- Open a terminal
- Run: "semantic_mapping_system.py"
This will return the current room for each frame found in "dataset/images". The functions in "map_generation.py" are used to correlate each detected room for each frame to aproximate locations based on the pose data from the cameras, which is found in "dataset/poses".
- Open a terminal
2: Run: "object_retrieval_system.py"
This will prompt you for a object label, type your desired object in the terminal (e.g. "cup"). If the object is detected in the collected images the frame with the object will be displayed. Another prompt will be given in the terminal, respond with yes or no to let the system know if the correct object was detected.
Once the correct object has been found a path with be plotted using the functions in "path_planner.py" and the path will be displayed on top of the map that is found in "dataset/map".
-
map_generation: Folder containing .py files needed for the mapping tasks.
-
object_detection: Folder containing .py files needed for the object detection tasks. Additionally the files and weights used for YOLACT are stored in a subfolder here.
-
path_planner: Folder containing .py files needed for the path planning tasks.
-
room_detection: Folder containing .py files which define the functions needed for the room detection and estimation tasks.
-
support_scripts: Folder containing bash scripts used to execute ROS code to capture data as well as .py files with functions used in other parts of the system.
-
dataset: Folder containing sample data to test the system, this is also where collected data should be stored when using the system.
-
models: Folder containing everything related to the custom DL models used in this system.
- data_processors: Folder to scripts to clean and modify raw data used to train the custom ML models (e.g. convert MIT dataset to a usable format)
- nn_room_detector: Folder containing the weights and architecture of the custom room detector neural network.
- trained_data: Folder containing .pkl files relating to the datasets used to train the custom room detector, such as a list of unique objects that the detector can take as inputs.
- Various .ipynb notebook files used to define, train, and validate the custom DL models used in this system.