From b14991bb2b818d283667bd64cd4e12c89059a86b Mon Sep 17 00:00:00 2001
From: Andrew Kyrychenko <amkyrychenko@gmail.com>
Date: Tue, 23 Dec 2014 23:51:17 +0200
Subject: [PATCH 2/2] hexapod-sim: support hal pins for joints coordinates

Kinematics.hal added to adjust joints coordinates.
PyVCP panel added to watch iterations count and joints values.
Obsolete minitetra.ini renamed to hexapod.ini.
Updated README file.

Signed-off-by: Andrew Kyrychenko <amkyrychenko@gmail.com>
---
 configs/sim/axis/vismach/hexapod-sim/README        |   34 ++-
 configs/sim/axis/vismach/hexapod-sim/hexagui.hal   |    2 -
 configs/sim/axis/vismach/hexapod-sim/hexapod.ini   |  285 ++++++++++++++++++++
 .../axis/vismach/hexapod-sim/hexapod_postgui.hal   |   10 +
 .../sim/axis/vismach/hexapod-sim/kinematics.hal    |   63 +++++
 configs/sim/axis/vismach/hexapod-sim/minitetra.ini |  270 -------------------
 configs/sim/axis/vismach/hexapod-sim/panel.xml     |  103 +++++++
 7 files changed, 488 insertions(+), 279 deletions(-)
 create mode 100644 configs/sim/axis/vismach/hexapod-sim/hexapod.ini
 create mode 100644 configs/sim/axis/vismach/hexapod-sim/hexapod_postgui.hal
 create mode 100644 configs/sim/axis/vismach/hexapod-sim/kinematics.hal
 delete mode 100644 configs/sim/axis/vismach/hexapod-sim/minitetra.ini
 create mode 100644 configs/sim/axis/vismach/hexapod-sim/panel.xml

diff --git a/configs/sim/axis/vismach/hexapod-sim/README b/configs/sim/axis/vismach/hexapod-sim/README
index dda78b0..db6f765 100644
--- a/configs/sim/axis/vismach/hexapod-sim/README
+++ b/configs/sim/axis/vismach/hexapod-sim/README
@@ -1,11 +1,31 @@
-The hexapod configuration is a set of files that makes up a very basic LinuxCNC hexapod using ini, tbl, var. It is very similar to the sim config template, yet with 6 axes defined.
+The hexapod (Stewart platform) configuration is a set of files that makes up a very basic LinuxCNC hexapod. It is very similar to the sim config template, yet with 6 axes defined.
 
-There should be (in the future) a few config files based on the hexapod type you are using.
+Start the machine, toggle E-Stop and Machine power, press Home all button, switch to world mode ($) and you can move the platform in world coordinates. Note that Z home is 20, to run axis.ngc you need to touch off Z to 0.
 
-minitetra.ini
--------------
-Config file for a minitetra type hexapod.
 
-To get it working you need to #define MINITETRA inside the kinematics sources: (linuxcnc/src/linuxcnc/kinematics/genhexkins.h), and specify that genhexkins should be used instead of the normal trivkins (loadrt genhexkins in your hal file)
+hexapod.ini
+---------------
+Config file for a general hexapod.
+To get it working with your machine you need to adjust base and platform joints coordinates in kinematics.hal and specify that genhexkins should be used instead of the normal trivkins (loadrt genhexkins in your hal file).
+If you change the HOME location in TRAJ, make sure you change the appropiate HOME locations of the AXES as well, and make sure the position match (when run through the kinematics).
 
-If you change the HOME location in TRAJ, make sure you change the appropiate HOME locations of the AXES aswell, and make sure the position match (when run through the kinematics).
+kinematics.hal
+--------------
+Defines base and platform joints coordinates.
+
+hexagui.hal
+--------------
+Adds simple Vismach visualisation for hexapod.
+Note that changing joints positions most definitely breaks visualisation.
+
+core_sim_6.hal
+--------------
+Defines simulated joints, no real hardware attached in this config.
+
+panel.xml
+---------
+Adds PyVCP panel.
+
+hexapod_postgui.hal
+------------------
+Adds joints values and iterations number to PyVCP panel.
diff --git a/configs/sim/axis/vismach/hexapod-sim/hexagui.hal b/configs/sim/axis/vismach/hexapod-sim/hexagui.hal
index bc19684..27bc8d3 100644
--- a/configs/sim/axis/vismach/hexapod-sim/hexagui.hal
+++ b/configs/sim/axis/vismach/hexapod-sim/hexagui.hal
@@ -1,8 +1,6 @@
 #vismach GUI stuff
 
 loadusr -W hexagui
-#must run this from the same directory for now
-loadusr -W halui -ini minitetra.ini
 
 net j0 axis.0.joint-pos-fb hexagui.joint.0
 net j1 axis.1.joint-pos-fb hexagui.joint.1
diff --git a/configs/sim/axis/vismach/hexapod-sim/hexapod.ini b/configs/sim/axis/vismach/hexapod-sim/hexapod.ini
new file mode 100644
index 0000000..f1d30cb
--- /dev/null
+++ b/configs/sim/axis/vismach/hexapod-sim/hexapod.ini
@@ -0,0 +1,285 @@
+# EMC controller parameters for a simulated hexapod of the minitetra type.
+
+# General note: Comments can either be preceded with a # or ; - either is
+# acceptable, although # is in keeping with most linux config files.
+
+# Settings with a + at the front of the comment are likely needed to get
+# changed by the user.
+# Settings with a - at the front are highly unneeded to be changed
+###############################################################################
+# General section
+###############################################################################
+
+# General section -------------------------------------------------------------
+[EMC]
+
+#- Version of this INI file
+VERSION =               $Revision$
+
+#+ Name of machine, for use with display, etc.
+MACHINE =               LinuxCNC-HAL-SIM-HEXAPOD
+
+#+ Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
+DEBUG = 0
+# DEBUG =               0x00000007
+#DEBUG =               0x7FFFFFFF
+
+###############################################################################
+# Sections for display options
+###############################################################################
+[DISPLAY]
+
+#+ Name of display program, e.g., xemc
+DISPLAY =              axis
+# DISPLAY =              usrmot
+# DISPLAY =              mini
+# DISPLAY =         tkemc
+
+#- Cycle time, in seconds, that display will sleep between polls
+CYCLE_TIME =            0.200
+
+#- Path to help file
+HELP_FILE =             tklinucnc.txt
+
+#- Initial display setting for position, RELATIVE or MACHINE
+POSITION_OFFSET =       MACHINE
+
+#- Initial display setting for position, COMMANDED or ACTUAL
+POSITION_FEEDBACK =     ACTUAL
+
+#+ Highest value that will be allowed for feed override, 1.0 = 100%
+MAX_FEED_OVERRIDE =     2.0
+
+#+ Prefix to be used
+PROGRAM_PREFIX = ../../nc_files/
+
+#- Introductory graphic
+INTRO_GRAPHIC = linuxcnc.gif
+INTRO_TIME = 2
+
+# Custom PYVCP panel to show kinematics values
+PYVCP = panel.xml
+
+# Rotary motion visualisation
+GEOMETRY = XYZA-B
+
+###############################################################################
+# Task controller section
+###############################################################################
+[TASK]
+
+# Name of task controller program, e.g., milltask
+TASK =                  milltask
+
+#- Cycle time, in seconds, that task controller will sleep between polls
+CYCLE_TIME =            0.010
+
+###############################################################################
+# Part program interpreter section
+###############################################################################
+[RS274NGC]
+
+#- File containing interpreter variables
+PARAMETER_FILE =        hexapod.var
+
+###############################################################################
+# Motion control section
+###############################################################################
+[EMCMOT]
+
+#-make sure to link in genhexkins (you can specify that in emc2/src/Makefile.inc)
+EMCMOT =              motmod
+
+#- Timeout for comm to emcmot, in seconds
+COMM_TIMEOUT =          1.0
+
+#- Interval between tries to emcmot, in seconds
+COMM_WAIT =             0.010
+
+#- Servo task period, in nanoseconds
+SERVO_PERIOD =               1000000
+#- Trajectory Planner task period, in nanoseconds - will be rounded to an
+#   integer multiple of SERVO_PERIOD
+TRAJ_PERIOD =                10000000
+
+###############################################################################
+# Hardware Abstraction Layer section
+###############################################################################
+[HAL]
+
+# The run script first uses halcmd to execute any HALFILE
+# files, and then to execute any individual HALCMD commands.
+#
+HALUI = halui
+
+# list of hal config files to run through halcmd
+# files are executed in the order in which they appear
+HALFILE =                    core_sim_6.hal
+HALFILE =                    hexagui.hal
+HALFILE =                    kinematics.hal
+POSTGUI_HALFILE =            hexapod_postgui.hal
+# list of halcmd commands to execute
+# commands are executed in the order in which they appear
+#HALCMD =                    save neta
+
+###############################################################################
+# Trajectory planner section
+###############################################################################
+[TRAJ]
+#+ machine specific settings
+AXES =                  6
+COORDINATES =           X Y Z A B C
+HOME =                  0 0 20 0 0 0
+LINEAR_UNITS =          inch
+ANGULAR_UNITS =         degree
+CYCLE_TIME =            0.010
+DEFAULT_VELOCITY =      1.0
+MAX_VELOCITY =          10.0
+DEFAULT_ACCELERATION =  10.0
+MAX_ACCELERATION =      20.0
+#POSITION_FILE = position.txt
+
+###############################################################################
+# Axes sections
+###############################################################################
+
+#+ First axis
+[AXIS_0]
+
+TYPE =                          LINEAR
+HOME =                          29.7466
+MAX_VELOCITY =                  20.0
+MAX_ACCELERATION =              200.0
+BACKLASH =                      0.000
+INPUT_SCALE =                   4000
+OUTPUT_SCALE =                  1.000
+MIN_LIMIT =                     -1000.0
+MAX_LIMIT =                     1000.0
+FERROR =                        2.000
+MIN_FERROR =                    0.200
+HOME_OFFSET=                    29.7466
+HOME_SEARCH_VEL =               0.0
+HOME_LATCH_VEL =                0.0
+HOME_USE_INDEX =                NO
+HOME_IGNORE_LIMITS =            NO
+HOME_SEQUENCE = 0
+
+#+ Second axis
+[AXIS_1]
+
+TYPE =                          LINEAR
+HOME =                          29.7466
+MAX_VELOCITY =                  20.0
+MAX_ACCELERATION =              200.0
+BACKLASH =                      0.000
+INPUT_SCALE =                   4000
+OUTPUT_SCALE =                  1.000
+MIN_LIMIT =                     -1000.0
+MAX_LIMIT =                     1000.0
+FERROR =                        2.000
+MIN_FERROR =                    0.200
+HOME_OFFSET=                    29.7466
+HOME_SEARCH_VEL =               0.0
+HOME_LATCH_VEL =                0.0
+HOME_USE_INDEX =                NO
+HOME_IGNORE_LIMITS =            NO
+HOME_SEQUENCE = 0
+
+#+ Third axis
+[AXIS_2]
+
+TYPE =                          LINEAR
+HOME =                          29.7466
+MAX_VELOCITY =                  20.0
+MAX_ACCELERATION =              200.0
+BACKLASH =                      0.000
+INPUT_SCALE =                   4000
+OUTPUT_SCALE =                  1.000
+MIN_LIMIT =                     -1000.0
+MAX_LIMIT =                     1000.0
+FERROR =                        22000
+MIN_FERROR =                    0.200
+HOME_OFFSET=                    29.7466
+HOME_SEARCH_VEL =               0.0
+HOME_LATCH_VEL =                0.0
+HOME_USE_INDEX =                NO
+HOME_IGNORE_LIMITS =            NO
+HOME_SEQUENCE = 0
+
+#+ Fourth axis
+[AXIS_3]
+
+TYPE =                          LINEAR
+HOME =                          29.7466
+MAX_VELOCITY =                  20.0
+MAX_ACCELERATION =              200.0
+BACKLASH =                      0.000
+INPUT_SCALE =                   4000
+OUTPUT_SCALE =                  1.000
+MIN_LIMIT =                     -1000.0
+MAX_LIMIT =                     1000.0
+FERROR =                        2.000
+MIN_FERROR =                    0.200
+HOME_OFFSET=                    29.7466
+HOME_SEARCH_VEL =               0.0
+HOME_LATCH_VEL =                0.0
+HOME_USE_INDEX =                NO
+HOME_IGNORE_LIMITS =            NO
+HOME_SEQUENCE = 0
+
+#+ Fifth axis
+[AXIS_4]
+
+TYPE =                          LINEAR
+HOME =                          29.7466
+MAX_VELOCITY =                  20.0
+MAX_ACCELERATION =              200.0
+BACKLASH =                      0.000
+INPUT_SCALE =                   4000
+OUTPUT_SCALE =                  1.000
+MIN_LIMIT =                     -1000.0
+MAX_LIMIT =                     1000.0
+FERROR =                        2.000
+MIN_FERROR =                    0.200
+HOME_OFFSET=                    29.7466
+HOME_SEARCH_VEL =               0.0
+HOME_LATCH_VEL =                0.0
+HOME_USE_INDEX =                NO
+HOME_IGNORE_LIMITS =            NO
+HOME_SEQUENCE = 0
+
+#+ Sixth axis
+[AXIS_5]
+
+TYPE =                          LINEAR
+HOME =                          29.7466
+MAX_VELOCITY =                  20.0
+MAX_ACCELERATION =              200.0
+BACKLASH =                      0.000
+INPUT_SCALE =                   4000
+OUTPUT_SCALE =                  1.000
+MIN_LIMIT =                     -1000.0
+MAX_LIMIT =                     1000.0
+FERROR =                        2.000
+MIN_FERROR =                    0.200
+HOME_OFFSET=                    29.7466
+HOME_SEARCH_VEL =               0.0
+HOME_LATCH_VEL =                0.0
+HOME_USE_INDEX =                NO
+HOME_IGNORE_LIMITS =            NO
+HOME_SEQUENCE = 0
+
+
+###############################################################################
+# section for main IO controller parameters
+###############################################################################
+[EMCIO]
+
+#- Name of IO controller program, e.g., io
+EMCIO =                     io
+
+#- cycle time, in seconds
+CYCLE_TIME =                    0.100
+
+#- tool table file
+TOOL_TABLE =                    hexapod.tbl
diff --git a/configs/sim/axis/vismach/hexapod-sim/hexapod_postgui.hal b/configs/sim/axis/vismach/hexapod-sim/hexapod_postgui.hal
new file mode 100644
index 0000000..fb0bd18
--- /dev/null
+++ b/configs/sim/axis/vismach/hexapod-sim/hexapod_postgui.hal
@@ -0,0 +1,10 @@
+# This file adds joints values and iterations number to PyVCP panel.
+
+net last-iter genhexkins.last-iterations pyvcp.last-iter
+net max-iter genhexkins.max-iterations pyvcp.max-iter
+net j0 pyvcp.joint0
+net j1 pyvcp.joint1
+net j2 pyvcp.joint2
+net j3 pyvcp.joint3
+net j4 pyvcp.joint4
+net j5 pyvcp.joint5
diff --git a/configs/sim/axis/vismach/hexapod-sim/kinematics.hal b/configs/sim/axis/vismach/hexapod-sim/kinematics.hal
new file mode 100644
index 0000000..4fbd118
--- /dev/null
+++ b/configs/sim/axis/vismach/hexapod-sim/kinematics.hal
@@ -0,0 +1,63 @@
+# These values should be edited to represent the machine geometry
+
+# Base joints positions in base (world) coordinates
+setp genhexkins.base.0.x -22.950
+setp genhexkins.base.0.y  13.250
+setp genhexkins.base.0.z   0.000
+
+setp genhexkins.base.1.x  22.950
+setp genhexkins.base.1.y  13.250
+setp genhexkins.base.1.z   0.000
+
+setp genhexkins.base.2.x  22.950
+setp genhexkins.base.2.y  13.250
+setp genhexkins.base.2.z   0.000
+
+setp genhexkins.base.3.x   0.000
+setp genhexkins.base.3.y -26.500
+setp genhexkins.base.3.z   0.000
+
+setp genhexkins.base.4.x   0.000
+setp genhexkins.base.4.y -26.500
+setp genhexkins.base.4.z   0.000
+
+setp genhexkins.base.5.x -22.950
+setp genhexkins.base.5.y  13.250
+setp genhexkins.base.5.z   0.000
+
+# Platform joints positions in platform coordinates
+setp genhexkins.platform.0.x  -1.000
+setp genhexkins.platform.0.y  11.500
+setp genhexkins.platform.0.z   0.000
+
+setp genhexkins.platform.1.x   1.000
+setp genhexkins.platform.1.y  11.500
+setp genhexkins.platform.1.z   0.000
+
+setp genhexkins.platform.2.x  10.459
+setp genhexkins.platform.2.y  -4.884
+setp genhexkins.platform.2.z   0.000
+
+setp genhexkins.platform.3.x   9.459
+setp genhexkins.platform.3.y  -6.616
+setp genhexkins.platform.3.z   0.000
+
+setp genhexkins.platform.4.x  -9.459
+setp genhexkins.platform.4.y  -6.616
+setp genhexkins.platform.4.z   0.000
+
+setp genhexkins.platform.5.x -10.459
+setp genhexkins.platform.5.y  -4.884
+setp genhexkins.platform.5.z   0.000
+
+# Forward kinematics iterations control, uncomment to use
+# Normally not nesessary, use only if you know what you're doing
+
+# Minimum error value that ends iterations with found solution
+# setp genhexkins.convergence-criterion 1e-9
+
+# Limit of iterations, if exceeded iterations stop with no convergence
+# setp genhexkins.limit-iterations 120
+
+# Maximum error value, if exceeded iterations stop with no convergence
+# setp genhexkins.max-error 100.0
diff --git a/configs/sim/axis/vismach/hexapod-sim/minitetra.ini b/configs/sim/axis/vismach/hexapod-sim/minitetra.ini
deleted file mode 100644
index f02940c..0000000
--- a/configs/sim/axis/vismach/hexapod-sim/minitetra.ini
+++ /dev/null
@@ -1,270 +0,0 @@
-# EMC controller parameters for a simulated hexapod of the minitetra type.
-
-# General note: Comments can either be preceded with a # or ; - either is
-# acceptable, although # is in keeping with most linux config files.
-
-# Settings with a + at the front of the comment are likely needed to get 
-# changed by the user.
-# Settings with a - at the front are highly unneeded to be changed
-###############################################################################
-# General section 
-###############################################################################
-
-# General section -------------------------------------------------------------
-[EMC]
-
-#- Version of this INI file
-VERSION =               $Revision$
-
-#+ Name of machine, for use with display, etc.
-MACHINE =               LinuxCNC-HAL-SIM-HEXAPOD
-
-#+ Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
-DEBUG = 0
-# DEBUG =               0x00000007
-#DEBUG =               0x7FFFFFFF
-
-###############################################################################
-# Sections for display options 
-###############################################################################
-[DISPLAY]
-
-#+ Name of display program, e.g., xemc
-DISPLAY =              axis
-# DISPLAY =              usrmot
-# DISPLAY =              mini
-# DISPLAY = 		tkemc
-
-#- Cycle time, in seconds, that display will sleep between polls
-CYCLE_TIME =            0.200
-
-#- Path to help file
-HELP_FILE =             tklinucnc.txt
-
-#- Initial display setting for position, RELATIVE or MACHINE
-POSITION_OFFSET =       MACHINE
-
-#- Initial display setting for position, COMMANDED or ACTUAL
-POSITION_FEEDBACK =     ACTUAL
-
-#+ Highest value that will be allowed for feed override, 1.0 = 100%
-MAX_FEED_OVERRIDE =     2.0
-
-#+ Prefix to be used
-PROGRAM_PREFIX = ../../nc_files/
-
-#- Introductory graphic
-INTRO_GRAPHIC = linuxcnc.gif
-INTRO_TIME = 0.1
-
-###############################################################################
-# Task controller section 
-###############################################################################
-[TASK]
-
-# Name of task controller program, e.g., milltask
-TASK =                  milltask
-
-#- Cycle time, in seconds, that task controller will sleep between polls
-CYCLE_TIME =            0.010
-
-###############################################################################
-# Part program interpreter section 
-###############################################################################
-[RS274NGC]
-
-#- File containing interpreter variables
-PARAMETER_FILE =        hexapod.var
-
-###############################################################################
-# Motion control section 
-###############################################################################
-[EMCMOT]
-
-#-make sure to link in genhexkins (you can specify that in emc2/src/Makefile.inc)
-EMCMOT =              motmod
-
-#- Timeout for comm to emcmot, in seconds
-COMM_TIMEOUT =          1.0
-
-#- Interval between tries to emcmot, in seconds
-COMM_WAIT =             0.010
-
-#- Servo task period, in nanoseconds
-SERVO_PERIOD =               1000000
-#- Trajectory Planner task period, in nanoseconds - will be rounded to an
-#   integer multiple of SERVO_PERIOD
-TRAJ_PERIOD =                10000000
-
-###############################################################################
-# Hardware Abstraction Layer section
-###############################################################################
-[HAL]
-
-# The run script first uses halcmd to execute any HALFILE
-# files, and then to execute any individual HALCMD commands.
-#
-
-# list of hal config files to run through halcmd
-# files are executed in the order in which they appear
-HALFILE =                    core_sim_6.hal
-HALFILE =                    hexagui.hal
-# list of halcmd commands to execute
-# commands are executed in the order in which they appear
-#HALCMD =                    save neta
-
-###############################################################################
-# Trajectory planner section
-###############################################################################
-[TRAJ]
-#+ machine specific settings
-AXES =                  6
-# COORDINATES =         X Y Z R P W
-COORDINATES =           X Y Z A B C
-HOME =                  0 0 20 0 0 0 
-LINEAR_UNITS =          inch
-ANGULAR_UNITS =         degree
-CYCLE_TIME =            0.010
-DEFAULT_VELOCITY =      1.0
-MAX_VELOCITY =          10.0
-DEFAULT_ACCELERATION =  10.0
-MAX_ACCELERATION =      20.0
-
-###############################################################################
-# Axes sections
-###############################################################################
-
-#+ First axis
-[AXIS_0]
-
-TYPE =                          LINEAR
-HOME =                          0.000
-MAX_VELOCITY =                  3.0
-MAX_ACCELERATION =              200.0
-BACKLASH =                      0.000
-INPUT_SCALE =                   4000
-OUTPUT_SCALE =                  1.000
-MIN_LIMIT =                     -1000.0
-MAX_LIMIT =                     1000.0
-FERROR =                        2.000
-MIN_FERROR =                    0.200
-HOME_OFFSET =                   0.0
-HOME_SEARCH_VEL =               0.0
-HOME_LATCH_VEL =                0.0
-HOME_USE_INDEX =                NO
-HOME_IGNORE_LIMITS =            NO
-
-#+ Second axis
-[AXIS_1]
-
-TYPE =                          LINEAR
-HOME =                          0.000
-MAX_VELOCITY =                  3.0
-MAX_ACCELERATION =              200.0
-BACKLASH =                      0.000
-INPUT_SCALE =                   4000
-OUTPUT_SCALE =                  1.000
-MIN_LIMIT =                     -1000.0
-MAX_LIMIT =                     1000.0
-FERROR =                        2.000
-MIN_FERROR =                    0.200
-HOME_OFFSET =                   0.0
-HOME_SEARCH_VEL =               0.0
-HOME_LATCH_VEL =                0.0
-HOME_USE_INDEX =                NO
-HOME_IGNORE_LIMITS =            NO
-
-#+ Third axis
-[AXIS_2]
-
-TYPE =                          LINEAR
-HOME =                          0.000
-MAX_VELOCITY =                  3.0
-MAX_ACCELERATION =              200.0
-BACKLASH =                      0.000
-INPUT_SCALE =                   4000
-OUTPUT_SCALE =                  1.000
-MIN_LIMIT =                     -1000.0
-MAX_LIMIT =                     1000.0
-FERROR =                        2.000
-MIN_FERROR =                    0.200
-HOME_OFFSET =                   0.0
-HOME_SEARCH_VEL =               0.0
-HOME_LATCH_VEL =                0.0
-HOME_USE_INDEX =                NO
-HOME_IGNORE_LIMITS =            NO
-
-#+ Fourth axis
-[AXIS_3]
-
-TYPE =                          LINEAR
-HOME =                          0.000
-MAX_VELOCITY =                  3.0
-MAX_ACCELERATION =              200.0
-BACKLASH =                      0.000
-INPUT_SCALE =                   4000
-OUTPUT_SCALE =                  1.000
-MIN_LIMIT =                     -1000.0
-MAX_LIMIT =                     1000.0
-FERROR =                        2.000
-MIN_FERROR =                    0.200
-HOME_OFFSET =                   0.0
-HOME_SEARCH_VEL =               0.0
-HOME_LATCH_VEL =                0.0
-HOME_USE_INDEX =                NO
-HOME_IGNORE_LIMITS =            NO
-
-#+ Fifth axis
-[AXIS_4]
-
-TYPE =                          LINEAR
-HOME =                          0.000
-MAX_VELOCITY =                  3.0
-MAX_ACCELERATION =              200.0
-BACKLASH =                      0.000
-INPUT_SCALE =                   4000
-OUTPUT_SCALE =                  1.000
-MIN_LIMIT =                     -1000.0
-MAX_LIMIT =                     1000.0
-FERROR =                        2.000
-MIN_FERROR =                    0.200
-HOME_OFFSET =                   0.0
-HOME_SEARCH_VEL =               0.0
-HOME_LATCH_VEL =                0.0
-HOME_USE_INDEX =                NO
-HOME_IGNORE_LIMITS =            NO
-
-#+ Sixth axis
-[AXIS_5]
-
-TYPE =                          LINEAR
-HOME =                          0.000
-MAX_VELOCITY =                  3.0
-MAX_ACCELERATION =              200.0
-BACKLASH =                      0.000
-INPUT_SCALE =                   4000
-OUTPUT_SCALE =                  1.000
-MIN_LIMIT =                     -1000.0
-MAX_LIMIT =                     1000.0
-FERROR =                        2.000
-MIN_FERROR =                    0.200
-HOME_OFFSET =                   0.0
-HOME_SEARCH_VEL =               0.0
-HOME_LATCH_VEL =                0.0
-HOME_USE_INDEX =                NO
-HOME_IGNORE_LIMITS =            NO
-
-
-###############################################################################
-# section for main IO controller parameters 
-###############################################################################
-[EMCIO]
-
-#- Name of IO controller program, e.g., io
-EMCIO = 	                io
-
-#- cycle time, in seconds
-CYCLE_TIME =                    0.100
-
-#- tool table file
-TOOL_TABLE =                    hexapod.tbl
diff --git a/configs/sim/axis/vismach/hexapod-sim/panel.xml b/configs/sim/axis/vismach/hexapod-sim/panel.xml
new file mode 100644
index 0000000..64e4ebf
--- /dev/null
+++ b/configs/sim/axis/vismach/hexapod-sim/panel.xml
@@ -0,0 +1,103 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<pyvcp>
+<labelframe text="Iterations">
+  <font>("Helvetica",14)</font>
+  <vbox>
+   <hbox>
+    <label>
+      <text>"max:"</text>
+      <font>("Helvetica",14)</font>
+    </label>
+    <u32>
+      <halpin>"max-iter"</halpin>
+      <font>("Helvetica",14)</font>
+      <format>"3d"</format>
+      <width>3</width>
+    </u32>
+   </hbox>
+   <hbox>
+    <label>
+      <text>"last: "</text>
+      <font>("Helvetica",14)</font>
+    </label>
+    <u32>
+      <halpin>"last-iter"</halpin>
+      <font>("Helvetica",14)</font>
+      <format>"3d"</format>
+      <width>3</width>
+    </u32>
+   </hbox>
+  </vbox>
+</labelframe>
+<vbox>
+<labelframe text="Joints values">
+  <font>("Helvetica",14)</font>
+  <hbox>
+   <label>
+      <text>"0: "</text>
+      <font>("Helvetica",14)</font>
+   </label>
+   <number>
+      <halpin>"joint0"</halpin>
+      <font>("Helvetica",14)</font>
+      <format>"4.4f"</format>
+     </number>
+  </hbox>
+  <hbox>
+   <label>
+      <text>"1: "</text>
+      <font>("Helvetica",14)</font>
+   </label>
+   <number>
+      <halpin>"joint1"</halpin>
+      <font>("Helvetica",14)</font>
+      <format>"4.4f"</format>
+     </number>
+  </hbox>
+  <hbox>
+   <label>
+      <text>"2: "</text>
+      <font>("Helvetica",14)</font>
+   </label>
+   <number>
+      <halpin>"joint2"</halpin>
+      <font>("Helvetica",14)</font>
+      <format>"4.4f"</format>
+     </number>
+  </hbox>
+  <hbox>
+   <label>
+      <text>"3: "</text>
+      <font>("Helvetica",14)</font>
+   </label>
+   <number>
+      <halpin>"joint3"</halpin>
+      <font>("Helvetica",14)</font>
+      <format>"4.4f"</format>
+     </number>
+  </hbox>
+  <hbox>
+   <label>
+      <text>"4: "</text>
+      <font>("Helvetica",14)</font>
+   </label>
+   <number>
+      <halpin>"joint4"</halpin>
+      <font>("Helvetica",14)</font>
+      <format>"4.4f"</format>
+     </number>
+  </hbox>
+  <hbox>
+   <label>
+      <text>"5: "</text>
+      <font>("Helvetica",14)</font>
+   </label>
+   <number>
+      <halpin>"joint5"</halpin>
+      <font>("Helvetica",14)</font>
+      <format>"4.4f"</format>
+     </number>
+  </hbox>
+</labelframe>
+</vbox>
+</pyvcp>
-- 
1.7.10.4

