Milestone 2
The Plan is to develop a modular robotic swarm system where a new robot can be added at any point during the process. The hardware and software used shall be open source and maintained at a low cost to allow for students and independent researchers to utilize our product
2.1 Project Plan
Simulate robotic swarm using ROS 2 using a combination of RViz and Gazebo software
Decide on the necessary electronic hardware required to run an autonomous robot that uses computer vision (central processor, motor controllers, camera, power supply, and encoders) while also remaining relatively cheap for an average user
Design a modular 3D printable chassis to hold the electronics
Create one (1) working version of the swarm robot to test the control software
Design a recognition system for robots to be see new robots being added to the swarm
Create three (3) additional robots to create a swarm
2.2 Concepts
Most of the concepts developed by the team can be divided into software, hardware, and swarm concepts. Regarding each section, the concepts are not so much unique and stand-alone ideas but combinations of different options for robot and system characteristics.
The concepts for the hardware within the robot (outside of the computer) were compared via price and functionality.
Software
Software
ROS1
ROS2
ROS1 + ROS2 Bridge
Docker
Proprietary
Communication Medium
Wi-Fi
Bluetooth
Hardware
Computer
Raspberry Pi 4
Arduino
Jetson Nano
Swarm
Swarm Type
Centralized
Decentralized
Position Sensing / Mapping
Motor Encoders
AprilTags
LIDAR
Computer Vision
Overhead Camera
Some common combinations that were brought up within the team were as follows:
Concept 1
Software: ROS2 and WiFi
Hardware: Raspberry Pi 4 or Arduino
Swarm: Centralized and Overhead Camera
Concept 2
Software: ROS2 and WiFi
Hardware: Raspberry Pi 4
Swarm: Decentralized and Computer Vision
Concept 3
Software: Docker and WiFi
Hardware: Raspberry Pi 4
Swarm: Decentralized and April Tags
2.3 Concept Selection
The third concept was chosen for the following reasons:
Docker provides more modularity in terms of ROS versions and memory allocation. Using Docker removes the hassle and hardware requirements required to download ROS onto each individual robot. Keeping a singular Docker container also means that each downloaded instance will be running the same software (ROS version and subsequent packages / addons)
Wi-Fi connection (from previous experiences) is more reliable than Bluetooth modules. Also, most schools / locations where these robots would be used would also most likely have Wi-Fi. Issues might arise depending on Wi-Fi security though
Raspberry Pi 4 was chosen since most of the team members had them already, and the Pi 4 can run Ubuntu 22.04. Arduino does not have enough processing power and also cannot download ROS. Jetson Nanos are simply too expensive for the scope of the project. Raspberry Pis are also quite common for hobby roboticists and schools
Decentralized swarm was chosen instead of centralized because the goal of this project is to provide a decentralized system
AprilTags were chosen as the main method of robot detection since they are easy to add to a robot and are computationally less expensive to recognize
2.4 Design
Simplified System Diagram
Robot Flowchart (Turning On)
Robot Flowchart (Swarm)
2.5 Analysis
Robot Hardware Specifications:
Raspberry Pi 4
Camera / Depth Sensor
Dual Channel Motor Controller
Two DC motors
Rotary Encoders
12v Rechargable LiPo battery
Accelerometer / IMU
Robot Software Specifications:
Ubuntu 22.04 Jammy Jellyfish
ROS 2 Humble Hawksbill
Custom Swarm Navigation Package
2.6 Test Plan
Software
Flash Raspberry Pis with Ubuntu 22.04 and ROS2 Humble for testing purposes
Develop ROS2 package for robot communicating over Wi-Fi
Integrate ROS2 package into Docker container
Run Docker container on Raspberry Pis
Hardware
Construct one (1) functioning robot
Control one (1) functioning robot over Wi-Fi from another Raspberry Pi
Construct the other three (3) robots
Control all robots over Wi-Fi using the Docker container developed previously
Tasks
Make 2D shapes using robots (triangle, square) depending on how many robots are connected to the swarm