<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>APP4MC RaceCar: A Practical ADAS Demonstrator for Evaluating and Verifying Timing Behavior</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Anand Prakash</string-name>
          <email>anand.prakash@fh-dortmund.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Lukas Krawczyk</string-name>
          <email>lukas.krawczyk@fh-dortmund.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Carsten Wolff</string-name>
          <email>carsten.wolff@fh-dortmund.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>IDiAL Institute, Dortmund University of Applied Sciences and Arts</institution>
          ,
          <addr-line>44227 Dortmund</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>-The computational demands of safety-critical ADAS applications on autonomous vehicles have been ever-increasing. As a result, high performance computing nodes with varying operating frequencies, and inclusion of different sensors have been introduced, which has resulted in introduction of heterogeneous architectures with high complexity. This complexity has led to challenges in analyzing a system's timing behavior, such as determining the end-to-end response time of high-level functionality as well as a real-time application's latency. Although several approaches to tackle this issue have been proposed, their practical verification on real-life applications is still an open issue. Accordingly, this work proposes an automotive demonstrator that will be used in evaluating the timing behavior of ADAS applications in a real-life environment using methodologies such as tracing, profiling and static analysis. The APP4MC RaceCar is a work in progress four-wheel drive demonstrator built on a Traxxas 1/10 scale RC car platform. It is equipped with stateof-the-art sensors like LiDAR, ZED2 stereo camera and hosts multiple heterogeneous on-board computers such as Nvidia AGX Xavier to replicate a full size autonomous vehicle. In this paper, we describe the need for making such a demonstrator with an overview of the heterogeneous components used in it. Moreover, we further describe the system architecture as well as the data flow through event-chain task model for the ADAS application which is based on Waters Challenge 2019 industrial case study. Index Terms-Heterogeneous System, Radio-Controlled Cars, Electronic Speed Controller, RT-Linux Kernel.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>From an abstract point of view, a typical Advanced Driver
Assistance System (ADAS) has to perform three tasks
perception, planning, and control. As part of the perception
task, various sensors are used in an ADAS application. The
vehicle status is provided as a feedback, which along with
the processed sensor data, plans and controls the path of an
autonomous vehicle. Each of these tasks are computationally
expensive, which requires high performance processing cores.
At the same time, these applications are safety-critical in
nature and must follow hard real-time constraints. Adaptive
cruise control, anti-lock braking systems, lane keep assistance,
obstacle detection/avoidance systems, and traffic sign
recognition are just a few examples of an ADAS application with
high computational requirements.</p>
      <p>
        Automotive OEMs are gradually moving towards higher
levels of driving automation, thereby increasing the complexity
of these applications. The number of different sensor, such as
LiDARs, stereo cameras, and Radars, installed on a vehicle
has also increased significantly in recent times. This accounts
for the huge amount of data from different sensors that needs
to be processed in real time, which leads to a computational
bottleneck. In order to deal with the computational bottleneck,
heterogeneous platforms are used to improve the overall
performance. Hardware accelerators such as GPUs and FPGA are
used in co-ordination with CPUs to increase the computational
power. Semiconductor companies provide various hardware
platforms for such ADAS application. For example, Renesas
R-Car-H3 [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] System-on-Chip (SoC) is a high performance
platform specifically designed for In-Vehicle infotainment
and driving safety support. The NVIDIA Drive [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] platform
provides a range of developer kits for Autonomous vehicle
along with sensor suite.
      </p>
      <p>From the architecture point of view, an ADAS application
can be divided into two categories. In a centralized
computing architecture, the raw data from sensors is passed to
a centrally located high performance computer that performs
data processing. However, the cost, performance, and power
requirements for such a processing unit are usually very high.
Generally, the sensors have their own processing cores where
the initial data is filtered and then sent to the main processing
unit for further computation. This kind of distributed
computing architecture is the more conventional approach. The
application does not rely on a single main processing core,
which provides system redundancy for functional safety along
with reduced processing requirements.</p>
      <p>Each task in an ADAS application has different
computational demands. For example, the computational requirement
for an object detection algorithm from camera input is much
higher than that of an object range detection from ultrasonic
sensors. Therefore, in order to reduce the latency of the overall
application, it becomes necessary to map these tasks to optimal
processing cores. The latency of these applications can be
further reduced by using parallel programming models such
as MPI, CUDA, etc. These tasks should not only follow
hardreal time constraints but must also be deterministic at the same
time. Using a Real-Time Operating System (RTOS) for such
applications provides a better control over the handling of tasks
based on the scheduling and preemption model used in it.</p>
      <p>
        Development of autonomous driving applications [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] poses
several challenges in terms of timing analysis, efficient
mapping and scheduling of tasks, and maintaining their
deterministic behavior. These applications undergo rigorous testing
and must pass all related safety standards such as Automotive
Safety Integrity Level (ASIL) before going into production. An
efficient way to conceptualize a new feature or a functionality
is to implement it in early design phases on an RC
(RadioControlled) Car model. A model based approach can be used
to design a heterogeneous application on these platforms. This
not only reduces the development cost and risk factor but also
helps in determining the feasibility of applications. Besides,
the RC platform provides the flexibility to evaluate and
benchmark various performance metrics such as latency, end-to-end
response time, memory contention, execution time, and so on.
Since there are multiple sensors and ECUs interacting with
each other over different communication interfaces, there is
a possibility of communication interference adding to the
latency which affects the overall performance of the application
in real-life scenarios. These metrics can be analyzed, to further
improve the software/hardware design of the system.
      </p>
      <p>In this work, we design and implement an ADAS
application on a 1/10 scale RC car. The demonstrator model
will provide a platform to measure the response time of the
implemented ADAS application, memory contention, latency
caused due to communication interference in real-life
environments. The remainder of the paper is structured as follows:
Section II provides an overview of related work. Section III
describes the existing challenges with respect to the timing
analysis of an ADAS. Section IV gives an overview of the
heterogeneous components and sensors used in the proposed
demonstrator model. The system architecture is explained in
Section V. Section VI provides a brief overview of evaluating
the timing behavior based on the generated trace data. Finally,
Section VII draws the conclusion and road map for the future
work.</p>
    </sec>
    <sec id="sec-2">
      <title>II. RELATED WORK</title>
      <p>
        Numerous RC cars have been developed for education and
research purpose, with their complexity depending upon their
particular use case and purpose. A typical RC car consists
of a chassis, motor controller, actuators, processing units,
sensors, and power supply. However, if a system is designed
for a specific purpose such as parallel parking, the platform
may consist of a minimum required components. Automatic
Parallel Parking of RC Car platform [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] hosts a
custommade circuit board consisting of an IC chip, amplifier and
radio receiver along with electric motors and antenna. It
consists of a simple parallel parking application developed
on a single IC chip with no requirement of high
performance processing nodes. A more complex application would
require a heterogeneous system. For instance, Duckietown [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]
provides minimal autonomy and basic features such as lane
following by utilizing e.g. a Raspberry Pi that is attached to
a monocular camera. Another example of a low cost, low
power autonomous robot can be found in Wolfbot[
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] which
is based on Beaglebone Black development platform. Even
though a realistic computer vision pipeline is implemented
on these platforms, the GPU capability available on the
onboard computer is not utilized. At the same time, the sensor
technology used in these platforms are not very advanced.
      </p>
      <p>
        Higher the complexity of ADAS application, more is the
computational requirement. Such applications require
dedicated accelerators to process the data in real-time. The RC
platform Go-CHART [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] makes use of external GPU capability
to overcome the computational bottleneck. The sensor data
is transmitted for further processing to Jetson TX2 board
using wireless communication. For better performance and
reliable ADAS application, it is recommended to have an
onboard high performance computer on the RC platform. Several
open source self-driving RC car platforms such as MuSHR
[
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], JetRacer [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], and Donkey Car [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] come with onboard
Jetson Nano processors and advanced sensors. MuSHR has
an additional Electronic Speed Controller (ESC) component,
which provides a better control over the actuators. MuSHR,
JetRacer, and Donkey Car are based on centralized compute
architecture where there is only one processing node which is
responsible for processing all sensor data as well as controlling
the actuators. The performance of NVIDIA Jetson Nano is
sufficient for applications involving computer vision algorithms.
However, relying on a single processing node might not be
efficient for an application having multiple tasks with
realtime constraints.
      </p>
      <p>
        Some autonomous miniature car models use two processing
nodes, one with the capability of GPU is dedicated for
executing machine learning algorithms and the other processing node
for motor control. AutoRally [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] is a high-end RC car built
on a 1/5-scale platform which uses Intel processing unit along
with Nvidia GTX accelerator for scaled autonomous driving.
It is based on distributed compute architecture where each
processing node is responsible for a specific task. However, the
RC car platform does not include a LiDAR sensor. Instead of
hosting a stereo camera, it comes with two monocular cameras
which makes the system more complex. MIT Racecar[
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]
platform houses state-of-the-art sensors and computing hardware,
placed on top of a powerful 1/10-scale mini race car.
      </p>
      <p>
        A model based approach can be taken in designing a system
based on Operator-Controller Module (OCM) [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]
architecture. This helps in better analysis of the performance metrics
at each architectural level. It is worth mentioning that none
of the above mentioned RC mini cars platforms are based on
the OCM architecture. The Industrial Waters Challenge 2019
[
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] provides a case study on a prototypical ADAS application
modelled on a heterogeneous platform using Amalthea [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ].
The implementation of this model can be used to determine the
performance metrics of a heterogeneous ADAS application.
MIT Racecar platform satisfies the requirements for
designing an ADAS application based on Waters Challenge 2019.
However, its compute capabilities can be further enhanced by
using next-generation and more powerful development boards.
The heterogeneity of the system can be further enhanced by
designing the system based on OCM architecture. This has led
us to the development of a new RC car platform for applying
the methods to measure the end-to-end latency of an ADAS
application on a heterogeneous system.
      </p>
    </sec>
    <sec id="sec-3">
      <title>III. PROBLEM STATEMENT</title>
      <p>Researchers have come up with many novel solutions to
analyze and benchmark the performance of ADAS application
on the basis of several performance metrics. The existing work
in this area can be categorized on the basis of architecture, high
computation algorithms, sensor fusion, scheduling and
mapping of tasks on processing cores. New functions in an ADAS
require access to different communication interfaces, which
makes the system more complex. AUTOSAR (AUTomotive
Open System ARchitecture) is based on OSEK specifications,
and provides a three layer architecture to develop an
automotive application.</p>
      <p>
        Since most ADAS applications rely on computer vision and
image processing algorithms which require parallel processing,
General Purpose GPUs (GP-GPUs) have started playing an
important role. Parallel portions of an application are executed
on GP-GPUs in terms of e.g. kernel programming model
[
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. Therefore, the response time of an application can be
determined by the execution time of a kernel [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] on a
given computing unit. However, GPUs are proprietary systems,
which restricts the knowledge of their internal working. This
makes the prediction of latency caused due to GPUs uncertain.
Another way to determine the execution time of a task on
a GPU is presented in [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. In recent times, reconfigurable
platforms such as FPGAs are also being exploited as
accelerators for image processing algorithms. PYNQ [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] is a FPGA
based platform that hides the underlying hardware details
and exposes a python interface to use any computer vision
framework such as OpenCV [20].
      </p>
      <p>Typically, an ADAS application consists of multiple tasks
executing on dedicated cores. These programs consist of
multiple event chain sequences where the input of next task
depends on the previous task’s output. Each task has its own
execution time. Varying speed of processors must be taken
into account while scheduling a task on that processor. At the
same time, an optimum scheduling sequence of these tasks
needs to be determined to make the overall application more
efficient. The availability of a processor at a given point of time
must be considered while scheduling these tasks. This makes
scheduling of these tasks non-trivial. This can affect the hard
real time constraint and the efficiency of the algorithm. For
example, Wang et al. [21] provided an insight of how effective
parallelism can improve the performance of a LDA (Lane
Detection Algorithm) compared to a naive parallel approach.
RTOS such as QNX Neutrino, SAFERTOS uses different
scheduling techniques in executing the tasks, which affects
the latency of the application [22].</p>
      <p>
        Another major aspect of an ADAS application is efficient
mapping of tasks to the processing units. The performance
of an application is highly dependent on optimum utilization
of the resources available on a heterogeneous platform. The
Waters Challenge 2019 [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] focused on developing an initial
model based on Amalthea [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] which can be further used
in deriving the performance metrics of the application. It is
also worth mentioning that the model is derived for a specific
hardware platform (NVIDIA Jetson TX2 SoM). To further
optimize the application, evolutionary optimization approaches
such as genetic algorithm can be used for allocation of tasks
[23]. In order to determine the worst case response time of
an application, the event chain in the critical path must be
considered. Tracing format such as BTF (Best Trace Format)
[24] can be used to analyze the timing, performance, and
reliability of the system. Similar approach can be used for
mapping of tasks, calculation of the response time in real life
environment for an application running on RC car platform.
      </p>
      <p>IV. OVERVIEW OF HETEROGENEOUS COMPONENTS
In order to precisely replicate the real life scenario, the
demonstrator must be modeled similar to existing vehicles
with autonomous functionality. Therefore, it has been designed
with multiple sensors and processing units. The remainder of
this section briefly describe the architecture of the components
used in the system.</p>
      <sec id="sec-3-1">
        <title>A. NVIDIA Jetson AGX Xavier</title>
        <p>The NVIDIA Jetson AGX Xavier SoM [25] includes a
compact carrier board and Jetson Xavier module. It is a
powerful AI computer designed for autonomous machines.
It provides performance to handle sensor fusion, localization
and mapping, obstacle detection, and path planning algorithms
critical for autonomous driving. A 40-pin expansion header
supports some standard communication interfaces such as I2C,
UART, SPI and CAN. A M.2 Key E slot can be used to add
WiFi/LTE capability to the board. An overview of the
components of the NVIDIA Jetson AGX Xavier is illustrated in
Figure 1, followed by an in-depth description in the following
subsections.</p>
        <p>1) Processing Unit: The CPU complex (CCPLEX) is
divided into four clusters. Each cluster contains two identical
64bit Carmel processors that are compliant to ARM’s v8.2 ISA
architecture. A high performance System Coherency Fabric
(SCF) connects all CPU clusters, thus enabling simultaneous
32GB
LPDDR
256 bits
DRAM
CPU cluster 1</p>
        <p>CPU cluster 2</p>
        <p>CPU cluster 3</p>
        <p>CPU cluster 4
operation of all CPU cores for a true heterogeneous
multiprocessing (HMP) environment. The SCF also connects the
CPU clusters to DRAM through a Memory Controller Fabric
(MCF) and I/O blocks in the Memory Mapped I/O (MMIO)
space through an ARM Advanced eXtensible Interface (AXI).</p>
      </sec>
      <sec id="sec-3-2">
        <title>2) Hardware Accelerators: The NVIDIA GPU GV10B is</title>
        <p>based on Volta Architecture which features 512 shading units,
32 texture mapping units, and 16 Render output units (ROP).
It also includes 64 tensor cores, which help to improve the
speed of machine learning applications. Additionally, the Volta
GPU architecture features a new Streaming Multiprocessor
(SM) which allows an energy efficient, high performance
computation of tasks that have processing requirements of
large and complex data streams. Each SM is partitioned into
four separate blocks referred as Streaming Multiprocessor
Partitions(SMPs). Each SMP contains its own instruction buffer,
scheduler, CUDA cores, and Tensor cores. GPUs core graphics
functions are performed inside the Graphics Processing Cluster
(GPC), which is a dedicated hardware block for computation,
rasterization, shading, and texturing. It is also augmented with
an image signal processor (ISP), a multimedia engine, a
programmable vision accelerators (PVAs), and a pair of NVIDIA
deep-learning accelerators (NVDLAs). These accelerators can
be used in parallel or in conjunction with CPU and GPU cores.</p>
        <p>3) Memory: The Xavier platform features a distributed
shared memory architecture. It comes with a system memory
of 32GB 256-Bit LPDDR4x and provides a eMMC storage
of 32GB. CPU as well as GPU have direct access to system
memory. Each CPU core includes 128 KB Instruction (I-cache)
and 64 KB Data (D-cache) Level 1 caches, whereas a 2 MB L2
cache is shared by both cores in a single cluster. All clusters
share a common 4MB L3 cache. Each SM in GPU has an
additional L1 cache of 128KB as well as access to a common
512KB L2 cache that is shared by all SMs.</p>
        <p>4) Speed: Each CPU can operate at a maximum frequency
of 2265 MHz. The GPU is operating at a frequency of
854 MHz, which can be boosted up to 1377 MHz. The
GPU provides workstation-class performance with up to 32
TeraOPS (TOPS) of peak compute and 750 Gbps of high-speed
I/O. The maximum system memory bandwidth is 137GB/s
providing a low latency in accessing it.</p>
        <p>5) Power utilization: Jetson AGX Xavier enables new
levels of power efficiency. Users can configure operating modes
for their applications at 10W, 15W, or 30W.</p>
      </sec>
      <sec id="sec-3-3">
        <title>B. Beaglebone AI</title>
        <p>The Beaglebone AI [26] is used as secondary processing
unit in our RaceCar platform. The board is built around a Texas
Instruments (TI) AM5729 system-on-chip (SoC). Its
computing capabilities enable the user to develop machine learning
applications with ease. It supports all standard communication
interfaces over an 46-pin header on either side of the board.
Additionally, it also supports a 16-bit LCD interface. The
board was developed specifically for AI applications and has
an integrated neural engine that processes complex algorithms
on the hardware level. The block diagram of AM5729 SoC is
depicted in Figure 2.</p>
        <p>Main Processing Unit
ARM Cortex ARM Cortex</p>
        <p>A15 A15
$D 32KB + $I $D 32KB + $I
3C2KacBhLe1 3C2KacBhLe1</p>
        <p>2 MB L2 Cache
48KB Bootable ROM
Digital Signal Processing Unit
TMS320C66x TMS320C66x
$D 32KB + $I $D 32KB + $I
3C2KacBhLe1 3C2KacBhLe1</p>
        <p>288KB L2 Cache
Con2Sf5Rig6AuKrMBable S3R4KABM</p>
        <p>AM5729 SoC</p>
        <p>Image Processing Unit
ARMv7E-M4 ARMv7E-M4
32KB L1 Cache 32KB L1 Cache</p>
        <p>L2 Cache
16KB ROM 64KB RAM</p>
        <p>Graphics Processing Unit
PSoGwXe5rV44R PSoGwXe5rV44R</p>
        <p>288KB L2 Cache
Graphics Accelerator
High Speed Interconnect
16-bit 1GB DDR3L</p>
        <p>Video Co-Processor
4 x Embedded Vision</p>
        <p>Engine
Program
Cache
32-bit
RISC Core
32KB
RAM
MMU</p>
        <p>Interconnect
32KB
RAM
DMA</p>
        <p>Emulation
Vector
CoProcessor
32KB
RAM
Error
Detection</p>
        <p>Fig. 2. AM5729 SoC Architecture.</p>
        <p>1) Processing Unit: The Beaglebone AI comes with an
ARM-A15 based dual-core processor. It supports the standard
ARM instruction set with hardware virtualization support.
Two dual-core Programmable Real-Time Units (PRU) are
present to provide ultra low latency. Access to these PRUs
are enabled via expansion headers. These dual-core PRUs are
based on ARMv7E-M architecture for general purpose usage,
particularly real-time control.</p>
        <p>2) Hardware Accelerators: The platform comes with a
3D graphics processing unit (GPU) subsystem based on
dual POWERVR SGX544 cores to support general
embedded applications. The GPU can process different data types
simultaneously, such as: pixel data, vertex data, video data,
and general-purpose data. Additionally, the platform is also
equipped with a Vivante based 2D graphics accelerator. There
is a separate dedicated hardware for the machine learning
libraries called Embedded Vision Engine (EVE) which
functions as a programmable image and vision processing engine.
Additionally, the platform also has two DSP subsystems for
audio processing as well as general purpose image and video
processing.</p>
        <p>3) Memory: Similar to AGX platform, Beaglebone AI has a
distributed shared memory architecture. It comes with a 16GB
eMMC device and features a SD card slot. The system memory
is 16-bit 1GB DDRL device. Each core of the main processing
unit has a 32KB instruction and 32KB data L1 cache along
with shared 2MB L2 cache. The unit also features a 48KB
bootable ROM. Finally, the platform provides 32KB data and
32KB instruction L1 cache for the DSP unit, 32KB shared
L1 cache memory for the PRUs, and a system level cache of
128KB for the GPUs.</p>
        <p>4) Speed: The system memory operates at a frequency
of 553MHz yielding an effective rate of 1066Mb/s on the
DDR3L bus allowing for 4GB/s of DDR3L memory
bandwidth. The main processing unit operates at a frequency of
1.5MHz, whereas the GPU operated at a maximum frequency
of 532MHz.</p>
      </sec>
      <sec id="sec-3-4">
        <title>C. Vedder Electronic Speed Controller</title>
        <p>Most modern Electronic Speed Controller (ESC) consist of a
microcontroller, which take input signals to regulate the speed
of an electric motor. VESC [27] is an open source ESC that
enables advanced customization options with multiple interface
support. The VESC 6 MKIV uses STM32F4 microcontroller
chip. It operates within the voltage range of 11.1V to 60V and
provides a continuous current of 80A, which can reach up to
120A in burst mode. Moreover, it can read its 3D orientation
in space, 3 axis acceleration values, and directions via the
inbuilt Inertial Measurement Unit (IMU).</p>
        <p>It is equipped with multiple communication interfaces and
sensor ports. Hall sensors allow precise and powerful rotation
of motor rotors from a random position. Single Wire Debug
(SWD) provides an interface for debugging, diagnosis of
realtime data on STM controller. Along with the connectors
for Brushless DC (BLDC) motor and servo motor, it also
provides standard interfaces such as I2C, UART which allows
its integration with other micro-controllers such as the
Beaglebone AI. An additional CAN Bus interface allows integrating
multiple VESC devices into an array.</p>
      </sec>
      <sec id="sec-3-5">
        <title>D. ZED2 Camera</title>
        <p>Cameras serve as a crucial component in enabling machine
vision and surroundings awareness. Based on the vision,
camera can be classified as monocular vision or stereo vision.
In automated driving, monocular vision camera can detect only
the classified objects, whereas stereo cameras replicate human
vision, thus allowing accurate extraction of depth information,
such as the distance of a moving object.</p>
        <p>The ZED2 [28] is a stereo camera that provides high
definition 3D video and neural depth perception of the
environment. It has been designed for a variety of challenging
applications, such as autonomous navigation and mapping
to augmented reality and 3D analytics. It supports video
streaming with a maximum field of view of 120 degrees
and a maximum resolution of 2.2K at 15 frames per second
(fps). For applications which require higher fps, the camera
can provide a maximum rate of 100 fps with the resolution
getting compromised relatively. Any object within the depth
range of 0.3m to 20m can be detected through the camera.
It has a built-in Inertial Measurement Unit (IMU), barometric
pressure sensor, and magnetic sensor, and can acquire inertial,
elevation, and magnetic field data in real time.</p>
        <p>ZED2 camera is compatible with NVIDIA GPU platforms.
Therefore, the computation power of Jetson AGX platform can
be leveraged in creating a real-time application.</p>
      </sec>
      <sec id="sec-3-6">
        <title>E. Slamtech Lidar Sensor</title>
        <p>Although cameras provides much of the sensing capabilities
for an autonomous vehicle, they suffer various limitations
when dealing with e.g. shadows or bright lights, which may
cause confusion in taking decisions. Moreover, calculating
an object’s distance from raw images usually comes at high
computation cost and requires correspondingly powerful
computers. A viable solution to reduce these limitations is using
other sensing technologies such as LiDAR or RADAR. The
RaceCar uses the capability of LiDAR along with stereo
camera for sensing the environment in decision-making.</p>
        <p>A LiDAR uses lasers to sense the surrounding environment.
The concept for distance determination remains similar to
RADAR, where the distance is calculated based on the
duration between the transmitted signal and the reflected signal
received from the object. LiDARs have extremely fast response
times which gives the processing units on the autonomous cars
ample amount of time to react to the changing environment.
One of its primary advantage is precision and accuracy.</p>
        <p>The RPLIDAR A3M1 [29] used in RaceCar is the next
generation low cost 360 degree 2D laser scanner (LIDAR)
developed by SLAMTEC. It can take up to 16000 samples
of laser ranging per second with high rotation speed. The
system can perform 2D 360-degree scan within a 25-meter
range. It must be noted that the distance range for dark or
less reflective objects is limited to 10m. The generated 2D
point cloud data can be used in mapping, localization, and
object/environment modeling. The typical scanning frequency
of LiDAR is 10Hz (600rpm), and the frequency can be freely
adjusted within a range from 5 to 20Hz according to the
specific requirements. With the 10Hz scanning frequency, the
sampling rate is 16kHz and the angular resolution is 0.225
degree. It is worth mentioning that it provides a rotation
speed detection and adaptive system as it adjusts the angular
resolution automatically according to the actual rotating speed.
The LiDAR is augmented by a DSP unit which takes the input
from the vision acquisition system, processes the sampled data
and provides the output distance, angle values between the
object and LiDAR.</p>
        <p>The RPLiDAR A3M1 can either be operated in enhanced
mode or outdoor mode. The enhanced mode is meant for
indoor environments and provides greater performance
compared to outdoor mode, whereas the outdoor mode comes at
an increased reliability. The RPLiDAR needs a 5V supply for
powering the range scanner core and motor system.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>V. SYSTEM ARCHITECTURE</title>
      <p>
        The system architecture is coarsely based on the concept
of Operator-Controller-Module (OCM) [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. The OCM
architecture helps in realization of a self-optimizing complex
system with adaptive behavior over changing environmental
conditions. It can be structured into three levels - Controller,
Reflective, and Cognitive Operator. The block diagram in
Figure 3 depicts the overall system architecture. The VESC
acts as a controller operator as it has direct access to the
actuators and operates under hard-real time conditions. The
Beaglebone AI acts as Reflective operator. It receives the
information about motor speed, steer, and acceleration value
from the VESC. It does not have direct access to the actuators,
but regulates and supervises the VESC. At the same time,
it acts a communication interface between the VESC and
NVIDIA Jetson AGX Xavier. The Jetson AGX Xavier board
is part of Cognitive Operator as it deals with processing the
sensor data such that it adapts to the changing environment
conditions.
      </p>
      <sec id="sec-4-1">
        <title>A. Hardware Architecture</title>
        <p>The Traxxas chassis comes with a built-in ESC. However,
for the purpose of better control and customization, the built-in
ESC is replaced with the VESC.</p>
        <p>a) Power Management: The platform consists of two
power sources - 3S LiPo battery and power bank. The LiPo
battery is dedicated to provide power supply to VESC using
XT-90 connector. The Jetson AGX Xavier board is powered
with a 19V power supply from Patona power bank. An
active USB is also connected to the power bank. The active
USB hub consists of four USB ports, one is used to power
up Beaglebone AI. The power supply to RPLiDAR is also
provided by the USB hub.</p>
        <p>b) Sensing: The sensing technology installed on the
platform consists of ZED2 stereo camera and RPLiDAR A3M1.
Both the sensors provide a USB interface and are directly
connected to Jetson AGX board. Additionally, the VESC as
well as ZED2 camera comes with an in-built IMU sensor
which can be used to determine the orientation, acceleration
of the RC car.</p>
        <p>c) Actuators: The Traxxas platform already comes with
a high-speed performance Velineon brushless DC motor. The
DC motor has a 3.5mm bullet connection interface to integrate
ZED2
Camera</p>
        <p>RP LiDAR</p>
        <p>Jetson AGX Xavier Carrier Board</p>
        <p>NVIDIA Jetson
AGX Xavier
MCP2515</p>
        <p>MCP2515
LiPo Battery</p>
        <p>VESC</p>
        <p>Beaglebone AI</p>
        <p>USB Hub
Power bank
DC Motor</p>
        <p>Servo Motor</p>
        <p>Fig. 3. APP4MC RaceCar Block diagram
with any standard ESC. Additionally, it also provides a
hightorque digital steering servo with Futaba connectors. The
Traxxas 2075 steering servo has a transit time of 0.16 seconds
which delivers a responsive steering.</p>
      </sec>
      <sec id="sec-4-2">
        <title>d) Communication Interfaces: Our demonstrator uses</title>
        <p>some standard communication protocols to interact with
different components on the RaceCar. The data transfer between the
Beaglebone AI and VESC must be in full-duplex mode. Since
the amount of data exchanged between them is not very high,
a UART interface with a baud rate of 115200 is sufficient for
the application. CAN interface is one of the standard protocol
used in automotive applications. The data transfer between
the Beaglebone AI and VESC must also be in full-duplex
mode. A CAN bus over SPI interface is established between
them for data exchange. For this purpose, MCP2515 breakout
board is used, which provides a CAN Bus transceiver over
SPI interface.</p>
      </sec>
      <sec id="sec-4-3">
        <title>B. Software Architecture</title>
        <p>A modular software stack for individual components is
depicted in Figure 4.</p>
      </sec>
      <sec id="sec-4-4">
        <title>1) Jetson AGX Xavier Software Stack: To address the real</title>
        <p>time constraints of the application we have enabled RT-Linux
to the NVIDIA Jetson Xavier platform. This signifies that
among all the threads ready for execution, the one with
the highest priority will be executed. The Linux kernel
provides two real-time scheduling policies (SCHED_FIFO and
SCHED_RR) that apply an individual arbitration in case of
tasks having same priorities. Non-real-time tasks are scheduled
following the SCHED_NORMAL policy.</p>
        <p>System Library
Linux Kernel
Device driver</p>
        <p>RT Scheduler
RT-Linux Kernel</p>
        <p>ARM Core</p>
        <p>Beaglebone AI
Application Layer</p>
        <p>System Library
Linux Kernel</p>
        <p>Device driver
RT-Linux Kernel</p>
        <p>RT Scheduler
ARM Cores</p>
        <p>RTID RTID
CAN over SPI</p>
        <p>RTID RTID RTID</p>
        <p>UART</p>
        <p>ChibiOS/RT</p>
        <p>ChibiOS/HAL</p>
        <p>Low Level Driver
ARM Core</p>
        <p>VESC
High Computation</p>
        <p>Algorithm</p>
        <p>Accelerator (GP-GPU)
Host Memory</p>
        <p>Nvidia Jetson AGX Xavier
Sensor Data</p>
        <p>
          The application is implemented on top of the Operating
System (OS) layer, further broken into several tasks, and
mapped on different cores. Those tasks that have high
computational demands are offloaded to GP-GPUs. CPUs apply
a fully preemptive fixed priority scheduling policy, whereas
GPUs follow weighted round-robin scheduling. The system
memory is shared between the CPU cluster and GP-GPUs for
better performance. Figure 5 depicts the task model along with
the data flow from sensors to actuators. The task definition of
ADAS application defined in this paper is mainly derived from
the Waters Challenge 2019 [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ].
        </p>
        <p>Localization - The localization task is responsible for
determining the relative position of the RC car on a given
environmental map. It takes the point cloud data from
LiDAR input and merges it with the RC car motion status
to estimate the demonstrator’s position.</p>
        <p>Can Polling - This task gets the key information about
the demonstrator motion parameters from the on-board
CAN bus and sends it to the Localization and Planner
task.</p>
        <p>Structure From Motion - This task is responsible for
estimating the depth of an object based on the stereo
vision camera images. The distance of the object is passed
to Planner task for further processing.</p>
        <p>Lane Detection - This task provides accurate locations
of the road boundaries and the shape of each lane. The
output of this task is a matrix of points representing the
lane boundaries within the road, which is sent to the
Planner task.</p>
        <p>Detection - The detection task is responsible for detecting
and classifying the objects within the visual range of the
camera. The output of this task is sent to the Planner task.
Planner - The main purpose of this component is to
calculate and follow a vehicle trajectory. The targeted
vehicle motion parameters are passed to the CAN Controller
task.</p>
        <p>Car Controller - The main purpose of this task is to get
the steering angle, speed, and acceleration value from the
Planner task and provide it to the reflective operator over
CAN Bus.</p>
        <p>Camera Input
SFM</p>
        <p>Lane Detection
CPU</p>
        <p>GPU
LiDAR Input</p>
        <p>CAN Polling depth estimation
lane boundaries
vehicle_status
vehicle_status
pose
steer,
speed
Localization</p>
        <p>Planner</p>
        <p>Controller</p>
        <p>Detection</p>
      </sec>
      <sec id="sec-4-5">
        <title>2) Beaglebone AI Software Stack: The RT-Linux Kernel</title>
        <p>has been ported on Beaglebone AI.</p>
        <p>The application layer consists of two threads - one
interacting with VESC to configure and send the commands
to it, the other to communicate with Jetson AGX Xavier
board. The Beaglebone AI provides the feedback regarding
the current speed, steering angle, acceleration, and orientation
of the RaceCar to Jetson AGX Xavier board over the CAN
bus.</p>
        <p>3) VESC Application: As the VESC directly interacts with
the actuators, it must also conform to the real-time constraints
required for controlling the actuators. The VESC firmware
is built using RTOS ChibiOS. It is a light weight operating
system providing deterministic behavior of real-time
multithreaded applications. The scheduling of threads on VESC
is possible in two ways - Round Robin scheduling and
Cooperative Scheduling.</p>
        <p>A brushless DC (BLDC) motor application is implemented
on top of ChibiOS RTOS. This application receives commands
from Beaglebone AI over UART interface and performs the
respective operation.</p>
        <p>VI. TIMING ANALYSIS USING TRACING FRAMEWORK
Tracing the software application is one of the efficient
approaches in determining its timing behavior. BTF [24]
is a CSV (Comma-Separated Values) based format used in
Trace generation</p>
        <p>BTF Tracing</p>
        <p>Framework
ADAS Application</p>
        <p>Execution on
heterogeneous
platform</p>
        <p>Generated BTF</p>
        <p>Trace File
Timing Analysis</p>
        <p>Derive Performance</p>
        <p>Metrics (ATDB)</p>
        <p>BTF Trace Visualization</p>
        <p>tool
(Eclipse Trace Compass)</p>
        <p>Fig. 6. Timing Analysis Workflow using BTF Trace.
recording events that are triggered on entities in a
chronological order, on a system level. The integrated BTF tracing
framework can be utilized to capture the events generated on
each task at runtime in real-life scenarios. An overview of the
workflow for timing analysis of the application using tracing
capabilities is illustrated in Figure 6. The generated trace
file can be viewed on any standard BTF trace visualization
tool, for example Eclipse Trace Compass [30]. The timing
performance metrics can be derived from the generated trace
file by converting it to the Eclipse APP4MC Amalthea Trace
Database (ATDB) [31] format. The ATDB file determines the
execution time of each task and runnables which includes the
average, best-case and worst-case execution time on a specific
core. The event-chain metrics in ATDB provides the latency
of all the event-chain tasks in the application. At the same
time, the trace data also provides the information about the
resource utilization of the processing unit, thereby assisting in
efficient mapping of the tasks on processing cores.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>VII. FUTURE WORK AND CONCLUSION</title>
      <p>The paper describes the state-of-the-art work on RC car
platform and identifies the need for developing a new
demonstrator. The APP4MC RaceCar provides a practical prototype
of a full size autonomous vehicle with its heterogeneous
architecture and sensing capabilities. The paper briefly describes the
architecture of the heterogeneous components and sensor used
in our platform. It discusses the system architecture and the
data flow event-chain task model for an ADAS application on
a heterogeneous platform. The computing capabilities of
GPGPUs can be used to implement and test an ADAS application
in a real-life environment.</p>
      <p>Future work involves working on the mechanical design and
assembly of the RaceCar components. Further implementation
involves integrating each component as well as developing
the Amalthea task model based on the described architecture.
In addition, porting a deterministic RTOS such as QNX on
Beaglebone AI and Jetson AGX Xavier will further enhance
the real-time capability of the system. Finally, we implement a
BTF tracing framework that allows us to use the demonstrator
to verify timing analysis results and efficient mapping of tasks
on the processing nodes.
[20] OPENCV. [Online]. Available: https://docs.opencv.org/master/index.</p>
      <p>html
[21] X. Wang, M. Cui, K. Huang, A. Knoll, and L. Chen, “Improving the
performance of adas application in heterogeneous context: A case of lane
detection,” in 2017 IEEE 20th International Conference on Intelligent
Transportation Systems (ITSC), 2017, pp. 1–6.
[22] M. Hammond, G. Qu, and O. A. Rawashdeh, “Deploying and scheduling
vision based advanced driver assistance systems (adas) on heterogeneous
multicore embedded platform,” 2015 Ninth International Conference on
Frontier of Computer Science and Technology, pp. 172–177, 2015.
[23] L. Krawczyk, M. Bazzal, R. P. Govindarajan, and C. Wolff, “An
analytical approach for calculating end-to-end response times in autonomous
driving applications,” 06 2019.
[24] V. I. GmbH, “Best trace format (btf)technical specification v2.2.0,” 2020.
[25] NVIDIA JETSON AGX XAVIER. [Online]. Available: https:
//www.nvidia.com/de-de/autonomous-machines/embedded-systems/
jetson-agx-xavier/
[26] BEAGLEBONE AI SYSTEM REFERENCE MANUAL.
[Online]. Available: https://github.com/beagleboard/beaglebone-ai/wiki/
System-Reference-Manual
[27] VEDDER ELECTRONIC SPEED CONTROLLER. [Online]. Available:
https://vesc-project.com/
[28] ZED2 CAMERA SPECIFICATIONS. [Online]. Available: https://cdn.</p>
      <p>stereolabs.com/assets/datasheets/zed2-camera-datasheet.pdf
[29] RPLIDAR A3. [Online]. Available: https://www.slamtec.com/en/Lidar/</p>
      <p>A3
[30] Eclipse trace compass. [Online]. Available: https://www.eclipse.org/
tracecompass/
[31] Eclipse app4mc amalthea trace database. [Online]. Available: https:
//www.eclipse.org/app4mc/help/latest/index.html#section4.9</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>Renesas</surname>
          </string-name>
          r-car-h3. [Online]. Available: https://www.renesas.com/ jp/en/products/automotive-products/
          <article-title>automotive-system-chips-socs/ r-car-</article-title>
          <string-name>
            <surname>h3-</surname>
          </string-name>
          m3
          <string-name>
            <surname>-</surname>
          </string-name>
          starter-kit
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <surname>Nvidia</surname>
            <given-names>drive.</given-names>
          </string-name>
          [Online]. Available: https://developer.nvidia.com/drive
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>R.</given-names>
            <surname>Okuda</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Kajiwara</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K.</given-names>
            <surname>Terashima</surname>
          </string-name>
          , “
          <article-title>A survey of technical trend of adas</article-title>
          and autonomous driving,”
          <source>in Technical Papers of 2014 International Symposium on VLSI Design, Automation and Test</source>
          ,
          <year>2014</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>4</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>B.</given-names>
            <surname>Xiao</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Xu</surname>
          </string-name>
          , and L. Xu, “
          <article-title>Notice of violation of ieee publication principles: Automatic parallel parking of rc car using distance sensors</article-title>
          ,” in
          <source>2009 Second International Conference on Future Information Technology and Management Engineering</source>
          ,
          <year>2009</year>
          , pp.
          <fpage>525</fpage>
          -
          <lpage>528</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>L.</given-names>
            <surname>Paull</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Tani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Ahn</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Alonso-Mora</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Carlone</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Cap</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y. F.</given-names>
            <surname>Chen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Choi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Dusek</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Fang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Hoehener</surname>
          </string-name>
          , S. Liu,
          <string-name>
            <given-names>M.</given-names>
            <surname>Novitzky</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I. F.</given-names>
            <surname>Okuyama</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Pazis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Rosman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Varricchio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Yershov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Zhao</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Benjamin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Carr</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Zuber</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Karaman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Frazzoli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Del Vecchio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Rus</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>How</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Leonard</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Censi</surname>
          </string-name>
          , “
          <article-title>Duckietown: An open, inexpensive and flexible platform for autonomy education</article-title>
          and research,” in
          <source>2017 IEEE International Conference on Robotics and Automation (ICRA)</source>
          ,
          <year>2017</year>
          , pp.
          <fpage>1497</fpage>
          -
          <lpage>1504</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>J.</given-names>
            <surname>Betthauser</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Benavides</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Schornick</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N. O</given-names>
            <surname>'Hara</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Patel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Cole</surname>
          </string-name>
          , and E. Lobaton, “
          <article-title>Wolfbot: A distributed mobile sensing platform for research and education</article-title>
          ,”
          <source>in Proceedings of the 2014 Zone 1 Conference of the American Society for Engineering Education</source>
          ,
          <year>2014</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>8</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>S.</given-names>
            <surname>Kannapiran</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Berman</surname>
          </string-name>
          , “
          <article-title>Go-chart: A miniature remotely accessible self-driving car robot</article-title>
          ,” in
          <source>2020 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)</source>
          ,
          <year>2020</year>
          , pp.
          <fpage>2265</fpage>
          -
          <lpage>2272</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>S. S.</given-names>
            <surname>Srinivasa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Lancaster</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Michalove</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Schmittle</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Summers</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Rockett</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. R.</given-names>
            <surname>Smith</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Choudhury</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Mavrogiannis</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Sadeghi</surname>
          </string-name>
          , “
          <article-title>Mushr: A low-cost, open-source robotic racecar for education and research</article-title>
          ,”
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>JETRACER.</surname>
          </string-name>
          [Online]. Available: https://github.com/NVIDIA-AI-IOT/ jetracer
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10] DONKEYCAR. [Online]. Available: https://www.hackster.io/wallarug/ donkey
          <article-title>-car-with-jetson-nano-robo-hat-mm1-e53e21</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>B.</given-names>
            <surname>Goldfain</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Drews</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>You</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Barulic</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Velev</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Tsiotras</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J. M.</given-names>
            <surname>Rehg</surname>
          </string-name>
          , “
          <article-title>Autorally: An open platform for aggressive autonomous driving</article-title>
          ,
          <source>” IEEE Control Systems Magazine</source>
          , vol.
          <volume>39</volume>
          , no.
          <issue>1</issue>
          , pp.
          <fpage>26</fpage>
          -
          <lpage>55</lpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>S.</given-names>
            <surname>Karaman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Anders</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Boulet</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Connor</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Gregson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Guerra</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Guldner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Mohamoud</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Plancher</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Shin</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Vivilecchia</surname>
          </string-name>
          , “
          <article-title>Project-based, collaborative, algorithmic robotics for high school students: Programming self-driving race cars at mit</article-title>
          ,” in
          <source>2017 IEEE Integrated STEM Education Conference (ISEC)</source>
          ,
          <year>2017</year>
          , pp.
          <fpage>195</fpage>
          -
          <lpage>203</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>J.</given-names>
            <surname>Gausemeier</surname>
          </string-name>
          , U. Frank,
          <string-name>
            <given-names>J.</given-names>
            <surname>Donoth</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Kahl</surname>
          </string-name>
          , “
          <article-title>Specification technique for the description of self-optimizing mechatronic systems</article-title>
          ,” Research in Engineering Design, vol.
          <volume>20</volume>
          , pp.
          <fpage>201</fpage>
          -
          <lpage>223</lpage>
          ,
          <year>11 2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>F.</given-names>
            <surname>Wurst</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Dasari</surname>
          </string-name>
          , A. Hamann, D. Ziegenbein, I. Saudo,
          <string-name>
            <given-names>N.</given-names>
            <surname>Capodieci</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Bertogna</surname>
          </string-name>
          , and
          <string-name>
            <given-names>P.</given-names>
            <surname>Burgio</surname>
          </string-name>
          , “
          <article-title>System performance modelling of heterogeneous hw platforms:</article-title>
          <source>An automated driving case study,” in 2019 22nd Euromicro Conference on Digital System Design (DSD)</source>
          ,
          <year>2019</year>
          , pp.
          <fpage>365</fpage>
          -
          <lpage>372</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <surname>Eclipse</surname>
            <given-names>APP4MC.</given-names>
          </string-name>
          [Online]. Available: https://www.eclipse.org/app4mc/
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>D. A.</given-names>
            <surname>Jamsek</surname>
          </string-name>
          , “
          <article-title>Designing and optimizing compute kernels on nvidia gpus,” in 2009 Asia and</article-title>
          South Pacific Design Automation Conference,
          <year>2009</year>
          , pp.
          <fpage>224</fpage>
          -
          <lpage>229</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>R.</given-names>
            <surname>Saussard</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Bouzid</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Vasiliu</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Reynaud</surname>
          </string-name>
          , “
          <article-title>Optimal performance prediction of adas algorithms on embedded parallel architectures</article-title>
          ,” in
          <source>2015 IEEE 17th International Conference on High Performance Computing and Communications</source>
          ,
          <source>2015 IEEE 7th International Symposium on Cyberspace Safety and Security, and 2015 IEEE 12th International Conference on Embedded Software and Systems</source>
          ,
          <year>2015</year>
          , pp.
          <fpage>213</fpage>
          -
          <lpage>218</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>C.</given-names>
            <surname>Widerspick</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Bauer</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Fey</surname>
          </string-name>
          , “
          <article-title>Latency measurements for an emulation platform on autonomous driving platform nvidia drive px2,”</article-title>
          <source>in ARCS Workshop 2018; 31th International Conference on Architecture of Computing Systems</source>
          ,
          <year>2018</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>8</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>K.</given-names>
            <surname>Haeublein</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Brueckner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Vaas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Rachuj</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Reichenbach</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Fey</surname>
          </string-name>
          , “
          <article-title>Utilizing pynq for accelerating image processing functions in adas applications</article-title>
          ,”
          <source>in ARCS Workshop 2019; 32nd International Conference on Architecture of Computing Systems</source>
          ,
          <year>2019</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>8</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>