Skip to content

Make a gamepad work in the maritime container - #7

Open
bsb808 wants to merge 4 commits into
mainfrom
bsb/apt_teleop_deps
Open

Make a gamepad work in the maritime container#7
bsb808 wants to merge 4 commits into
mainfrom
bsb/apt_teleop_deps

Conversation

@bsb808

@bsb808 bsb808 commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

Updates to the maritime container as a consequence of reviewing HonuRobotics/bluerobotics_models#47

  • Adds the teleop packages. Better to have them apt installed than to have to run rosdep each time.
  • Mount the gamepad. /dev/input was not mounted.
    • "The mount alone is still not enough. Docker's device cgroup denies the nodes even once they are visible in the filesystem, so open() fails with EPERM and SDL reports nothing found — indistinguishable from an unplugged gamepad. device_cgroup_rules: ['c 13:* rmw'] is what actually grants access. Both were tested separately against a Logitech F310; the mount without the cgroup rule reproduces the empty-table symptom exactly."
    • "The directory is mounted rather than a node named in devices:, because event* numbering changes on every replug and devices: does not recurse into a directory. No group_add: input is needed: logind's ACL already grants uid 1000 rw on the nodes, and the container user is uid 1000."
  • Adds joystick (for jstest) and evtest, the console cross-checks for the two device flavours, plus ros-${ROS_DISTRO}-rqt and ros-${ROS_DISTRO}-rqt-graph for general introspection.

Testing

Re-build the maritime container and work through the teleop.md demonstration in HonuRobotics/bluerobotics_models#47 - with a Logitech F310 gamepad (with the back switch on X)

bsb808 and others added 4 commits September 9, 2026 15:10
The mirror listed ros-joy-teleop and ros-joy-linux, neither of which is
declared by any package in the workspace. joy_node ships in ros-joy, and
teleop_twist_joy is a different package from joy_teleop; both are
exec_depends of bluerobotics_teleop and rosdep reports both unsatisfied,
so teleop.launch.py fails in a fresh container with "package 'joy' not
found". The near-miss entries are left in place.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
ros-${ROS_DISTRO}-rqt is the framework: the shell and the plugin loader.
Its dependencies are rqt-gui, rqt-gui-cpp, rqt-gui-py and rqt-py-common,
so a container built with it lists exactly the plugins ros-base already
carried and rqt_graph is absent. Name the plugin package too.

rqt-common-plugins would bring the other fifteen as well; this stays with
the one plugin actually asked for, and it is the only entry here that
needs qt_dotgraph, pydot and pygraphviz.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@bsb808
bsb808 marked this pull request as ready for review September 10, 2026 05:45
@bsb808
bsb808 requested a review from caguero September 11, 2026 03:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant