Skip to content

Commit

Permalink
Cherry-pick the latest doc updates from the Proposal.iv ros2 branch (#70
Browse files Browse the repository at this point in the history
)

* Cherry-pick the doc update: Update TF.md (#192) into ros2 branch (#194)

* Update TF.md

Cleaned up and rewrote quite a large part of this design doc, and so I'm submitting a PR in a different branch.

* Update design/TF.md

Co-authored-by: Kazuki Miyahara <kmiya@outlook.com>

* Update TF.md

Updated following initial review comments

* Update TF.md

Updated following feedback from Horibe-san in Slack

Co-authored-by: Kazuki Miyahara <kmiya@outlook.com>

Co-authored-by: Lalith Vipulananthan <63835446+LalithVipulananthan@users.noreply.github.com>

* Update Overview.md (#191) (#195)

* Update Overview.md

Rewrote, reformatted and clarified the overview design document.

* Update design/Overview.md

Co-authored-by: Kazuki Miyahara <kmiya@outlook.com>

Co-authored-by: Kazuki Miyahara <kmiya@outlook.com>

Co-authored-by: Lalith Vipulananthan <63835446+LalithVipulananthan@users.noreply.github.com>

* Readme docs update (#189) (#196)

* Initial commit

Proposed changes include review comments from a previously submitted PR.

* Second commit

Made some additional updates to the instructions and included build times, since the pre-requisite stuff takes 45 minutes!

* Update SimulationTutorial.md

* Updated after second review

Updated Autoware repository setup to create the repository in an explicit directory (~/workspace), then updated all other steps in  the README and tutorial to reference this explicit directory.

Also added a note to step 2 to state that ROS installation may fail and to provide a link to the appropriate manual steps of the ROS Melodic installation guide.

* Update README.md

Reworded the description of the repository

Co-authored-by: Lalith Vipulananthan <63835446+LalithVipulananthan@users.noreply.github.com>

* Minor design doc updates (#190) (#197)

Made minor corrections to the Messages and NamingConvention files, and more significant changes to the ForDevelopers document (fixed name, corrected sample file links, added more explanatory text).

Co-authored-by: Lalith Vipulananthan <63835446+LalithVipulananthan@users.noreply.github.com>

Co-authored-by: Lalith Vipulananthan <63835446+LalithVipulananthan@users.noreply.github.com>
  • Loading branch information
kmiya and Lalith Vipulananthan authored Apr 21, 2021
1 parent 9fafd7d commit b86c610
Show file tree
Hide file tree
Showing 9 changed files with 263 additions and 301 deletions.
159 changes: 77 additions & 82 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,158 +1,153 @@
# Autoware (Architecture Proposal)

meta-repository for Autoware architecture proposal version

![autoware](https://user-images.githubusercontent.com/8327598/69472442-cca50b00-0ded-11ea-9da0-9e2302aa1061.png)

# What's this

This is the source code of the feasibility study for Autoware architecture proposal.

> **WARNING**: This source is solely for demonstrating an architecture proposal. It should not be used to drive cars.
> **NOTE**: The features in [autoware.iv.universe](https://github.com/tier4/autoware.iv.universe) will be merged into Autoware.Auto.
A meta-repository for the new Autoware architecture feasibility study created by Tier IV. For more details about the architecture itself, please read this [overview](/design/Overview.md).

Architecture overview is [here](/design/Overview.md).
> **WARNING**: All source code relating to this meta-repository is intended solely to demonstrate a potential new architecture for Autoware, and should not be used to autonomously drive a real car!
>
> **NOTE**: Some, but not all of the features within the [AutowareArchitectureProposal.iv repository](https://github.com/tier4/AutowareArchitectureProposal.iv) are planned to be merged into [Autoware.Auto](https://gitlab.com/autowarefoundation/autoware.auto/AutowareAuto) (the reason being that Autoware.Auto has its own scope and ODD which it needs to achieve, and so not all the features in this architecture proposal will be required).
# How to setup
# Installation Guide

## Requirements
## Minimum Requirements

### Hardware

- x86 CPU (8 or more cores)
- 16 GB or more of memory
- NVIDIA GPU (4GB or more of memory)
- x86 CPU (8 cores)
- 16GB RAM
- [Optional] NVIDIA GPU (4GB RAM)
- Although not required to run basic functionality, a GPU is mandatory in order to run the following components:
- lidar_apollo_instance_segmentation
- traffic_light_ssd_fine_detector
- cnn_classifier

> Performance will be improved with more cores, RAM and a higher-spec graphics card.
### Software

- Ubuntu 20.04
- NVIDIA driver

If CUDA or TensorRT is already installed, it is recommended to remove it.
## Review licenses
The following software will be installed during the installation process, so please confirm their licenses first before proceeding.

## How to setup
- [CUDA 11.1](https://docs.nvidia.com/cuda/eula/index.html)
- [cuDNN 8](https://docs.nvidia.com/deeplearning/sdk/cudnn-sla/index.html)
- [OSQP](https://github.com/oxfordcontrol/osqp/blob/master/LICENSE)
- [ROS 2 Foxy](https://index.ros.org/doc/ros2/Releases/Release-Foxy-Fitzroy/)
- [TensorRT 7](https://docs.nvidia.com/deeplearning/sdk/tensorrt-sla/index.html)

## Installation steps

1. Set up the repository
> If the CUDA or TensorRT frameworks have already been installed, we strongly recommend uninstalling them first.
1. Set up the Autoware repository

```sh
mkdir -p ~/workspace
cd ~/workspace
git clone git@github.com:tier4/AutowareArchitectureProposal.git
cd AutowareArchitectureProposal
git checkout ros2
```

In this step, [osqp](https://github.com/oxfordcontrol/osqp/blob/master/LICENSE) is installed.
Please check that the use is in agreement with its license before proceeding.

2. Run the setup script
2. Run the setup script to install CUDA, cuDNN 8, OSQP, ROS 2 and TensorRT 7, entering 'y' when prompted (this step will take around 45 minutes)

```sh
./setup_ubuntu20.04.sh
```

In this step, the following software is installed.
Please confirm their licenses before using them.

- [ROS 2 Foxy](https://index.ros.org/doc/ros2/Releases/Release-Foxy-Fitzroy/)
- [CUDA 11.1](https://docs.nvidia.com/cuda/eula/index.html)
- [cuDNN 8](https://docs.nvidia.com/deeplearning/sdk/cudnn-sla/index.html)
- [TensorRT 7](https://docs.nvidia.com/deeplearning/sdk/tensorrt-sla/index.html)

3. Build the source
3. Build the source code (this will take around 15 minutes)

```sh
source ~/.bashrc
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release --catkin-skip-building-tests
```

## How to configure
> Several modules will report stderror output, but these are just warnings and can be safely ignored.
### Set hardware configuration
## Sensor hardware configuration

Prepare launch files and vehicle_description according to the sensor configuration of your hardware.
The following are the samples.
Prepare launch and vehicle description files according to the sensor configuration of your hardware.
The following files are provided as samples:

- [sensing.launch](https://github.com/tier4/autoware_launcher.universe/blob/master/sensing_launch/launch/sensing.launch)
- [lexus_description](https://github.com/tier4/lexus_description.iv.universe)

## How to run

### Supported Simulations

![sim](https://user-images.githubusercontent.com/8327598/79709776-0bd47b00-82fe-11ea-872e-d94ef25bc3bf.png)
# Running Autoware

### Quick Start
## Quick Start

#### Rosbag
### Rosbag simulation

\* Currently this feature is not available for ROS 2.

1. Download sample map from [here](https://drive.google.com/open?id=1ovrJcFS5CZ2H51D8xVWNtEvj_oiXW-zk).

2. Download sample rosbag from [here](https://drive.google.com/open?id=1BFcNjIBUVKwupPByATYczv2X4qZtdAeD).
3. Launch Autoware
1. [Download the sample pointcloud and vector maps](https://drive.google.com/open?id=1ovrJcFS5CZ2H51D8xVWNtEvj_oiXW-zk), unpack the zip archive and copy the two map files to the same folder.
2. [Download the sample rosbag](https://drive.google.com/open?id=1BFcNjIBUVKwupPByATYczv2X4qZtdAeD).
3. Open a terminal and launch Autoware

```sh
cd AutowareArchitectureProposal
cd ~/workspace/AutowareArchitectureProposal
source install/setup.bash
roslaunch autoware_launch logging_simulator.launch map_path:=[path] vehicle_model:=lexus sensor_model:=aip_xx1 rosbag:=true
roslaunch autoware_launch logging_simulator.launch map_path:=/path/to/map_folder vehicle_model:=lexus sensor_model:=aip_xx1 rosbag:=true
```

\* Absolute path is required for map_path.

4. Play rosbag
4. Open a second terminal and play the sample rosbag file

```sh
rosbag play --clock [rosbag file] -r 0.2
cd ~/workspace/AutowareArchitectureProposal
source install/setup.bash
rosbag play --clock -r 0.2 /path/to/sample.bag
```

##### Note
5. Focus the view on the ego vehicle by changing the `Target Frame` in the RViz Views panel from `viewer` to `base_link`.

- sample map : © 2020 TierIV inc.
- rosbag : © 2020 TierIV inc.
- Image data are removed due to privacy concerns.
- Cannot run traffic light recognition
- Decreased accuracy of object detection
#### Note

#### Planning Simulator
- Sample map and rosbag: © 2020 Tier IV, Inc.
- Due to privacy concerns, the rosbag does not contain image data, and so traffic light recognition functionality cannot be tested with this sample rosbag. As a further consequence, object detection accuracy is decreased.

1. Download sample map from [here](https://drive.google.com/open?id=197kgRfSomZzaSbRrjWTx614le2qN-oxx).
### Planning Simulator

2. Launch Autoware
1. [Download the sample pointcloud and vector maps](https://drive.google.com/open?id=197kgRfSomZzaSbRrjWTx614le2qN-oxx), unpack the zip archive and copy the two map files to the same folder.
2. Open a terminal and launch Autoware

```sh
cd AutowareArchitectureProposal
cd ~/workspace/AutowareArchitectureProposal
source install/setup.bash
ros2 launch autoware_launch planning_simulator.launch.xml map_path:=[path] vehicle_model:=lexus sensor_model:=aip_xx1
ros2 launch autoware_launch planning_simulator.launch.xml map_path:=/path/to/map_folder vehicle_model:=lexus sensor_model:=aip_xx1
```

\* Absolute path is required for map_path.

3. Set initial pose
4. Set goal pose
5. Push engage button.
[autoware_web_controller](http://localhost:8085/autoware_web_controller/index.html)
3. Set an initial pose for the ego vehicle
- a) Click the `2D Pose estimate` button in the toolbar, or hit the `P` key
- b) In the 3D View pane, click and hold the left-mouse button, and then drag to set the direction for the initial pose.
4. Set a goal pose for the ego vehicle
- a) Click the `2D Nav Goal` button in the toolbar, or hit the `G` key
- b) In the 3D View pane, click and hold the left-mouse button, and then drag to set the direction for the goal pose.
5. Engage the ego vehicle.
- a) Open the [autoware_web_controller](http://localhost:8085/autoware_web_controller/index.html) in a browser.
- b) Click the `Engage` button.

##### Note
#### Note

- sample map : © 2020 TierIV inc.
- Sample map: © 2020 Tier IV, Inc.

#### Running With AutowareAuto
We are planning propose the architecture and reference implementation to AutowareAuto.
For the time being, use ros_bridge if you wish to use this repository with AutowareAuto modules.
You would have to do the message type conversions in order to communicate between AutowareAuto and AutowareArchitectureProposal modules until the architecture is aligned.
## Detailed tutorial instructions

For setting up AutowareAuto, please follow the instruction in: https://gitlab.com/autowarefoundation/autoware.auto/AutowareAuto
Please refer to the [Simulation tutorial](./docs/SimulationTutorial.md) for more details about supported simulations, along with more verbose instructions including screenshots.

For setting up ros_bridge, please follow the instruction in: https://github.com/ros2/ros1_bridge
## Running the AutowareArchitectureProposal source code with Autoware.Auto
For anyone who would like to use the features of this architecture proposal with existing [Autoware.Auto](https://gitlab.com/autowarefoundation/autoware.auto/AutowareAuto) modules right now, [ros_bridge](https://github.com/ros2/ros1_bridge) can be used.
> Until the two architectures become more aligned, message type conversions are required to enable communication between the Autoware.Auto and AutowareArchitectureProposal modules and these will need to be added manually.
#### Tutorial in detail
- To set up Autoware.Auto, please refer to the [Autoware.Auto installation guide](https://autowarefoundation.gitlab.io/autoware.auto/AutowareAuto/installation.html).
- To set up ros_bridge, please follow the [installation instructions on the ros_bridge GitHub repository](https://github.com/ros2/ros1_bridge#prerequisites).

See [here](./docs/SimulationTutorial.md) for more information.

## References
# References

### Videos
## Autoware.IV demonstration videos

- [Scenario demo](https://youtu.be/kn2bIU_g0oY)
- [Obstacle avoidance in the same lane](https://youtu.be/s_4fBDixFJc)
Expand All @@ -162,6 +157,6 @@ See [here](./docs/SimulationTutorial.md) for more information.
- [360° FOV perception (Camera Lidar Fusion)](https://youtu.be/whzx-2RkVBA)
- [Robustness of localization](https://youtu.be/ydPxWB2jVnM)

### Credits
## Credits

- [Neural Network Weight Files](./docs/Credits.md)
33 changes: 33 additions & 0 deletions design/ForDevelopers.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# How to setup for the specific hardware configuration

In order to test Autoware in a real vehicle, it is necessary to setup Autoware for each specific combination of vehicle, drive-by-wire system and sensors as follows:

## 1. Sensor TF

* The sensor TF describes the positional relationship of each sensor to the vehicle's base link (defined as the center of the vehicle's rear axle) and has to be created for each configuration of sensors.
* Please setup following the [TF design document](https://github.com/tier4/AutowareArchitectureProposal.proj/blob/master/design/TF.md).

## 2. Vehicle interface
* The [vehicle interface](https://github.com/tier4/AutowareArchitectureProposal.proj/blob/master/design/Vehicle/Vehicle.md#vehicle-interface) is the Autoware module that communicates with the vehicle's DBW (drive-by-wire) system, and must be created for each specific combination of vehicle and DBW.
* Please create an appropriate vehicle interface following the ["How to design a new vehicle interface"](https://github.com/tier4/AutowareArchitectureProposal.proj/blob/master/design/Vehicle/Vehicle.md#how-to-design-a-new-vehicle-interface) section of the [Vehicle stack design document](https://github.com/tier4/AutowareArchitectureProposal.proj/blob/master/design/Vehicle/Vehicle.md).
* [Sample vehicle interface file](https://github.com/tier4/lexus_description.iv.universe/blob/master/launch/vehicle_interface.launch) (for the Lexus RX 450H vehicle using [AutonomouStuff's PacMod system](https://autonomoustuff.com/products/pacmod))

## 3. Vehicle info

* The `vehicle_info` YAML configuration file contains global parameters for the vehicle's physical configuration (e.g. wheel radius) that are read by Autoware in [rosparam format](http://wiki.ros.org/rosparam) and published to the ROS Parameter Server.
* The required parameters are as follows:
```
/vehicle_info/wheel_radius # wheel radius
/vehicle_info/wheel_width # wheel width
/vehicle_info/wheel_base # between front wheel center and rear wheel center
/vehicle_info/wheel_tread # between left wheel center and right wheel center
/vehicle_info/front_overhang # between front wheel center and vehicle front
/vehicle_info/rear_overhang # between rear wheel center and vehicle rear
/vehicle_info/vehicle_height # from the ground point to the highest point
```
* [Sample vehicle info file](https://github.com/tier4/lexus_description.iv.universe/blob/master/config/vehicle_info.yaml) (for the Lexus RX 450H)

## 4. Sensor launch file

* The `sensor.launch` file defines which sensor driver nodes are launched when running Autoware, and is dependent on the specific sensors (type, OEM and model) that are to be used.
* [Sample sensor.launch file](https://github.com/tier4/autoware_launcher.iv.universe/blob/master/sensing_launch/launch/sensing.launch)
39 changes: 0 additions & 39 deletions design/ForDeveloppers.md

This file was deleted.

Loading

0 comments on commit b86c610

Please sign in to comment.