Repository navigation
Nav System (Ros and Non-ros) - #1717
Closed
jeff-hykin wants to merge 553 commits into
Closed
jeff-hykin wants to merge 553 commits into
jeff-hykin wants to merge 553 commits into
Conversation
Keep both new entries in alphabetical order: - unitree-go2-webrtc-keyboard-teleop (from dev) - unity-sim (from this branch)
…rename After merging dev, the rerun_bridge function was renamed to run_bridge and changed to a standalone runner. Blueprint should use RerunBridgeModule.blueprint() like all other blueprints.
…n up code style - UnityBridgeConfig now inherits properly from ModuleConfig (Pydantic BaseModel) after dev changed ModuleConfig from dataclass to Pydantic - Use pydantic.Field instead of dataclasses.field for default_factory - Remove empty __init__.py (not allowed per test_no_init_files) - Remove section marker comments (not allowed per test_no_sections) - Merge latest dev (LFS assets for piper, xarm6) This broke after merging dev because ModuleConfig changed from @DataClass to Pydantic BaseModel. The @DataClass decorator on UnityBridgeConfig was generating an __init__ that required all fields as positional args, ignoring the Pydantic field defaults.
test_sim_module.py was replaced by test_sim_adapter.py in PR #1639 (MuJoCo sim support for Manipulation). Accept dev's deletion.
…o jeff/fix/rosnav3
…snav3 # Conflicts: # dimos/simulation/manipulators/test_sim_module.py
- native_module: buffer last 50 stderr lines in reader thread so crash report actually contains stderr output (was always empty before because the reader thread consumed and closed the stream) - unity module: wrap server socket in try/finally to prevent FD leak if bind()/listen() raises - unity module: drain stale send-queue messages at start of each new Unity connection to prevent delivering old-session data - unity module: read self._x/self._y under _state_lock in _on_terrain callback to ensure atomic read of the position pair
- Move _server_ready.set() inside ws_server.serve() context so stop() waits for the port to actually bind before sending shutdown signal - Add /ws path filter to reject non-viewer WebSocket connections - Add pytest.mark.skipif for dimos-viewer binary test in CI - Fix import ordering in manipulation/blueprints.py
The default websockets ping_interval=20s + ping_timeout=20s was too aggressive. Increase both to 30s to give the viewer more time to respond, especially during brief network hiccups.
Must-fix: - _running changed from bare bool to threading.Event for proper cross-thread visibility (consistent with _unity_ready and halt) - _sim_loop now holds _state_lock during position reads/writes so _on_terrain sees atomic position pairs - _unity_sender logs exceptions before halting instead of swallowing - Camera intrinsics unified: _publish_camera_info and rerun_static_pinhole now share the same constants (_CAM_FX/FY/CX/CY from 120° HFOV) Should-fix: - import signal and import cv2 moved to top-level (no inline imports) - stop() catches subprocess.TimeoutExpired specifically, logs SIGKILL escalation - Queue drain loop simplified: while True + Empty break (no .empty()) - server_sock wrapped in try/finally from creation (not just the loop) - unity_host default changed from 0.0.0.0 to 127.0.0.1 (loopback) - Bridge connection uses 30s read timeout to detect hung Unity sessions Nits: - Tests use try/finally for thread cleanup - Pickle test checks _running.is_set() not bare bool - Added edge case tests: empty/truncated/garbage pointcloud, truncated compressed image, pose_stamped round-trip - ROS1 deserializers log at DEBUG level on parse failure instead of silently returning None
- Add timeout parameter to RpcCall.__init__ and pass through to call_sync - Replace RPCClient.default_rpc_timeout with DEFAULT_RPC_TIMEOUT constant - Update all imports of removed blueprint aliases to use ClassName.blueprint - Fix zero quaternion (0,0,0,0) -> identity (0,0,0,1) in legacy rosnav - Fix stop_navigation() not unblocking navigate_to() in legacy rosnav - Remove rosnav.py that shadowed rosnav/ package, add __init__.py - Regenerate all_blueprints.py
…to jeff/fix/rosnav5
…to jeff/fix/rconnect
…o jeff/fix/rosnav5
…to jeff/fix/rosnav5
Accept dev's deletions for files moved to dimos/core/coordination/. Take dev's versions for infrastructure files. PR-specific nav changes preserved in smart_nav module files.
NativeModule doesn't support __class_getitem__, so NativeModule[_RebuildConfig] fails at class definition time on Python 3.12. The default_config class attribute already provides the config type.
Module and StreamModule don't support __class_getitem__, so Module[Config] fails at class definition time on Python 3.12. The default_config class attribute already provides the config type.
- Fix dimos.core.blueprints -> dimos.core.coordination.blueprints imports - Add config type annotations to NativeModule subclasses - Add start/stop methods to Module/NativeModule subclasses - Fix CLI arg test assertions to match cli_name_override mappings - Update PGO tests for Module (no longer NativeModule) - Fix TerrainAnalysis test field names - Add __getstate__/__setstate__ to NativeModule and UnityBridgeModule - Fix G1 config for new RobotConfig schema - Add thread leak exclusions in conftest for framework threads - Remove section markers from config files - Skip native binary tests when binaries not built - Handle LCM socket errors in transport tests - Mark viewer binary test as xfail in headless mode - Exclude .ignore.enhance from test_no_sections
- Wrap LCM transport test in OSError handler for socket unavailability - Skip path data test when LFS data not available - Filter daemon threads from thread leak detection - Fix duplicate code in test_paths_and_blueprint
Keep tele_cmd_vel topic name from rosnav5 branch while incorporating speed constant documentation from dev.
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.
Todo:
Pre-requisite PRs
Draft: only becase there was a LOT of merges recently so stuff needs to be re-tested
Problem
Robot blueprints each duplicated viewer backend selection logic (foxglove vs rerun vs rerun-web vs rerun-connect), making it error-prone to add new backends or change behavior. The RerunBridge also lacked a WebSocket server for dimos-viewer keyboard/click events in --connect mode.
Solution
vis_module()factory that centralizes viewer backend selection into a single function returning a BlueprintRerunWebSocketServermodule that receives dimos-viewer events (click, twist, stop, heartbeat) over WebSocket and publishes them as DimOS streamsvis_module()is_jetson()andget_local_ips()utilitiesBreaking Changes
ViewerBackendenum removed frombridge.py(already moved toglobal_config)_get_local_ip()removed from bridge (replaced byget_local_ips()in utils)WebsocketVisModuleno longer used in G1 primitive blueprint (replaced byRerunWebSocketServerviavis_module)How to Test
Contributor License Agreement