Autonomous driving research involves cooperation between engineers across fields, from control systems to machine learning. However, currently no commercial tool provides a full-stack solution for a self-driving vehicle development. Eclipse AVSys aims to provide an easy-to-use tool to speed up the autonomous driving development process. Eclipse’s customizable user interface, support for integration of new features, and strong community, make it the best starting point for our project.
Eclipse 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.
<A conceptual overview of Eclipse AVSys>
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 Eclipse AVSys.
The goal of Eclipse AVSys is to provide the necessary tools to easily model algorithms and hardware components (such as sensors and actuators) for autonomous driving:
- Graphical editor with block diagram environment for the ROS model-based design of autonomous driving systems
- Customizable templates of common autonomous driving systems
- Automatic ROS source code generator
- Source code editor synchronized with a model specification and its graphical representation
- Source code and model validation tools
- ROS build automation tools that create and builds ROS packages (local or remote)
- ROS diagnostic tools and parameter tuning
Eclipse AVSys adopts the model-based design methodology to describe an autonomous driving system. Using blocks and lines, users create a block diagram of the entire system, and based on it OSCAR IDE generates a ROS package and handles all dependencies. Finally, Eclipse AVSys builds the generated package on a target device and creates ready-to-launch executable ROS nodes.
- 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 block diagram representation of a sample autonomous driving system>
The development process can be divided into the following steps:
- 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.
Most common autonomous driving systems are implemented on top of ROS. Eclipse is the major IDE used by Linux developers, and It is also widely used by the ROS community. Eclipse provides a customizable user interface, facilitates integration of new features, has several fundamental modelling project, and a lovely community. Therefore, it was a natural choice to implement Eclipse AVSys as an Eclipse extension.
Used open source projects:
- Eclipse EMF - Eclipse Public License 2.0
- Eclipse Graphical Editing Framework (GEF) - Eclipse Public License 1.0
The alpha version includes basic system modeling, code generation, and build automation with remote deployment; and it is already available. A public beta release with a graphical editor and a source code editor will be available soon. Features such as source code and model synchronization/validation will be developed later on. More customizable templates will be added along the way.
Our community efforts will include:
- Encouraging the college students (Seoul National University) and laboratories to use Eclipse Autonomous Driving
- Providing detailed documentation and instruction manual
- Writing papers about our contributions and attending conferences
- Hosting workshops and demo sessions
In the future we will implement more ROS-related features such as custom message generation, request/reply interaction through “services”, saving and playing back data with “bags”, diagnostics and parameter tuning.