Differences

This shows you the differences between two versions of the page.

wiki:old:public:research:cycab [2009/11/17 22:56] (current)
Line 1: Line 1:
 +===== Cycab videos =====
 +<html><table style="border:0; text-align:center;"><tr><td></html>
 +<php>player('research:cycab:cycab_video1.flv');</php>
 +<html></td></tr><tr><td></html>
 +{{:wiki:old:public: research:cycab:cycab_video1.mov |view on external viewer}}
 +<html></td></tr></table></html>
 +
 +
 +===== A large R&D program =====
 +
 +<html><center></html>
 +{{:wiki:old:public:research:cycab:cycab_development1.png}}
 +{{:wiki:old:public:research:cycab:cycab_development2.png}}
 +{{:wiki:old:public:research:cycab:cycab_development3.png}}
 +{{:wiki:old:public:research:cycab:cycab_development4.png}}
 +<html></center></html>
 +
 +The researchers of INRIA and INRETS are working since 1991 on this new intelligent transportation system for the cities of tomorrow. They study in particular two different concepts : car-sharing and the intelligent vehicle.
 +Car-sharing has been developed with industrial partners in the Praxitele project which is now operational in the city of Saint-Quentin-en-Yvelines with 50 electric cars from Renault. The partners were :
 +
 +  * CGFTE, a transit operator
 +  * Dassault Electronique
 +  * EDF, the electric utility company
 +  * Renault
 +
 +The intelligent vehicle has been studied by INRIA with various computer techniques to move them automatically. In 1994, a concept of platooning has been demonstrated on electric cars with one single driver. In 1997, a new vehicle called the CyCab, designed specifically for car-free cities, has been presented to the public. This vehicle, developed with the assistance of EDF, RATP and Andruet S.A., is entirely under computer control and can be driven manually with a joystick, or can be driven automatically under various modes.
 +The company AVENIR-HAVAS (a subsidiary of the VIVENDI group), is now studying with a number of cities, the possibility to implement a transportation system based on these vehicles. The objective is to limit the use of private cars in cities by offering an attractive alternative in terms of service, lack of noise and pollution, reduced parking space, and better use of energy
 +
 +==== Bibliography ====
 +  * [[http://www.inria.fr/RRRT/RT-0229.html|Technical report of INRIA Rhône-Alpes]]
 +
 +===== Self-service vehicles for the cities of tomorrrow =====
 +
 +{{:wiki:old:public: research:cycab:city_of_tomorrow.png?250}}
 +This new public transportation system is based on a fleet of small electric vehicles specifically designed for zones with limited access to regular automobiles :
 +
 +  * historic city centers
 +  * gare/aérogare
 +  * airports and train stations
 +  * university campuses
 +  * resorts
 +
 +These vehicles are easy to use by a large population :
 +
 +  * access control by smart card
 +  * simple manual control through a joystick
 +  * door to door service
 +  * automatic parking and recharging
 +  * multimedia information terminal
 +
 +===== Hardware =====
 +
 +The CyCab has been designed to transport up to two persons in downtown areas, pedestrian malls, large industrial or amusement parks and airports, at a maximum of 30km/h speed.
 +
 +  * Length 1.9m
 +  * Width 1.2 m
 +  * Weight 300 kg
 +  * Power : 4 x 1 kW electric motors
 +  * 4 wheel-drive, 4 wheel-steer
 +  * Max. speed 30 km/h
 +  * Range : 40 km
 +  * Capacity : 2 adults and 2 children
 +  * Manual driving with joystick
 +  * Teleoperated operation
 +  * Full automatic operation
 +  * Induction charging
 +  * Smart card access
 +
 +{{:wiki:old:public: research:cycab:cycab_components.png }}
 +1. CCD camera for remote control \\
 +2. Joystick for manual driving \\
 +3. Multimedia terminal \\
 +4. Linear camera for platoon driving \\
 +5. Infrared targets for platoon driving \\
 +6. Ultrasonic sensors for collision avoidance \\
 +7. Steering actuator \\
 +8. One electric drive motor per wheel \\
 +9. One electric brake motor per wheel \\
 +10. Four lead-acid batteries and electronic management  \\
 +
 +It offers two new functionalities, aided driving and autonomous driving. Aided driving relies on the use of a joystick and a finger touch screen. This joystick is connected to the computer, which controls the vehicle and then provides secure and easy driving: speed may be limited in curves and special areas. Everybody is able to drive this vehicle because it does not require specific skills from the driver. The finger touch screen allows the user to communicate with the system in order to get informations such as localization, vehicle autonomy, or for example the town museum list. To solve the problem of the vehicle fleet repartition through the stations, in order to satisfy customer demand, it is possible to form a "virtual cars train" of empty vehicles with only one driver (in the front vehicle). Other autonomous driving modes, like radio-control or light markers guidance may be implemented.
 +
 +This vehicle has been designed with mass production and public use constraints: low cost, small dimensions, robustness, easy maintenance. The whole design has been oriented in this way, from the mechanics to the computer based system.
 +
 +==== Mechanics and electronics ====
 + 
 +
 +The mechanics is borrowed from a small electrical golf car frame, already produced in small series. The use of four identical wheels motors blocks, allows to reduce costs (by re-using identical parts) and volume (four small engines with small power controllers are easier to build and integrate than a big one with a high power controller). Consequently, the architecture is modular and the vehicle is easier to drive (the four wheels are propulsive and directive ). The steering is made through an electrical jack mechanically linked to all the wheels.
 +Each wheel motor block has it's own power amplifier, driven by a micro-controller(Fig 1 ). This intelligent node is constituted of three linked layers. The lowest one provides power to two motors. The second one allows the sensor acquisitions and the communications with the other nodes. The last one, made with a MC68332 drives the two others. The MC68332 is a micro-controller commercialized by Motorola. It is well suited for motor control. In order to generate PWM signals or to perform quadrature signals decoding, it integrates a programmable Time Process Unit.
 +
 +{{:wiki:old:public: research:cycab:cycab_node.png |Node Architecture}}
 +<html><center></html>
 +//Figure 1. Node Architecture//
 +<html></center></html>
 +
 +\\
 +Each wheel node controls the drive engine and a brake motor, with all their associated sensors (optical encoder, y and brake torque measurement, temperature ...). A fifth node is attached to the steering jack and the joystick.
 +
 +The communications between the nodes are made through a CAN serial bus . It has been designed specially for automotive applications and allows safe communications in disturbed environment, with a rate of 1Mbits/s. It carries messages up to 8 bytes length with 50 per cent control and arbitration bits overload. The network consists in 5 nodes and a PC board which drives the screen and the hard disk. (Fig. 2)
 +
 +{{:wiki:old:public: research:cycab:cycab_network.png |Node Network}}
 +<html><center></html>
 +//Figure 2. Node Network//
 +<html></center></html>
 +
 +
 +
 +===== Software =====
 +
 +We show here, on the "manual driving" mode implemented on the CyCab, the benefits of using the SynDEx tool which supports the AAA methodology.
 +
 +AAA means Algorithm Architecture Adequation. The goal of the methodology is to find out an optimized implementation of an application algorithm on an architecture, while satisfying constraints. "Adequation" is a French word meaning an efficient matching. Note that it is different from the English word "adequacy" which involves a sufficient matching. AAA is based on graphs models to exhibit both the potential parallelism of the algorithm and the available parallelism of the multicomponent. The implementation is formalized in terms of graphs transformations.
 +
 +Using the graphical user interface of SynDEx, the first step consists in specifying the algorithm as a data-flow graph in order to exhibit its potential parallelism. Then the user describes the hardware architecture as an hyper-graph. He may now ask for an Adequation, which carries out a distribution and a scheduling, displayed as a predicted timing diagram. At this time, the user may verify that his application satisfies the real-time constraints.
 +
 +If the constraints are satisfied the user tends to optimize hardware resources by minimizing the components number, and by using cheaper components. On the contrary, if the application does not meet the constraints, he must redesign his algorithm, by choosing a smallest granularity allowing a better distribution. If this is not sufficient, he may add new components or use fastest ones. To help the user, SynDEx proposes an initial number of components, which is the ratio (maximum speedup) between the sum of all the operation durations and the critical path duration. The upper bound of this number is a good estimation of the minimum number of components to use. When the user is satisfied, he may ask SynDEx to generate a dead lock free executive for the real-time execution of the algorithm application on the multi-component architecture. A program source, written in a macro-code independent of the microprocessor type, is generated for each component. The macro-code is built from the executive kernel which supports all the primitives provided by SynDEx: memory allocations, communications, tests, loops ...
 +
 +==== Hardware graph ====
 + 
 +
 +The figure 3 (in the right) shows a snapshot of the architecture graph of our application implemented using SynDEx . This actual hardware architecture, is composed of five MC68332 (AvG332, AvD332, ArG332, ArD332, Dir332) and one 486DXII66 (root) all linked through a CAN bus.
 +
 +
 +{{:wiki:old:public: research:cycab:syndex_example.png?350 |Algorithm and Hardware graph}}
 +<html><center></html>
 +//Figure 3. Algorithm and Hardware graph//
 +<html></center></html>
 +
 +\\
 +
 +==== Algorithm graph ====
 + 
 +
 +The figure 3 (in the left) presents a snapshot of the data-flow graph of the ``manual driving'' application algorithm. The vertices are the operations to be executed on the data. The edges are data dependencies between operations. This graph is composed of 3 kinds of vertices: the input ones only produce data, the processing ones produce and consume data, and the output are the ones which only consume data.
 +
 +Typically the input vertices are associated to the sensors and the output vertices to the actuators. That is why they must be constrained to be assigned to the components attached to the sensors and actuators. The graph is cyclicly executed ; data flow from left to right. The execution time of one graph is the real-time loop period.
 +
 +To figure out how to use SynDEx, we present the steering control part of our application. The figure 4 details the control loop algorithm block diagram wich led to the upper part of the algorithm graph depicted on figure 3.
 +
 +The vertex JoyEtPotDir holds the wanted wheel angle (joydir) given by the lateral joystick position, and the steering jack position ( potdir) given by a potentiometer. The other values necessary to the control, are the vehicle and the steering jack speed (resp. v and vitdir). The first one is computed by the vertex VitLoc which processes a mean of the 4 wheel speeds processed by VitAvG, VitAvD, VitArG, VitArD. The second one is given by VitDir.
 +
 +{{:wiki:old:public: research:cycab:lateral_control_loop.png?350 |lateral control loop}}
 +<html><center></html>
 +//Figure 4: lateral control loop//
 +<html></center></html>
 +
 +\\
 +
 +
 +
 +The function named ConsPosDir processes the position error errdir. The joydir value is first saturated in order to bound the steering jack displacement. The value is then multiplied by a factor varying according to the vehicle speed, in order to provide a lateral acceleration boundary. Before to be subtracted, both the wanted and the actual position values are low-pass filtered to minimize the acquisition errors influence and to smooth the driving.
 +
 +ConsVitDir provides a wanted jack speed (vitdircons) from the position error. It is a proportional filter saturated to the jack max speed displacement.
 +
 +ConsCurDir processes the wanted current (currdir for PwmCurDir which performs the steering jack control current loop. currdir is the speed error (vitdircons - vitdir) multiplied by a constant.
 +
 +Actually, PwmCurDir, VitDir, JoyEtPotDir, VitAvG, VitAvD, VitArG, VitArD, do not control directly the hardware. They send and receive data, to and from, a low level interruption subroutine which provides data acquisition, quadrature decoding, speed processing, current control loop and low level safety. The benefit is to allow low level processing to be executed at a fixed rate (for wheel speed processing) higher than the real-time loop one. In our application, the real-time period is 10ms when the low level control period is 1ms.
 +
 +Note that in order to help the programmers, several vertices called "VISU" allow to "spy" the data, by displaying or saving them on the PC. This facility is very useful during the test and debug stage. The figure 6 presents the predicted execution time given by SynDEx after the Adequation was completed. It shows only one execution of the graph. Each column represents the sequence of operations assigned to each processor, the Y-axis showing the time progress from top to bottom. The edges represent processor communications. More precisely, the origin of an edge is the date when the data is ready to be sent, and the ending of the edge is the date when this data is available on the destination processor.
 +
 +
 +{{:wiki:old:public: research:cycab:schedule_graph.png?350 |Schedule}}
 +<html><center></html>
 +//Figure 5: Schedule//
 +<html></center></html>
 +
 +\\
 +
 +
 +==== Code generation ====
 + 
 +
 +On each processor the optimized macro-code generated by SynDEx is expanded by the M4 (Gnu) macro-processor to produce an assembly code. A makefile is also generated. It performs the compilation and the link, calling Gnu GCC, and loads executables on the processors through the CAN bus. On each 68332, thanks to this optimized macro-code the complete executable code is less than 15Ko.
 +
 +===== Partnerships =====
 +
 +<html><style type="text/css"><!--
 +table.inline, table.inline td, table.inline tr {
 + border: 0px;
 + text-align:left;
 +}
 +--></style></html>
 +
 +|{{:wiki:old:public: research:cycab:logo_inria.png }}|I.N.R.I.A.(institut national de recherche en informatique et en automatique) lead the development of the CyCab, specifically designed for self-service use.|
 +|{{:wiki:old:public: research:cycab:logo_avenir.png }}|Avenir Public will be responible for the commercialization to the local collectivities.|
 +|{{:wiki:old:public: research:cycab:logo_andruet.png }}|Andruet S.A. made the first two prototypes (mechanical part).|
 +|{{:wiki:old:public: research:cycab:logo_inrets.png }}|I.N.R.E.T.S. (Institut national de recherche sur les transports et leur sécurité) is in charge of the socio-economic evaluation of the system.|
 +|{{:wiki:old:public: research:cycab:logo_edf.png }}|E.D.F. the electric public utility has been in charge of the development of the inductive charging stations.|
 +|{{:wiki:old:public: research:cycab:logo_ratp.png }}|RATP conducted with INRIA the first studies which lead to the technical specification.|
 +|{{:wiki:old:public: research:cycab:logo_robosoft.png }}|Robosoft is now manufacturing and selling the first CyCab (3 have already been sold to Singapor.|
 
wiki/old/public/research/cycab.txt · Last modified: 2009/11/17 22:56 (external edit)
Recent changes · Show pagesource · Login