From b0d97c0ce1c0e980e84bc76deaa87618ceeb9f05 Mon Sep 17 00:00:00 2001 From: Yu Asabe Date: Tue, 18 Oct 2022 15:01:53 +0900 Subject: [PATCH 1/2] update: docs --- docs/architecture.png | Bin 0 -> 68925 bytes docs/design/index.md | 13 +++- docs/how-to-guides/index.md | 5 +- docs/index.md | 2 + docs/installation/.pages | 3 +- docs/installation/docker-installation.md | 9 ++- docs/installation/index.md | 66 +----------------- docs/installation/source-installation.md | 66 ++++++++++++++++++ docs/support/.pages | 3 +- docs/support/docs-guide.md | 20 ++++++ docs/tutorials/.pages | 4 +- docs/tutorials/actual-devices/index.md | 4 ++ docs/tutorials/index.md | 17 ++--- .../planning-simulation/docker-env.png | Bin 0 -> 25519 bytes docs/tutorials/planning-simulation/index.md | 51 ++++++++++++++ mkdocs.yml | 2 +- 16 files changed, 182 insertions(+), 83 deletions(-) create mode 100644 docs/architecture.png create mode 100644 docs/installation/source-installation.md create mode 100644 docs/support/docs-guide.md create mode 100644 docs/tutorials/actual-devices/index.md create mode 100644 docs/tutorials/planning-simulation/docker-env.png create mode 100644 docs/tutorials/planning-simulation/index.md diff --git a/docs/architecture.png b/docs/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..31671d927afc05a90095f57c0c0ea49aee2ec59f GIT binary patch literal 68925 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 Awg3PC literal 0 HcmV?d00001 diff --git a/docs/design/index.md b/docs/design/index.md index f936956..a4a6f6d 100644 --- a/docs/design/index.md +++ b/docs/design/index.md @@ -1 +1,12 @@ -# Design \ No newline at end of file +# Design + +!!! Warning + More to come + +A V2X communication software stack called [Vanetza](https://github.com/riebl/vanetza) is integrated into the standalone autonomous driving software stack, [Autoware](https://github.com/autowarefoundation/autoware). The V2X stack and the autonomous driving stack can be decoupled, allowing other applications to utilize the V2X router as well. A high-level overview of the architecture is shown below. + +![AutowareV2X Architecture](../architecture.png) + +Autoware is responsible for the perception task, while Autoware\_V2X manages the transmission and reception of messages over the V2X channel. Services that are necessary for the integration of Vanetza into Autoware were newly developed. + +The V2XApp is responsible for managing the various facilities such as DENM, CAM, CPM, while the V2XNode handles the conversion of information between the V2X messages and ROS2 messages. \ No newline at end of file diff --git a/docs/how-to-guides/index.md b/docs/how-to-guides/index.md index 77f9949..af6ec8c 100644 --- a/docs/how-to-guides/index.md +++ b/docs/how-to-guides/index.md @@ -1 +1,4 @@ -# How-to-guides \ No newline at end of file +# How-to-guides + +!!! Warning + Under Construction \ No newline at end of file diff --git a/docs/index.md b/docs/index.md index 630fd2e..4dd0e35 100644 --- a/docs/index.md +++ b/docs/index.md @@ -8,6 +8,8 @@ It utilizes [Vanetza](https://github.com/riebl/vanetza) as the protocol suite fo We have also provided a working example of a CPM application, where Collective Perception Messages can be used to exchange perception information in Autoware. +![AutowareV2X Architecture](./architecture.png) + ## Getting started - [Installation](/installation) pages explain the installation steps of AutowareV2X and its prerequisites. diff --git a/docs/installation/.pages b/docs/installation/.pages index cb74eee..80630ce 100644 --- a/docs/installation/.pages +++ b/docs/installation/.pages @@ -1,3 +1,4 @@ nav: - index.md - - docker-installation.md \ No newline at end of file + - docker-installation.md + - source-installation.md \ No newline at end of file diff --git a/docs/installation/docker-installation.md b/docs/installation/docker-installation.md index a531cac..59fa588 100644 --- a/docs/installation/docker-installation.md +++ b/docs/installation/docker-installation.md @@ -2,6 +2,9 @@ In order to run the simulations explained in the [Tutorials](/tutorials) section, you will need to proceed with the Docker installation. +!!! Note + Also refer to [Autoware's Docker Installation](https://autowarefoundation.github.io/autoware-documentation/main/installation/autoware/docker-installation/) for the Docker-based installation of Autoware.universe. + ## Installing Autoware (Docker version) For the newest documentation for the Docker installation of Autoware, see their [official documentation](https://autowarefoundation.github.io/autoware-documentation/main/installation/autoware/docker-installation/). @@ -18,8 +21,11 @@ cd autoware_docker # Make directory to store maps mkdir ~/autoware_map -# Launch Autoware container +# Launch Autoware container (with NVIDIA GPU) rocker --nvidia --x11 --user --volume $HOME/autoware_docker --volume $HOME/autoware_map -- ghcr.io/autowarefoundation/autoware-universe:latest-cuda + +# Launch Autoware container (without NVIDIA GPU) +rocker -e LIBGL_ALWAYS_SOFTWARE=1 --x11 --user --volume $HOME/autoware_docker --volume $HOME/autoware_map -- ghcr.io/autowarefoundation/autoware-universe:latest-cuda ``` ## Adding AutowareV2X @@ -46,6 +52,7 @@ v2x/vanetza: 3. Update the repository ``` +mkdir src vcs import src < autoware.repos vcs pull src ``` diff --git a/docs/installation/index.md b/docs/installation/index.md index c3c1652..e2be456 100644 --- a/docs/installation/index.md +++ b/docs/installation/index.md @@ -2,67 +2,7 @@ AutowareV2X is used as an add-on module to the open-source autonomous driving stack called [Autoware](https://autowarefoundation.github.io/autoware-documentation/main/). Therefore, in order to properly use AutowareV2X, Autoware must first be installed on the system. -## Prerequisites +You can install AutowareV2X directly onto a PC through the [Source Installation](./source-installation.md) or use it as a Docker container through the [Docker Installation](./docker-installation.md). -- OS - - Ubuntu 20.04 - - Ubuntu 22.04 -- ROS - - ROS2 Galactic - -## Installing Autoware - -Refer to the [Official Autoware Documentation](https://autowarefoundation.github.io/autoware-documentation/main/installation/autoware/source-installation/) for the newest installation procedures. In a nutshell, you can run the following commands: - -```bash -# Clone repository -git clone https://github.com/autowarefoundation/autoware.git -cd autoware - -# Install dependencies using Ansible -./setup-dev-env.sh - -# Use vcstool to import more repositories -mkdir src -vcs import src < autoware.repos - -# Install dependent ROS packages -source /opt/ros/galactic/setup.bash -rosdep update -rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO - -# Build the workspace -colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release -``` - -## Adding AutowareV2X - -1. Edit the `autoware.repos` file and add the following two repositories to the end. -``` -v2x/autoware_v2x: - type: git - url: git@github.com:tlab-wide/autoware_v2x.git - version: main -v2x/vanetza: - type: git - url: git@github.com:tlab-wide/vanetza.git - version: socktap-cpm-tr103562 - -``` - -2. Update the repository -``` -vcs import src < autoware.repos -vcs pull src -``` - -3. Install dependent ROS packages -```bash -source /opt/ros/galactic/setup.bash -rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO -``` - -4. Build the workspace -``` -colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release -``` +!!! Note + In order to proceed with the [Tutorials](../tutorials/index.md), you will need to continue with the [Docker Installatioon](./docker-installation.md). \ No newline at end of file diff --git a/docs/installation/source-installation.md b/docs/installation/source-installation.md new file mode 100644 index 0000000..837b5ca --- /dev/null +++ b/docs/installation/source-installation.md @@ -0,0 +1,66 @@ +# Source Installation + +## Prerequisites + +- OS + - Ubuntu 20.04 + - Ubuntu 22.04 +- ROS + - ROS2 Galactic + +## Installing Autoware + +Refer to the [Official Autoware Documentation](https://autowarefoundation.github.io/autoware-documentation/main/installation/autoware/source-installation/) for the newest installation procedures. In a nutshell, you can run the following commands: + +```bash +# Clone repository +git clone https://github.com/autowarefoundation/autoware.git +cd autoware + +# Install dependencies using Ansible +./setup-dev-env.sh + +# Use vcstool to import more repositories +mkdir src +vcs import src < autoware.repos + +# Install dependent ROS packages +source /opt/ros/galactic/setup.bash +rosdep update +rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO + +# Build the workspace +colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release +``` + +## Adding AutowareV2X + +1. Edit the `autoware.repos` file and add the following two repositories to the end. +``` +v2x/autoware_v2x: + type: git + url: git@github.com:tlab-wide/autoware_v2x.git + version: main +v2x/vanetza: + type: git + url: git@github.com:tlab-wide/vanetza.git + version: socktap-cpm-tr103562 + +``` + +2. Update the repository +``` +vcs import src < autoware.repos +vcs pull src +``` + +3. Install dependent ROS packages +```bash +source /opt/ros/galactic/setup.bash +rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO +``` + +4. Build the workspace +``` +colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release +``` diff --git a/docs/support/.pages b/docs/support/.pages index 2132a6d..df18e1a 100644 --- a/docs/support/.pages +++ b/docs/support/.pages @@ -1,2 +1,3 @@ nav: - - index.md \ No newline at end of file + - index.md + - docs-guide.md \ No newline at end of file diff --git a/docs/support/docs-guide.md b/docs/support/docs-guide.md new file mode 100644 index 0000000..88a1016 --- /dev/null +++ b/docs/support/docs-guide.md @@ -0,0 +1,20 @@ +# How to generate Documentation + +## mkdocs + +Run development server. +``` +mkdocs serve +``` + +Deploy to gh-pages. +``` +mkdocs gh-deploy +``` + + +## Doxygen + +``` +doxygen Doxyfile +``` \ No newline at end of file diff --git a/docs/tutorials/.pages b/docs/tutorials/.pages index 2132a6d..890499e 100644 --- a/docs/tutorials/.pages +++ b/docs/tutorials/.pages @@ -1,2 +1,4 @@ nav: - - index.md \ No newline at end of file + - index.md + - planning-simulation + - actual-devices \ No newline at end of file diff --git a/docs/tutorials/actual-devices/index.md b/docs/tutorials/actual-devices/index.md new file mode 100644 index 0000000..3b3b9ab --- /dev/null +++ b/docs/tutorials/actual-devices/index.md @@ -0,0 +1,4 @@ +# Running AutowareV2X on Actual Devices + +!!! Warning + Under Construction \ No newline at end of file diff --git a/docs/tutorials/index.md b/docs/tutorials/index.md index d6147fb..eac89c4 100644 --- a/docs/tutorials/index.md +++ b/docs/tutorials/index.md @@ -1,18 +1,9 @@ # Tutorials -Simulations can be an easy way of verifying the functionality of AutowareV2X before an actual field test. -Here, since we want to test both the sending and receiving of information through AutowareV2X, we will need at least two AutowareV2X instances. For this, we will use a Docker-based environment. +AutowareV2X can be first verified using [Autoware's Planning Simulator](https://autowarefoundation.github.io/autoware-documentation/main/tutorials/ad-hoc-simulation/planning-simulation/). -## Using CPM in a simulation-based environment +- [Running Autoware in the Planning Simulator](./planning-simulation/index.md) -1. Create Docker networks -``` -$ docker network create --driver=bridge --subnet=10.0.0.0/16 v2x_net -o com.docker.network.bridge.name="v2x_net" -``` -# Launch Autoware container -rocker --nvidia --x11 --user --volume $HOME/autoware_docker --volume $HOME/autoware_map -- ghcr.io/autowarefoundation/autoware-universe:latest-cuda +Then, after you are familiar with how AutowareV2X works, you can use actual devices to test AutowareV2X. -$ cd autoware_docker -$ . install/setup.bash -$ ros2 launch autoware_v2x v2x.launch.xml network_interface:=eth1 -``` \ No newline at end of file +- [Running AutowareV2X on Actual Devices](./actual-devices/index.md) \ No newline at end of file diff --git a/docs/tutorials/planning-simulation/docker-env.png b/docs/tutorials/planning-simulation/docker-env.png new file mode 100644 index 0000000000000000000000000000000000000000..4fe856ac91b5d63f8af3cb1513b40c69ad61a988 GIT binary patch literal 25519 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 literal 0 HcmV?d00001 diff --git a/docs/tutorials/planning-simulation/index.md b/docs/tutorials/planning-simulation/index.md new file mode 100644 index 0000000..d41a3f7 --- /dev/null +++ b/docs/tutorials/planning-simulation/index.md @@ -0,0 +1,51 @@ +# Running AutowareV2X in the Planning Simulator + +Simulations can be an easy way of verifying the functionality of AutowareV2X before an actual field test. +We will use [Autoware's Planning Simulator](https://autowarefoundation.github.io/autoware-documentation/main/tutorials/ad-hoc-simulation/planning-simulation/) here and add connectivity to it with AutowareV2X. + +!!! Note + Make sure you have completed [Autoware's Planning Simulator Tutorial](https://autowarefoundation.github.io/autoware-documentation/main/tutorials/ad-hoc-simulation/planning-simulation/) before continuing. + +Here, since we want to test both the sending and receiving of information through AutowareV2X, we will need at least two AutowareV2X instances. For this, we will use a Docker-based environment. + +## The Docker environment to create + +We will be creating the Docker environment as depicted in the figure below. There will be two Docker containers, each of which includes Autoware.universe and AutowareV2X. They will both be a part of the Docker network called `v2x_net` with the subnet `10.0.0.0/24`. + +![Docker Environment](./docker-env.png) + +### Create a Docker network for V2X communication + +```bash +docker network create --driver=bridge --subnet=10.0.0.0/24 v2x_net -o com.docker.network.bridge.name="v2x_net" +``` + + +### Launch two Autoware containers + +```bash +# In one terminal, use rocker to launch container "autoware_1" +rocker --nvidia --x11 --user --volume $HOME/autoware_docker --volume $HOME/autoware_map --network=v2x_net --ip 10.0.0.2 --name autoware_1 --hostname autoware_1 -- ghcr.io/autowarefoundation/autoware-universe:latest-cuda + +# In another terminal, use rocker to launch container "autoware_2" +rocker --nvidia --x11 --user --volume $HOME/autoware_docker --volume $HOME/autoware_map --network=v2x_net --ip 10.0.0.3 --name autoware_2 --hostname autoware_2 -- ghcr.io/autowarefoundation/autoware-universe:latest-cuda +``` + +## Run Planning Simulator + +Run the Planning Simulator in both `autoware_1` and `autoware_2`. + +``` +source ~/autoware_docker/install/setup.bash +ros2 launch autoware_launch planning_simulator.launch.xml map_path:=$HOME/autoware_map/sample-map-planning vehicle_model:=sample_vehicle sensor_model:=sample_sensor_kit +``` + + +## Run AutowareV2X + +In another terminal, connect to the `autoware_1` and `autoware_2` containers, and start AutowareV2X in both of them. + +``` +source ~/autoware_docker/install/setup.bash +ros2 launch autoware_v2x v2x.launch.xml network_interface:=eth1 +``` \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 747fe8e..be4f1a9 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,4 +1,4 @@ -site_name: AutowareV2X +site_name: AutowareV2X Documentation theme: name: material features: From 65f5713edaf9bca5a6dc7c422c4826869633593a Mon Sep 17 00:00:00 2001 From: Yu Asabe Date: Tue, 18 Oct 2022 15:02:16 +0900 Subject: [PATCH 2/2] fix: gitignore --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index c8a64df..d131263 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ db/*.db doxygen/html/ -site/ \ No newline at end of file +site/ + +.DS_Store \ No newline at end of file