This service is used to control the positioning of the Sivers 60 GHz antenna arrays mounted on the XY-tables in COSMOS Sandbox 1. The XY tables allow for independent movement of each antenna array in the horizontal plane within a 1.3m x 1.3m area, as well as rotating the arrays +/-45° about their vertical axis.

XY Tables:
| = Name = | = Location = | = Mounted Device = |
|---|---|---|
| xytable1.sb1.cosmos-lab.org | COSMOS Sandbox 1 | rfdev3-in1 (Sivers 60 GHz), rfdev4-in1 (IBM PAAM 28 GHz) |
| xytable2.sb1.cosmos-lab.org | COSMOS Sandbox 1 | rfdev3-in2 (Sivers 60 GHz), rfdev4-in2 (IBM PAAM 28 GHz) |
Overhead View (not to scale):

Useful usage notes:
* X,Y movement is limited within a 1.3m x 1.3m area.
* The antenna arrays may be rotated +/-45° about their vertical axis.
* The centers of the tables are approximately 20m apart.
* The coordinate systems of the tables are 180° rotated from each other (xytable1 has 0,0 in the "lower-right", while xytable2 has 0,0 in the "upper-left").
* For the arrays to be aligned "head on", the x-coordinate must follow this pattern:
* Angles are defined relative to each array.
* If the antennas are aligned on the x-axis, then an angle of 0° will ensure the antennas are facing each other.
All the available methods are accessible from the a testbed console via an HTTP API located at `am-rt1.cosmos-lab.org:5054/xy_table`. This API can be interacted with via a command line tool such as "curl" or any script using a "REST client" library.
This API call is used to get the current status of the XY-table(s). The response will specify the current movement state of the XY platform and angular rotation systems as well as their current and target positions.
HTTP API Path: `am-rt1.cosmos-lab.org:5054/xy_table/status`
Parameters:
| = Name = | = Decription = | = Required = | = Acceptable Input = |
|---|---|---|---|
| name | Comma separated list of XY-table FQDNs | Y | (list of XY table FQDNs) |
Selected response values and their meaning:
* xy_status:
| = Value = | = Decription = |
|---|---|
| Idle | Platform is stopped in the X and Y plane. |
| Run | Platform is moving in the X and/or Y directions. |
| other values | Indicate possible error, may require staff intervention if persistent. |
* rotator_status:
| = Value = | = Decription = |
|---|---|
| Limp | Rotator is stopped but the motor is not trying to hold the position fixed. |
| Holding | Rotator is stopped and the motor is trying to hold the position fixed. |
| Accelerating Travelling Decelerating |
Rotator is moving. |
| other values | Indicate possible error, may require staff intervention if persistent. |
* current_position: The position information at the time the request was issued. Note that this is not real-time and may have up to a 1 second delay.
* target_position: The last requested X, Y, and angle positions.
Get status of `xytable1`.
HTTP Request:
am-rt1.cosmos-lab.org:5054/xy_table/status?name=xytable1.sb1.cosmos-lab.org
Response:
<response status="OK">
<action service="xy_table" name="status">
<xy_table xy_status="Idle" rotator_status="Holding" name="xytable1.sb1.cosmos-lab.org">
<current_position x="650.998" y="0.997" angle="-0.4"/>
<target_position x="650" y="0" angle="0.0"/>
</xy_table>
</action>
</response>
Get status of `xytable1` and `xytable2`.
HTTP Request:
am-rt1.cosmos-lab.org:5054/xy_table/status?name=xytable1.sb1.cosmos-lab.org,xytable2.sb1.cosmos-lab.org
Response:
<response status="OK">
<action service="xy_table" name="status">
<xy_table xy_status="Idle" rotator_status="Holding" name="xytable1.sb1.cosmos-lab.org">
<current_position x="650.998" y="0.997" angle="-0.4"/>
<target_position x="650" y="0" angle="0.0"/>
</xy_table>
<xy_table xy_status="Run" rotator_status="Holding" name="xytable2.sb1.cosmos-lab.org">
<current_position x="641.916" y="0.997" angle="0.4"/>
<target_position x="650" y="0" angle="0.0"/>
</xy_table>
</action>
</response>
Moves the platform(s) to the desired X, Y coordinates and rotates it to the desired angle. The response will be a "status" style response immediately following the execution of the command.
HTTP API Path: `am-rt1.cosmos-lab.org:5054/xy_table/move_to`
Parameters:
| = Name = | = Decription = | = Required = | = Acceptable Input = |
|---|---|---|---|
| name | Comma separated list of XY table FQDNs | Y | (list of XY table FQDNs) |
| x | X-axis target coordinate (mm) | Y | 0 to 1300 |
| y | Y-axis target coordinate (mm) | Y | 0 to 1300 |
| angle | Target angle (deg) | Y | -45 to 45 |
Move the platform of `xytable1` to X=500 and Y=30, and rotate to 15 degrees.
HTTP Request:
am-rt1.cosmos-lab.org:5054/xy_table/move_to?name=xytable1.sb1.cosmos-lab.org&x=500&y=30&angle=15
Response:
<response status="OK">
<action service="xy_table" name="move_to">
<xy_table xy_status="Run" rotator_status="Traveling" name="xytable1.sb1.cosmos-lab.org">
<current_position x="650.998" y="0.997" angle="-0.4"/>
<target_position x="500" y="30" angle="15.0"/>
</xy_table>
</action>
</response>
Immediately cancels the last requested movement and bring the platform(s) to a stop.
HTTP API Path: `am-rt1.cosmos-lab.org:5054/xy_table/stop`
Parameters:
| = Name = | = Decription = | = Required = | = Acceptable Input = |
|---|---|---|---|
| name | Comma separated list of XY table FQDNs | Y | (list of XY table FQDNs) |
Stop the current movement of `xytable1`.
HTTP Request:
am-rt1.cosmos-lab.org:5054/xy_table/stop?name=xytable1.sb1.cosmos-lab.org
Response:
<response status="OK">
<action service="xy_table" name="stop">
<xy_table xy_status="Idle" rotator_status="Holding" name="xytable1.sb1.cosmos-lab.org">
<current_position x="650.998" y="0.997" angle="-0.4"/>
</xy_table>
</action>
</response>