Skip to content

Commit bd3a9ff

Browse files
committed
Fast Forward Feature: Add delay to manipulator controller
1 parent eb9e850 commit bd3a9ff

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed

clearpath_config/manipulators/manipulators.py

+72
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,78 @@
4141
from clearpath_config.manipulators.types.manipulator import BaseManipulator
4242

4343

44+
class MoveItConfig(BaseConfig):
45+
ENABLE = 'enable'
46+
DELAY = 'delay'
47+
ROS_PARAMETERS = 'ros_parameters'
48+
49+
TEMPLATE = {
50+
ENABLE: ENABLE,
51+
DELAY: DELAY,
52+
ROS_PARAMETERS: ROS_PARAMETERS
53+
}
54+
55+
KEYS = flip_dict(TEMPLATE)
56+
57+
DEFAULTS = {
58+
ENABLE: False,
59+
DELAY: 5.0,
60+
ROS_PARAMETERS: {}
61+
}
62+
63+
def __init__(
64+
self,
65+
config: dict = {},
66+
enable: bool = DEFAULTS[ENABLE],
67+
delay: float = DEFAULTS[DELAY],
68+
ros_parameters: dict = DEFAULTS[ROS_PARAMETERS]
69+
) -> None:
70+
self.enable = enable
71+
self.delay = delay
72+
self.ros_parameters = ros_parameters
73+
if config:
74+
self.from_dict(config)
75+
76+
@property
77+
def enable(self) -> bool:
78+
return self._enable
79+
80+
@enable.setter
81+
def enable(self, value: bool) -> None:
82+
self._enable = bool(value)
83+
84+
@property
85+
def delay(self) -> float:
86+
return self._delay
87+
88+
@delay.setter
89+
def delay(self, value: float) -> None:
90+
assert value > 0, f'MoveIt delay must be greater than 0. Got {value}'
91+
self._delay = value
92+
93+
@property
94+
def ros_parameters(self) -> dict:
95+
return self._ros_parameters
96+
97+
@ros_parameters.setter
98+
def ros_parameters(self, value: dict) -> None:
99+
assert isinstance(value, dict), (
100+
f'MoveIt ROS parameters must be a dictionary. Got {value} instead.')
101+
self._ros_parameters = value
102+
103+
def from_dict(self, d: dict) -> None:
104+
if self.ENABLE in d:
105+
self.enable = d[self.ENABLE]
106+
if self.ROS_PARAMETERS in d:
107+
self.ros_parameters = d[self.ROS_PARAMETERS]
108+
109+
def to_dict(self) -> dict:
110+
return {
111+
self.ENABLE: self.enable,
112+
self.ROS_PARAMETERS: self.ros_parameters
113+
}
114+
115+
44116
class ManipulatorListConfig(OrderedListConfig[BaseManipulator]):
45117

46118
def __init__(self) -> None:

0 commit comments

Comments
 (0)