Skip to content
jacobkingery edited this page Dec 18, 2015 · 15 revisions

Welcome to project_polygon!

In a month and a half, we created a robotic swarm in which each individual agent moves to represent the vertex of a regular polygon whose number of sides equals the number of swarm agents.

VIDEO: NEATOS FORM POLYGON VERTICES

objective

In this project, our final for the course Computational Robotics, we explored swarming behavior and built upon prior knowledge to delve more into localization and the ROS framework. Here were a couple of swarming behavior inspirations: example 1, example 2.

Our swarm agents were modified Neato robots outfitted with Raspberry Pis and cameras.

Process overview

Summary of steps we took to accomplish this project:

  1. Figured out ways to connect to multiple robots, subscribe, and publish to multiple robots.

  2. Researched algorithms and found a paper by Lorenzo Sabattini, Cristian Secchi, and Cesare Fantuzzi: Arbitrarily shaped formations of mobile robots: artificial potential fields and coordinate transformation. The paper perfectly aligns with our goal: forming polygon with robots.

  3. Created a simulation using matplotlib using the helpful equations from the paper. Although this simulation is not exactly the same as in the real world, it was helpful in verifying that we correctly translated the math into code.

  4. Figured out how to convert the mathematical model to differential drive command velocities.

  5. Figured out how to create multiple robots in Gazebo and simulated polygon formation behavior.

  6. Tested polygon formation behavior with real robots using odometry for localization.

  7. Modified ar_pose to localize robots in a common reference frame with AR markers.

  8. Tested polygon formation behavior with real robots using ar_pose for localization.

  9. Tuned parameters to improve behavior.