Skip to content

RISE-Dependable-Transport-Systems/WayWise

WayWise

Workflow build result Ask DeepWiki

WayWise_li.mp4

WayWise (way-wise: Expert or knowledgeable in finding or keeping the way; knowing the way or route.) is a rapid prototyping library for connected, autonomous vehicles. It is developed within research projects at the RISE Dependable Transport Systems group to investigate the use of autonomous vehicles (rc cars, tractors, drones) and, especially, related functional safety as well as cybersecurity risks and opportunities they bring, in various use cases (road traffic, agriculture, maritime). It has roots in the RISE Self-Driving Vehicle Platform (SDVP), originally developed by Benjamin Vedder, but was redesigned and rewritten based on C++ and Qt targeting commercial-of-the-shelf hardware (instead of custom hardware and firmware). The library is used to build the brains on-vehicle and the control application counterpart on the desktop. The main protocol for communication between vehicle and control application is MAVLINK, which is implemented using MAVSDK. There is also support for controlling vehicles using ISO/TS 22133:2023 as implemented in RI-SE/iso22133. WayWise does not target production readiness but exploring specific use cases by rapid prototyping.

Our main projects that base on WayWise are:

  • ControlTower, desktop control application that communicates to vehicles via MAVLINK (WayWise-based vehicles mainly, experimental PX4 support).
  • RCCar, a fully-fledged rc car implementation (GNSS & IMU-based positioning, VESC-based odometry, ...).
  • WayWiseR, a ROS2 integration of WayWise that streamlines the development and deployment of autonomous vehicles in both simulation and real-world environments.

Current maintainers are:

  • Aria Mirzai
  • Ramana Reddy Avula

Previous maintainers:

  • Marvin Damschen
  • Rickard Häll

You can reach out to us directly or via [email protected].

How to use it and what to expect

This "library" is meant to be used as a git submodule, as we do not do releases (for the time being) and do not promise a stable API. In general, our development resources are scarce and dedicated to fulfill use cases of research projects we are part of. We do our best to avoid it, but things will break from time to time.

As set of examples can be found in /examples, most notably:

RCCar_minimal_example

Organization

  • core: fundamental classes/headers, e.g., for storing a position and transforming coordinates
  • communication: quite broadly, everything that deals with "communication", e.g., connection between vehicle and control station, but also the vehicle's internal communication to lower-level control via CANopen
  • logger: logging functionallity between vehicles and control application
  • vehicles: classes used to store state of different vehicle types (e.g., within desktop application), but also to implement a specific vehicle that can drive and steer using controllers
  • sensors: sensor support in a broad sense. Support for GNSS, IMU and UWB-based positioning is implemented here as well as objectdetection using DepthAI
  • autopilot: currently provides the "WaypointFollower" interface for following a route (i.e., a list of waypoints) and several implementations of it
    • PurePursuitWaypointFollower, an implementation of pure pursuit, which can also follow a point, e.g., a person or another vehicle
    • GotoWaypointFollower, does not do low-level control but sends goto requests (mainly used for PX4-based drones)
    • MultiWaypointFollower, is a container that allows switching between multiple instances of WaypointFollower (e.g., if you want to switch between different routes and save state inbetween)
  • userinterface: UI building blocks to create desktop applications (see also ControlTower)
  • external: code from external projects
  • tools: tools that support WayWise development like for building MAVSDK
  • examples: a set of examples showing how WayWise is used

Use cases

image

Citation

If you use WayWise in a publication, please cite our paper:

@article{Damschen_WayWise_A_rapid_2024,
author = {Damschen, Marvin and Häll, Rickard and Mirzai, Aria},
doi = {10.1016/j.simpa.2024.100682},
journal = {Software Impacts},
month = sep,
title = {{WayWise: A rapid prototyping library for connected, autonomous vehicles}},
volume = {21},
year = {2024}
}

Funded by

EU logo

This project has received funding from the European Union’s Horizon 2020 and Horizon Europe research and innovation programmes, and the Digital Europe programme under grant agreement nº 814975, nº 101095835, 101069573 and nº 101100622. The results reflect only the authors' view and the Agency is not responsible for any use that may be made of the information it contains.

About

A rapid prototyping library for connected, autonomous vehicles developed at RISE Dependable Transport Systems

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 8

Languages