Sixpair Mac

Web Controller

The default controller to drive the car with your phone or browser. This has a web live preview of camera. Control options include:

  1. A virtual joystick
  2. The tilt, when using a mobile device with supported accelerometer
  3. A physical joystick using the web adapter. Support varies per browser, OS, and joystick combination.
  4. Keyboard input via the 'ikjl' keys.

Download and start the SixPair tool. Then, connect your iOS device and the PS3 controller using USB cables to your Mac. Now, the SixPair tool will show a pairing button. Press the button and you're done. You can find the setup tool and instructions for Windows on the webpage of Dancing Pixel Studios. A tool to pair PS3 Controllers via USB. With this tool you can pair a PS3 Controller with a bluetooth Host for example your notebook or a android tablet. Sixpair can change the MAC address of the Controller via USB to the new destination MAC (your laptop).

Note: Recently iOS has disabled default Safari access to motion control.

RC Controller

If you bought an RC car then it might have come with a standard 2.4GHz car radio and receiver as shown in picture below. This can be used to drive the car.

You can also use the RaspberryPi pins to output directly to the car's servo and motor controller, without the need for an I2C servo driver board. A full tutorial on doing this is here.

Joystick Controller

Many people find it easier to control the car using a game controller. There are several parts that provide this option.

The default web controller may be replaced with a one line change to use a physical joystick part for input. This uses the OS device /dev/input/js0 by default. In theory, any joystick device that the OS mounts like this can be used. In practice, the behavior will change depending on the model of joystick ( Sony, or knockoff ), or XBox controller and the Bluetooth driver used to support it. The default code has been written and tested with a Sony brand PS3 Sixaxis controller. Other controllers may work, but will require alternative Bluetooth installs, and tweaks to the software for correct axis and buttons.

These joysticks are known to work:

  • Sony PS3 Sixaxis OEM (Not compatible with Jetson Nano)
  • SteelSeries Nimbus (works only on TX2 jetpack 4.2+, may work on the Nano)

These can be enabled by finding the CONTROLLER_TYPE in your myconfig.py and setting it to the correct string identifier ( after disabling the comment ).

These can be used plugged in with a USB cable. It's been much more convenient to setup Bluetooth for a wireless control.

There are controller specific setup details below.

Note: If you have a controller that is not listed below, or you are having troubles getting your controller to work or you want to map your controller differently, see Creating a New or Custom Game Controller.

Sixpair Mac Download

Change myconfig.py or run with --js

Will enable driving with the joystick. This disables the live preview of the camera and the web page features. If you modify myconfig.py to make USE_JOYSTICK_AS_DEFAULT = True, then you do not need to run with the --js.

PS3 Controller

Bluetooth Setup

Follow this guide. You can ignore steps past the 'Accessing the SixAxis from Python' section. I will include steps here in case the link becomes stale.

Reboot after changing the user group.

Plug in the PS3 with USB cable. Hit center PS logo button. Get and build the command line pairing tool. Run it:

Use bluetoothctl to pair

Unplug USB cable. Hit center PS logo button.

To test that the Bluetooth PS3 remote is working, verify that /dev/input/js0 exists:

Troubleshooting

In case the BT connection on the Raspberry Pi does not work, you see might something like this in bluetoothctl:

Try updating the Linux kernel and firmware by running:

And then reboot:

Charging PS3 Sixaxis Joystick

For some reason, they don't like to charge in a powered USB port that doesn't have an active Bluetooth control and OS driver. This means a phone type USB charger will not work. Try a powered Linux or mac laptop USB port. You should see the lights blink after plugging in and hitting center PS logo.

After charging, you will need to plug-in the controller again to the Pi, hit the PS logo, then unplug to pair again.

New Battery for PS3 Sixaxis Joystick

Sometimes these controllers can be quite old. Here's a link to a new battery. Be careful when taking off the cover. Remove 5 screws. There's a tab on the top half between the hand grips. You'll want to split/open it from the front and try pulling the bottom forward as you do, or you'll break the tab off as I did.

PS3 Mouse problems on Linux

Sometimes when you plug-in the PS3 joystick it starts taking over your mouse. If you want to prevent that, you can run this:

PS4 Controller

The following instructions are based on RetroPie and ds4drv.

Install ds4drv

Running on your pi over ssh, you can directly install it:

Grant permission to ds4drv

Run ds4drv

If you see Failed to create input device: '/dev/uinput' cannot be opened for writing, reboot and retry. Probably granting permission step doesn't take effect until rebooting.Some controllers don't work with --hidraw. If that's the case try the command without it. --led 00ff00 changes the light bar color, it's optional.

Start controller in pairing mode

Press and hold Share button, then press and hold PS button until the light bar starts blinking. If it goes green after a few seconds, pairing is successful.

Run ds4drv in background on startup once booted

paste:

Save and exit. Again, with or without --hidraw, depending on the particular controller you are using.

To disconnect, kill the process ds4drv and hold PS for 10 seconds to power off the controller.

XBox One Controller

Mac

bluetooth pairing

This code presumes the built-in linux driver for 'Xbox Wireless Controller'; this is pre-installed on Raspbian, so there is no need to install any other drivers. This will generally show up on /dev/input/js0. There is another userland driver called xboxdrv; this code has not been tested with that driver.

The XBox One controller requires that the bluetooth disable_ertm parameter be set to true; to do this:

  • edit the file /etc/modprobe.d/xbox_bt.conf (that may create the file; it is commonly not there by default)
  • add the line: options bluetooth disable_ertm=1
  • reboot so that this takes affect.
  • after reboot you can verify that disable_ertm is set to true entering this command in a terminal:

bash cat /sys/module/bluetooth/parameters/disable_ertm

  • the result should print 'Y'. If not, make sure the above steps have been done correctly.

Once that is done, you can pair your controller to your Raspberry Pi using the bluetooth tool. Enter the following command into a bash shell prompt:

That will start blue tooth pairing in interactive mode. The remaining commands will be entered in that interactive session. Enter the following commands:

That last command will start the Raspberry Pi scanning for new bluetooth devices. At this point, turn on your XBox One controller using the big round 'X' button on top, then start the pairing mode by pressing the 'sync' button on the front of the controller. Within a few minutes, you should see the controller show up in the output something like this;

Write down the MAC address, you will need it for the following steps. Enter this command to pair with your controller:

where YOUR_MAC_ADDRESS is the MAC address you copied previously. If it does not connect on the first try, try again. It can take a few tries. If your controller connects, but then immediately disconnects, your disable_ertm setting might be wrong (see above).

Once your controller is connected, the big round 'X' button on the top of your controller should be solid white. Enter the following commands to finish:

Now that your controller is trusted, it should automatically connect with your Raspberry Pi when they are both turned on. If your controller fails to connect, run the bluetoothctl steps again to reconnect.

Creating a New or Custom Game Controller

To discover or modify the button and axis mappings for your controller, you can use the Joystick Wizard. The Joystick Wizard will write a custom controller named 'my_joystick.py' to your mycar folder. To use the custom controller, set CONTROLLER_TYPE='custom' in your myconfig.py.

Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.
Description: Instructions for pairing the PR2 to a new PS3 joystick.
Keywords: teleop ps3
Tutorial Level: ADVANCED

Contents

Find the PR2's Bluetooth MAC Address

The first step is to find the PR2's bluetooth MAC address. The key step here is that it is c2 that has bluetooth:

You should see output something like:

The MAC address is listed after BD Address. In this example it is 00:1B:DC:00:06:F8.

If this doesn't work, you can try:

If that still does not work, doublecheck that you are running on c2 not c1.

Set the Joystick's Bluetooth Master

Using the microUSB cable, plug the joystick into any computer running ROS for which you have sudo. Set the joystick's Bluetooth master to the PR2's MAC address using:

You should see output like:

Pair the Joystick and PR2

Sixpair Tool Mac

Unplug the joystick from the computer. The PR2 automatically runs ps3joy.py so you should not have to start that. Instead simply start the robot:

And then launch pr2_teleop

Press the center button of the joystick to pair it with the PR2. You should now be able to control the PR2 using the new joystick.

Sixpair Download Mac

More Information

For more information, see the ps3joy package. Pairing a new PS3 joystick with the PR2 is similar to pairing the joystick to a computer with one USB.

When following any tutorials about bluetooth on the PR2, remember:

  1. Bluetooth is on c2 not c1
  2. The PR2 starts ps3joy.py when it boots. If you try the command you will see an error about the process already running. There was apparently a problem with Karmic that would also give this error, but make sure you have killed any previous ps3joy process before trying those fixes: