diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..42feeb80 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,35 @@ +name: CI + +on: + push: + branches: + - master + pull_request: + branches: + - master + +jobs: + build: + runs-on: ubuntu-20.04 + env: + ROS_DISTRO: noetic + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Setup ROS + uses: ros-tooling/setup-ros@v0.7 + with: + required-ros-distributions: noetic + + - name: Install Dependencies + run: | + sudo apt-get update + sudo apt-get install -y libompl-dev + + - name: Build and Test + uses: ros-tooling/action-ros-ci@v0.3 + with: + package-name: hybrid_astar + target-ros1-distro: noetic + vcs-repo-file-url: "" diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 19b7902a..00000000 --- a/.travis.yml +++ /dev/null @@ -1,119 +0,0 @@ -# Generic .travis.yml file for running continuous integration on Travis-CI for -# any ROS package. -# -# Available here: -# - https://github.com/felixduvallet/ros-travis-integration -# -# This installs ROS on a clean Travis-CI virtual machine, creates a ROS -# workspace, resolves all listed dependencies, and sets environment variables -# (setup.bash). Then, it compiles the entire ROS workspace (ensuring there are -# no compilation errors), and runs all the tests. If any of the compilation/test -# phases fail, the build is marked as a failure. -# -# We handle two types of package dependencies specified in the package manifest: -# - system dependencies that can be installed using `rosdep`, including other -# ROS packages and system libraries. These dependencies must be known to -# `rosdistro` and are installed using apt-get. -# - package dependencies that must be checked out from source. These are handled by -# `wstool`, and should be listed in a file named dependencies.rosinstall. -# - -# There are envioronment variables you may want to change, such as ROS_DISTRO, -# ROSINSTALL_FILE, and the CATKIN_OPTIONS file. See the README.md for more -# information on these flags, and -# https://docs.travis-ci.com/user/environment-variables/ for information about -# Travis environment variables in general. -# -# Author: Felix Duvallet - -# NOTE: The build lifecycle on Travis.ci is something like this: -# before_install -# install -# before_script -# script -# after_success or after_failure -# after_script -# OPTIONAL before_deploy -# OPTIONAL deploy -# OPTIONAL after_deploy - -################################################################################ - -sudo: required -cache: - - apt - -# Build all valid Ubuntu/ROS combinations available on Travis VMs. -language: generic -matrix: - include: - - name: "Focal noetic " - dist: focal - env: ROS_DISTRO=noetic - -# Configuration variables. All variables are global now, but this can be used to -# trigger a build matrix for different ROS distributions if desired. -env: - global: - - ROS_CI_DESKTOP="`lsb_release -cs`" # e.g. [precise|trusty|...] - - CI_SOURCE_PATH=$(pwd) - - ROSINSTALL_FILE=$CI_SOURCE_PATH/dependencies.rosinstall - - CATKIN_OPTIONS=$CI_SOURCE_PATH/catkin.options - - ROS_PARALLEL_JOBS='-j8 -l6' - -################################################################################ - -# Install system dependencies, namely a very barebones ROS setup. -before_install: - - sudo sh -c "echo \"deb http://packages.ros.org/ros/ubuntu $ROS_CI_DESKTOP main\" > /etc/apt/sources.list.d/ros-latest.list" - - sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 - - sudo apt-get update -qq - - sudo apt-get install dpkg - - sudo apt-get install -y python3-catkin-pkg python3-rosdep python3-wstool python3-empy ros-$ROS_DISTRO-ros-base ros-$ROS_DISTRO-map-server ros-$ROS_DISTRO-tf - - source /opt/ros/$ROS_DISTRO/setup.bash - # Prepare rosdep to install dependencies. - - sudo rosdep init - - rosdep update - -# Create a catkin workspace with the package under integration. -install: - - sudo apt-get install libompl-dev - - mkdir -p ~/catkin_ws/src - - cd ~/catkin_ws/src - - catkin_init_workspace - # Create the devel/setup.bash (run catkin_make with an empty workspace) and - # source it to set the path variables. - - cd ~/catkin_ws - - catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3 - - source devel/setup.bash - # Add the package under integration to the workspace using a symlink. - - cd ~/catkin_ws/src - - ln -s $CI_SOURCE_PATH . - -# Install all dependencies, using wstool first and rosdep second. -# wstool looks for a ROSINSTALL_FILE defined in the environment variables. -before_script: - # source dependencies: install using wstool. - - cd ~/catkin_ws/src - - wstool init - - if [[ -f $ROSINSTALL_FILE ]] ; then wstool merge $ROSINSTALL_FILE ; fi - - wstool up - # package depdencies: install using rosdep. - - cd ~/catkin_ws - - rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO - -# Compile and test (mark the build as failed if any step fails). If the -# CATKIN_OPTIONS file exists, use it as an argument to catkin_make, for example -# to blacklist certain packages. -# -# NOTE on testing: `catkin_make run_tests` will show the output of the tests -# (gtest, nosetest, etc..) but always returns 0 (success) even if a test -# fails. Running `catkin_test_results` aggregates all the results and returns -# non-zero when a test fails (which notifies Travis the build failed). -script: - - source /opt/ros/$ROS_DISTRO/setup.bash - - cd ~/catkin_ws - - catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3 - # Run the tests, ensuring the path is set correctly. - - source devel/setup.bash - - catkin_make run_tests && catkin_test_results diff --git a/README.md b/README.md index cb4918b0..88a6af72 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -### Hybrid A* Path Planner for the KTH Research Concept Vehicle [![Build Status](https://app.travis-ci.com/karlkurzer/path_planner.svg?branch=master)](https://travis-ci.org/karlkurzer/path_planner) +### Hybrid A* Path Planner for the KTH Research Concept Vehicle [![Build Status](https://github.com/karlkurzer/path_planner/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/karlkurzer/path_planner/actions/workflows/ci.yml) This repository contains the implementation of a Hybrid A* Path Planner for autonomous vehicles, specifically developed for the KTH Research Concept Vehicle. The Hybrid A* algorithm is a powerful path planning approach that combines the benefits of A* search in continuous space with a discretized set of headings. It enables the generation of efficient and smooth paths for nonholonomic vehicles navigating complex environments.