Giter Site home page Giter Site logo

distributed-planning's Introduction

Distributed Planning Assignment and Grand Challenge

16.412 final project

Assignment

The student-facing Jupyter notebook for the Advanced Lecture/mini pset assignment, as well as its solutions, live in ./assignment. See ./assignment/README.md for more information.

Grand Challenge

Features and Functionality

This repository includes implementations of RRT*, DMA-RRT, and unique extensions of the original DMA-RRT algorithm to better perform distributed goal selection. The system is comprised of discrete agents and auxiliary nodes. Agents represent robots in the simulation and are self-contained.

The agents can be found in the source directory. For the basic DMA-RRT agent (which is the base class of all agent types), see agent_dmarrt.py. Agents perform their core functions in the spin_once() method, which is run on a fixed timer.

In the agent_params file, you may specify the parameters associated with each agent in the simulation. This includes RRT* initialization parameters, spin rates, and starting/goal positions.

There are several provided maps for visualization in the maps directory. You may use any of these by changing the map argument in the launch files.

The launch files in the launch directory are the main point of entry for running simulations. See more information in the Execution subsection below.

System Architecture

Each simulation requires a map, which is a shared environment in which the agents operate, and several agents. You can have as many agents as you want, but note that if running the system on one computer there will be heavy computation loads with large numbers of agents.

Agents can be heterogeneous or homogeneous. This is reflected both in their parameters, which can vary easily, and in which classes of agents are used.

Finally, some of the simulations will require auxiliary nodes such as goal-updaters. These serve mainly to inject new goal points into the system for the agents to add to their queues and/or claim.

Development

See instructions on accessing the VM.

Dependencies

  • ROS Kinetic on Ubuntu 16.04
  • Python 2.7, which should be installed as python by default on Ubuntu 16.04
    • The class VM already has numpy and matplotlib installed

Installation

You need the following dependencies:

sudo apt-get install python-wstool python-catkin-tools ros-kinetic-map-server

Make sure your ROS environment is set up.

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
git clone [email protected]:cameronp/distributed-planning

cd ~/catkin_ws
catkin init
cd src

wstool init
wstool merge distributed-planning/install/distributed_planning.rosinstall
wstool update

cd ../
catkin build
source devel/setup.bash

Once your environment is set up, you should still do the following before pushing/merging anything, to make sure the build isn't broken:

catkin clean -y
catkin build
source devel/setup.bash

Execution

We recommend using roslaunch. We have a launch file in the launch folder for each successful variation of agent, listed below. The altruistic agents were never fully debugged, so we do not recommend running that launch file.

roslaunch distributed_planning basic_agents.launch
roslaunch distributed_planning continuation_agents.launch
roslaunch distributed_planning euclidean_agents.launch
roslaunch distributed_planning reward_agents.launch

To visualize, use the provided RVIZ config:

roscd distributed_planning
rviz -d rviz/config.rviz

distributed-planning's People

Contributors

cameronwp avatar marcusabate avatar n-thumma avatar

Watchers

James Cloos avatar Eric Timmons avatar Cyrus Huang avatar Tanya Smith avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.