l4t infra fixes: aarch64 build args + robot-name resolution#370
Merged
Conversation
Foundational real-robot deployment fixes extracted from the OptiTrack emulation PR (#367) so they can be reviewed and merged first; #367 will be rebased on top afterward, shrinking its diff. Docker / ARM build: - Add TARGET_ARCH build arg (default x86_64) to Dockerfile.robot and use it to parametrize LD_LIBRARY_PATH, so the aarch64 (Jetson/l4t, voxl) images link against the correct arch triplet. - docker-compose.yaml passes TARGET_ARCH: aarch64 to the voxl and l4t image builds. - Install ros-${ROS_DISTRO}-mavros-extras (generic dep; also provides the vision_pose plugin used by external-pose deployments). Robot name resolution: - .bashrc now honors a pre-set ROBOT_NAME (e.g. injected by docker compose) instead of always overriding it from the container/hostname mapping. The bws() flock build lock is retained. - default_robot_name_map.yaml catch-all fallback maps to unknown_robot (valid ROS namespace token) instead of unknown-robot. Version bumped 0.19.0-alpha.5 -> 0.19.0-alpha.6 for the version-increment gate. Note: the trajectory_controller/trajectory_library robustness fixes originally listed for extraction are already present on develop (PR #365), so they are not included here. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
krrishj18
approved these changes
Jul 20, 2026
JohnYanxinLiu
marked this pull request as ready for review
July 21, 2026 04:47
JohnYanxinLiu
added a commit
that referenced
this pull request
Jul 21, 2026
…e resolution
Parametrize the robot-l4t compose service so a single service covers real
deployments without editing compose:
- AUTONOMY_ROLE and FCU_URL are now ${VAR:-default} overridable (and FCU_URL is
unquoted so the literal serial path reaches mavros).
- Rosbag output path is BAG_STORAGE_PATH-overridable.
Update the configure-multi-robot skill to reflect the honor-pre-set-ROBOT_NAME
guard (#370): document pinning ROBOT_NAME in an override for a single real robot,
the never-on-the-shared-service caveat, and the unknown_robot fallback fixes by
topology.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What features did you add and/or bugs did you address?
Which GitHub issue does this address?
No dedicated issue. This is a foundational infra PR extracted from Johnliu/optitrack emulation #367 (OptiTrack emulation) so the generic real-robot deployment fixes can be reviewed and merged first; Johnliu/optitrack emulation #367 is then rebased on top, shrinking its diff. It also unblocks the upcoming l4t (Jetson) profile work.
Additional description if not fully described in the GitHub issue
Two independent concerns, both generic (nothing OptiTrack-specific):
1. aarch64 (Jetson/l4t, voxl) image builds
Dockerfile.robot: addARG TARGET_ARCH=x86_64and use it to parametrizeLD_LIBRARY_PATH(.../lib/${TARGET_ARCH}-linux-gnu) so the arm64 images link against the correct arch triplet instead of the hard-codedx86_64.Dockerfile.robot: installros-${ROS_DISTRO}-mavros-extras(generic MAVROS dependency; also provides thevision_poseplugin used by external-pose deployments).docker-compose.yaml: passTARGET_ARCH: aarch64to thevoxlandl4timage builds.2. Robot name resolution ("robot launches with no name" bug)
.bashrc: honor a pre-setROBOT_NAME(e.g. injected via docker compose) instead of always overriding it from the container/hostname mapping. Thebws()flockbuild lock is retained.default_robot_name_map.yaml: catch-all fallback maps tounknown_robot(a valid ROS namespace token) instead ofunknown-robot(a hyphen makes the namespace invalid and launch fails).Please add videos and images to demonstrate the feature.
N/A — build-arg + shell/config changes, no runtime UI.
How did you implement it?
TARGET_ARCHdefaults tox86_64, so the desktop/CI build is byte-for-byte unchanged; only thevoxl/l4tservices opt intoaarch64.if [ -z "${ROBOT_NAME:-}" ]; then ... fi) wrapped around the existing container/hostname mapping block — no behavior change whenROBOT_NAMEis unset.How do you run and use it?
ROBOT_NAMEis honored:Testing with PyTest
build_packages/build_dockersuites exercise the affected Dockerfile/compose.airstack test -m "build_docker or build_packages" -vTARGET_ARCHdefault keeps the x86 build identical todevelop.Documentation
CHANGELOG.mdupdated.Versioning
.envVERSION0.19.0-alpha.5→0.19.0-alpha.6per semantic versioning (trailing alpha label increment). CHANGELOG[Unreleased]updated.Generated with Claude Code