What I’m building:
A 6-wheeled rover (RB-0 by planktonrobo) running on a Jetson Orin Nano Developer Kit “Super” (JetPack 6.2.1, Python 3.10). It has 12 active servo channels on an Adafruit PCA9685: 6 continuous rotation servos for drive wheels and 6 positional servos for steering. Control input is a PS5 DualSense over Bluetooth.
What’s confirmed working in isolation:
- I2C communication with the PCA9685 via
busio.I2C(board.SCL, board.SDA)(pins 3/5 on the 40-pin header) - Individual servo control using
adafruit-circuitpython-pca9685+adafruit-circuitpython-motor— both servo types respond correctly when tested one at a time - DualSense is paired over Bluetooth and visible to the OS at
/dev/input/event9 - Raw axis reads via
evdevwork correctly — confirmed left stick Y maps toABS_Y(0=full forward, 127=center, 255=full backward)
What hasn’t worked:
- pygame — unreliable on this platform.
pygame.event.pump()doesn’t consistently refresh joystick axis values, causing stale reads. Likely an SDL/headless issue on Jetson. - approxeng.input — installed v2.6.4 but it only has definitions for DualShock 3 and 4. DualSense is not recognized (
ControllerNotFoundErroreven with controller connected). - Combined servo + controller script — when we bring everything together, continuous servos start spinning the moment the PCA9685 initializes (before any controller input), and a positional servo on one channel behaves like a continuous servo despite testing correctly in isolation.
Specific questions:
- What input library do people actually use for PS5 DualSense on Jetson? Is there a working
approxeng.inputDualSense definition, or isevdevdirect the right approach? - Is there a known issue with initializing multiple PCA9685 servo channels together on Jetson/Blinka that causes channels to interfere with each other?
- Has anyone successfully run a PCA9685 + game controller setup on the Orin Nano Super specifically? The “Super” variant has caused issues with other libraries (e.g.
Jetson.GPIOdoesn’t recognize it without patching).
Any working example or recommended stack would be hugely appreciated.