diff --git a/.github/scripts/check_people_model.py b/.github/scripts/check_people_model.py index f617646..ce67a3c 100644 --- a/.github/scripts/check_people_model.py +++ b/.github/scripts/check_people_model.py @@ -16,8 +16,8 @@ def main(model: str, image: str, backends: list[str]) -> int: try: import cv2 - sys.path.insert(0, 'src/robot_perception') - from robot_perception.detector import OnnxPersonDetector + sys.path.insert(0, 'src/pashupati_perception') + from pashupati_perception.detector import OnnxPersonDetector except Exception: # noqa: B902 the environment itself is broken: say how annotate('error', 'imports', traceback.format_exc()[-1500:]) return 1 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7ab3d51..47b8cb2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,8 +16,8 @@ env: ROSDEP_SKIP: >- livox_ros_driver2 fast_lio legkilo apriltag_draw PACKAGES: >- - robot_interfaces robot_odometry robot_localization robot_perception robot_navigation - robot_bridge robot_fleet robot_inspection robot_health robot_rviz pashupati robot_sim + pashupati_perception robot_bridge robot_fleet robot_inspection robot_health robot_rviz + pashupati robot_sim jobs: scripts: @@ -87,6 +87,15 @@ jobs: shell: bash steps: - uses: actions/checkout@v4 # no submodules: they need SSH keys and vendor SDKs + - name: Dharma packages + env: + # the dharma repos are private: a fine-grained token with read access to them + DHARMA_TOKEN: ${{ secrets.DHARMA_TOKEN }} + run: | + apt-get update && apt-get install -y python3-vcstool git + git config --global url."https://x-access-token:${DHARMA_TOKEN}@github.com/".insteadOf \ + "git@github.com:" + vcs import src < pashupati.repos - name: Dependencies run: | apt-get update @@ -96,7 +105,7 @@ jobs: - name: Build run: | source /opt/ros/humble/setup.bash - colcon build --packages-select $PACKAGES --event-handlers console_cohesion+ + colcon build --packages-up-to $PACKAGES --event-handlers console_cohesion+ - name: Test run: | source /opt/ros/humble/setup.bash @@ -118,7 +127,7 @@ jobs: source /opt/ros/humble/setup.bash source install/setup.bash ros2 launch pashupati robot.launch.py --show-args > /dev/null - ros2 launch robot_odometry odometry.launch.py --show-args > /dev/null + ros2 launch dharma_odometry odometry.launch.py --show-args > /dev/null ros2 launch robot_sim sim.launch.py --show-args > /dev/null - name: Test reports if: always() diff --git a/.github/workflows/people-model.yml b/.github/workflows/people-model.yml index 6ec9fda..6382a7e 100644 --- a/.github/workflows/people-model.yml +++ b/.github/workflows/people-model.yml @@ -9,7 +9,7 @@ on: push: branches: [dev] paths: - - src/robot_perception/robot_perception/detector.py + - src/pashupati_perception/pashupati_perception/detector.py - .github/scripts/check_people_model.py - .github/workflows/people-model.yml workflow_dispatch: diff --git a/.gitignore b/.gitignore index 3bc84be..98ee250 100644 --- a/.gitignore +++ b/.gitignore @@ -38,4 +38,7 @@ desktop.ini .cache/ __MACOSX/ -.vscode/settings.json \ No newline at end of file +.vscode/settings.json + +# ---- dharma packages (vcs import src < pashupati.repos) ---- +src/dharma/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 24fd273..227b299 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -48,7 +48,7 @@ pure-logic tests also run with plain `pytest` on a laptop. `OPENBLAS_NUM_THREADS=1`. - **No per-element Python objects at sensor rate.** rclpy builds one object per element of a message array (a Livox CustomMsg has ~20k points): read big messages as numpy straight from the - buffer (`PointCloud2.data`, or `raw=True` and the CDR bytes, see `robot_perception/livox_cdr.py`). + buffer (`PointCloud2.data`, or `raw=True` and the CDR bytes, see `pashupati_perception/livox_cdr.py`). - **Subscribe to heavy topics only while someone uses them** (the teleop camera and cloud). - **Validate everything from the network** (teleop UDP, NETRA commands, spool files): clamp numbers, reject non-finite values, keep file paths inside their directory, never raise in a diff --git a/README.md b/README.md index 4f327c3..051fdf2 100644 --- a/README.md +++ b/README.md @@ -132,11 +132,11 @@ flowchart LR | Package | Role | |---|---| -| [`robot_interfaces`](src/robot_interfaces) | messages and services | -| [`robot_odometry`](src/robot_odometry) | LiDAR-inertial odometry (FAST-LIO2 or Leg-KILO), stillness gate, odometry monitor, route recording | -| [`robot_localization`](src/robot_localization) | FAST-LIO frame bridge, `map→odom` from AprilTags / RViz, tag recording | -| [`robot_perception`](src/robot_perception) | LiDAR sectors, AprilTag, person detection (YOLO11n ONNX) | -| [`robot_navigation`](src/robot_navigation) | route processing, 5 controllers, 4 avoidance algorithms, final approach, safety | +| [`dharma_interfaces`](src/dharma_interfaces) | messages and services | +| [`dharma_odometry`](src/dharma_odometry) | LiDAR-inertial odometry (FAST-LIO2 or Leg-KILO), stillness gate, odometry monitor, route recording | +| [`dharma_localization`](src/dharma_localization) | FAST-LIO frame bridge, `map→odom` from AprilTags / RViz, tag recording | +| [`pashupati_perception`](src/pashupati_perception) | LiDAR sectors, AprilTag, person detection (YOLO11n ONNX) | +| [`dharma_navigation`](src/dharma_navigation) | route processing, 5 controllers, 4 avoidance algorithms, final approach, safety | | [`robot_bridge`](src/robot_bridge) | AUTO / REMOTE control mux, UDP teleop gateway ([protocol](src/robot_bridge/PROTOCOL.md)), WebRTC video | | [`robot_fleet`](src/robot_fleet) | NETRA uplink: telemetry, events, crowd, anomalies, routes ([API](src/robot_fleet/API.md)) | | [`robot_inspection`](src/robot_inspection) | VLM inspection (Ollama): continuous, interval queue or stop points, own finding types | @@ -255,7 +255,7 @@ pnode robot_bridge teleop_udp_node bridge_params.yaml # one node, as robot.lau **Start**), or by hand: ```bash -ros2 service call /navigation/load_path robot_interfaces/srv/LoadPath "{waypoints_file: '/home/robot/dev/Pashupati/map//