96boards: Autoware everywhere | Autoware.Auto and Hikey970

Servando German Serrano
|

Introduction

In our previous blog we showed how to run a subset of Autoware.AI’s components on the Hikey970.

For this instance we will look at getting Autoware.Auto working in the same Hikey970 and running the Autoware.Auto 3D Perception Stack demo.

The post is organized as follows:


Requirements

For the following steps you will need your Hikey970 to be accesible via SSH and, for an easier setup, have Docker installed on it. So, to get the board ready you can follow the steps here if you plan to also develop real time applications using ROS/ROS2 or just use the Bionic Builder Tool to get Ubuntu 18.04 working.

In addition, to install Docker you just need to follow the official steps to install docker on arm64 target for Ubuntu.

Please note that to successfully run Autoware.Auto you will need to have ROS Melodic in addition to ROS2 Dashing (at the time of writing). This setup is needed to make use of the ros1_bridge to be able to integrate Autoware.Auto and Autoware.AI.

  • For a full native installation you can follow the official steps to install ROS Melodic and to install ROS Dashing.
  • For convenience we have created a docker image with a default root linaro user that integrates both, to get it please do:
    $ docker pull 96boards/ros:mel_dash
    

For visualization purposes you also need a laptop with ROS2 installed natively or through a docker image.

Getting Autoware.Auto

From source

To get the source code for Autoware.Auto you just need to:

$ git clone --recursive https://gitlab.com/autowarefoundation/autoware.auto/AutowareAuto.git ~/AutowareAuto

To build it please do:

$ docker run -it --rm --privileged --net=host -u linaro -v ~/AutowareAuto:/home/linaro/AutowareAuto:rw 96boards/ros:mel_dash /bin/bash
$ cd AutowareAuto
$ colcon build

Note It is possible that your Autoware.Auto clone has newer dependencies than the ones available in the 96boards/ros:mel_dash docker image which will cause the build to fail, in that case please do:

$ cd AutowareAuto
$ rosdep update
$ rosdep install -y --from-paths src --ignore-src
$ colcon build

Docker

For evaluation purposes an Autoware.Auto docker image with a default root linaro user is available at the 96boards/autoware Dockerhub repo. Please note that this image is likely not to be updated regularly and some of the latest Autoware.Auto functionalities might not be available. To make use of the latest capabilities please follow the above instructions. To get the image please do:

$ docker pull 96boards/autoware:auto

Running the 3D Perception Stack demo

To run the Autoware.Auto 3D Perception Stack demo we will roughly follow the steps here but adapted to our setup.

In the laptop we get the config files and open 2 terminals to run 2 instances of rviz2 as:

$ wget https://gitlab.com/autowarefoundation/autoware.auto/AutowareAuto/raw/master/src/tools/autoware_auto_examples/rviz2/autoware.rviz
$ wget https://gitlab.com/autowarefoundation/autoware.auto/AutowareAuto/raw/master/src/tools/autoware_auto_examples/rviz2/autoware_voxel.rviz
  • Terminal 1:
    $ rviz2 -d autoware.rviz
    
  • Terminal 2:
    $ rviz2 -d autoware_voxel.rviz
    

Now we need to ssh into the Hikey970 in 4 terminals and then we need to do the following:

  1. First, to get the demo data you can download it manually to the laptop and then scp the file to the board or try the following in the Hikey970 (if you followed our previous post you will already have a shared_dir, otherwise please mkdir shared_dir before doing the steps below). So, in Terminal 1:
    $ cd shared_dir
    $ wget http://people.linaro.org/~servando.german.serrano/autoware/autoware.auto_get_demo_data
    $ chmod +x autoware.auto_get_demo_data
    $ ./autoware.auto_get_demo_data
    

    If the download link has not changed the script will download the file. Depending on the internet connection it will take some time to complete (the file is around 900Mb).

  2. In Terminal 1, depending on the option you chose above:
    • For the docker option above please do:
      $ docker run -it --rm --privileged --net=host -u linaro -v ~/shared_dir:/home/linaro/shared_dir:rw 96boards/autoware:auto /bin/bash
      $ cd ~
      $ source AutowareAuto/install/setup.bash
      
    • For the source option:
      $ docker run -it --rm --privileged --net=host -u linaro -v ~/shared_dir:/home/linaro/shared_dir:rw -v ~/AutowareAuto:/home/linaro/AutowareAuto:rw 96boards/ros:mel_dash /bin/bash
      $ cd ~
      $ source AutowareAuto/install/setup.bash
      
  3. In terminals 2 to 4 we need to access the running container as we did here but using the linaro user:
    $ docker exec -it -u linaro CONTAINER_NAME /bin/bash
    $ cd ~
    $ source AutowareAuto/install/setup.bash
    
  4. Terminal 1:
    $ udpreplay ~/shared_dir/route_small_loop_rw-127.0.0.1.pcap
    
  5. Terminal 2:
    $ ros2 run velodyne_node velodyne_cloud_node_exe __params:=/home/"${USER}"/AutowareAuto/src/drivers/velodyne_node/param/vlp16_test.param.yaml
    
  6. Terminal 3:
    $ ros2 run ray_ground_classifier_nodes ray_ground_classifier_cloud_node_exe __params:=/home/"${USER}"/AutowareAuto/src/perception/filters/ray_ground_classifier_nodes/param/vlp16_lexus.param.yaml
    
  7. Terminal 4:
    $ ros2 run voxel_grid_nodes voxel_grid_cloud_node_exe __params:=/home/"${USER}"/AutowareAuto/src/perception/filters/voxel_grid_nodes/param/vlp16_lexus_centroid.param.yaml
    

If everything went fine we will be able to visualize the demo point cloud and downsampled one in the running rviz2 GUIs as can be seen in the image below.


Conclusion

In this blog post we have added Autoware.Auto to our board and run the 3D Perception Stack demo. With this we now have Autoware.AI and Autoware.Auto in the same hardware so in the next post we will see how to link the 2 stacks together through the ros1_bridge, so keep an eye to this space.

This article is Part 2 in a 10-Part Series.

comments powered by Disqus