Autonomous driving research involves cooperation between engineers across fields, from control systems to machine learning. However, obtaining required programming skills to develop autonomous driving systems takes a lot of time and energy. We think that anyone with valuable knowledge should be able to contribute to development of autonomous driving technologies without going through struggles of software development.
AVSys is an end-to-end design tool covering both hardware and software modules of an autonomous car. Using the model-based design methodology, users can describe the autonomous driving system as a block diagram. There, individual modules of the car are mapped to separate blocks. Relationships between modules are represented by linkages between blocks. After the system model is fully defined, a user only needs to write code for individual modules, without having to care for the overall source code structure, dependencies or build mechanisms.
- ROS-based system can be viewed as a graph, where nodes are computational processes that communicate with each other by passing messages through topics with publish/subscribe semantics.
- In a block diagram, nodes and topics are represented by blocks, and the message passing interface is represented by connections between blocks.
- Nodes and topics are defined as classes using EMF (Eclipse Modeling Framework).
- GEF (Graphical Editing Framework) is used to easily make and edit instances of defined classes.
- The actual visual representation of the classes is shown using Draw2D.
A common autonomous driving platform consists of a target vehicle, a sensor suit, and a processing unit, such as NVIDIA embedded board, running the Linux operating system with the Robot Operating System (ROS) middleware. Note that apart from the algorithm implementation, everything else is taken care of by the AVSys.
Our session will include a demonstration of development process using AVSys:
- The graphical editor provides a drag-and-drop interface for creating instances of ROS publisher/subscriber nodes and topics.
- The model description is saved as an XML (Extensible Markup Language) file, from which the skeleton code is generated.
- Skeleton code of each module can be modified in the source code editor. All changes are simultaneously reflected in a model description and its graphical representation.
- Build automation tools generate a ROS package in compliance with the ROS Filesystem and transfer it to the target’s workspace directory via FTP (File Transfer Protocol). It checks for dependency issues, handles them, and builds the package.