Skip to content

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