Main workspace for my project done at [Simons Summer Research Program] (http://www.stonybrook.edu/simons/).
See the poster for summary of the project.
As the project uses latest ROS distribution (kinetic), and latest Gazebo simulator built from source code, many ROS packages used by the project are either unavailable in binary form or incompatible with the new Gazebo during the time frame of the project. This workspace serves as a holding area that includes many other components as git submodules. Note some of these submodule may be removed once they are available in compatible binary form
First of all, the simulation framework is made revolving around three different components. ROS, Gazebo, Menge. Before using this tool it’s best to have at least basic knowledge of each of those components by following tutorials/instructions linked below:
All launch files are stored inside the catkin_ws/src/menge_gazebo/menge_hector_quadrotor_demo/launch directory; two examples have already been included. The world launch files are located in the catkin_ws/src/menge_gazebo/menge_gazebo_worlds/launch/ directory.
Create a ROS package with the name of your plugin. Copy and paste the contents of one of the example plugins in the workspace (maybe menge_plugin_randomized), and change naming and Cmake files appropriately. Then, add personalized code to the main plugin class (In the randomized plugin case, MengeRand.cpp). This plugin should handle inserting crowd agents and updating the crowd position and handing the quadcoper position to the Menge simulator, as well as any special instances like where one agent does not use and actor model but a simple cylinder.
For now, obstacles and buildings need to be specified in both menge and gazebo xml files. The gazebo world files are located in catkin_ws/src/menge_gazebo/menge_gazebo_worlds/worlds, while obstacles are stored in the scene specification xml (nameS.xml) for each scenario in the Menge/examples/core/ directory. When creating the gazebo world file make sure you link the correct plugin library to the scene. For example, in the case of menge_rand.world, I have specified the library of menge_plugin_randomized in the world file. All agent parameters such as personal space or mass or turning bias, as well as the quantity and spawn formation of crowds are specified in the scene xml files of each scenario, while crowd behavior, transitions, states, and goalsets are specified in the behavior xml files (nameB.xml) of each scenario. All of these xml files are located in the Menge/examples/core/ directory.
Once all launch files, plugin code, menge specifications have been completed and built, roslaunch menge_hector_quadrotor_demo yourlaunchfile.launch in the catkin_ws directory.