ROS交流群
ROS Group
产品服务
Product Service
开源代码库
Github
官网
Official website
技术交流
Technological exchanges
激光雷达
LIDAR
ROS教程
ROS Tourials
深度学习
Deep Learning
机器视觉
Computer Vision

PS3 joystick ROS driver



  • Xiaoqiang Homepage

    The ros driver of the ps3 controller is ps3joy in the joystick_drivers package. This driver supports the original Sony handle, but there is a problem with the support of some others ps3 controllers. We have modified on the basis of ps3joy, added a ps3joyfake_node.py script as a driver for other joysticks, the package source code address is here. Let’s take Xiaoqiang as an example to demonstrate the installation steps and simple usage of this package.

    installation steps

    ssh enters Xiaoqiang ros workspace, compile after downloading the source code. If you have install xiaoqiang system image, you can skip this step.

    ssh xiaoqiang@192.168.xxx.xxx
    cd Documents/ros/src/
    git clone https://github.com/BlueWhaleRobot/joystick_drivers.git
    cd ..
    catkin_make
    If the following error is prompted
    error spnav.h no such file
    First install the following package, then re-execute catkin_makee
    sudo apt-get install libspnav-dev
    

    Quick usage

    After ps3joyfake_node.py starts, it converts the data of the joystick button received by bluetooth into the standard joy msg, and publishes it in ros with /joy as the topic, that is, a file of ps3joyfake_node.py is equivalent to two files of ps3joy.py + joy_node. It is no longer necessary to open the joy_node node in actual use.

    1. Bind the joystick to the usb bluetooth adapter, just bind once, skip this step next time.

      Connect the joystick to the host through the usb data cable, and plug the USB bluetooth adapter into the host.

      sudo bash
      rosrun ps3joy sixpair
      

      At this point, you will get an output similar to following. The current and setting mac addresses are the same.

      Current Bluetooth master: 00:22:b0:d0:5a:09
      Setting master bd_addr to 00:22:b0:d0:5a:09
      
      # If the following error occurs
      Current Bluetooth master: 00:1b:dc:00:07:3c
      Unable to retrieve local bd_addr from `hcitool dev`.
      Please enable Bluetooth or specify an address manually.
      # Run
      hciconfig hci0 reset
      # If you run hciconfig hci0 reset error
      # Can't init device hci0: Operation not possible due to  
      # Run 
      rfkill unblock all 
      # and run 
      hciconfig hci0 reset
      # rerun
      rosrun ps3joy sixpair
      

      After the binding setting is completed, disconnect the handle and the usb connection of the host.

      Ctrl+D exits root mode

    2. Pair the handle with the usb Bluetooth adapter

      # Make sure the Bluetooth receiver is plugged into the host usb port
      sudo bash
      rosrun ps3joy ps3joyfake_node.py
      

      The following prompt will appear normally.

      root@xiaoqiang-desktop:~# rosrun ps3joy ps3joyfake_node.py 
      No inactivity timeout was set. (Run with --help for details.)
      Waiting for connection. Disconnect your PS3 joystick from USB and press     the pairing button.
      If the following error is prompted
      ImportError: No module named bluethooth
      Please install the following packages first, then re-run
      sudo apt-get install libbluetooth-dev
      sudo pip install PyBluez
      

      Press the joystick pairing button in the image below

      0_1537779842259_e2a1873d-f564-4ba1-9d0c-ff7d3574f8e1-image.png

      If the pairing is successful, the above window will output a result similar to the following.

      root@xiaoqiang-desktop:~# rosrun ps3joy ps3joyfake_node.py 
      No inactivity timeout was set. (Run with --help for details.)
      Waiting for connection. Disconnect your PS3 joystick from USB and press the pairing button.
      Connection activated
      
    3. View handle output

      # Open a new window and print the button output
      rostopic echo /joy
      

      Normally the following similar results will appear

      header: 
        seq: 297
        stamp: 
          secs: 1488877867
          nsecs: 535818099
        frame_id: ''
      axes: [0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.21316899359226227, 0.0]
      buttons: [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
      

      As we can see that the fourth button was pressed.

    4. Start the relevant joy msg processing node

      Be careful not to start the joy_node again.

      # Take Xiaoqiang as an example. After launching the following launch file, you can remotely move Xiaoqiang.
      roslaunch turtlebot_teleop ps3fakexiaoqiang_teleop.launch
      

    For xiaoqiang user with a joystick you can also use the joystick according to this tutorial

    When step 1 is bound, if the prompt cannot find the handle device and cannot be bound, you can perform the following two steps to solve the problem: 1. Click the Bluetooth icon in the upper right corner of the system desktop to close the connected Bluetooth handle service.

    0_1537789925803_df37f5e8-5c58-469f-9156-408c2d6508d7-image.png

    0_1537789931907_a7e7225e-ecb2-4b86-9363-2afe70fb0e99-image.png

    Xiaoqiang Homepage
    Back To Index