Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
b964b09
feat: introduce webots demo package and enhance rust provider
enkerewpo Jan 4, 2026
5cd5203
feat: enhance robonix-core with web GUI and TF monitoring
enkerewpo Jan 4, 2026
aa69ef1
feat: add topic monitoring functionality to robonix-core
enkerewpo Jan 4, 2026
2e57854
feat: update demo service provider and enhance configuration
enkerewpo Jan 4, 2026
5fbd354
fix: fix RustDDS AService response bug
enkerewpo Jan 4, 2026
462b3a2
docs: update README with RUST_LOG configs
enkerewpo Jan 4, 2026
fe07c05
feat: enhance robonix-core with image monitoring and web GUI updates
enkerewpo Jan 5, 2026
b023dff
refactor: update test script and enhance ROS2 service call handling
enkerewpo Jan 5, 2026
ae7304a
fix: fixed multiple rbnx/core node bug
enkerewpo Jan 11, 2026
7027291
feat: update Docker and test framework for enhanced functionality
enkerewpo Jan 11, 2026
cc37da6
refactor: reorganize robonix-core modules and enhance skill library f…
enkerewpo Jan 12, 2026
91e085a
feat: enhance test framework and service integration
enkerewpo Jan 12, 2026
c82d062
feat: enhance font handling and reporting in test framework
enkerewpo Jan 12, 2026
5b070a6
Merge branch 'main' into dev/rust
enkerewpo Jan 12, 2026
ec177f4
refactor: update robot launch and controller configurations
enkerewpo Jan 17, 2026
6b7e807
fix: fixed webots ranger mini control bug when steering
enkerewpo Jan 17, 2026
ecc13a6
feat: enhance robot launch configuration and add camera info publisher
enkerewpo Jan 18, 2026
b587c89
feat: add initial setup for tiago_demo_package
enkerewpo Jan 18, 2026
ef3153a
feat: implement tiago_demo_package with navigation and camera capabil…
enkerewpo Jan 18, 2026
e216f8b
feat: update service and skill definitions in demo and navigation pro…
enkerewpo Jan 18, 2026
59da81c
feat: improve skill execution scripts and remove unused std_msgs module
enkerewpo Jan 18, 2026
f85857b
feat: enhance server thread management and add real-time priority sup…
enkerewpo Jan 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,4 @@ test_performance
publish_camera_tf.py
tailscale/
target
stress_test
4 changes: 3 additions & 1 deletion docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,9 @@ RUN apt update && apt install -y \
libglfw3 \
libglfw3-dev \
mesa-utils \
libclang-dev python3-vcstool
libclang-dev python3-vcstool \
bash-completion \
fonts-lmodern

# RUN apt update && apt install -y curl && \
# curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/focal.noarmor.gpg | tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null && \
Expand Down
15 changes: 15 additions & 0 deletions docker/docker-entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,21 @@ source /opt/ros/humble/setup.bash

echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc

# Enable bash completion
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
echo "# Enable bash completion" >> ~/.bashrc
echo "if [ -f /usr/share/bash-completion/bash_completion ]; then" >> ~/.bashrc
echo " . /usr/share/bash-completion/bash_completion" >> ~/.bashrc
echo "fi" >> ~/.bashrc
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
echo "# Enable bash completion" >> ~/.bashrc
echo "if [ -f /etc/bash_completion ]; then" >> ~/.bashrc
echo " . /etc/bash_completion" >> ~/.bashrc
echo "fi" >> ~/.bashrc
fi

echo -e "[*] \033[1mWelcome to robonix docker environment!\033[0m Distro is: \033[33m$(lsb_release -ds 2>/dev/null || echo "Linux")\033[0m with ROS2 \033[33m$(echo $ROS_DISTRO)\033[0m"
exec bash

77 changes: 68 additions & 9 deletions rust/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,11 @@
# Robonix Makefile
#
# Convenient commands for building and running Robonix components
#
# Tab completion: bash-completion is installed in Docker container
# If tab completion doesn't work, ensure bash-completion is installed and enabled

.PHONY: help build build-cli build-core build-sdk debug release install install-cli install-core source-sdk env clean test check setup-dev fmt
.PHONY: help build build-cli build-core build-sdk debug release install install-cli install-core source-sdk env clean test test-all test-rust test-python test-cpp test-ros2 benchmark check setup-dev fmt test-framework
.DEFAULT_GOAL := help

# Default ROS2 distribution (can be overridden)
Expand Down Expand Up @@ -49,12 +52,22 @@ help:
@echo " make check - Run cargo check on all Rust projects"
@echo " make clean - Clean build artifacts"
@echo ""
@echo "Test commands:"
@echo " make test - Run all tests (Rust, Python)"
@echo " make test-rust - Run Rust CLI stress tests"
@echo " make test-python - Run Python stress tests"
@echo " make benchmark - Run benchmark suite with different concurrency levels"
@echo ""
@echo "Examples:"
@echo " make build"
@echo " make install"
@echo " rbnx config --show"
@echo " rbnx package list"
@echo " eval \$$(make source-sdk)"
@echo ""
@echo "Tab Completion:"
@echo " Tab completion for make targets is enabled automatically in Docker container"
@echo " If it doesn't work, ensure bash-completion package is installed"

# Build mode helper: determine cargo build flags
ifeq ($(BUILD_MODE),release)
Expand Down Expand Up @@ -186,9 +199,9 @@ env:
setup-dev:
@echo "Setting up development environment..."
@mkdir -p ~/.robonix
@if [ -L ~/.robonix/packages ]; then \
echo "Removing existing provider link..."; \
rm -f ~/.robonix/packages; \
@if [ -e ~/.robonix/packages ]; then \
echo "Removing existing packages path..."; \
rm -rf ~/.robonix/packages; \
fi
@ln -sf "$(PROVIDER_DIR)" ~/.robonix/packages
@echo "✓ Linked $(PROVIDER_DIR) to ~/.robonix/packages"
Expand All @@ -212,11 +225,57 @@ check:
cd $(CORE_DIR) && cargo check
@echo "✓ All checks passed"

test:
@echo "Running tests..."
cd $(CLI_DIR) && cargo test || true
cd $(CORE_DIR) && cargo test || true
@echo "✓ Tests completed"
# Test framework paths
TEST_FRAMEWORK_DIR := $(RUST_DIR)/tools/test_framework
TEST_RUST_DIR := $(TEST_FRAMEWORK_DIR)/rust_tests
TEST_PYTHON_DIR := $(TEST_FRAMEWORK_DIR)/python_tests
TEST_CPP_DIR := $(TEST_FRAMEWORK_DIR)/cpp_tests
TEST_ROS2_DIR := $(TEST_FRAMEWORK_DIR)/ros2_tests

# Test parameters (can be overridden)
CONCURRENCY ?= 3
REQUESTS ?= 1000
RATE ?= 100
DURATION ?= 0

# Test commands
test: test-all

test-all: test-rust test-python
@echo "✓ All tests completed"

test-rust:
@echo "Running Rust CLI stress tests (concurrency=$(CONCURRENCY), requests=$(REQUESTS))..."
@if [ -f "$(TEST_FRAMEWORK_DIR)/test.sh" ]; then \
bash $(TEST_FRAMEWORK_DIR)/test.sh rust rustdds $(CONCURRENCY) $(REQUESTS) $(RATE) $(DURATION); \
else \
echo "Test framework not found. Run 'make test-framework' first."; \
exit 1; \
fi

test-python:
@echo "Running Python stress tests (concurrency=$(CONCURRENCY), requests=$(REQUESTS))..."
@if [ -f "$(TEST_FRAMEWORK_DIR)/test.sh" ]; then \
bash $(TEST_FRAMEWORK_DIR)/test.sh python rustdds $(CONCURRENCY) $(REQUESTS) $(RATE) $(DURATION); \
else \
echo "Test framework not found. Run 'make test-framework' first."; \
exit 1; \
fi


benchmark:
@echo "Running benchmark suite with different concurrency levels..."
@if [ -f "$(TEST_FRAMEWORK_DIR)/benchmark.sh" ]; then \
bash $(TEST_FRAMEWORK_DIR)/benchmark.sh; \
else \
echo "Benchmark script not found."; \
exit 1; \
fi

test-framework:
@echo "Setting up test framework..."
@echo "✓ Test framework ready"
@echo "Run 'make test' to execute all tests"

# Clean commands
clean:
Expand Down
11 changes: 8 additions & 3 deletions rust/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,12 @@ Keep this terminal running.
You can control the verbosity of robonix-core logs by setting the `RUST_LOG` environment variable:

```bash
# Show only info, warn, and error messages (default)
robonix-core
# preferred way to start robonix-core with debug logs and web GUI
ROBONIX_WEB_STATIC_DIR="$(pwd)/robonix-core/web_gui/static" \
ROBONIX_WEB_PORT=8000 \
RUST_LOG=robonix_core=debug robonix-core

# alternative ways for RUST_LOG options
# Show debug messages for robonix-core module
RUST_LOG=robonix_core=debug robonix-core
# Show debug messages for all modules, you can see rustdds logs too for example
Expand Down Expand Up @@ -123,6 +126,7 @@ rbnx package list
# View package details
rbnx package info <package_name>
# Build all packages
rbnx package build
rbnx package build all
```

Expand Down Expand Up @@ -245,7 +249,8 @@ ros2 service type /rbnx/task/submit

### Clean up all ROS2 processes
```bash
pkill -9 -f "ros2|robonix|rclpy|rclcpp|demo_rgb_provider"
pkill -9 -f "ros2|robonix|rclpy|rclcpp|demo_rgb_provider|stress|webots"
rm -f /dev/shm/sem.fastrtps_* /dev/shm/fastrtps_*
```

## System Architecture
Expand Down
28 changes: 20 additions & 8 deletions rust/demo_recipe.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,25 @@
# arbitrary selection of which primitives, services, and skills to register.

name: demo_recipe
description: Demo recipe showing how to selectively register primitives, services, and skills from packages
description: Demo recipe for Tiago robot with semantic map service and navigation skills

packages:
# Example 1: Register all primitives, services, and skills from a package
# (when primitives, services, and skills are not specified, all will be registered)
- name: demo_rgb_provider
# primitives: [] # If not specified, all primitives will be registered
# services: [] # If not specified, all services will be registered
# skills: [] # If not specified, all skills will be registered
- name: demo_service_provider
# Tiago demo package - provides camera, depth, pose, and navigation primitives
- name: tiago_demo_package
primitives:
- prm::camera.capture
- prm::camera.depth
- prm::base.pose
- prm::base.navigate

# Demo service provider - provides semantic_map and task_plan services
- name: demo_service_provider
services:
- srv::semantic_map
- srv::task_plan

# Navigation skills provider - provides wandering and move_to_object skills
- name: navigation_skills_provider
skills:
- skl::wandering
- skl::move_to_object
2 changes: 2 additions & 0 deletions rust/kill.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
pkill -9 -f "ros2|robonix|rclpy|rclcpp|demo_rgb_provider|stress|webots"
rm -f /dev/shm/sem.fastrtps_* /dev/shm/fastrtps_*
Empty file modified rust/provider/demo_package/rbnx/stop_capture_rgb.sh
100755 → 100644
Empty file.
Empty file modified rust/provider/demo_package/rbnx/stop_grasp_move.sh
100755 → 100644
Empty file.
Empty file modified rust/provider/demo_package/rbnx/stop_pick.sh
100755 → 100644
Empty file.
9 changes: 0 additions & 9 deletions rust/provider/demo_package_service/.env.example

This file was deleted.

Loading
Loading