Skip to content

Instantly share code, notes, and snippets.

@filesmuggler
Last active September 9, 2020 16:33
Show Gist options
  • Save filesmuggler/473fcd02363829cdcf73ddcd26ebda4b to your computer and use it in GitHub Desktop.
Save filesmuggler/473fcd02363829cdcf73ddcd26ebda4b to your computer and use it in GitHub Desktop.
Maestro Servo Controller Script for controlling UR3 gripper through I/O tool outputs
<!--Pololu Maestro servo controller settings file, http://www.pololu.com/catalog/product/1350-->
<UscSettings version="1">
<NeverSuspend>false</NeverSuspend>
<SerialMode>UART_FIXED_BAUD_RATE</SerialMode>
<FixedBaudRate>9600</FixedBaudRate>
<SerialTimeout>0</SerialTimeout>
<EnableCrc>false</EnableCrc>
<SerialDeviceNumber>12</SerialDeviceNumber>
<SerialMiniSscOffset>0</SerialMiniSscOffset>
<Channels ServosAvailable="1" ServoPeriod="234">
<!--Period = 4.992 ms-->
<!--Channel 0-->
<Channel name="" mode="Servo" min="320" max="12992" homemode="Ignore" home="320" speed="0" acceleration="0" neutral="4032" range="1905" />
<!--Channel 1-->
<Channel name="" mode="Input" min="0" max="1024" homemode="Ignore" home="0" speed="0" acceleration="0" neutral="1024" range="1905" />
<!--Channel 2-->
<Channel name="" mode="Input" min="0" max="1024" homemode="Ignore" home="0" speed="0" acceleration="0" neutral="1024" range="1905" />
<!--Channel 3-->
<Channel name="" mode="Input" min="0" max="1024" homemode="Ignore" home="0" speed="0" acceleration="0" neutral="1024" range="1905" />
<!--Channel 4-->
<Channel name="" mode="Input" min="0" max="1024" homemode="Ignore" home="0" speed="0" acceleration="0" neutral="1024" range="1905" />
<!--Channel 5-->
<Channel name="" mode="Input" min="0" max="1024" homemode="Ignore" home="0" speed="0" acceleration="0" neutral="1024" range="1905" />
</Channels>
<Sequences />
<Script ScriptDone="false">begin
# comment lines 6 to 9 and uncomment line 14 to use the gripper
# do the opposite thing to test the servo range
# servo testing
#2000 0 servo
#1000 delay
#10000 0 servo
#1000 delay
#drop drop drop
# initial setting
#&lt;pos&gt; &lt;low&gt; &lt;high&gt; &lt;pos&gt; &lt;low&gt; &lt;high&gt; servo_range
#2000 0 11 10000 12 1023 servo_range
# setting
#&lt;pos&gt; &lt;low&gt; &lt;high&gt; &lt;pos&gt; &lt;low&gt; &lt;high&gt; servo_range
#2000 0 11 8000 12 1023 servo_range #3 get_position
#2 get_position
#1000 delay
#drop drop
repeat
sub servo_range
pot1 5 pick less_than logical_not #&gt;=low
pot1 5 pick greater_than logical_not #&lt;=high
logical_and
if
0
else
1
endif
pot2 6 pick less_than logical_not #&gt;=low
pot2 6 pick greater_than logical_not #&lt;=high
logical_and
if
0
else
1
endif
1 pick logical_not
if
# zero in first
0 pick logical_not
if
# zero in second
#500 delay
8000 move_servo
else
# one in second
#500 delay
6600 move_servo
endif
else
# one in first
0 pick logical_not
if
# zero in second
#500 delay
5300 move_servo
else
# one in second
#500 delay
4000 move_servo
endif
endif
drop drop drop drop drop drop drop drop
return
sub pot1
2 get_position
return
sub pot2
3 get_position
return
sub move_servo
0 servo
500 delay
return
</Script>
</UscSettings>
begin
# comment lines 6 to 9 and uncomment line 14 to use the gripper
# do the opposite thing to test the servo range
# servo testing
#2000 0 servo
#1000 delay
#10000 0 servo
#1000 delay
#drop drop drop
# initial setting
#<pos> <low> <high> <pos> <low> <high> servo_range
2000 0 11 10000 12 1023 servo_range
# setting
#<pos> <low> <high> <pos> <low> <high> servo_range
#2000 0 11 8000 12 1023 servo_range #3 get_position
#2 get_position
#1000 delay
#drop drop
repeat
sub servo_range
pot1 5 pick less_than logical_not #>=low
pot1 5 pick greater_than logical_not #<=high
logical_and
if
0
else
1
endif
pot2 6 pick less_than logical_not #>=low
pot2 6 pick greater_than logical_not #<=high
logical_and
if
0
else
1
endif
1 pick logical_not
if
# zero in first
0 pick logical_not
if
# zero in second
#500 delay
8000 move_servo
else
# one in second
#500 delay
6600 move_servo
endif
else
# one in first
0 pick logical_not
if
# zero in second
#500 delay
5300 move_servo
else
# one in second
#500 delay
4000 move_servo
endif
endif
drop drop drop drop drop drop drop drop
return
sub pot1
2 get_position
return
sub pot2
3 get_position
return
sub move_servo
0 servo
500 delay
return
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment