Skip to content

AutoAPMS/auto_apms_simulation

Repository files navigation

auto_apms_simulation

This package wraps pyrobosim to create a visual demonstration of the mission architecture proposed by AutoAPMS.

Building from source

  1. Clone auto-apms and auto_apms_simulation into your workspace

    git clone https://github.com/AutoAPMS/auto-apms.git src/auto-apms
    git clone https://github.com/AutoAPMS/auto_apms_simulation.git src/auto_apms_simulation
  2. Install all required dependencies. We assume that you already installed ROS 2 on your system

    rosdep init  # Skip this if rosdep has already been initialized
    rosdep update
    rosdep install --from-paths src --ignore-src -y
  3. Manually install python dependencies and build the package

    python3 -m pip install -r src/auto_apms_simulation/requirements.txt --break-system-packages
    colcon build --packages-up-to auto_apms_simulation --symlink-install

Running the demo

  1. Run the less intelligent behavior first

    source install/setup.bash
    ros2 launch auto_apms_simulation pyrobosim_hogwarts_launch.py
    # Press Ctrl+C to quit

    The actions of each robot you've seen are executed using behavior trees. This functionality is provided by the auto_apms_behavior_tree package. However, each robot is acting independently and they are not aware of their environment. Yet.

  2. Now, we want to make the robots more intelligent and allow them to dynamically adjust their behavior when they encounter other robots inside one of the hallways. This is realized by implementing fallback mechanisms introduced by the auto_apms_mission package. To achieve that, add a launch argument

    source install/setup.bash
    ros2 launch auto_apms_simulation pyrobosim_hogwarts_launch.py mission:=true
    # Press Ctrl+C to quit

    The robots dynamically decide to retreat and wait until the hallway they are about to cross is not occupied anymore. They basically monitor if a certain event occurs and initialize a corresponding sequence of action if applicable. With this, we effectively introduced automatically orchestrated reactive behaviors.