Skip to main content

Tango device server for ISARA and ISARA2 sample changers.

Project description

Tango device server for Irelec Isara sample changer robot

This repository implements a Tango device server for controlling an Irelec Isara sample changer robot.

This Tango device server supports the Isara1 and Isara2 models of the Irelec sample changer robots (where Isara1 is the unofficial name for the robot model at BioMAX). The device server automatically detects the model on the start-up. The aim of this implementation to provide same Tango API for both Isara1 and Isara2 systems as much as possible. However, the available Tango attributes and commands are different, as not all features are available on both Isara1 and Isara2 sample changes.

Tango device server API

Properties

The Tango device is configured using properties below.

property mandatory default purpose
host yes n/a network address of the ISARA device
operate_port no 10000 TCP port number of the process control socket
monitor_port no 1000 TCP port number of the status feedback socket

Note that the process control socket is also referred as Socket 1 and status feedback socket as Socket 2 in Irelec documentation.

When this Tango device is used for Isara1 robot, it's soak position coordinates must be configured. Use the following soak position configuration properties.

property mandatory default purpose
soak_pose_rx no 0.0 Reference RX orientation in soaking pose (°)
soak_pose_ry no 0.0 Reference RY orientation in soaking pose (°)
soak_pose_rz no 0.0 Reference RZ orientation in soaking pose (°)
soak_pose_x no 0.0 Reference X position in soaking pose (mm)
soak_pose_y no 0.0 Reference Y position in soaking pose (mm)
soak_pose_z no 0.0 Reference Z position in soaking pose (mm)

Note that Isara2 does not need soak configuration. The soak_* configuration properties will be ignored.

Attributes

Following attributes are available on both Isara1 and Isara2 systems:

attribute description
AvailableTools list of tools available for the current robot
Barcode last datamatrix read value
CurrentNumberOfSoaking soaking phases number for grippers that need to be cooled
FaultStatus is system in fault or stop mode
LN2Regulation is LN2 regulation running
Message last information message from PLC
Path currently running path's name
PathRunning is path running
PathSafe arm is parked
PlateNumberOnTool number of the plate mounted on the tool
PoseRX Rx orientation coordinate of current cartesian pose (°)
PoseRY Ry orientation coordinate of current cartesian pose (°)
PoseRZ Rz orientation coordinate of current cartesian pose (°)
PoseX X position coordinate of current cartesian pose (mm)
PoseY Y position coordinate of current cartesian pose (mm)
PoseZ Z position coordinate of current cartesian pose (mm)
PositionName robot arm's current position name
Powered is robot arm powered on
PuckNumberOnDiff* puck number of the sample mounted on diffractometer
PuckNumberOnTool* puck number of the sample mounted on jaw A tool
PuckNumberOnToolB* puck number of the sample mounted on jaw B tool
RemoteMode is remote operating mode enabled
SampleDetectedOnGonio is a sample currently detected on the gonio
SampleNumberOnDiff* number of the sample mounted on diffractometer
SampleNumberOnTool* number of the sample on jaw A tool
SampleNumberOnToolB* number of the sample on jaw B tool
SampleOnDiff sample mounted on diffractometer, puck and pin numbers
SampleOnToolA sample on jaw A tool, puck and pin numbers
SampleOnToolB sample on jaw B tool, puck and pin numbers
SpeedRatio current robot arm speed ratio (%)
Tool tool name

* - deprecated attributes, they are slated for removal in the future

Following attributes are available only on Isara2 model:

attribute description
BinaryAlarms binary alarms flags
CryoVisionData puck and sample presence info from cryo-vision controller
GripperDrying is gripper drying in progress
HeatingCablesOn are heating cables turned ON
LN2Level LN2 current level in the Dewar (%)
PathPause is path paused
PlateNumberOnDiff number of the plate mounted on the diffractometer

Following attributes are available only on Isara1 model:

attribute description
GonioX goniometer position (X)
GonioY goniometer position (Y)
GonioZ goniometer position (Z)

Commands

Isara1

Command Description
ChangeToolAndCalibrate Change tool and perform calibration afterwards.
GetPlate Get plate from the goniometer and place it back on its support.
GetPutPlate Get plate currently on goniometer and put a new plate.
PutPlate Take plate from support and put it on the goniometer.

Tango command ChangeTool on Isara1 uses home command, which behaves strange for Double Gripper tool (id 5). It puts current tool on the parking, picks Double Gripper, soaks it, then goes home, skipping dry path. Isara2 protocol has dedicated traj(changetool, tool n) command, which only changes the tool.

For the Tango commands SpeedUp and SpeedDown on Isara1 the command remotespeedon is called beforehand and remotespeedoff afterwards.

For the Tango commands Soak and Back on Isara1 if the current position is estimated to be the soaking position then the command raises an exception and is not forwarded to the robot. Indeed Isara1 has an issue where it makes an horizontal move even if the gripper is still in the dewar which causes a collision.

Tests

To run tests, install this package with optional tests dependencies. For example, when using pip:

$ pip install --editable .[tests]

Run tests with:

$ pytest

Emulation

This package contains code that can emulate network API of Isara1 and Isara2 robots. This emulation is used by the tests described above. The emulator can also be run as a stand-alone process, which can be helpful when developing the tango device code.

To start the emulator use IsaraEmulator command. This command is provided by this package, when installed with for example pip utility. To start emulator, use:

$ IsaraEmulator --enable-logging ISARA2 2222 3333

This will start Isara2 API emulation. The process control socket will be emulated on port 2222. The status feedback socket will be emulated on port 3333. Use IsaraEmulator --help to get description of all available options and features.

For more information on the emulator, see the isara/emulator/readme.md file.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tangods_isara-5.1.0.tar.gz (52.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tangods_isara-5.1.0-py3-none-any.whl (49.7 kB view details)

Uploaded Python 3

File details

Details for the file tangods_isara-5.1.0.tar.gz.

File metadata

  • Download URL: tangods_isara-5.1.0.tar.gz
  • Upload date:
  • Size: 52.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for tangods_isara-5.1.0.tar.gz
Algorithm Hash digest
SHA256 bbd9d314b5b84c6692523fa760d284cee87a9d5b01f3d2e57e7f4403e5d99645
MD5 5267470ac366e22d82512d3f2572b2ae
BLAKE2b-256 fa6a95782a15e8ac200fdf226bc1a3342818703e71cf911a7408e6b16a3fcf4d

See more details on using hashes here.

File details

Details for the file tangods_isara-5.1.0-py3-none-any.whl.

File metadata

  • Download URL: tangods_isara-5.1.0-py3-none-any.whl
  • Upload date:
  • Size: 49.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for tangods_isara-5.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b5bb8cb00c9c4199d41be17dbcc456d6ee6875652f74943894a51141b57ac148
MD5 b6b508fe7feb13fd819acf134e02b94c
BLAKE2b-256 09084cdce95c5c609fcc75c3b40b38f25bdf7c2faf0de8bdf6c56c4ecaf5549f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page