Skip to content

Commit

Permalink
Merge pull request #23 from clubcapra/update-documentation
Browse files Browse the repository at this point in the history
improve documentation
  • Loading branch information
SimonR99 authored Feb 3, 2024
2 parents 5c0c06b + 6aeef6a commit 46c21c4
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 27 deletions.
25 changes: 24 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,11 +73,34 @@ To add a package for Rove, create it using the ROS2 command ([Creating Your Firs

Update Rove-specific packages directly in this repository. For Capra-related or external packages, update their references in `rove.repos`. Change the Git branch in `rove.repos` as needed and apply updates with `vcs import src < rove.repos`.

## Package structure

**Bringup:**
This essential package is responsible for initializing the rover in real-world settings. It activates all necessary subsidiary packages tailored for specific operational scenarios.

**Description:**
This package is specifically designed for detailing the rover's structure in URDF (Unified Robot Description Format).

**Gazebo:**
This package facilitates the simulation of the rover within the Gazebo environment, providing a virtual testing ground.

**Hardware:**
Dedicated to initializing all sensors and actuators on the rover, this package is pivotal for operational readiness. It is specifically designed for use with the actual hardware and is not suitable for development machines.

**Navigation:**
This is a wrapper package that integrates navigation functionalities, primarily based on the nav2 framework.

**NLP (Natural Language Processing):**
This package manages the deployment of the NLP server and chatbot, facilitating advanced communication and processing capabilities.

**SLAM (Simultaneous Localization and Mapping):**
This package serves as a comprehensive wrapper for SLAM operations, incorporating tools like slam_toolbox, rtab map, and sensor filters for effective environment mapping and rover localization.

## Docker architecture

It's possible to run the entire project into multiple docker containers. Each container can be run independantly and are built using the following structure :

![Docker structure](https://www.plantuml.com/plantuml/svg/VP6zaeGm2CTxdo9Zxrn_nSqMsznJt63aTZERZqmWFlz573UU1ON27twWm8qO2jVW1tRiqOptP5zOp7U01vexPemBHkkGnc4eQ1dYOyDAee_sV3vhc3rE2zABKnuDa6dXCsbzdIta0erVyMS6Gi4sH-5SP2o_O964xbBhZKzONIfISGY5Nnsv58NUNOM5oYccu53mjr8go8NgWOylTAdKC9F0pHgjDRDWpIfKz5MePWS5orWivlT_TjcA4fbf-jfljRr4dMxHNSdiMxn4-x8kYNwYmv4eC_qBo9JdW0nqQTMtUycSvxbXN6hmVm00 "Docker structure")
![Docker structure](https://www.plantuml.com/plantuml/svg/VP71Ri8m38RlUOgezwvZq8vnc3XmsLDKJkgLGEj4JbfjU_gr0QgWJHoGVjl_xtouUn-0mz1tyc3r6Ldwm8CE0wCGmOGEPNOTVFJGeZoWGsgGj46V2S6e0r0xszgZvYTZ2zqDIeDZA5huGMLtH-3Uaj6P12zlHPfawulfjpiElUemRz2VWtNHFhNhQ_qWCSbSWSSbCXUfdyOB6uscCL0O3w3ZWgzjLLURUS5BVLbMA_rPhak4jNfhLXLiomq0gjNhymfK2TigFdB2u2tLbWs9Ux1n_WEZjXJ0479qJmtihEkHGhrC_iGOl5F8_9qx4sFip0Fx1I6V4HAa922IPsMUlzyTCz5njdoNcuZT_y55jg3A2NLsBbUNOb6nxSnTy8G-M98HEXhIGoOwdINvFL8pz9tu1G00 "Docker structure")

# Documentation

Expand Down
37 changes: 16 additions & 21 deletions docs/docker_architecture_dev.puml
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,23 @@

title "Docker Image Dependencies"

rectangle "ros/ros:humble-desktop" as ros
rectangle "clubcapra/rove_base" as base
rectangle "clubcapra/rove_interfaces" as interfaces
rectangle "clubcapra/rove_behavior" as behavior
rectangle "clubcapra/rove_vision" as vision
rectangle "clubcapra/rove_autonomie" as autonomie
rectangle "clubcapra/rove_simulation" as simulation
rectangle "clubcapra/rove_tts" as tts
rectangle "clubcapra/rove_stt" as stt
rectangle "clubcapra/rove_nlu" as nlu
rectangle "ghcr.io/clubcapra/gazebo:harmonic" as harmonic
rectangle "ros/ros:humble-desktop" as ros_desktop
rectangle "ros/ros:humble-ros-base" as ros_base
rectangle "nvcr.io/nvidia/isaac/ros:x86_64-ros2_humble_bcf535ea3b9d16a854aaeb1701ab5a86" as jetson_orin

rectangle "clubcapra/rove_perception" as perception
rectangle "rove-devcontainer" as development_container
rectangle "rove-raspberry-pi" as rpi_container
rectangle "rove-jetson-orin" as jetson_container

ros --> base
base --> interfaces
interfaces --> vision
interfaces --> autonomie
interfaces --> behavior
behavior --> tts
behavior --> stt
behavior --> nlu
interfaces --> simulation
interfaces --> perception
development --> ros_desktop
ros_desktop --> harmonic
harmonic --> development_container

"raspberry pi" --> ros_base
ros_base --> rpi_container

"jeston orin" --> jetson_orin
jetson_orin --> jetson_container

@enduml
55 changes: 50 additions & 5 deletions docs/ros_architecture.puml
Original file line number Diff line number Diff line change
@@ -1,16 +1,61 @@
@startuml
package "Rove Interface" {

folder "Rove" as rove {
[gazebo]
[hardware]
[slam]
[navigation]
[description]
[bringup]
[control]
[nlp]
}

package "Rove control" as control {
[control.launch.py]
[teleop.launch.py]
[keyboard.launch.py]
[joy.launch.py]
}

package "Natural Language Processing" as nlp {
[capra_gpt.launch.py]
[web_server.launch.py]
[local_chat.launch.py]
}

package "Rove Navigation" {
package "Rove hardware" as hardware {
[camera.launch.py]
[imu.launch.py]
[lidar.launch.py]
[flipper.launch.py]
[track.launch.py]
node "motor controller" as motor {
}
}

package "Rove SLAM" {
package "Rove description" as description {
[description.launch.py]
}

package "Rove Vision" {
package "Rove Gazebo" as gazebo {
[sim.launch.py]
}

package "Rove Hardware Interface" {
package "Rove Bringup" as bringup {
[rove.launch.py]
[base.launch.py]
[top.launch.py]
}

package "Rove Navigation" as navigation {
[nav2.launch.py]
}

package "Rove SLAM" as slam {
[slam.launch.py]
[ekf.launch.py]
[slam_3d.launch.py]
}

@enduml

0 comments on commit 46c21c4

Please sign in to comment.