Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve MoveIt Servo tutorial with keyboard teleop instructions. #833

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 46 additions & 1 deletion doc/realtime_servo/realtime_servo_tutorial.rst
Original file line number Diff line number Diff line change
Expand Up @@ -114,12 +114,57 @@ An `rqt_graph` of the servo node is shown below (Enlarge by clicking it). Most o
.. image:: servo_rqt_graph.png
:width: 700px

Configuring Control Devices (Gamepads, Joysticks, etc)
Configuring Control Devices (Gamepads etc.)
------------------------------------------------------
The ``moveit_servo/config`` folder contains two examples of converting `SpaceNavigator <https://www.3dconnexion.com/spacemouse_compact/en/>`_ 3D mouse commands to servo commands. ``spacenav_teleop_tools.launch`` loads a config file then publishes commands to the servo node on the ``spacenav/joy topic``. It is easy to create your own config file for a particular joystick or gamepad.

``spacenav_cpp.launch`` launches a C++ node that does the same thing but with less latency. We do not plan to accept C++ pull requests for more controller types because there is a lot of overhead involved in supporting them.

Configuring Keyboard as a Control Device
------------------------------------------------------
Assuming you are in ``~/ws_moveit`` folder already, ``cd`` to ``src/universal_robot`` and checkout the latest ``noetic-devel`` branch with ``git checkout noetic-devel``. After this, you should have a ``ur5_moveit_tutorials`` package under ``universal_robot`` folder. Finally:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't see a ur5_moveit_tutorials package here: https://github.com/ros-industrial/universal_robot/tree/noetic-devel

Am I looking in the wrong place?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah. The package exists on my fork. I also have a PR for that -> ros-industrial/universal_robot#688. Unfortunately there isn't activity since I've created that PR.


Install any new dependencies that may be missing: ::

rosdep install -y --from-paths . --ignore-src --rosdistro $ROS_DISTRO

Re-build and re-source the workspace. ::

cd ~/ws_moveit/

catkin build

source devel/setup.bash

In Terminal-1, run ::

roslaunch ur5_moveit_tutorials ur5_moveit_servo_w_traj_controller.launch

In Terminal-2, run ::

rosrun ur5_moveit_tutorials keyboard_teleop.py

See the following video for an example usage:

.. raw:: html

<div style="position: relative; padding-bottom: 5%; height: 0; overflow: hidden; max-width: 100%; height: auto;">
<iframe width="700" height="385" src="https://www.youtube.com/embed/BOcKcjQli3o?si=w0dULrQFJ6G7sIJ9" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div>

Configuring Joystick as a Control Device
------------------------------------------------------
As an alternative, you can use a joystick to control the robot. Assuming you have already compiled the workspace and sourced it, simply run. ::

roslaunch ur5_moveit_tutorials ur5_moveit_servo_w_joy.launch

See the following video for an example usage:

.. raw:: html

<div style="position: relative; padding-bottom: 5%; height: 0; overflow: hidden; max-width: 100%; height: auto;">
<iframe width="700" height="385" src="https://www.youtube.com/embed/aad-QAYJP2c?si=B-kePIpuu0dpc8gq" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div>

Integration Testing
-------------------
Expand Down