Robot deployment fixes: bag recording + adding warning for robot-identity failure - #377
Merged
Merged
Conversation
JohnYanxinLiu
marked this pull request as draft
August 3, 2026 02:53
LOG_CONFIG selects which topic set in logging_bringup/config to record, default log.yaml. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
JohnYanxinLiu
force-pushed
the
johnliu/robot-deployment-fixes
branch
from
August 4, 2026 15:43
5710c4b to
fd4b131
Compare
JohnYanxinLiu
force-pushed
the
johnliu/robot-deployment-fixes
branch
from
August 5, 2026 07:50
bd428bb to
92ca2e6
Compare
It was bridged gcs -> robot, the same direction as the command it answers, so status never reached the GCS and the rqt Recording: label stayed blank. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
ros2 bag record renamed --exclude to --exclude-regex, and the old name is now an ambiguous prefix of four options, so argparse rejected the command and any section using exclude: recorded nothing. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
#318 dropped robot/bags/.gitignore and gcs/bags/.gitignore while moving a dozen others; nothing has covered recorded bags since. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
JohnYanxinLiu
force-pushed
the
johnliu/robot-deployment-fixes
branch
from
August 5, 2026 07:56
92ca2e6 to
d89765b
Compare
JohnYanxinLiu
marked this pull request as ready for review
August 5, 2026 16:07
andrewjong
approved these changes
Aug 5, 2026
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?
None — these were found while porting fixes back from a real mocap-room Jetson
deployment. Independent of the OptiTrack stack (#374/#375/#376); merges in either order.
Bag recording was broken four independent ways. Each one alone is enough to produce
no usable bag, and none of them reports an error where you would look for it:
The recorder never launched.
robot-base-docker-compose.yamlhas forwardedRECORD_BAGS, butlogging.launch.xmlhardcodedrecord_bag=falseandonboard_autonomy_all.launch.xmlincludes it with no arguments, so nothing everoverrode the default.
Recorder status was bridged backwards.
bag_record/bag_recording_statussat underthe "Outgoing from Robot" header in
domain_bridge.yamlbut was configuredgcs -> robot, the same direction as the command it answers.The main section errored out on an incompatible flag.
bag_record_nodepasses--excludetoros2 bag record, which Jazzy renamed to--exclude-regex..gitignore was readded to gcs and robot/bags/ and gcs/bags
Robot identity resolution failed somewhat silently silently. On the
hostname-sourced profiles (l4t,voxl) the OS hostname is the robot's identity.N/A — console-observable. The new warning at container startup:
How did you implement it?
logging.launch.xmlreads$(env RECORD_BAGS false)with an explicit default so it stayslaunchable when unset, and gains
LOG_CONFIG(defaultlog.yaml) to select the topic set.Recording still starts and stops via the GCS
set_recording_statustoggle — that is theintended control path and is unchanged. This is NOT currently present in the modern foxglove GCS. This must still be added but was out of scope for this PR.
For the identity warning, the
unknown_robotfallback itself is unchanged. It keeps an unidentified robot out of every real robot's namespace. Merely a more apparent warning is provided to the user upon startup.The check tests the resolved identity rather than the sentinel value, because only one
of several failure paths yields
unknown_robot:Also drops
ROBOT_NAME/ROS_DOMAIN_IDfromoverrides/l4t-px4-realrobot.env. No composeservice declares either, and Compose only injects what a service names in
environment:,so an env file could never set them. Verified with
grep -rn '${ROBOT_NAME\|${ROS_DOMAIN_ID' --include=*.yaml ., which finds onlyROBOT_NAME_MAP_CONFIG_FILE.robot_identity.mdand theconfigure-multi-robotskill bothprescribed that route and now point at the hostname or a map file instead.
How do you run and use it?
All commands below are against
robot-desktop.1. Negative control — this is what demonstrates the fix
The old failure was an absent node, not a broken one, so check that first:
2. Recorder comes up, and comes up idle
3. Status reaches the GCS (bridge direction)
Equivalently, the rqt control panel's
Recording:label should now readNOrather thanstaying blank.
4. Recording actually produces both sections
The
airstack_<ts>directory is the check that matters. Confirm it has content:Then stop, and confirm the mcap finalizes:
5. Bags are gitignored
git status --short # expect clean, despite robot/bags/ now holding bags6. Identity warning — both branches, no files to edit
Both print the warning at shell start. A normally-resolving container prints nothing.
Testing with PyTest
None.
Documentation
n —
docs/robot/docker/robot_identity.mdis already in the nav (mkdocs.yml:106); thisedits that existing page rather than adding one.
Yes.
robot_identity.mdwas corrected.The warning text above is the user-facing surface; there is no GUI component.
Versioning
Yes
Behavior change to flag for reviewers
Anyone currently running
RECORD_BAGS=truefor GCS bags will now also get abag_recordnode on every robot. It comes up idle and records nothing until the GCS toggle says so, but
it is not a no-op.
RECORD_BAGS=falseopts out.Follow-up branch
A Foxglove Bag Recorder panel.
🤖 Generated with Claude Code