Skip to content

Conversation

@enkerewpo
Copy link
Member

@enkerewpo enkerewpo commented Jan 4, 2026

  1. add example webots package
  2. add Qwen-VL and Deepseek agent as map service impl
  3. refactor robonix-core modules
  4. add performance profiling and testing framework under tools

- Added a new webots demo package with various scripts for controlling a mobile robot.
- Implemented demo service provider with semantic map and task planning services.
- Updated demo recipe to reflect new package names and services.
- Adjusted file permissions for several scripts to ensure proper execution.
- Included necessary configuration files and documentation for the new package.
- Introduced a web-based management interface for robonix-core, allowing real-time monitoring and control.
- Implemented a TF monitor to parse and visualize the ROS2 TF tree data.
- Added logging functionality with a buffer to capture and display logs in the web GUI.
- Updated the main application to initialize the web GUI and handle web server tasks.
- Enhanced the existing Rust modules with new dependencies and improved structure for better maintainability.
- Renamed demo service from `demo_service` to `demo_service_provider` for clarity.
- Updated `.env.example` to include new API keys for Qwen3-VL and DeepSeek services.
- Added `.gitignore` to exclude unnecessary files and directories.
- Enhanced `README.md` with detailed service descriptions and configuration instructions.
- Improved `setup.py` to include additional dependencies for image processing and API interaction.
- Refactored `semantic_map_service.py` to implement real object detection using Qwen3-VL and front camera integration.
- Added test scripts for ping service and querying primitives to ensure functionality.
- Cleaned up startup scripts for better readability and efficiency.
change to String fixes everything
Add preferred and alternative RUST_LOG configurations for robonix-core
- Introduced an Image Monitor module to track and store images from ROS2 topics.
- Updated web GUI to display image topics and allow image retrieval.
- Enhanced existing scripts and configurations for better integration with the new image monitoring feature.
- Improved error handling and logging for image processing tasks.
- Updated dependencies in Cargo.toml and Cargo.lock to support new functionalities.
- Commented out build commands in the test script for clarity.
- Improved service call methods in DaemonRos2Clients to include retry logic and service discovery waiting.
- Enhanced error messages for service call timeouts and failures to guide users in troubleshooting.
- Updated QoS settings for service clients to ensure compatibility with robonix-core.
- Added bash completion support in the Docker entrypoint script.
- Updated Dockerfile to include bash-completion and fonts-lmodern.
- Enhanced Rust Makefile with new test commands for stress testing and benchmarking.
- Introduced new test scripts for querying primitives and ping service load testing.
- Updated README and .gitignore files to reflect new test framework structure and ignore unnecessary files.
- Improved logging and error handling in test scripts for better diagnostics.
@enkerewpo enkerewpo requested a review from Copilot January 12, 2026 10:54
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces a comprehensive test framework and web GUI for the Robonix framework, along with modular reorganization of the codebase and integration of a Webots demo package for simulation.

Changes:

  • Added a multi-language test framework (Rust, Python, C++) for stress testing ROS2 service performance
  • Introduced a web-based GUI for monitoring and managing Robonix core components
  • Reorganized codebase into modular directories (perception, cognition, action) with separate specification files
  • Added Webots simulation demo package for RangerMiniV3 robot

Reviewed changes

Copilot reviewed 122 out of 158 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
rust/tools/test_framework/* Stress test framework with benchmark reporting and visualization
rust/robonix-core/web_gui/* Web GUI with static assets (HTML, CSS, JS) for system monitoring
rust/robonix-core/src/web_gui.rs Web server implementation with REST API endpoints
rust/robonix-core/src/perception/* Perception module with TF, topic, and image monitoring
rust/robonix-core/src/cognition/* Cognition module with task planning specs
rust/robonix-core/src/action/* Action module with skill library and motion specs
rust/provider/webots_demo_package/* Webots simulation package for RangerMiniV3 robot
rust/robonix-core/src/main.rs Updated main to initialize web GUI and monitoring components
rust/robonix-core/src/service/mod.rs Changed metadata storage from JSON value to string

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +111 to +113
if metadata.get('requests'): parts.append(f"Reqs: {metadata['requests']}")
if metadata.get('rate'): parts.append(f"Rate: {metadata['rate']}Hz")
if metadata.get('duration'): parts.append(f"Dur: {metadata['duration']}s")
Copy link

Copilot AI Jan 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The metadata dictionary access could raise KeyError if the dictionary is malformed. Use .get() consistently with a default value or validate metadata structure before accessing.

Suggested change
if metadata.get('requests'): parts.append(f"Reqs: {metadata['requests']}")
if metadata.get('rate'): parts.append(f"Rate: {metadata['rate']}Hz")
if metadata.get('duration'): parts.append(f"Dur: {metadata['duration']}s")
requests = metadata.get('requests')
if requests:
parts.append(f"Reqs: {requests}")
rate = metadata.get('rate')
if rate:
parts.append(f"Rate: {rate}Hz")
duration = metadata.get('duration')
if duration:
parts.append(f"Dur: {duration}s")

Copilot uses AI. Check for mistakes.
Comment on lines +383 to +388
let (r, g, b) = if encoding_lower == "bgr8" || encoding_lower == "8uc3"
{
(b, g, r) // Swap R and B for BGR
} else {
(r, g, b)
};
Copy link

Copilot AI Jan 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The comment states '8uc3' is BGR format, but this encoding typically refers to 3-channel unsigned 8-bit format without specifying color order. Add documentation or a source reference explaining why 8uc3 is treated as BGR.

Copilot uses AI. Check for mistakes.
skill_id: String::new(),
};
}
if serde_json::from_str::<serde_json::Value>(&req.metadata).is_err() {
Copy link

Copilot AI Jan 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The error from JSON parsing is discarded. Consider logging the actual parse error for debugging purposes, similar to how it was done in the original code (lines 71-72 show the pattern).

Copilot uses AI. Check for mistakes.
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.

2 participants