{"id":15034904,"url":"https://github.com/shapelab/swarmui","last_synced_at":"2025-04-08T08:14:48.106Z","repository":{"id":65954889,"uuid":"63821245","full_name":"ShapeLab/SwarmUI","owner":"ShapeLab","description":"Necessary material to build and use Zooids to create Swarm User Interfaces","archived":false,"fork":false,"pushed_at":"2023-05-17T01:48:42.000Z","size":144720,"stargazers_count":1554,"open_issues_count":10,"forks_count":249,"subscribers_count":205,"default_branch":"master","last_synced_at":"2025-04-08T08:14:29.284Z","etag":null,"topics":["robot","swarm-uis","zooid"],"latest_commit_sha":null,"homepage":"http://shape.stanford.edu/research/swarm/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc-by-sa-4.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ShapeLab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-07-20T23:21:47.000Z","updated_at":"2025-04-06T13:12:44.000Z","dependencies_parsed_at":"2024-09-30T22:10:56.754Z","dependency_job_id":null,"html_url":"https://github.com/ShapeLab/SwarmUI","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShapeLab%2FSwarmUI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShapeLab%2FSwarmUI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShapeLab%2FSwarmUI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShapeLab%2FSwarmUI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ShapeLab","download_url":"https://codeload.github.com/ShapeLab/SwarmUI/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247801169,"owners_count":20998339,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["robot","swarm-uis","zooid"],"created_at":"2024-09-24T20:26:45.180Z","updated_at":"2025-04-08T08:14:48.088Z","avatar_url":"https://github.com/ShapeLab.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Zooids: Building Blocks for Swarm User Interfaces \\\\  Extended Material\n![Teaser](/Images/Teaser3.png)\nThis paper introduces swarm user interfaces, a new class of human-computer interfaces comprised of many autonomous\nrobots that handle both display and interaction. We describe the design of Zooids, an open-source open-hardware platform\nfor developing tabletop swarm interfaces. The platform consists of a collection of custom-designed wheeled micro\nrobots each 2.6 cm in diameter, a radio base-station, a highspeed DLP structured light projector for optical tracking, and\na software framework for application development and control. We illustrate the potential of tabletop swarm user interfaces\nthrough a set of application scenarios developed with Zooids, and discuss general design considerations unique to swarm user interfaces.\n\n[![IMAGE ALT TEXT](http://img.youtube.com/vi/ZVdAfDMP3m0/0.jpg)](http://www.youtube.com/watch?v=ZVdAfDMP3m0 \"Zooids: Building Blocks for Swarm User Interfaces\")\n\n\n## Hardware\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"Images/exploded.PNG\" alt=\"exploded\" width=\"400\"\u003e\n\u003c/p\u003e\n\nZooids are small custom-made robots as shown above; their dimensions are 26 mm in diameter, 21 mm in height\nand they weight about 12 g. Each robot is powered by a 100 mAh LiPo battery and uses motor driven wheels. It contains a flexible elctrode for capacitive touch sensing. It communicates with the main computer through a NRF24L01+ chip. \n\n### Tracking\nOur system uses a projector-based tracking system for robot position tracking as shown below. Using a high frame rate (3000Hz) projector (DLP LightCrafter) from Texas Instruments Inc., a sequence of gray-coded patterns are projected onto a flat surface. Then, the photodiodes on the robot independently decodes into a location within the projected area. \nThe instruction for setting up this projector-based tracking system is included in the repository. \n\n## Software\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"Images/architecture.PNG\" alt=\"architecture\" width=\"700\"\u003e\n\u003c/p\u003e\n\nThe communication structure consists of four main layers from highest to lowest level: Application, Simulation, Server, and Hardware. \n\nAt the application level, the desired positions of the robots are computed. These desired positions are transmitted to\nthe simulation layer through a network socket. The application programmer can choose between two control strategies:\nProportional-Integral-Derivative (PID) position control or Hybrid Reciprocal Velocity Obstacles (HRVO) combined\nwith PID (these options are explained in the next paragraphs). Based on the chosen control strategy, the simulation layer\ncomputes the goal positions of the robots, either final positions for PID or intermediate points for HRVO, and sends them to\nthe server. Finally, the server layer dispatches commands to the individual zooids, while at the same time monitoring their status and position.\n\nEach robot independently controls its motion through a PID controller based on the state machine shown below. Given a final goal, the robot initially turns itself in the right direction and, once aligned, accelerates to its user-defined preferred speed. When it reaches the speed, it maintains it with a PID control on the orientation to ensure its direction towards the final goal. When a new incremental goal is given, it will still move at same speed but the PID control on orientation will direct the robot towards the new intermediate goal. When the robot arrives within 5 cm of the final goal, it slows down to its minimum velocity and once within 1 cm\nof the final goal, it stops and orients itself as commanded by the application programmer. To enable smooth transitions between the incremental goal positions, robots are given their next position at 60 Hz.\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"Images/local_control.PNG\" alt=\"control\" width=\"700\"\u003e\n\u003c/p\u003e\n\n## Acknowledgments \n\nThis is a joint work between the Shape Lab at Stanford University (USA) and the Aviz team at Inria (France).\nIt was partially funded by the Région Ile de France, DIM ISC-PIF. We would also like to thank Alexa Siu, Shenli Yuan, Ernesto Ramirez and Pham Minh Hieu for investing so much time and efforts in making this work possible. \n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"Images/logos.png\" alt=\"logos\" width=\"700\"\u003e\n\u003c/p\u003e\n\n\u003ca rel=\"license\" href=\"http://creativecommons.org/licenses/by-sa/4.0/\"\u003e\u003cimg alt=\"Creative Commons License\" style=\"border-width:0\" src=\"https://i.creativecommons.org/l/by-sa/4.0/88x31.png\" /\u003e\u003c/a\u003e\u003cbr /\u003eThis work is licensed under a \u003ca rel=\"license\" href=\"http://creativecommons.org/licenses/by-sa/4.0/\"\u003eCreative Commons Attribution-ShareAlike 4.0 International License\u003c/a\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshapelab%2Fswarmui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshapelab%2Fswarmui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshapelab%2Fswarmui/lists"}