Continuous Simulation Lab with Azure Pipelines (Windows)
After defining your robot behavior, it is important to ensure the robot running as expected as the project iterates.
The traditional unit tests and integration tests usually use the static data to exercise your code.
Continous simulation demonstrates how you make use of
Azure Pipelines and
ROS on Azure with Windows VM to run your code in Hardware-in-the-loop simulation and virtual environments.
In this lab, we begin with self-driving car project with Gazebo simulation, test it on the rostest framework, and then cloud-host the continuous simulation on Azure Pipelines.
Run and observe the autonomous racecar simulation locally.
Deploy and register a ROS on Windows GPU optimized virtual machine on Azure.
Integrate a GitHub project with Azure Pipelines.
Observe the simulation runs and test results on the pipeline.
An Microsoft Azure account from https://portal.azure.com.
An Azure DevOps account from https://dev.azure.com.
A GitHub account from https://github.com.
Exercise 1: Build And Run Autonomous Car Simulation Locally
ms-iot/ros_simulation_labrepository into your GitHub account.
- Follow this ROS Wiki page to install ROS Melodic on Windows.
- Open the ROS command prompt, and run the following to build the project.
:: Clone the github project
git clone https://github.com/<your account>/ros_simulation_lab --recursive
:: install required components
vcpkg install sdl2:x64-windows
pip install circle-fit
:: build it
catkin_make --use-ninja -DCMAKE_BUILD_TYPE=RELEASE
- Run the autonomous car simulation.
:: source the ROS devel space.
:: run the application
roslaunch src\ar-tu-do\ros_ws\launch\gazebo.launch world:=racetrack mode_override:=2
This launch file runs a racecar in a simulated track in Gazebo and runs autonomous driving.
Exercise 2: Run ROSTest With Autonomous Car Simulation Locally
- End the previous exercise and run the following rostest file:
:: source the ROS devel space.
:: run the rostest
rostest demo demo.test
demo.test runs the same task as the previous exercise but in headless mode.
Additonally, it runs a
demo.py node to kick off a validation on the latest lap time.
demo package demonstrates an example how to organize your robot simulation with the rostest framework.
Now let's move this exercise to cloud-hosted environment with Azure Pipelines.
Exercise 3: Provision Cloud CI Environment With Azure Pipelines
Task 1: Prepare Permission For Azure DevOps Agent Pool
- This module guides you how to prepare permission for the agent pool.
- Take a note of the personal access token (PAT).
Task 2: Deploy Virtual Machine and Register as Azure DevOps Build Agent
ROS on Azure with Windows VM is a Azure quickstart template to help setup an Azure virtual machine with ROS installed.
- Navigate to the template. Click
Deploy to Azure.
- A form will be brought to you and here are some important parameters for this exercise.
- Virtual Machine Size: Select
Standard_NV*for GPU optimized virtual machine. This is required for Gazebo.
- Vm Image: Select
Visual Studio 2019for the required toolchain to build project.
- Pipeline Provider: Select
AzurePipelinesto use Azure DevOps.
- Vsts Account: This is your Azure DevOps organization name. For example, this is the
- Vsts Personal Access Token: This is the PAT noted from the previous section.
- Vsts Pool Name: Leave it to
Defaultto match the pool name in this exercise.
- Enable Autologon: Select
Trueto run build agent in the interactive session. This is required for Gazebo.
Task 3: Integrate Your GitHub Projects With Azure Pipelines
- Fork this repository into your GitHub account.
Integrate Your GitHub Projects With Azure Pipelinesguides you how to create a pipeline for a GitHub project in Task 1 & 2. Use your fork as the target repository.
- Navigate to the "Existing Azure Pipelines YAML file" and select
- Now you should have a pipeline running (or ready to run).
Task 4: Observe the Build Summary and Test Results
Click on a finished build and you will see a summary like:
Relatedand there is one artifact published, where you can find details logs for this run. In this example, you can also find the bag files for further analysis.
Test and coverageand you can find details test results by following the pass rate hyperlink.