def __init__(self, scale=1.0, offset=0.0, deadband=0.1):
"""
Maps joystick input to robot control.
@type scale: float
@param scale: scaling applied to joystick values [1.0]
@type offset: float
@param offset: joystick offset values, post-scaling [0.0]
@type deadband: float
@param deadband: deadband post scaling and offset [0.1]
Raw joystick valuess are in [1.0...-1.0].
"""
sub = rospy.Subscriber("/joy", Joy, self._on_joy)
self._scale = scale
self._offset = offset
self._deadband = deadband
self._controls = {}
self._buttons = {}
self._sticks = {}
button_names = (
'btnLeft', 'btnUp', 'btnDown', 'btnRight',
'dPadUp', 'dPadDown', 'dPadLeft', 'dPadRight',
'leftBumper', 'rightBumper',
'leftTrigger', 'rightTrigger',
'function1', 'function2')
stick_names = (
'leftStickHorz', 'leftStickVert',
'rightStickHorz', 'rightStickVert')
#doing this with lambda won't work
def gen_val_func(name, type_name):
def val_func():
return type_name(
name in self._controls and self._controls[name])
return val_func
for name in button_names:
self._buttons[name] = ButtonTransition(gen_val_func(name, bool))
for name in stick_names:
self._sticks[name] = StickTransition(gen_val_func(name, float))
评论列表
文章目录