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

Is there a graphical Virtual Joypad?

asked 2015-05-16 05:26:35 -0600

Myzhar gravatar image

Hi all, I searched anywhere and I could not find a Virtual Joypad for ROS.

What I'd like to do is something like the joypad in bottom right:

image description

before starting to write my own plugin for rqt/rviz I would like to know if I'm not going to do something that exists.

Thank you Walter

PS You can download the GUI of the image here: I created it to drive a robot directly connected by Serial to a uNav motor control board.

edit retag flag offensive close merge delete


+1. As @gvdhoorn mentioned, adding a feature to rqt_robot_steering is favourable idea. I also wanted the "DJ" pad like the image you posted for operating an omni-directional base but ended up using joy stick (PR is still open).

130s gravatar image 130s  ( 2015-05-16 06:22:35 -0600 )edit

3 Answers

Sort by » oldest newest most voted

answered 2015-05-16 05:56:38 -0600

gvdhoorn gravatar image

The rqt_robot_steering plugin is similar to what you describe/show, but doesn't have the circular dpad. It also publishes Twist messages, so rate of turn and linear velocity are proportional to how much the scroll bars are turned up or down. From your image I gather that the dpad is on/off only, and that velocities are set using the sliders on the left.

The ROS Android Teleop app does have a circular dpad, which could make control of a differential drive robot easier than the sliders of rqt_robot_steering. It also includes a simple image_view like component for streaming video.

before starting to write my own plugin for rqt/rviz I would like to know if I'm not going to do something that exists.

Well, there are at least the above two.

Perhaps updating / extending rqt_robot_steering with a dpad control would be nice.

In any case I'd go for an rqt plugin.

edit flag offensive delete link more


My circular pad is proportional. Vertical axis controls the forward speed, while horizontal axis controls the rotation speed. The sliders on the left only set the range of the speeds of the robot. When you push the pad on the top it sends to the robot the max forward speed set by the slider.

Myzhar gravatar image Myzhar  ( 2015-05-16 06:21:58 -0600 )edit

There's also the Teleop panel in rviz. It's in Panels->Add New Panel->rviz_plugin_tutorials->Teleop. Not quite the same as the d-pad interface, but it works.

Tom Moore gravatar image Tom Moore  ( 2015-05-16 08:08:42 -0600 )edit

I tried it... non really usable ☺ It could be good if the max speeds were configurable

Myzhar gravatar image Myzhar  ( 2015-05-16 11:35:45 -0600 )edit

answered 2015-07-09 14:33:45 -0600

I was playing with QML and ROS recently and wrote ros_qml package. So here is a quick example mimicking your interface (I was unsure about artwork licence, so drew my own). You can easily extend it with all these maximum speeds etc.

To run example:

roslaunch ros_qml ros_qml.launch qml_url:=`rospack find ros_qml`/examples/joypad.qml

The sliders control axes scaling factors from 0.0 to 1.0. A geometry_msgs/Twist message is published while the thumb position changes. Once the mouse button released the thumb goes back to center.

image description

Hope it helps.

P.S. The package depends on Qt 5.4, PyQt 5.4 (you may need to compile it for Python 2.7) and rospy_message_converter

edit flag offensive delete link more

answered 2015-07-08 17:30:33 -0600

130s gravatar image

mr_teleoperator is another option. It provides joypad-style UI and capable of multi robots.

edit flag offensive delete link more

Question Tools

1 follower


Asked: 2015-05-16 05:26:35 -0600

Seen: 3,453 times

Last updated: Jul 09 '15