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

Xbox One controller

asked 2017-07-06 06:26:16 -0500

tgaspar gravatar image

Hi ROS community,

We want to develop an interface to control a UR10 robot with an Xbox controller.

I can see that the joy has support for the Xbox 360 Wireless controller. My question is, would this driver also work for the Xbox One Wireless controller?

I am asking because the 360 is the old model, meaning it is harder and harder to get. On the other hand, Xbox One controller is rather easy to find and buy.

Thank you for your help! Cheers, Timo

edit retag flag offensive close merge delete


Hi, I'm just starting to do the same for a UR10. Were you successful when trying to control it with an xbox controller? I was thinking in using a controller like the logitech extreme 3d, as I think it might be easier to controll both axis but I really don't know yet. The xbox would be easier to find.

Thank you!

sophvk gravatar image sophvk  ( 2019-04-05 10:04:07 -0500 )edit

Hi there! I was successful at implementing the joystick control. However, it turned out that using the Xbox 360 (instead of the Xbox One) controller is way easier as the drivers for Linux are more available (at least that was the case when I was working on this). As for the control of the robot itself, my approach was to allow the control in Cartesian space through one of the analogue sticks and the two analogue triggers at the back of the controller. So X and Y were on the stick, Z (up and down) was on the two triggers. This controlled the translational motions. Upon a button press, the same commands started to control the rotation. If you have more questions, don't hesitate to ask, I will be glad to help.

tgaspar gravatar image tgaspar  ( 2019-04-08 04:11:09 -0500 )edit

Great, thanks. I had this project on standby and now I am back with it. I am a little bit lost on how to control it itself, did you do it using moveit? Or subscribing to topics? If you could give me a line or two about how to achieve this it would be very much appreciated!

sophvk gravatar image sophvk  ( 2020-01-08 13:01:13 -0500 )edit

It was not that simple. For various reasons, we implemented a low-level real-time server that controlled the UR directly by sending joint angles to the UR controller. That allowed us to implement various motion modes that we could modify ourselves depending on our needs. One of those was the "Cartesian velocity mode". In this mode, our custom real-time server used IK to estimate joint values that would be sent to the UR controller. So on the top-level, we could therefore link the joystick inputs to the "Cartesian velocity mode" inputs. I know it does not help you directly but I hope this information gives you an idea how you could solve this for your case.

tgaspar gravatar image tgaspar  ( 2020-01-09 04:14:11 -0500 )edit

It does, it actually helps a lot as I was planning on doing something similar, with IK and a server feeding the joint angles (I am not sure yet if using movej or there is another way regarding ROS topics, but I will find out, I still have a lot to study). Thank you!

sophvk gravatar image sophvk  ( 2020-01-09 08:23:45 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2017-07-06 07:59:29 -0500

gvdhoorn gravatar image

updated 2017-07-06 08:21:07 -0500

Support for joysticks and controllers in general will first and foremost depend on whether Linux (or the OS) supports it.

Any joystick using the regular /dev/js/.. devices (using the input sub system) should work and would probably only need a proper button and axes mapping config.

A quick google ("linux xbox one controller") results in things like paroj/xpad and How to Set Up an Xbox One Controller in Ubuntu (I picked a random result, I don't know whether it'll work), so it would seem there is at least some support.

I can see that the joy has support for the Xbox 360 Wireless controller

It's hopefully clear that joy doesn't really have support for anything. It just uses the regular Linux joystick (or really: input sub system) support.

I expect the joy node will pick the jsX devices up and from there on things should just work (provided you configure the mapping).

edit flag offensive delete link more


Thank you very much for your answer.

I did check if the Xbox One Wireless controller has a Linux driver and came to the same conclusion as you did: that it should work. But of course I wanted to hear a second opinion on that.

I will provide my findings and update once I try it.

Thanks again.

tgaspar gravatar image tgaspar  ( 2017-07-06 10:11:26 -0500 )edit

Question Tools


Asked: 2017-07-06 06:26:16 -0500

Seen: 5,624 times

Last updated: Jul 06 '17