or
What in the world has Clint been working on?
An abstraction between controllers and hardware
Barrett's C++ library for communicating with the
WAM and BarrettHand
The control loop breaks hardware communication into "tasks" that can be configured to run every N control cycles.
And left equivalents
Talk is cheap. Show me the code.
— Linus Torvalds
ssh prdemo@herb0
screen -S ros_control
# will launch controller_manager and grav comp
roslaunch herb_launch ros_control.launch
rosservice call /controller_manager/list_controllers
# no change to basic functionality but
# ExecuteTrajectory will automatically load correct controller
traj = robot.right_arm.PlanToNamedConfiguration('home')
robot.ExecutePath(traj)
# manually set grav-comp/position control
robot.right_arm.SetStiffness(True)
# == SetStiffness(1) == SetStiffness(0.001)
# get some information
ft = robot.right_hand.GetForceTorque()
# NotImplementedError:
# Servoing and velocity control not yet supported
# under ros_control
robot.right_arm.Servo(vels)
# NotImplementedError:
# GetBreakaway is not yet implemented under ros_control
baw = robot.right_hand.GetBreakaway()
# NotImplementedError:
# The head is currently disabled under ros_control
robot.head.MoveTo([0.0, 0.3])
not implemented
from prpy.controllers import RewdOrTrajectoryController
from ros_control_client_py import ControllerManagerClient
robot = # ... herb
timed_traj = # ...
ctrl_manager = ControllerManagerClient()
with ctrl_manager.request('right_trajectory_controller'):
ctrl = RewdOrTrajectoryController(
robot,
'right_trajectory_controller',
robot.right_arm.GetJointNames())
ctrl.SetPath(timed_traj)
prpy.util.WaitForController(ctrl, timeout=20)
TESTING!!!
And that means you!