ESRF Hexapode
Description¶
This module allows to control ESRF hexapod, mainly installed in optics hutch on ESRF beamlines.
The six legs are controlled by IcePaP controller via a Tango device server which
uses the deeplib
library.
Installation¶
Server¶
The hexapode server is installed using Conda packaging under bliss
environment:
(bliss) leonardo:~ % . blissenv
setting BLISS environment
Using CONDA Bliss package (use: 'conda list bliss' to know the version)
(bliss) leonardo:~ % conda install -c http://bcu-ci.esrf.fr/stable tango-hexapode
Collecting package metadata (current_repodata.json): done
Solving environment: done
## Package Plan ##
environment location: /users/blissadm/conda/miniconda/envs/bliss
added / updated specs:
- tango-hexapode
The following NEW packages will be INSTALLED:
libdeep stable/linux-64::libdeep-1.0-h14c3975_0
tango-hexapode stable/linux-64::tango-hexapode-1.0-hf484d3e_0
Proceed ([y]/n)? y
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
(bliss) leonardo:~ %
The Conda package installs the following executables:
* /opt/bliss/conda/miniconda/envs/bliss/bin/Hexapode
* /opt/bliss/conda/miniconda/envs/bliss/bin/Hexapito
Server’s supervisor startup scripts example:
[group:tango]
programs=Hexapode_01, ...
priority=100
[program:Hexapode_01]
command=bash -c ". /users/blissadm/bin/blissenv && exec Hexapode Hexa1"
environment=TANGO_HOST="idXX:20000",HOME="/users/blissadm"
user=blissadm
startsecs=2
autostart=true
redirect_stderr=true
stdout_logfile=/var/log/%(program_name)s.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
Properties (old ressources)¶
As it is a tango DS, the Taco ressources musst be translate in Tango properties. Here is an axample of properties file which can bee loaded using Jive.
#
# Resource backup , created Tue Aug 27 14:55:19 CEST 2019
#
#---------------------------------------------------------
# SERVER Hexapode/mirror, Hexapode device declaration
#---------------------------------------------------------
Hexapode/mirror/DEVICE/Hexapode: "D23/Hexapode/mirror"
# --- D23/Hexapode/mirror properties
D23/Hexapode/mirror->Backlash: 0.1
D23/Hexapode/mirror->BackupFilePath: "/users/blissadm/local/hexapode"
D23/Hexapode/mirror->DefRefPositionPhi: -0.169177
D23/Hexapode/mirror->DefRefPositionPsi: 0.027976
D23/Hexapode/mirror->DefRefPositionTheta: -0.008588
D23/Hexapode/mirror->DefRefPositionX: 0.080434
D23/Hexapode/mirror->DefRefPositionY: 0.836302
D23/Hexapode/mirror->DefRefPositionZ: 564.947466
D23/Hexapode/mirror->DefRefSystemPhi: 0.0
D23/Hexapode/mirror->DefRefSystemPsi: 0.0
D23/Hexapode/mirror->DefRefSystemTheta: 0.0
D23/Hexapode/mirror->DefRefSystemX: 400.0
D23/Hexapode/mirror->DefRefSystemY: 0.0
D23/Hexapode/mirror->DefRefSystemZ: 1088.35
D23/Hexapode/mirror->Description: "BM23 Mirror Hexapod"
D23/Hexapode/mirror->Fixed1: 514.5621,\
-90.7312,\
0.0
D23/Hexapode/mirror->Fixed2: 514.562,\
90.7312,\
0.0
D23/Hexapode/mirror->Fixed3: -178.7055,\
490.9894,\
0.0
D23/Hexapode/mirror->Fixed4: -335.8565,\
400.2582,\
0.0
D23/Hexapode/mirror->Fixed5: -335.8565,\
-400.2582,\
0.0
D23/Hexapode/mirror->Fixed6: -178.7055,\
-490.9894,\
0.0
D23/Hexapode/mirror->HomeLength: 629.38,\
629.35,\
629.73,\
629.24,\
629.2,\
629.26
D23/Hexapode/mirror->IcepapHostname: iced231
D23/Hexapode/mirror->IcepapMotorAddr: 11,\
12,\
13,\
14,\
15,\
16
D23/Hexapode/mirror->IcepapStepsPerMM: 58800
D23/Hexapode/mirror->LengthUncertainty: 0.1
D23/Hexapode/mirror->MaxActuatorLength: 709.2
D23/Hexapode/mirror->MaxIncrementPhi: 20
D23/Hexapode/mirror->MaxIncrementPsi: 20
D23/Hexapode/mirror->MaxIncrementTheta: 20
D23/Hexapode/mirror->MaxIncrementX: 10
D23/Hexapode/mirror->MaxIncrementY: 58
D23/Hexapode/mirror->MaxIncrementZ: 10
D23/Hexapode/mirror->MaxMovementResolution: 0.001
D23/Hexapode/mirror->MaxTiltAngle: 20
D23/Hexapode/mirror->MechanicalRef: LIMIT
D23/Hexapode/mirror->MinActuatorLength: 629.73
D23/Hexapode/mirror->MotorType: ICEPAP
D23/Hexapode/mirror->MovementMode: NORMAL
D23/Hexapode/mirror->Moving1: 335.8565,\
-400.2582,\
0.0
D23/Hexapode/mirror->Moving2: 335.8565,\
400.2582,\
0.0
D23/Hexapode/mirror->Moving3: 178.7055,\
490.9894,\
0.0
D23/Hexapode/mirror->Moving4: -514.5621,\
90.7312,\
0.0
D23/Hexapode/mirror->Moving5: -514.5621,\
-90.7312,\
0.0
D23/Hexapode/mirror->Moving6: 178.7055,\
-490.9894,\
0.0
D23/Hexapode/mirror->NominalLength: 668.7283333,\
668.3389626,\
669.5758503,\
667.2954252,\
669.5612925,\
667.5805272
D23/Hexapode/mirror->ReferenceSystemLock: False
D23/Hexapode/mirror->Topology: SUPPORT
#---------------------------------------------------------
# CLASS Hexapode properties
#---------------------------------------------------------
CLASS/Hexapode->Description: "The device called hexapode is a high precision optical instrument. It consist in a main support",\
"with six actuators. The position of the support is precisely adjusted by changing the lengths of the",\
"actuators. Two models exist at present at the ESRF a table and a sample manipulator. Others",\
"may come. An important goal in developing this server is that different architectures will require",\
"little development effort.",\
"The hexapode table exist now and works for several beamlines (and others are already built or",\
"foreseen). The motors in the legs are controlled by the IcePap motor controller. Still if a different motor",\
"controller is chosen the architecture of the software is highly modular so that little development",\
"will be required.",\
"",\
"All the geometry calculations are based on the paper [ref. ?????]. For many commands the user",\
"needs to specify the reference system he wants to use and other commands refers directly to this",\
"reference system. Refer to figures to fully understand the conventions."
CLASS/Hexapode->InheritedFrom: TANGO_BASE_CLASS
CLASS/Hexapode->ProjectTitle: "ESRF Hexapode"
Hexapode backup position¶
The last checked position of the 6 axis are still stored in the file:
~blissadm/local/hexapode/<beamline_name>_hexapode_<tango_DS_instance_name>
(example: d23_hexapode_mirror for a server named d23/hexapode/mirror)
BLISS module¶
The module exports 6 axis and a menu is available mainly to reset the Hexapod when positions are lost.
YAML configuration file example¶
plugin: emotion
class: esrf_hexapode
tango_name: d23/hexapod/mirror
name: hexa_mirror
axes:
- name: h1tx
role: tx
- name: h1ty
role: ty
- name: h1tz
role: tz
- name: h1rx
role: rx
- name: h1ry
role: ry
- name: h1rz
role: rz