Arranging a robot swarm with global inputs and wall friction [discrete]

バージョン 1.0.0.0 (11.9 KB) 作成者: Aaron T. Becker's Robot Swarm Lab
All robots get same input, but uses wall-friction to steer robots to a desired configuration.

ダウンロード 112 件

更新 2015/12/16

ライセンスの表示

Authors: Arun Viswanathan Mahadev and Aaron T. Becker
Arranges a robot swarm. All robots get same input, but wall-friction steers robots to a desired configuration.
Description:
‘frictionbotsdiscrete.m’ implements a friction-based algorithm to control the movement of a robot swarm. The algorithm gives the same input to all the robots and ends with the robots in a desired configuration.
See video at YouTube: https://youtu.be/uhpsAyPwKeI
The concept assumes that robots experience infinite friction along the surface of the walls. This code uses a rectangular workspace enclosed by four walls. The algorithm iterates over five steps that isolate one robot from the swarm and apply “drift-movements” to the whole swarm so that only the isolated robot experiences a different net movement because it touches a wall.
The workspace is split into two regions:
1. Staging Zone – The robots are initialized in this zone.
2. Build Zone – The robots goal configuration is in this zone.
Robots are depicted as colored disks; the boundary is black, and final locations are grey. Running the code with no arguments uses a default arrangement with 14 robots that form a hollow shape.
Arguments:
PosGoal: desired final position of robots (drawn in grey) given in a 2D matrix. Column 1- x axis position, Column 2- y axis position
PosObstacles: position of obstacles (drawn in black) given in a 2D matrix. Column 1- x axis position, Column 2- y axis position
PosCurrent: the current location of all robots. Column 1 – x axis position, 2- y axis position, 3 – index, 4 - color
Make_Movie: If true, a small video called ‘Friction_bots.mp4’is saved in the current MATLAB directory
Returnvalue: total number of movements applied to the swarm
ALGORITHM: robots are numbered such that bottom-most robot is ‘1’, and numbered in ascending order row-wise. The corresponding final locations of the robots are numbered based on descending y coordinate as first priority and descending x coordinate as second priority.
The algorithm runs once for each of the N robots. At the beginning of the Kth step the robots 1 to K-1 are in their goal positions and robots K to N are in their initial positions. On the Kth iteration, steps 1 to 5 are implemented:
Step 1: Move the robots to the left and down until kth robot touches the bottom boundary.
Step 2: apply a “drift-move” left until kth robot reaches left wall
Step 3: apply a “drift-move” up until Kth robot reaches its final y position.
Step 4: move all robots left until Kth robot is in correct position relative to robots 1 to K-1. Then move all robots right until the Kth robot’s x position is at its goal position.
Step 5: Move up until the Kth robot’s y position is at its goal position.
Now robots 1 to K have reached their final position. Robots from K+1 to N have been returned to the staging zone.
This code does discrete moves on robots and every time the ‘moveto()’ function is called there is a step movement. This code has a built-in moviemaker function that can be turned on by setting Make_Movie to true. If true, a small video called ‘Friction_bots.mp4’is saved in the current MATLAB directory.
December 13, 2015
Email: vm.arun94@yahoo.com and atbecker@uh.edu

引用

Aaron T. Becker's Robot Swarm Lab (2022). Arranging a robot swarm with global inputs and wall friction [discrete] (https://www.mathworks.com/matlabcentral/fileexchange/54526-arranging-a-robot-swarm-with-global-inputs-and-wall-friction-discrete), MATLAB Central File Exchange. 取得済み .

MATLAB リリースの互換性
作成: R2015a
すべてのリリースと互換性あり
プラットフォームの互換性
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!