/swarms_xbox_interface

Generates an interface between Swarms input device and a userland Xpad device.

Primary LanguagePython

Swarms Xbox interface

Generates an interface between Swarms input device and a userland Xpad device.

Getting Started

The input device outputs an UDP-packet with a JSON-object. Therefore, some steps are required to mask the input device as a gamepad.

Prerequisites

To employ the Swarms input device with Qgroundcontrol, the Swarms input device has to be masked as recognized gamepad controller, like the Xbox 360-controller.

  • xboxdrv
    • The shell script employed in this repo assumes that xboxdrv is installed in /usr/bin/xboxdrv
    • For xboxdrv to work, the uinput module needs to be writeable: sudo chmod 0666 /dev/uinput
  • python 2.7 with python-evdev

Although not required, it's beneficial to install jstest-gtk.

sudo apt-get install jstest-gtk

This allows the user to test gamepads and joysticks.

Connection with the Swarms input device

The Swarms input device employ an ethernet interface. The input device consists of two Raspberry Pi machines; the main machine has the local IP-address 172.16.0.12. As of May 2018 the username and password for the machine is the Raspberry Pi default. To ssh into the input device the wired connection needs to be properly set-up:

Image of IPv4-settings on Ubuntu

In the terminal window the input device can be accessed by ssh-connection.

ssh pi@172.16.0.12

The machine doesn't send out signals by default. In the home directory there's a shell script that accesess the RPi.GPIO Python library:

./start_local.sh

This script sends a JSON-list through UDP-packets.

PS4-controller connection

To translate a JSON-object to a gamepad, a template or mold has to be employed. For this repo, the mold is a physical PS4-controller. For the shell script to correctly work, a physical PS4-controller needs to be connected by USB. The PS4-controller connection can be investigated through lsbus.

Installation

git clone https://github.com/sunnyerteit/swarms_xbox_interface

Running the program

After prerequisites are fulfilled and connection is established with the input device, the program is started through a shell-script:

# The first step allows everyone to execute the script.
sudo chmod +x Controller_event.sh

sudo ./Controller_event.sh

When running the script, there's an initial delay of <2 minutes, as xboxdrv requires some time to initialize.

Physical input

As of May 2018, there are only four physical joysticks that generates output to the userland Xpad device.