ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Depending on what you mean by "teleop" things would have to be implemented differently.

Assuming that you want to do joint velocity control of the robot you can use the JointGroupVelocityController. With this you basically stream a target velocity for all joints into a ROS topic which will then be executed by the robot. With the gazebo implementation from ur_gazebo this won't work, as it currently only offers a position-based interface. For that method to work, you would have to modify it using a velocity joint interface (See this post as an example implementing a velocity inteface).

However, you could also use URSim instead of gazebo if you just want to have a simulated robot for checking your development and you are not actually doing a physics simulation of your application. An added benefit is, that you can test your application directly using the ur_robot_driver as if you were connecting to a real robot.


In case you would like to do some sort of Cartesian teleoperation you have two choices:

  1. Use some kind of inverse kinematics to generate joint-based motion commands out of your Cartesian commands that can be sent to the robot using the joint-based velocity streaming as explained above.
  2. Use the brandnew Cartesian motion controllers currently being integrated into the driver. With that, you can use the twist_controller to command any Cartesian twists directly to the robot. This solution won't be working with a gazebo simulation, as it uses new hardware interfaces not being implemented in gazebo currently. However, using URSim as a simulation backend would obviously work like the real robot, again.