36 lines
1.1 KiB
Tcl
36 lines
1.1 KiB
Tcl
# extrajoints.tcl (requires [HAL]TWOPASS
|
|
# create limit3 and signals for all extra joints
|
|
|
|
set script [file tail [info script]]
|
|
set min_joint_num 0 ;# first possible extra joint
|
|
set max_joint_num 15 ;# last possible extra joint
|
|
|
|
for {set j $min_joint_num} {$j <= $max_joint_num} {incr j} {
|
|
if [catch {getp joint.${j}.posthome-cmd} msg] {
|
|
#puts "$::argv0: skip $j"
|
|
continue
|
|
} else {
|
|
if [::tp::passnumber] {
|
|
puts "$script: Create limit3 for extra joint $j"
|
|
}
|
|
}
|
|
catch {
|
|
# use limit3 for motion planning:
|
|
loadrt limit3 names=j${j}.limit3
|
|
addf j${j}.limit3 servo-thread
|
|
|
|
# These constraints apply to homing managed by
|
|
# LinuxCNC and post-homing managed by the limit3 component:
|
|
setp j${j}.limit3.min [set ::JOINT_[set j](MIN_LIMIT)]
|
|
setp j${j}.limit3.max [set ::JOINT_[set j](MAX_LIMIT)]
|
|
setp j${j}.limit3.maxv [set ::JOINT_[set j](MAX_VELOCITY)]
|
|
setp j${j}.limit3.maxa [set ::JOINT_[set j](MAX_ACCELERATION)]
|
|
|
|
net J${j}:out <= j${j}.limit3.out
|
|
net J${j}:out => joint.${j}.posthome-cmd
|
|
|
|
net J${j}.enable <= joint.${j}.homed
|
|
net J${j}.enable => j${j}.limit3.enable
|
|
}
|
|
}
|