The ConceptCar is an experimental embedded system with the objective of testing and verifying modern future car features by deploying different classes of applications. It was initiated together with Fraunhofer IESE, and it is now managed separately.
The ConceptCar is a research platform remotely operated via a standard 2-channel (throttle and steering) 27MHz radio transmitter system. It uses an air-cooled sensorless brushless electrical motor for throttle, and a servo motor for steering. Depending on the ground conditions, it is capable of driving at a speed up to 50 km/h.
The basic construction kit of the car was modified to incorporate several electronic control units (ECUs) and a corresponding set of sensors (for wheel speed, gyro/accelerometer, distance etc.) and a high speed CAN-Bus for internal communication purposes. It features two independent power supply trains, one for the 'heavy load' electric system i.e. DC motor and servo, and one for the ECUs.
Basic architecture of the ConceptCar
The basic architecture of ConceptCar consists of three processing units: input processing, data processing and output processing. The input processing unit contains all the sensor boards, where each board forms a separate ECU. Each sensor board strictly interacts with the appropriate sensor components (as depicted in the User Controls part in the figure), receives the sensory signal, processes it, and places it to the centralized CAN-Bus (if required). For instance, the sensor board for throttle decodes the throttle PWM signal from the radio receiver and the wheel speed sensors from the front left and rear right wheels. Based on the received throttle signal, it creates the corresponding acceleration signal (CANID_THROTTLE), and finally places it on the CAN bus. Each sensor board ECU is implemented on a 8-bit Atmel AVR AT90CAN128 micro-controller.
The data processing unit is meant for performing complex mathematical computations. For this purpose, it uses an AT91SAM7A2 board that incorporates ARM7TDMI embedded processor with a 32-bit RISC architecture. This board is provided with several embedded peripherals like CAN interfaces, SPI bus, PWM modules, Timer/Counters etc. As depicted in the figure above, all the ECUs (except Emergency board) communicate with each other via the centralized CAN-Bus. The output processing unit is mainly comprised of a single ECU, which is held responsible for creating the PWM signals to drive the actuators (dc motor and servo). It receives the appropriate CAN messages and generates the respective PWM signals for controlling the actuators. There exists another board that serves the user by providing a chance to remotely invoke an emergency stop. This board is termed as Emergency board (not shown in the figure). This board mainly serves two purposes:
- Provides the user a feature of invoking an emergency stop
- Isolates the actuators from the actor board
This board uses an additional transceiver module, with a receiver (SHR-7) being placed on the board. The SHR-7 sender remote signal can reach up to 1.5 km. Pushing any of the three buttons on the emergency remote control sets the car in a stop mode. Secondly it isolates the actuators from all the other ECUs, thereby removing any possibility of damaging the other ECUs due to any power consumption issue related to the motor and servo. This ECU has been implemented on a 8-bit Atmel AVR ATmega88 micro-controller.
Currently, the main focus of the research is to make each ECU compatible with Quartz. By the time, all the boards are programmed using C/C++ language, under Eclipse environment. The basic task now is to provide the user a resort of programming it with Quartz environment, eventually implementing all the features of the car without having any sound proficiency in high-level languages like C/C++. As an ongoing research, the data processing unit (AT91SAM7A2) has been successfully turned in to a Quartz compatible unit. It has been successfully tested and evaluated with two basic applications (basic,speed-meter).
The work flow to get Quartz programs running on the ConceptCar is as follows: the Quartz program is translated to C code by the compiler in the Averest toolkit. Afterwards, some kind of 'glue code' that maps the translated C code into a form that is well compatible with the ARM board is used to compile a ARM executable, which is flashed to the board. The current version of the glue code and the complete ARM library can be downloaded here.
Currently, we reimplement the behavior of the other boards in Quartz. Additionally, the ConceptCar is used in the Safety Cage Architechture project (SafeCAr) as an demonstration tool.