W axis with gantry kins hal/ini configuration

More
08 Dec 2015 14:21 #66625 by guymalpass
loadrt motmod is using what is written in the ini. When AXES=9 I get the problems stated in the first post

Please Log in or Create an account to join the conversation.

More
08 Dec 2015 14:27 #66626 by andypugh

COORDINATES = X Y Z w


Perhaps it is case-sensitive?

Please Log in or Create an account to join the conversation.

More
08 Dec 2015 14:28 #66627 by guymalpass
Just spotted that myself and changed it but to no avail.

Please Log in or Create an account to join the conversation.

More
08 Dec 2015 14:36 #66628 by andypugh
if motmod gets num_joints = 9, and if there is an INI section for every axis, even the ones that don't exist, and if the COORDINATES line is XYZW then it should work.

Are all those conditions true?

Please Log in or Create an account to join the conversation.

More
08 Dec 2015 15:21 #66629 by guymalpass
For the non existent axes is it as simple as just entering [Axes_4] [Axes_5] [Axes_6] [Axes_7] in the ini?

Please Log in or Create an account to join the conversation.

More
08 Dec 2015 15:59 #66630 by Todd Zuercher
The JA9 sim that I tested was a modified version of one of the Sim.Axis configs that came with that version of Linuxcnc

The INI I tested was sim_xyzyw.ini (modified version of sim_xyzbc.ini)
# EMC controller parameters for a simulated XYZBC machine.

# General note: Comments can either be preceded with a # or ; - either is
# acceptable, although # is in keeping with most linux config files.

# General section -------------------------------------------------------------
[EMC]

# Version of this INI file
VERSION = 1.0

# Name of machine, for use with display, etc.
MACHINE =               EMC-HAL-SIM-AXIS

# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
DEBUG =               0x7FFFFFFF
DEBUG = 0

# Sections for display options ------------------------------------------------
[DISPLAY]

# Name of display program, e.g., xemc
DISPLAY =             axis

# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME =            0.02

# Path to help file
HELP_FILE =             doc/help.txt

# Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET =       RELATIVE

# 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 =     1.2
MAX_SPINDLE_OVERRIDE =  1.0
# Prefix to be used
PROGRAM_PREFIX = /home/todd/linuxcnc/nc_files

# Introductory graphic
INTRO_GRAPHIC = emc2.gif
INTRO_TIME = 5

EDITOR = gedit

INCREMENTS = 1 mm, .01 in, .1mm, 1 mil, .1 mil, 1/8000 in
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script

png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python

# 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.001

# Part program interpreter section --------------------------------------------
[RS274NGC]

# File containing interpreter variables
PARAMETER_FILE =        sim_xyzbc.var

# Motion control section ------------------------------------------------------
[EMCMOT]

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 nano-seconds
SERVO_PERIOD =          1000000

# 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 =                    sim_xyzyw.hal

# Single file that is executed after the GUI has started.  Only supported by
# AXIS at this time (only AXIS creates a HAL component of its own)
#POSTGUI_HALFILE = test_postgui.hal

HALUI = halui

# Trajectory planner section --------------------------------------------------
[TRAJ]
COORDINATES =             X Y Z Y W
LINEAR_UNITS =            mm
ANGULAR_UNITS =           degree
DEFAULT_LINEAR_VELOCITY = 80
MAX_LINEAR_VELOCITY =     100
DEFAULT_LINEAR_ACCEL =    300
MAX_LINEAR_ACCEL =        300
POSITION_FILE =           position_sim_xyzbc.txt

[KINS]
JOINTS = 5
KINEMATICS = gantrykins 

# Axes sections ---------------------------------------------------------------
[AXIS_X]

[AXIS_Y]

[AXIS_Z]

[AXIS_B]

[AXIS_W]

# Joints sections -------------------------------------------------------------

# First joint
[JOINT_0]
TYPE =                          LINEAR
HOME =                          0.000
MAX_VELOCITY =                  100
MAX_ACCELERATION =              300
BACKLASH =                      0.000
MIN_LIMIT =                     -1
MAX_LIMIT =                     1000
FERROR =                        1
MIN_FERROR =                    1
HOME_OFFSET =                   0.0
HOME_SEARCH_VEL =               0
HOME_LATCH_VEL =                0
HOME_USE_INDEX =                NO
HOME_IGNORE_LIMITS =            NO
HOME_SEQUENCE =                 1

# Second joint
[JOINT_1]
TYPE =                          LINEAR
HOME =                          0.000
MAX_VELOCITY =                  100
MAX_ACCELERATION =              300
BACKLASH =                      0.000
MIN_LIMIT =                     -1
MAX_LIMIT =                     1000
FERROR =                        1
MIN_FERROR =                    1
HOME_OFFSET =                   0.0
HOME_SEARCH_VEL =               0
HOME_LATCH_VEL =                0
HOME_USE_INDEX =                NO
HOME_IGNORE_LIMITS =            NO
HOME_SEQUENCE =                1

# Third joint
[JOINT_2]
TYPE =                          LINEAR
HOME =                          0.000
MAX_VELOCITY =                  100
MAX_ACCELERATION =              300
BACKLASH =                      0.000
MIN_LIMIT =                     -1
MAX_LIMIT =                     100
FERROR =                        1
MIN_FERROR =                    1
HOME_OFFSET =                   0.0
HOME_SEARCH_VEL =               0
HOME_LATCH_VEL =                0
HOME_USE_INDEX =                NO
HOME_IGNORE_LIMITS =            NO
HOME_SEQUENCE =                 0

[JOINT_3]
TYPE =                          LINEAR
HOME =                          0.000
MAX_VELOCITY =                  100
MAX_ACCELERATION =              300
BACKLASH =                      0.000
MIN_LIMIT =                     -1
MAX_LIMIT =                     1000
FERROR =                        1
MIN_FERROR =                    1
HOME_OFFSET =                   0.0
HOME_SEARCH_VEL =               0
HOME_LATCH_VEL =                0
HOME_USE_INDEX =                NO
HOME_IGNORE_LIMITS =            NO
HOME_SEQUENCE =                 1

[JOINT_4]
TYPE =                          LINEAR
HOME =                          0.000
MAX_VELOCITY =                  100
MAX_ACCELERATION =              300
BACKLASH =                      0.000
MIN_LIMIT =                     -1
MAX_LIMIT =                     100
FERROR =                        1
MIN_FERROR =                    1
HOME_OFFSET =                   0.0
HOME_SEARCH_VEL =               0
HOME_LATCH_VEL =                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 =    sim_xyzbc.tbl
TOOL_CHANGE_POSITION = 0 0 80

And the hal file sim_xyzyw.hal (modified version of sim_xyzbc.hal)
# core HAL config file for XYZBC simulation

# first load all the RT modules that will be needed
loadrt [KINS]KINEMATICS coordinates=XYZYW
setp [KINS](KINEMATICS).joint-0 0
setp [KINS](KINEMATICS).joint-1 1
setp [KINS](KINEMATICS).joint-2 2
setp [KINS](KINEMATICS).joint-3 1
setp [KINS](KINEMATICS).joint-4 8

# motion controller, get name and thread periods from ini file
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS

# add motion controller functions to servo thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread

# create HAL signals for position commands from motion module
# loop position commands back to motion module feedback
net Xpos joint.0.motor-pos-cmd => joint.0.motor-pos-fb
net Ypos joint.1.motor-pos-cmd => joint.1.motor-pos-fb
net Zpos joint.2.motor-pos-cmd => joint.2.motor-pos-fb
net Bpos joint.3.motor-pos-cmd => joint.3.motor-pos-fb
net Cpos joint.4.motor-pos-cmd => joint.4.motor-pos-fb

# estop loopback
net estop-loop iocontrol.0.user-enable-out iocontrol.0.emc-enable-in

# create signals for tool loading loopback
net tool-prep-loop iocontrol.0.tool-prepare iocontrol.0.tool-prepared
net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed

Please Log in or Create an account to join the conversation.

More
08 Dec 2015 16:01 #66631 by Todd Zuercher

For the non existent axes is it as simple as just entering [Axes_4] [Axes_5] [Axes_6] [Axes_7] in the ini?


Yes that is all that is needed for the place holders (using the normal 2.7 release of Linuxcnc).

Please Log in or Create an account to join the conversation.

More
08 Dec 2015 16:16 #66633 by Todd Zuercher
I was not able to make a sim using gantrykins work with W in the normal 2.7 release. I could get it to start, but homing and jogging the W never seemed to work right. Maybe I needed to fiddle with it more, but I was not able to find the right combination in the config to make it work. (I can do it with trivkins, but that isn't what you wanted since you have a gantry.)

Please Log in or Create an account to join the conversation.

More
08 Dec 2015 16:32 #66634 by guymalpass
I see, so may this be a bug rather than a config error? Back to Andy's post, yes all the conditions are true. Also if you were to build a Joints_Axes branch wouldn't you use gentrivkins rather than gantrykins?

Please Log in or Create an account to join the conversation.

More
08 Dec 2015 19:29 - 08 Dec 2015 19:33 #66639 by dgarrett
For anyone interested in trying a recent joints_axes9 branch,
the attached tar file (g.tgz) has a simplified sim config with:

X --> Joint0
Y --> Joint1 AND Joint2
Z --> Joint3
W --> Joint4

Important notes:
[TRAJ]
COORDINATES = XYZW
# The [TRAJ]COORDINATES item names the letters for gcode
# XYYZW or YYXZW or WXYYYYYYYYYYYZW work the same

[KINS]
JOINTS = 5
KINEMATICS = gentrivkins coordinates=xyyzw kinstype=BOTH
AUTO_TELEOP=20

# The coordinates=xyyzw for gentrivkins assigns to joints 
# in sequence: 0,1,2,3,4
# so here the order and axis names are important
The AUTO_TELEOP option causes a switch to teleop (world)
after homing (wait 20 seconds at most)

In the axis gui, the '$' character toggles joint and teleop modes
Attachments:
Last edit: 08 Dec 2015 19:33 by dgarrett.

Please Log in or Create an account to join the conversation.

Time to create page: 0.253 seconds
Powered by Kunena Forum