######################################################################################## # # Configuration file for a Katana1.2 6M90T robot # # This file uses an INI-style like syntax: # - Sections are in '[' and ']' brackets # - Value-pairs look like ' valuename = "value"; ' # It is important, that the values are in quotation marks # There should always be a semicolon at the end # - Empty lines will be ignored # - Comments should start with a '#' # - The parser is rather tolerant. It ignores unknown formats or styles # # There is a section for every motor, named "[MOT[n]]", where 'n' is the motor number # starting from 0. # # Values marked with an asterisk (*) in the comment should not be changed # and doing so may break things! # ######################################################################################## ######################################################################################## [KATANA] [GENERAL] addr = "24"; #* katana jumper address motcnt = "6"; # count of motors sctcnt = "1"; # count of sensor controllers modelName = "Katana6M90T"; # the kinematics model to use type = "400"; # the Katana type [CONNECTORBOX] output[1] = "FALSE"; # not used yet output[2] = "FALSE"; # not used yet [GRIPPER] isPresent = "YES"; # Tell the model if a gripper is present openEncoders = "30770"; # Position in encoders in which the gripper is open closeEncoders = "12240"; # Position in encoders in which the gripper is closed ######################################################################################## [MOT[0]] [GENERAL] slvID = "1"; #* motors slave identification [CALIBRATION] enable = "TRUE"; # Calibration enabled/disabled for this motor order = "5"; # Order of calibration, range=0..5 dir = "DIR_POSITIVE"; #* Search direction for mechanical stopper mcf = "MCF_FREEZE"; # Motors status after the calibration: MCF_ON, MCF_OFF, MCF_FREEZE encoderPositionAfter= "30000"; # The position the motor will move to after calibration # Since the robot has incremental position encoders, it needs to search the mechanical stoppers after power on. # When found, it associates the position with a certain encoder value and angle. # For the kinematics calculation, the model needs to know: # - the quotient 360°/encoders (different for each motor) # - the range between the mechanical stoppers [INIT] encoderOffset = "31000"; # The encoder value the firmware is set to when the mechanical stopper is reached angleOffset = "6.65"; # The angle (in degree) which is associated with the mechanical stopper encodersPerCycle = "47488"; # Number of encoders in one cycle (360°) angleRange = "346.0"; # The range between mechanical stoppers (or less if encoder-overflow possible) rotationDirection = "DIR_POSITIVE"; #* This is set DIR_NEGATIVE if angles grow with encoders [STATIC] # Old (deprecated) motor parameters: maxppwm = "127"; #* maximum positive PWM maxnpwm = "127"; #* maximum negative PWM kP = "16"; #* position controller kI = "64"; #* position controller: Don't set the I value to high, # otherwise the target positioning is NOT accurate kD = "2"; #* position controller kARW = "0"; #* kP_speed = "8"; #* speed controller kI_speed = "6"; #* speed controller kD_speed = "4"; #* speed controller # New motor parameters: maxppwm_nmp = "127"; #* Max. value for positive voltage (0 => 0%, +70 => 100%) maxnpwm_nmp = "127"; #* Max. value for negative voltage (0 => 0%, +70 => 100%) kspeed_nmp = "80"; #* Proportional factor of speed compensator kpos_nmp = "10"; #* Proportional factor of position compensator kI_nmp = "50"; #* Integral factor (kI) of control output added to the final control output crash_limit_nmp = "250"; #* Limit of error in position crash_limit_lin_nmp = "250"; #* Limit of error in position in linear movement [DYNAMIC] # Old (deprecated) motor parameters: maxaccel = "1"; # maxdecel = "1"; # minpos = "0"; #* maxpspeed = "25"; # maxnspeed = "25"; # maxcurr = "255"; #* # New motor parameters: maxaccel_nmp = "1"; # Maximal acceleration and deceleration maxpspeed_nmp = "30"; # Max. allowed forward speed, please change the speed on runtime maxnspeed_nmp = "30"; # Max. allowed reverse speed, please change the speed on runtime maxcurr_nmp = "146"; #* Set the maximal current ######################################################################################## [MOT[1]] [GENERAL] slvID = "2"; [INIT] encoderOffset = "-31000"; encodersPerCycle = "94976"; angleOffset = "124.25"; angleRange = "-140.0"; rotationDirection = "DIR_POSITIVE"; [CALIBRATION] enable = "TRUE"; order = "0"; dir = "DIR_NEGATIVE"; mcf = "MCF_FREEZE"; encoderPositionAfter= "-30000"; [STATIC] maxppwm = "117"; maxnpwm = "117"; kP = "16"; kI = "64"; kD = "2"; kARW = "0"; kP_speed = "8"; kI_speed = "6"; kD_speed = "4"; maxppwm_nmp = "100"; maxnpwm_nmp = "100"; kspeed_nmp = "60"; kpos_nmp = "10"; kI_nmp = "200"; crash_limit_nmp = "200"; crash_limit_lin_nmp = "200"; [DYNAMIC] maxaccel = "1"; maxdecel = "1"; minpos = "0"; maxpspeed = "30"; maxnspeed = "30"; maxcurr = "255"; maxaccel_nmp = "1"; maxpspeed_nmp = "25"; maxnspeed_nmp = "25"; maxcurr_nmp = "153"; ######################################################################################## [MOT[2]] [GENERAL] slvID = "3"; [CALIBRATION] enable = "TRUE"; order = "1"; dir = "DIR_NEGATIVE"; mcf = "MCF_FREEZE"; encoderPositionAfter= "-30000"; [INIT] encoderOffset = "-31000"; encodersPerCycle = "47488"; angleOffset = "52.7"; angleRange = "250.0"; rotationDirection = "DIR_NEGATIVE"; [STATIC] maxppwm = "117"; maxnpwm = "117"; kP = "16"; kI = "64"; kD = "2"; kARW = "0"; kP_speed = "8"; kI_speed = "6"; kD_speed = "4"; maxppwm_nmp = "80"; maxnpwm_nmp = "80"; kspeed_nmp = "50"; kpos_nmp = "10"; kI_nmp = "200"; crash_limit_nmp = "250"; crash_limit_lin_nmp = "250"; [DYNAMIC] maxaccel = "1"; maxdecel = "1"; minpos = "0"; maxpspeed = "30"; maxnspeed = "30"; maxcurr = "255"; maxaccel_nmp = "1"; maxpspeed_nmp = "20"; maxnspeed_nmp = "20"; maxcurr_nmp = "120"; ######################################################################################## [MOT[3]] [GENERAL] slvID = "4"; [CALIBRATION] enable = "TRUE"; order = "2"; dir = "DIR_POSITIVE"; mcf = "MCF_FREEZE"; encoderPositionAfter= "30000"; [INIT] encoderOffset = "31000"; encodersPerCycle = "51200"; angleOffset = "63.5"; angleRange = "230.0"; rotationDirection = "DIR_POSITIVE"; [STATIC] maxppwm = "117"; maxnpwm = "117"; kP = "16"; kI = "64"; kD = "2"; kARW = "0"; kP_speed = "8"; kI_speed = "6"; kD_speed = "4"; maxppwm_nmp = "100"; maxnpwm_nmp = "100"; kspeed_nmp = "60"; kpos_nmp = "20"; kI_nmp = "250"; crash_limit_nmp = "200"; crash_limit_lin _nmp= "200"; [DYNAMIC] maxaccel = "1"; maxdecel = "1"; minpos = "0"; maxpspeed = "30"; maxnspeed = "30"; maxcurr = "255"; maxaccel_nmp = "1"; maxpspeed_nmp = "25"; maxnspeed_nmp = "25"; maxcurr_nmp = "110"; ######################################################################################## [MOT[4]] [GENERAL] slvID = "5"; [CALIBRATION] enable = "TRUE"; order = "3"; dir = "DIR_POSITIVE"; mcf = "MCF_FREEZE"; encoderPositionAfter= "30000"; [INIT] encoderOffset = "31000"; encodersPerCycle = "51200"; angleOffset = "8.5"; angleRange = "342.0"; rotationDirection = "DIR_POSITIVE"; [STATIC] maxppwm = "117"; maxnpwm = "117"; kP = "16"; kI = "64"; kD = "2"; kARW = "0"; kP_speed = "8"; kI_speed = "6"; kD_speed = "4"; maxppwm_nmp = "127"; maxnpwm_nmp = "127"; kspeed_nmp = "35"; kpos_nmp = "40"; kI_nmp = "180"; crash_limit_nmp = "100"; crash_limit_lin_nmp = "100"; [DYNAMIC] maxaccel = "1"; maxdecel = "1"; minpos = "0"; maxpspeed = "30"; maxnspeed = "30"; maxcurr = "255"; maxaccel_nmp = "1"; maxpspeed_nmp = "25"; maxnspeed_nmp = "25"; maxcurr_nmp = "72"; ######################################################################################## [MOT[5]] [GENERAL] slvID = "6"; [CALIBRATION] enable = "TRUE"; order = "4"; dir = "DIR_POSITIVE"; mcf = "MCF_FREEZE"; encoderPositionAfter= "30000"; [INIT] encoderOffset = "31000"; encodersPerCycle = "51200"; angleOffset = "-123.2"; angleRange = "337.0"; rotationDirection = "DIR_POSITIVE"; [STATIC] maxppwm = "117"; maxnpwm = "117"; kP = "16"; kI = "64"; kD = "2"; kARW = "0"; kP_speed = "8"; kI_speed = "6"; kD_speed = "4"; maxppwm_nmp = "127"; maxnpwm_nmp = "127"; kspeed_nmp = "50"; kpos_nmp = "20"; kI_nmp = "150"; crash_limit_nmp = "100"; crash_limit_lin_nmp = "100"; [DYNAMIC] maxaccel = "1"; maxdecel = "1"; minpos = "0"; maxpspeed = "30"; maxnspeed = "30"; maxcurr = "255"; maxaccel_nmp = "1"; maxpspeed_nmp = "25"; maxnspeed_nmp = "25"; maxcurr_nmp = "72"; ######################################################################################## [SCT[0]] [GENERAL] ctrlID = "15"; sens_res = "8"; sens_count = "16"; ######################################################################################## [ENDEFFECTOR] [GENERAL] segment1 = "190.0"; segment2 = "139.0"; segment3 = "147.3"; segment4 = "37.5"; ########################################################################################