Caps dxl OperatingMode

This commit is contained in:
Simon Alibert 2025-03-23 19:42:21 +01:00
parent 25388d0947
commit 7582a0a2b0
3 changed files with 9 additions and 9 deletions

View File

@ -37,27 +37,27 @@ class OperatingMode(Enum):
# DYNAMIXEL only controls current(torque) regardless of speed and position. This mode is ideal for a # DYNAMIXEL only controls current(torque) regardless of speed and position. This mode is ideal for a
# gripper or a system that only uses current(torque) control or a system that has additional # gripper or a system that only uses current(torque) control or a system that has additional
# velocity/position controllers. # velocity/position controllers.
Current = 0 CURRENT = 0
# This mode controls velocity. This mode is identical to the Wheel Mode(endless) from existing DYNAMIXEL. # This mode controls velocity. This mode is identical to the Wheel Mode(endless) from existing DYNAMIXEL.
# This mode is ideal for wheel-type robots. # This mode is ideal for wheel-type robots.
Velocity = 1 VELOCITY = 1
# This mode controls position. This mode is identical to the Joint Mode from existing DYNAMIXEL. Operating # This mode controls position. This mode is identical to the Joint Mode from existing DYNAMIXEL. Operating
# position range is limited by the Max Position Limit(48) and the Min Position Limit(52). This mode is # position range is limited by the Max Position Limit(48) and the Min Position Limit(52). This mode is
# ideal for articulated robots that each joint rotates less than 360 degrees. # ideal for articulated robots that each joint rotates less than 360 degrees.
Position = 3 POSITION = 3
# This mode controls position. This mode is identical to the Multi-turn Position Control from existing # This mode controls position. This mode is identical to the Multi-turn Position Control from existing
# DYNAMIXEL. 512 turns are supported(-256[rev] ~ 256[rev]). This mode is ideal for multi-turn wrists or # DYNAMIXEL. 512 turns are supported(-256[rev] ~ 256[rev]). This mode is ideal for multi-turn wrists or
# conveyer systems or a system that requires an additional reduction gear. Note that Max Position # conveyer systems or a system that requires an additional reduction gear. Note that Max Position
# Limit(48), Min Position Limit(52) are not used on Extended Position Control Mode. # Limit(48), Min Position Limit(52) are not used on Extended Position Control Mode.
Extended_Position = 4 EXTENDED_POSITION = 4
# This mode controls both position and current(torque). Up to 512 turns are supported (-256[rev] ~ # This mode controls both position and current(torque). Up to 512 turns are supported (-256[rev] ~
# 256[rev]). This mode is ideal for a system that requires both position and current control such as # 256[rev]). This mode is ideal for a system that requires both position and current control such as
# articulated robots or grippers. # articulated robots or grippers.
Current_Position = 5 CURRENT_POSITION = 5
# This mode directly controls PWM output. (Voltage Control Mode) # This mode directly controls PWM output. (Voltage Control Mode)
PWM = 16 PWM = 16

View File

@ -99,14 +99,14 @@ class KochRobot(Robot):
# can't rotate more than 360 degrees (from 0 to 4095) And some mistake can happen while # can't rotate more than 360 degrees (from 0 to 4095) And some mistake can happen while
# assembling the arm, you could end up with a servo with a position 0 or 4095 at a crucial # assembling the arm, you could end up with a servo with a position 0 or 4095 at a crucial
# point # point
self.arm.write("Operating_Mode", name, OperatingMode.Extended_Position.value) self.arm.write("Operating_Mode", name, OperatingMode.EXTENDED_POSITION.value)
# Use 'position control current based' for gripper to be limited by the limit of the current. # Use 'position control current based' for gripper to be limited by the limit of the current.
# For the follower gripper, it means it can grasp an object without forcing too much even tho, # For the follower gripper, it means it can grasp an object without forcing too much even tho,
# its goal position is a complete grasp (both gripper fingers are ordered to join and reach a touch). # its goal position is a complete grasp (both gripper fingers are ordered to join and reach a touch).
# For the leader gripper, it means we can use it as a physical trigger, since we can force with our finger # For the leader gripper, it means we can use it as a physical trigger, since we can force with our finger
# to make it move, and it will move back to its original target position when we release the force. # to make it move, and it will move back to its original target position when we release the force.
self.arm.write("Operating_Mode", "gripper", OperatingMode.Current_Position.value) self.arm.write("Operating_Mode", "gripper", OperatingMode.CURRENT_POSITION.value)
# Set better PID values to close the gap between recorded states and actions # Set better PID values to close the gap between recorded states and actions
# TODO(rcadene): Implement an automatic procedure to set optimal PID values for each motor # TODO(rcadene): Implement an automatic procedure to set optimal PID values for each motor

View File

@ -84,14 +84,14 @@ class KochTeleop(Teleoperator):
# can't rotate more than 360 degrees (from 0 to 4095) And some mistake can happen while # can't rotate more than 360 degrees (from 0 to 4095) And some mistake can happen while
# assembling the arm, you could end up with a servo with a position 0 or 4095 at a crucial # assembling the arm, you could end up with a servo with a position 0 or 4095 at a crucial
# point # point
self.arm.write("Operating_Mode", name, OperatingMode.Extended_Position.value) self.arm.write("Operating_Mode", name, OperatingMode.EXTENDED_POSITION.value)
# Use 'position control current based' for gripper to be limited by the limit of the current. # Use 'position control current based' for gripper to be limited by the limit of the current.
# For the follower gripper, it means it can grasp an object without forcing too much even tho, # For the follower gripper, it means it can grasp an object without forcing too much even tho,
# its goal position is a complete grasp (both gripper fingers are ordered to join and reach a touch). # its goal position is a complete grasp (both gripper fingers are ordered to join and reach a touch).
# For the leader gripper, it means we can use it as a physical trigger, since we can force with our finger # For the leader gripper, it means we can use it as a physical trigger, since we can force with our finger
# to make it move, and it will move back to its original target position when we release the force. # to make it move, and it will move back to its original target position when we release the force.
self.arm.write("Operating_Mode", "gripper", OperatingMode.Current_Position.value) self.arm.write("Operating_Mode", "gripper", OperatingMode.CURRENT_POSITION.value)
for name in self.arm.names: for name in self.arm.names:
self.arm.write("Torque_Enable", name, TorqueMode.ENABLED.value) self.arm.write("Torque_Enable", name, TorqueMode.ENABLED.value)