<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wikilegacy.armadeus.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=PaulM</id>
	<title>ArmadeusWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wikilegacy.armadeus.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=PaulM"/>
	<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Special:Contributions/PaulM"/>
	<updated>2026-04-29T02:23:04Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=File:PaulM.png&amp;diff=14413</id>
		<title>File:PaulM.png</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=File:PaulM.png&amp;diff=14413"/>
		<updated>2017-08-06T19:29:45Z</updated>

		<summary type="html">&lt;p&gt;PaulM: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=User:PaulM&amp;diff=14412</id>
		<title>User:PaulM</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=User:PaulM&amp;diff=14412"/>
		<updated>2017-08-06T19:28:19Z</updated>

		<summary type="html">&lt;p&gt;PaulM: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=ELDER_Project&amp;diff=8378</id>
		<title>ELDER Project</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=ELDER_Project&amp;diff=8378"/>
		<updated>2010-06-30T10:24:06Z</updated>

		<summary type="html">&lt;p&gt;PaulM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:elder_logo.png|128px|alt=Elder logo]]&lt;br /&gt;
[[Image:elder_robot.png|300px|right|alt=Elder Robot]]&lt;br /&gt;
== Project overview ==&lt;br /&gt;
ELDER (Embedded Linux Development for Robotics) Project is a robotic team which participated to the [http://www.planete-sciences.org/robot/index.php?section=pages&amp;amp;pageid=100 French robotic cup] in May 2010. The team used an Armadeus APF27 + APF27Dev boards. This involved to work on both hardware and software designs. One of the goal of this project is to evolve and some parts are still under development.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Project members ===&lt;br /&gt;
This project is actually the work of two students in last year of their Master in Engineering at the [http://www.strath.ac.uk/eee/ University of Strathclyde].&lt;br /&gt;
* [[User:PaulM|PaulM]]&lt;br /&gt;
* Sebastien&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Files and links ===&lt;br /&gt;
In order to help the development of this project and the team&#039;s communication, a wiki and a subversion repository have been created. Links are bellow. &lt;br /&gt;
* [http://www.mp-net.fr/elder Wiki] &#039;&#039;Note that the wiki might be updated during the next days&#039;&#039;.&lt;br /&gt;
* [http://www.mp-net.fr/elder/svn SVN repository]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes about the Subversion repository&#039;&#039;&#039;&lt;br /&gt;
* The actual FPGA firmware files are located at &amp;quot;svn-elder/projects/fpga_fw&amp;quot;&lt;br /&gt;
* The actual software files are located at &amp;quot;svn-elder/projects/elder_sw/armadeus&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Students project reports ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PaulM&#039;&#039;&#039;: Motion control, Beacon positioning system, High level software, Motor board: [http://syoctax.free.fr/Elder/Elder_report_paul.pdf PDF]&lt;br /&gt;
* &#039;&#039;&#039;Sebastien&#039;&#039;&#039;: Mechanical design, Power Board, Daughter board, GUI: [http://syoctax.free.fr/Elder/Elder_report_seb.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Detailled informations ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Daughter board===&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot;&lt;br /&gt;
 |[[Image:elder_main-system.png|thumb|400px|center|ELDER&#039;s main system architecture]]&lt;br /&gt;
 |[[Image:elder_pic-daughterboard.png|thumb|400px|center|ELDER&#039;s main boards (APF27 connected to the daughter board)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Introduction====&lt;br /&gt;
&lt;br /&gt;
The aim of the daughter board is to interface the [[APF27]] board ( which is used for the intelligence and the motion control) with everything else on the robot such as sensors, actuators, servos, motors, etc...&lt;br /&gt;
Modules can also be plugged on it according to the robot needs and be interfaced with the Armadeus FPGA or the daughter board’s own microcontroller.&lt;br /&gt;
Therefore each year, small boards can be developed in line with the project theme and the chosen mechanical solutions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Requirements====&lt;br /&gt;
&lt;br /&gt;
The electrical and mechanical requirements are:&lt;br /&gt;
*100 x 160 mm board : the board has to be the same size as Armadeus board in order to be stacked over it.&lt;br /&gt;
*45 x 45 mm plug-in modules (up to 6 can be plugged) with on each:&lt;br /&gt;
**3.3V logic supply&lt;br /&gt;
**5V and 12V power supply&lt;br /&gt;
**CAN Bus&lt;br /&gt;
**UART (serial transmission)&lt;br /&gt;
**8 GPIO&lt;br /&gt;
*Encoders interface&lt;br /&gt;
*Motors interface (PWM and directions)&lt;br /&gt;
*Fan control&lt;br /&gt;
    &lt;br /&gt;
The daughter board is meant to become a ’mother board’ on which can run the motion control (PID) and the intelligence of the robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====System design====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_Daughter_board_sch.png|600px|center|Daughter board system description]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Microcontroller=====&lt;br /&gt;
&lt;br /&gt;
The choice of the microcontroller was based on the requirements, and first an MSP430 from Texas Instrument was chosen.&lt;br /&gt;
But after two weeks of trying to make a programmer for this type of microcontroller without success, a PIC32MX has finally been selected instead.&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_daughter_board_mic.png|600px|center|thumb|Daughter board main microcontroller, with its associated components]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The PIC32 is a 32 bits microcontroller architecture family from Microchip, and the PIC32MX575F512H has the following features:&lt;br /&gt;
*Max Speed: 80 Mhz&lt;br /&gt;
*10-bits ADC 16 channels&lt;br /&gt;
*5 PWM outputs&lt;br /&gt;
*5 timers&lt;br /&gt;
*53 I/O pins&lt;br /&gt;
*6 UARTS&lt;br /&gt;
&lt;br /&gt;
All this features were enough to fit to the requirements, moreover, this chip could be acquired for free, with the Microchip free samples process.&lt;br /&gt;
&lt;br /&gt;
Note that the microcontroller is also interfaced with the CAN bus, and the implementation is the same as described before for the power board.&lt;br /&gt;
A LED has been putted on a free pin at the end, which is useful to debug or to make the first ’led blinking test’ for example.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Fan control=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_fan_control.png|300px|center|thumb|Fan control circuit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The [[Armadeus]] board, daughter board, power board and plug-in modules are all mounted in a same box.&lt;br /&gt;
This configuration generate heat which has to be cooled by a fan in order to have correct performances.&lt;br /&gt;
&lt;br /&gt;
A small dedicated microcontroller is used to realize this function, which again has been chosen from the Microchip manufacturer.&lt;br /&gt;
It is a PIC12F683 which is small (8 pins), has got an ADC for the temperature reading and a PWM output for the fan speed setting.&lt;br /&gt;
&lt;br /&gt;
The fan is driven by a MOSFET which is triggered by the PWM, and gives the possibility to apply a 12V supply voltage directly on it.&lt;br /&gt;
&lt;br /&gt;
A freewheeling diode is also putted between the fan’s terminals, in order to protect it from being damaged by instant high voltages generated by the inductive property of the motor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Encoders interface=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_encoders_sch.png|500px|center|thumb|Encoders interface circuit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The encoders are used to measure accurately the distance traveled by the robot, it gives 1024 ’ticks’ for each wheel revolution.&lt;br /&gt;
These ticks are transmitted via two channels A and B, which both are differential outputs of the encoder.&lt;br /&gt;
&lt;br /&gt;
In order to treat these signals, AM26LV32 differential line receiver are used. This kind of chip can be supplied with only 3.3V however it accepts 5V inputs, which is the minimum supply level for the encoders.&lt;br /&gt;
&lt;br /&gt;
As a result, it plays a double role as converting the differential input in a single output, and as converting a 5V input to a 3.3V output which is acceptable for the FPGA or the microcontroller.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Modules sockets=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_module_pinout.png|500px|center|thumb|Module pin-out]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each module can access to a 5V and 12V power supply generated from the power board, and a 3.3V logic supply generated by the daughter board.&lt;br /&gt;
It also has the possibility to use the CAN bus or an UART from the PIC32MX.&lt;br /&gt;
&lt;br /&gt;
Three of six modules have 8 GPIO each directly mapped to the Armadeus board’s FPGA, and the 3 others have these available GPIO linked to the PIC32MX microcontroller’s ports.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Program=====&lt;br /&gt;
&lt;br /&gt;
======PIC32MX======&lt;br /&gt;
&lt;br /&gt;
At this stage of the project, there is no module which has been realized, so the only program running on the PIC32MX is blinking led code.&lt;br /&gt;
This one has been developed in order to test if microcontroller was working, according to the configuration bits.&lt;br /&gt;
This test has been successful, now need to be debugged the UART and the CAN bus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
======PIC12F======&lt;br /&gt;
&lt;br /&gt;
For the PIC12F which control the fan, the program is very simple, there is a main loop in which the ADC is read, and this value determines the PWM duty cycle.&lt;br /&gt;
The relation between the temperature and the duty cycle value is shown in the figure below , where three phases can be seen:&lt;br /&gt;
&lt;br /&gt;
*before 30°C, the fan is stopped.&lt;br /&gt;
*between 30°C and 60°C the speed of the fan is linearly increasing according the temperature. An initial offset is required to start the fan’s motor.&lt;br /&gt;
*after 60°C, the fan remains at 100% speed&lt;br /&gt;
   &lt;br /&gt;
[[Image:Elder_fan_characteristic.png|500px|center|thumb|Relation between the temperature and the fan’s PWM duty cycle]]&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
There is also a blinking LED, to be sure the microcontroller is correctly running.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Motor board ===&lt;br /&gt;
The role of this board is to provide a safe and reliable interface between the logic driver device and motors. It has to meet the motors requirement ([[MFA970D161]]). The diagram bellow shows motors board inputs/outputs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:elder_motor_board_diagram.png|600px|center|Motor board architecture]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== System design ====&lt;br /&gt;
&lt;br /&gt;
===== Isolated logic driver =====&lt;br /&gt;
The protection and voltage translation stage is done by using optocouplers. There are small devices that contain a diode and a photo-transistor. When the diode emits light, the photo-transistor becomes saturated and the logic level at its output is pulled high. Otherwise, the transistor is blocked and the logic level is low. The main advantage is to not have any electrical link between the input and the output. So if a short-circuit happens, the optocouplers might be destroyed but not the logic behind it.&lt;br /&gt;
The illustration bellow presents how optocouplers are polarized on the motor board. The reference used is [[FOD617]] from Fairchild semiconductor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:elder_motor_board_opto.png|300px|center|thumb|Motor board optocoupler isolation]]&lt;br /&gt;
&lt;br /&gt;
===== Power stage =====&lt;br /&gt;
The main devices that drive the motors are two full H-bridge drivers. These devices allow the motor to turn backward or forward at different speeds (controlled by using a&lt;br /&gt;
Pulse Width Modulation – PWM). The chosen devices are the [[LMD18200]] from National Semiconductor. They can drive 3A and have a current sensing output. Two capacitors are simply connected between outputs and boostraps pins, as shown on the figure below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:elder_motor_board_hbridge.png|300px|center|thumb|Motor board hbridge circuit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== VHDL Motion controller ===&lt;br /&gt;
The motion controller used is based on a VHDL design which is implemented in the FPGA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The very first stage of the motion control is to decode the signals provided by the incremental encoders and output Pulse Width Modulated signals to control the motors&lt;br /&gt;
speeds. This is done in VHDL and implemented in the APF27 FPGA (programmable logic device). Further features are then build upon this like speed computation, X/Y&lt;br /&gt;
localizer, PID controllers etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In order to communicate properly with the CPU, the I.MX bus has to be used.&lt;br /&gt;
Signals are first of all wrapped into wishbone signals. The hierarchical structure contains components who owe a specific address range. As the address bus is 10bits&lt;br /&gt;
wide, it has been chosen to use a maximum of 8 components with 128 registers each. The motion controller is a component (certainly the biggest!) but other components can be added (mezzanine control for instance). This principle of “virtual components” is fully detailed with a led and button example on the [http://www.armadeus.com/wiki/index.php?title=A_simple_design_with_Wishbone_bus Armadeus wiki page].&lt;br /&gt;
&lt;br /&gt;
[[Image:elder_vhdl_design_diagram.png|thumb|center|600px|VHDL Design architecture]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== System design ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Encoder subsystem =====&lt;br /&gt;
The aim of this subsystem is to give the encoder speed (a signed value on 16 bits), given the A and B signals. The system again, can be split into different functions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====== Digital filter ======&lt;br /&gt;
The first stage consists to filter the incoming signals. The filter should be able to remove noise peaks. Due to the physical aspects of the robot, the A and B signals cannot trigger faster than a specific rate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For instance, if the encoder wheel&#039;s size is d = 60mm, the maximum speed is V = 2m/s and the number of pulse per revolution is R = 1024, 1 revolution of the wheel corresponds to :&lt;br /&gt;
 Pi.d &amp;lt;=&amp;gt; R ticks&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So there are&lt;br /&gt;
 a = R / (Pi.d) ~ 5433 ticks/meter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now the robot moves at V m/s, there are Vt ticks per seconds:&lt;br /&gt;
 Vt = V.a ~ 10865 ticks/sec&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally, it corresponds to a minimum width of 46μs. The filter has to remove any spike smaller than that.&lt;br /&gt;
&lt;br /&gt;
The method used remains quite simple to implement and requires few logic elements. The filter uses a shift register, its input is fed by the actual signals (A, B).&lt;br /&gt;
The filtered output is stable (high or low) if all the register values are the same. Otherwise, the values remain unchanged. The sampling rate determines the filter latency and its capability to reject noise. For instance, in order to filter less than 46μs (approximated to 40μs) wide peaks, the sampling rate can be 250kHz (period = 5μs) and the filter 4bits wide.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====== Quadrature decoder ======&lt;br /&gt;
The second stage uses both input signals (A and B) to produce two outputs: &#039;&#039;&#039;COUNT&#039;&#039;&#039; and &#039;&#039;&#039;UP&#039;&#039;&#039;. COUNT is a counter output which triggers at each change (weather it is forward or backward). UP simply indicates if the rotation is clockwise or counter clockwise. This stage is achieved with a 4 states machine describe on the diagram bellow.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:elder_vhdl_quad_decoder.png|thumb|center|600px|Quadrature decoder state machine]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; width=&amp;quot;400px&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Combinatorial states of outputs truth table&lt;br /&gt;
! A !! B !! State !! COUNT !! UP&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 1 || X || S0 || 1 || 1&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
| X || 1 || S0 || 1 || 0&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
| X || 1 || S1 || 1 || 1&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0 || X || S1 || 1 || 0&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0 || X || S2 || 1 || 1&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
| X || 0 || S2 || 1 || 0&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
| X || 0 || S3 || 1 || 1&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 1 || X || S3 || 1 || 0&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
| X || X || SX || 0 || X&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== Speed counter ======&lt;br /&gt;
The output provided by the quadrature decoder can be directly connected to a counter. The increment/decrement input is UP and the clock rate is COUNT. In order to compute the speed, this counter is reset at a specific period. Thus, the value contained by the counter is directly the number of ticks between two resets, it&lt;br /&gt;
corresponds to a basic digital derivation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
However, this rate cannot be chosen randomly, it has to be in a certain range.&lt;br /&gt;
* If it&#039;s too slow, the speed value will be fed to the controller slowly and the physical motion between two computation might be important.&lt;br /&gt;
* If it&#039;s too quick, small variations may not be detected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A common value of reset rate is around 100Hz. Thus, at the maximum speed, the speed counter contains around 109 ticks (maximum speed is around 10,865 ticks per second).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Left/Right to Alpha/Delta converter =====&lt;br /&gt;
The next stage is to convert these speeds into delta (linear translation) and alpha (orientation) values. The logical bloc uses signed values and compute the following formula:&lt;br /&gt;
 D = (L+R)/2&lt;br /&gt;
 A = R−L&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Alpha/Delta to X/Y/T and Cordic core =====&lt;br /&gt;
The last stage of the localizer is the bloc that compute actual positions in X/Y domain. In order to do that, it&#039;s needed to compute trigonometric operations, this is&lt;br /&gt;
enabled with the Cordic core (which is provided by Xilinx as a free IP).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
However there are few things to compute before, it&#039;s mainly about unit conversions.&lt;br /&gt;
The Cordic core needs radian value but the Left/Right to Alpha/Delta converter gives only a relative angle without any units.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The first thing to do is to compute the angle in radian, according to the following formula:&lt;br /&gt;
 A[rad] = A/I&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where A is the angle and I is the interaxial value (distance between the two wheels). A and I have to be in the same unit (ticks), so that the result is in radian.&lt;br /&gt;
This division is done by an hardware divider and the result is fed to the cordic core.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Cordic core gives the values of cos(A[rad]) and sin(A[rad]), the last stage is to multiply it by the linear speed Vn which is done by embedded multipliers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The entity also has to manage the different latency and insure signals integrity. A specific process fetches dX and dY only when the outputs are valid. The last thing to do is insure that angle values are bounded between -Pi and +Pi (chosen representation). This is basically done by an hardware modulo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== PWM Generator =====&lt;br /&gt;
This entity is used to produce a Pulse Width Modulation signal which control the motors speeds. This is simply done by a counter which compares the its value to the&lt;br /&gt;
desired speed and set the output to 0/1, whether the counter&#039;s value is above or below the threshold.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Some specific features have also been added, the PWM is actually signed and also delivers a direction output depending on the speed&#039;s sign. This output can be inverted&lt;br /&gt;
(using a XOR gate) with the inverted input. This input is useful because the motors are mounted “head to head” and opposite voltage need to be applied to make the robot goes straight.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Alpha/Delta to Left/Right converter =====&lt;br /&gt;
This entity is basically the opposite of the Left/Right to Alpha/Delta entity. It computes the following formula:&lt;br /&gt;
 R = D−A&lt;br /&gt;
 L = D+A&lt;br /&gt;
The outputs are fed to the PWM blocs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Error feeder =====&lt;br /&gt;
The error feeder is the link between the localization manager and the control manager. It uses orders (from the CPU) as reference, and computes the errors between those and the feedbacks. Outputs are positions and speeds in alpha/delta domain. These outputs are then used by the PID controllers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== PID Controllers =====&lt;br /&gt;
This is the heart of the controllers. A PID bloc is basically:&lt;br /&gt;
* 3 multipliers, between the error and associated gains (Kp, Ki, Kd)&lt;br /&gt;
* An accumulator (integral effect)&lt;br /&gt;
* A unitary delay with a subtracter (derivative effect)&lt;br /&gt;
* A three-inputs adder (output computing).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The resources needed can start to be important depending on the resolution. Internally, registers are 24 bits wide but only the 16 MSB can be retrieved by the CPU.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Main Software ===&lt;br /&gt;
&lt;br /&gt;
==== Specifications ====&lt;br /&gt;
This section describes the main software running on the APF27 board. It includes both low-level/drivers functions and high-level (like A.I.) routines. This also also one of the part which needs a lot of work and development is still in progress. That&#039;s why some high level functions haven&#039;t been written yet, focus on low level primitives and different drivers has been given.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The software is multithreading and has to deal with a lot of different components:&lt;br /&gt;
* Motion-controller low-level modules&lt;br /&gt;
* CAN bus managment&lt;br /&gt;
* GUI and user I/O managment&lt;br /&gt;
* High-level routines (path-finding, A.I.)&lt;br /&gt;
* Log manager&lt;br /&gt;
* Other features (e.g. beacons)&lt;br /&gt;
&lt;br /&gt;
==== Low-level software ====&lt;br /&gt;
The low-level software of the motion controller provides the link between higher software (A.I., obstacle avoidance etc.) and the FPGA registers themselves. The motion control is composed of 3 modules:&lt;br /&gt;
* FPGA module which is the proper driver to read/write values&lt;br /&gt;
* Motion Control driver, which computes the values that need to be written in the registers&lt;br /&gt;
* Trajectory Manager module, used to build paths that are then given to the motion control module. These paths need waypoints points (logical point where the robot has to go) which are fed by the higher levels (obstacle avoidance and pathfinder).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== FPGA module =====&lt;br /&gt;
The FPGA is mapped at a specific address and can be acceded like a memory. It&#039;s achieved by using pointers and the C code is relatively compact and an example is shown on the dedicated [http://www.armadeus.com/wiki/index.php?title=FPGA_register Armadeus wiki webpage].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Motion control module =====&lt;br /&gt;
This module is linked to the trajectory manager. The main function of the motion control module is moveFollowPath, which takes a path in parameter. This function write appropriate values in the FPGA registers in order to follow the computed path.&lt;br /&gt;
The written values take into account the possible drift of the robot and then correct it accordingly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Trajectory manager module =====&lt;br /&gt;
This is certainly the heavier module in terms of computation. This module provide different functions to compute a path, given a set of waypoints. The first and simpler “path rule” consist of two basic steps:&lt;br /&gt;
* Turn on place to align the robot on the next waypoint&lt;br /&gt;
* Go straight until the waypoint is reached&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When the last point is reached, the robot can turn on place a last time to be on a specific direction. It&#039;s easy to see that if there are N waypoints, the total number of points/moves will be &#039;&#039;&#039;2N-1&#039;&#039;&#039; (1 turn and 1 straight path per waypoint except for the 1st point). The function is called pathStraight() and takes two parameters: the waypoints array and its size. The returned path&#039;s points are allocated dynamically and then need to be free once the path is used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The second function is an enhancement of the previous one, instead of turning on place at each waypoint the robot can make a complex move (rotation+translation) in&lt;br /&gt;
order to “round” the corners. The function pathStraightRoundCorners() takes the same parameters as previously plus the corner size radius. The two points computed for the&lt;br /&gt;
same waypoints are now shifted from the corner size radius along the previous and next direction respectively, as shown on the illustration bellow.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:elder_software_round_corners.png|center|thumb|500px|Illustration of the &amp;quot;round corner&amp;quot; path generation]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== High-level software ====&lt;br /&gt;
The main program&#039;s goal is to manage all the different and individual modules.&lt;br /&gt;
There are many ways to do that, but the program runs on an Operating System so it&#039;s possible to use the POSIX multithreading features.&lt;br /&gt;
Each “manager” is considered as an independent thread and is launched by the main process. This project intended to work on three threads (but they are more than that):&lt;br /&gt;
* The strategy manager, which calls all the pathfinding and motion control algorithms, manage to send message when it&#039;s needed etc.&lt;br /&gt;
* The CAN manager, which is responsible for messages reception and take proper actions.&lt;br /&gt;
* The Log manager; a passive thread that simply store the robot&#039;s status in a logfile.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The figure bellow shows the different interconnections between software entities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:elder_software_architecture.png|center|thumb|500px|Software architecture]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Strategy manager =====&lt;br /&gt;
The strategy manager is the main thread of the program. It uses all the available functions provided by the artificial intelligence, path finder, trajectory generator, motion controller and can manager modules. It also uses the robot&#039;s status which is stored and manipulated with the context module.&lt;br /&gt;
The artificial intelligence uses a set a rules, determined at the beginning. These rules say, for instance, which action between two possibilities has the highest priority.&lt;br /&gt;
It provides primitives that actually call related function(s). For example &#039;&#039;&#039;“MOVE THE ARM”&#039;&#039;&#039; corresponds to send a message on the CAN bus where “MOVE THE ROBOT” corresponds to a complex cascading call of functions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== CAN manager =====&lt;br /&gt;
The CAN manager module provides the high level interface with the other robot&#039;s peripherals. The initialisation function open the device and create a socket, using the socketCAN module for linux.&lt;br /&gt;
The main thread keeps waiting for incoming messages. When something arrives, it&#039;s decoded and fetched. Then, the robot&#039;s status is updated if needed (for example, the position of a servomotor has changed).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The library used is the one developped by [[User:YoannC|Yoann Congal]] in 2008/2009 for the [http://clubrobotique.free.fr Robotnik Club (INSA of Rennes)].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Log manager =====&lt;br /&gt;
The log manager is surely the smallest thread but remains nonetheless important for debugging purposes.&lt;br /&gt;
The first thing done by the initialisation function is to create a new file with a timestamp in its name. The format is &#039;&#039;&#039;“elder_yyyy_mm_dd-hh_mm.log”&#039;&#039;&#039;. So that files are sorted by name from the oldest to the newest.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As long as the main program runs, the context is stored in this file periodically (the rate can be adjusted, 50ms is used which corresponds to 20 samples per seconds).&lt;br /&gt;
When the program ends, the close function is called. The logfile is then closed and copied with a different name: “last.log”. Then, in order to retrieve the log there is no need to know the exact name (extremely useful for automated tasks that can be scripted).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These logfiles are then used by a Gnuplot script. This script can be found on the SVN repository (&#039;&#039;&#039;svn-elder/projects/elder_sw/gnuplot/elder.gnu&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:gnuplot_example.png|thumb|center|800px|Gnuplot example of output]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Graphical User Interface =====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_onboard_gui.jpg|600px|right|alt=Onboard GUI]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The [[APF27]] board can be interfaced with graphical [[LCD]] display and its associated touch screen.&lt;br /&gt;
&lt;br /&gt;
During the matches, the robot has to be completely autonomous, without a computer plugged to it.&lt;br /&gt;
&lt;br /&gt;
A simple graphical user interface has been developed in order to be able to display any type of useful informations on the robot such as:&lt;br /&gt;
&lt;br /&gt;
* The battery level&lt;br /&gt;
* The time left during the matches&lt;br /&gt;
* The position of the robot on the game table&lt;br /&gt;
* The number of points the robot has scored&lt;br /&gt;
&lt;br /&gt;
On this screen, there is also a console to display miscellaneous messages.&lt;br /&gt;
&lt;br /&gt;
The touch screen allows the user to be interactive with the robot, to browse menu and ask the robot execute an action.&lt;br /&gt;
This can be useful just before the matches to check if everything works properly.&lt;br /&gt;
&lt;br /&gt;
The LCD is directly interfaced with the SDL library.&lt;br /&gt;
This library can be used in C language to develop multimedia application on various platforms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Remaining work ===&lt;br /&gt;
Regarding the diagram shown at the begining, some parts are still missing. The A.I. is quite a huge piece of work. During the 2010&#039;s contest, no A.I. was used due to a lack of time but only deterministic operations (pre-determined path following). Some changes will be also done because some specifications could have been better (often in a simpler way!).&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=File:Elder_logo.png&amp;diff=8377</id>
		<title>File:Elder logo.png</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=File:Elder_logo.png&amp;diff=8377"/>
		<updated>2010-06-30T10:23:03Z</updated>

		<summary type="html">&lt;p&gt;PaulM: uploaded a new version of &amp;quot;Image:Elder logo.png&amp;quot;: ELDER Project:
Logo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=File:Elder_logo.png&amp;diff=8376</id>
		<title>File:Elder logo.png</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=File:Elder_logo.png&amp;diff=8376"/>
		<updated>2010-06-30T10:16:18Z</updated>

		<summary type="html">&lt;p&gt;PaulM: uploaded a new version of &amp;quot;Image:Elder logo.png&amp;quot;: Reverted to version as of 10:11, 30 June 2010&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=File:Elder_logo.png&amp;diff=8375</id>
		<title>File:Elder logo.png</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=File:Elder_logo.png&amp;diff=8375"/>
		<updated>2010-06-30T10:15:22Z</updated>

		<summary type="html">&lt;p&gt;PaulM: uploaded a new version of &amp;quot;Image:Elder logo.png&amp;quot;: ELDER Project:
Logo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=File:Elder_robot.png&amp;diff=8374</id>
		<title>File:Elder robot.png</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=File:Elder_robot.png&amp;diff=8374"/>
		<updated>2010-06-30T10:11:40Z</updated>

		<summary type="html">&lt;p&gt;PaulM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=File:Elder_logo.png&amp;diff=8373</id>
		<title>File:Elder logo.png</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=File:Elder_logo.png&amp;diff=8373"/>
		<updated>2010-06-30T10:11:20Z</updated>

		<summary type="html">&lt;p&gt;PaulM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=File:Gnuplot_example.png&amp;diff=8368</id>
		<title>File:Gnuplot example.png</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=File:Gnuplot_example.png&amp;diff=8368"/>
		<updated>2010-06-30T09:54:44Z</updated>

		<summary type="html">&lt;p&gt;PaulM: ELDER Project:
Gnuplot output example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ELDER Project:&lt;br /&gt;
Gnuplot output example&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=File:Elder_software_architecture.png&amp;diff=8367</id>
		<title>File:Elder software architecture.png</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=File:Elder_software_architecture.png&amp;diff=8367"/>
		<updated>2010-06-30T09:49:38Z</updated>

		<summary type="html">&lt;p&gt;PaulM: ELDER Project:
Software architecture&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ELDER Project:&lt;br /&gt;
Software architecture&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=File:Elder_software_round_corners.png&amp;diff=8366</id>
		<title>File:Elder software round corners.png</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=File:Elder_software_round_corners.png&amp;diff=8366"/>
		<updated>2010-06-30T09:49:13Z</updated>

		<summary type="html">&lt;p&gt;PaulM: ELDER Project:
Software, round corner function&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ELDER Project:&lt;br /&gt;
Software, round corner function&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=File:Elder_vhdl_quad_decoder.png&amp;diff=8365</id>
		<title>File:Elder vhdl quad decoder.png</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=File:Elder_vhdl_quad_decoder.png&amp;diff=8365"/>
		<updated>2010-06-30T09:41:30Z</updated>

		<summary type="html">&lt;p&gt;PaulM: ELDER Project:
VHDL quadrature decoder&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ELDER Project:&lt;br /&gt;
VHDL quadrature decoder&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=File:Elder_vhdl_design_diagram.png&amp;diff=8364</id>
		<title>File:Elder vhdl design diagram.png</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=File:Elder_vhdl_design_diagram.png&amp;diff=8364"/>
		<updated>2010-06-30T09:41:03Z</updated>

		<summary type="html">&lt;p&gt;PaulM: ELDER Project:
VHDL Design diagram&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ELDER Project:&lt;br /&gt;
VHDL Design diagram&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=ELDER_Project&amp;diff=8363</id>
		<title>ELDER Project</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=ELDER_Project&amp;diff=8363"/>
		<updated>2010-06-30T09:37:23Z</updated>

		<summary type="html">&lt;p&gt;PaulM: Motor board section added&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project overview ==&lt;br /&gt;
ELDER (Embedded Linux Development for Robotics) Project is a robotic team which participated to the [http://www.planete-sciences.org/robot/index.php?section=pages&amp;amp;pageid=100 French robotic cup] in May 2010. The team used an Armadeus APF27 + APF27Dev boards. This involved to work on both hardware and software designs. One of the goal of this project is to evolve and some parts are still under development.&lt;br /&gt;
&lt;br /&gt;
The main features provided by the APF27 were:&lt;br /&gt;
* Robot location computation (X,Y,Orientation), done in hardware by the FPGA&lt;br /&gt;
* Robot motion control, done by the FPGA as well&lt;br /&gt;
* Multithreading program for high level implementations: path-finding, A.I., gui manager, CAN manager etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:elder_main-system.png|thumb|300px|center|ELDER&#039;s main system architecture]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Project members ===&lt;br /&gt;
This project is actually the work of two students in last year of their Master in Engineering at the [http://www.strath.ac.uk/eee/ University of Strathclyde].&lt;br /&gt;
* [[User:PaulM|PaulM]]&lt;br /&gt;
* Sebastien&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Files and links ===&lt;br /&gt;
In order to help the development of this project and the team&#039;s communication, a wiki and a subversion repository have been created. Links are bellow. &lt;br /&gt;
* [http://www.mp-net.fr/elder Wiki] &#039;&#039;Note that the wiki might be updated during the next days&#039;&#039;.&lt;br /&gt;
* [http://www.mp-net.fr/elder/svn SVN repository]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes about the Subversion repository&#039;&#039;&#039;&lt;br /&gt;
* The actual FPGA firmware files are located at &amp;quot;svn-elder/projects/fpga_fw&amp;quot;&lt;br /&gt;
* The actual software files are located at &amp;quot;svn-elder/projects/elder_sw/armadeus&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Students project reports ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PaulM&#039;&#039;&#039;: Motion control, Beacon positioning system, High level software, Motor board: [http://syoctax.free.fr/Elder/Elder_report_paul.pdf PDF]&lt;br /&gt;
* &#039;&#039;&#039;Sebastien&#039;&#039;&#039;: Mechanical design, Power Board, Daughter board, GUI: [http://syoctax.free.fr/Elder/Elder_report_seb.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Detailled informations ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Daughter board===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:elder_pic-daughterboard.png|thumb|600px|center|ELDER&#039;s main boards (APF27 connected to the daughter board)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Introduction====&lt;br /&gt;
&lt;br /&gt;
The aim of the daughter board is to interface the [[APF27]] board ( which is used for the intelligence and the motion control) with everything else on the robot such as sensors, actuators, servos, motors, etc...&lt;br /&gt;
Modules can also be plugged on it according to the robot needs and be interfaced with the Armadeus FPGA or the daughter board’s own microcontroller.&lt;br /&gt;
Therefore each year, small boards can be developed in line with the project theme and the chosen mechanical solutions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Requirements====&lt;br /&gt;
&lt;br /&gt;
The electrical and mechanical requirements are:&lt;br /&gt;
*100 x 160 mm board : the board has to be the same size as Armadeus board in order to be stacked over it.&lt;br /&gt;
*45 x 45 mm plug-in modules (up to 6 can be plugged) with on each:&lt;br /&gt;
**3.3V logic supply&lt;br /&gt;
**5V and 12V power supply&lt;br /&gt;
**CAN Bus&lt;br /&gt;
**UART (serial transmission)&lt;br /&gt;
**8 GPIO&lt;br /&gt;
*Encoders interface&lt;br /&gt;
*Motors interface (PWM and directions)&lt;br /&gt;
*Fan control&lt;br /&gt;
    &lt;br /&gt;
The daughter board is meant to become a ’mother board’ on which can run the motion control (PID) and the intelligence of the robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====System design====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_Daughter_board_sch.png|600px|center|Daughter board system description]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Microcontroller=====&lt;br /&gt;
&lt;br /&gt;
The choice of the microcontroller was based on the requirements, and first an MSP430 from Texas Instrument was chosen.&lt;br /&gt;
But after two weeks of trying to make a programmer for this type of microcontroller without success, a PIC32MX has finally been selected instead.&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_daughter_board_mic.png|600px|center|thumb|Daughter board main microcontroller, with its associated components]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The PIC32 is a 32 bits microcontroller architecture family from Microchip, and the PIC32MX575F512H has the following features:&lt;br /&gt;
*Max Speed: 80 Mhz&lt;br /&gt;
*10-bits ADC 16 channels&lt;br /&gt;
*5 PWM outputs&lt;br /&gt;
*5 timers&lt;br /&gt;
*53 I/O pins&lt;br /&gt;
*6 UARTS&lt;br /&gt;
&lt;br /&gt;
All this features were enough to fit to the requirements, moreover, this chip could be acquired for free, with the Microchip free samples process.&lt;br /&gt;
&lt;br /&gt;
Note that the microcontroller is also interfaced with the CAN bus, and the implementation is the same as described before for the power board.&lt;br /&gt;
A LED has been putted on a free pin at the end, which is useful to debug or to make the first ’led blinking test’ for example.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Fan control=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_fan_control.png|300px|center|thumb|Fan control circuit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The [[Armadeus]] board, daughter board, power board and plug-in modules are all mounted in a same box.&lt;br /&gt;
This configuration generate heat which has to be cooled by a fan in order to have correct performances.&lt;br /&gt;
&lt;br /&gt;
A small dedicated microcontroller is used to realize this function, which again has been chosen from the Microchip manufacturer.&lt;br /&gt;
It is a PIC12F683 which is small (8 pins), has got an ADC for the temperature reading and a PWM output for the fan speed setting.&lt;br /&gt;
&lt;br /&gt;
The fan is driven by a MOSFET which is triggered by the PWM, and gives the possibility to apply a 12V supply voltage directly on it.&lt;br /&gt;
&lt;br /&gt;
A freewheeling diode is also putted between the fan’s terminals, in order to protect it from being damaged by instant high voltages generated by the inductive property of the motor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Encoders interface=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_encoders_sch.png|500px|center|thumb|Encoders interface circuit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The encoders are used to measure accurately the distance traveled by the robot, it gives 1024 ’ticks’ for each wheel revolution.&lt;br /&gt;
These ticks are transmitted via two channels A and B, which both are differential outputs of the encoder.&lt;br /&gt;
&lt;br /&gt;
In order to treat these signals, AM26LV32 differential line receiver are used. This kind of chip can be supplied with only 3.3V however it accepts 5V inputs, which is the minimum supply level for the encoders.&lt;br /&gt;
&lt;br /&gt;
As a result, it plays a double role as converting the differential input in a single output, and as converting a 5V input to a 3.3V output which is acceptable for the FPGA or the microcontroller.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Modules sockets=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_module_pinout.png|500px|center|thumb|Module pin-out]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each module can access to a 5V and 12V power supply generated from the power board, and a 3.3V logic supply generated by the daughter board.&lt;br /&gt;
It also has the possibility to use the CAN bus or an UART from the PIC32MX.&lt;br /&gt;
&lt;br /&gt;
Three of six modules have 8 GPIO each directly mapped to the Armadeus board’s FPGA, and the 3 others have these available GPIO linked to the PIC32MX microcontroller’s ports.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Program=====&lt;br /&gt;
&lt;br /&gt;
======PIC32MX======&lt;br /&gt;
&lt;br /&gt;
At this stage of the project, there is no module which has been realized, so the only program running on the PIC32MX is blinking led code.&lt;br /&gt;
This one has been developed in order to test if microcontroller was working, according to the configuration bits.&lt;br /&gt;
This test has been successful, now need to be debugged the UART and the CAN bus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
======PIC12F======&lt;br /&gt;
&lt;br /&gt;
For the PIC12F which control the fan, the program is very simple, there is a main loop in which the ADC is read, and this value determines the PWM duty cycle.&lt;br /&gt;
The relation between the temperature and the duty cycle value is shown in the figure below , where three phases can be seen:&lt;br /&gt;
&lt;br /&gt;
*before 30°C, the fan is stopped.&lt;br /&gt;
*between 30°C and 60°C the speed of the fan is linearly increasing according the temperature. An initial offset is required to start the fan’s motor.&lt;br /&gt;
*after 60°C, the fan remains at 100% speed&lt;br /&gt;
   &lt;br /&gt;
[[Image:Elder_fan_characteristic.png|500px|center|thumb|Relation between the temperature and the fan’s PWM duty cycle]]&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
There is also a blinking LED, to be sure the microcontroller is correctly running.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Motor board ===&lt;br /&gt;
The role of this board is to provide a safe and reliable interface between the logic driver device and motors. It has to meet the motors requirement ([[MFA970D161]]). The diagram bellow shows motors board inputs/outputs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:elder_motor_board_diagram.png|600px|center|Motor board architecture]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== System design ====&lt;br /&gt;
&lt;br /&gt;
===== Isolated logic driver =====&lt;br /&gt;
The protection and voltage translation stage is done by using optocouplers. There are small devices that contain a diode and a photo-transistor. When the diode emits light, the photo-transistor becomes saturated and the logic level at its output is pulled high. Otherwise, the transistor is blocked and the logic level is low. The main advantage is to not have any electrical link between the input and the output. So if a short-circuit happens, the optocouplers might be destroyed but not the logic behind it.&lt;br /&gt;
The illustration bellow presents how optocouplers are polarized on the motor board. The reference used is [[FOD617]] from Fairchild semiconductor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:elder_motor_board_opto.png|300px|center|thumb|Motor board optocoupler isolation]]&lt;br /&gt;
&lt;br /&gt;
===== Power stage =====&lt;br /&gt;
The main devices that drive the motors are two full H-bridge drivers. These devices allow the motor to turn backward or forward at different speeds (controlled by using a&lt;br /&gt;
Pulse Width Modulation – PWM). The chosen devices are the [[LMD18200]] from National Semiconductor. They can drive 3A and have a current sensing output. Two capacitors are simply connected between outputs and boostraps pins, as shown on the figure below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:elder_motor_board_hbridge.png|300px|center|thumb|Motor board hbridge circuit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Onboard GUI ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_onboard_gui.jpg|800px|right|alt=Onboard GUI]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The [[APF27]] board can be interfaced with graphical [[LCD]] display and its associated touch screen.&lt;br /&gt;
&lt;br /&gt;
During the matches, the robot has to be completely autonomous, without a computer plugged to it.&lt;br /&gt;
&lt;br /&gt;
A simple graphical user interface has been developed in order to be able to display any type of useful informations on the robot such as:&lt;br /&gt;
&lt;br /&gt;
*The battery level&lt;br /&gt;
*The time left during the matches&lt;br /&gt;
*The position of the robot on the game table&lt;br /&gt;
*The number of points the robot has scored&lt;br /&gt;
&lt;br /&gt;
On this screen, there is also a console to display miscellaneous messages.&lt;br /&gt;
&lt;br /&gt;
The touch screen allows the user to be interactive with the robot, to browse menu and ask the robot execute an action.&lt;br /&gt;
This can be useful just before the matches to check if everything works properly.&lt;br /&gt;
&lt;br /&gt;
The LCD is directly interfaced with the SDL library.&lt;br /&gt;
This library can be used in C language to develop multimedia application on various platforms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More information comming soon&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=File:Elder_motor_board_hbridge.png&amp;diff=8362</id>
		<title>File:Elder motor board hbridge.png</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=File:Elder_motor_board_hbridge.png&amp;diff=8362"/>
		<updated>2010-06-30T09:35:41Z</updated>

		<summary type="html">&lt;p&gt;PaulM: ELDER Project:
Motor board H bridge circuit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ELDER Project:&lt;br /&gt;
Motor board H bridge circuit&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=File:Elder_motor_board_opto.png&amp;diff=8361</id>
		<title>File:Elder motor board opto.png</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=File:Elder_motor_board_opto.png&amp;diff=8361"/>
		<updated>2010-06-30T09:35:15Z</updated>

		<summary type="html">&lt;p&gt;PaulM: ELDER Project:
Motor board optocoupler isolation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ELDER Project:&lt;br /&gt;
Motor board optocoupler isolation&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=File:Elder_motor_board_diagram.png&amp;diff=8360</id>
		<title>File:Elder motor board diagram.png</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=File:Elder_motor_board_diagram.png&amp;diff=8360"/>
		<updated>2010-06-30T09:34:02Z</updated>

		<summary type="html">&lt;p&gt;PaulM: ELDER Project:
Motor board diagram&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ELDER Project:&lt;br /&gt;
Motor board diagram&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=ELDER_Project&amp;diff=8358</id>
		<title>ELDER Project</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=ELDER_Project&amp;diff=8358"/>
		<updated>2010-06-29T13:47:36Z</updated>

		<summary type="html">&lt;p&gt;PaulM: /* Onboard GUI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project overview ==&lt;br /&gt;
ELDER (Embedded Linux Development for Robotics) Project is a robotic team which participated to the [http://www.planete-sciences.org/robot/index.php?section=pages&amp;amp;pageid=100 French robotic cup] in May 2010. The team used an Armadeus APF27 + APF27Dev boards. This involved to work on both hardware and software designs. One of the goal of this project is to evolve and some parts are still under development.&lt;br /&gt;
&lt;br /&gt;
The main features provided by the APF27 were:&lt;br /&gt;
* Robot location computation (X,Y,Orientation), done in hardware by the FPGA&lt;br /&gt;
* Robot motion control, done by the FPGA as well&lt;br /&gt;
* Multithreading program for high level implementations: path-finding, A.I., gui manager, CAN manager etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[Image:elder_main-system.png|thumb|300px|center|ELDER&#039;s main system architecture]]&lt;br /&gt;
| [[Image:elder_pic-daughterboard.png|thumb|300px|center|ELDER&#039;s main boards (APF27 connected to the daughter board)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Project members ===&lt;br /&gt;
This project is actually the work of two students in last year of their Master in Engineering at the [http://www.strath.ac.uk/eee/ University of Strathclyde].&lt;br /&gt;
* [[User:PaulM|PaulM]]&lt;br /&gt;
* Sebastien&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
In order to help the development of this project and the team&#039;s communication, a wiki and a subversion repository have been created. Links are bellow. &lt;br /&gt;
* [http://www.mp-net.fr/elder Wiki] &#039;&#039;Note that the wiki might be updated during the next days&#039;&#039;.&lt;br /&gt;
* [http://www.mp-net.fr/elder/svn SVN repository]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes about the Subversion repository&#039;&#039;&#039;&lt;br /&gt;
* The actual FPGA firmware files are located at &amp;quot;svn-elder/projects/fpga_fw&amp;quot;&lt;br /&gt;
* The actual software files are located at &amp;quot;svn-elder/projects/elder_sw/armadeus&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Students project reports&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PaulM&#039;&#039;&#039;: Motion control, Beacon positioning system, High level software, Motor board: [http://syoctax.free.fr/Elder/Elder_report_paul.pdf PDF]&lt;br /&gt;
* &#039;&#039;&#039;Sebastien&#039;&#039;&#039;: Mechanical design, Power Board, Daughter board, GUI: [http://syoctax.free.fr/Elder/Elder_report_seb.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
== Detailled informations ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Daughter board===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:elder_pic-daughterboard.png|600px|right|alt=daughter board]]&lt;br /&gt;
&lt;br /&gt;
====Introduction====&lt;br /&gt;
&lt;br /&gt;
The aim of the daughter board is to interface the [[APF27]] board ( which is used for the intelligence and the motion control) with everything else on the robot such as sensors, actuators, servos, motors, etc...&lt;br /&gt;
Modules can also be plugged on it according to the robot needs and be interfaced with the Armadeus FPGA or the daughter board’s own microcontroller.&lt;br /&gt;
Therefore each year, small boards can be developed in line with the project theme and the chosen mechanical solutions.&lt;br /&gt;
&lt;br /&gt;
====Requirements====&lt;br /&gt;
&lt;br /&gt;
The electrical and mechanical requirements are:&lt;br /&gt;
*100 x 160 mm board : the board has to be the same size as Armadeus board in order to be stacked over it.&lt;br /&gt;
*45 x 45 mm plug-in modules (up to 6 can be plugged) with on each:&lt;br /&gt;
**3.3V logic supply&lt;br /&gt;
**5V and 12V power supply&lt;br /&gt;
**CAN Bus&lt;br /&gt;
**UART (serial transmission)&lt;br /&gt;
**8 GPIO&lt;br /&gt;
*Encoders interface&lt;br /&gt;
*Motors interface (PWM and directions)&lt;br /&gt;
*Fan control&lt;br /&gt;
    &lt;br /&gt;
The daughter board is meant to become a ’mother board’ on which can run the motion control (PID) and the intelligence of the robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====System design====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_Daughter_board_sch.png|600px|center|alt= Elder project: Daughter board system description]]&lt;br /&gt;
&lt;br /&gt;
=====Microcontroller=====&lt;br /&gt;
&lt;br /&gt;
The choice of the microcontroller was based on the requirements, and first an MSP430 from Texas Instrument was chosen.&lt;br /&gt;
But after two weeks of trying to make a programmer for this type of microcontroller without success, a PIC32MX has finally been selected instead.&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_daughter_board_mic.png|600px|center|alt=Daughter board main microcontroller, with its associated components]]&lt;br /&gt;
&lt;br /&gt;
The PIC32 is a 32 bits microcontroller architecture family from Microchip, and the PIC32MX575F512H has the following features:&lt;br /&gt;
*Max Speed: 80 Mhz&lt;br /&gt;
*10-bits ADC 16 channels&lt;br /&gt;
*5 PWM outputs&lt;br /&gt;
*5 timers&lt;br /&gt;
*53 I/O pins&lt;br /&gt;
*6 UARTS&lt;br /&gt;
&lt;br /&gt;
All this features were enough to fit to the requirements, moreover, this chip could be acquired for free, with the Microchip free samples process.&lt;br /&gt;
&lt;br /&gt;
Note that the microcontroller is also interfaced with the CAN bus, and the implementation is the same as described before for the power board.&lt;br /&gt;
A LED has been putted on a free pin at the end, which is useful to debug or to make the first ’led blinking test’ for example.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Fan control=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_fan_control.png|300px|center|alt=Fan control circuit]]&lt;br /&gt;
&lt;br /&gt;
The [[Armadeus]] board, daughter board, power board and plug-in modules are all mounted in a same box.&lt;br /&gt;
This configuration generate heat which has to be cooled by a fan in order to have correct performances.&lt;br /&gt;
&lt;br /&gt;
A small dedicated microcontroller is used to realize this function, which again has been chosen from the Microchip manufacturer.&lt;br /&gt;
It is a PIC12F683 which is small (8 pins), has got an ADC for the temperature reading and a PWM output for the fan speed setting.&lt;br /&gt;
&lt;br /&gt;
The fan is driven by a MOSFET which is triggered by the PWM, and gives the possibility to apply a 12V supply voltage directly on it.&lt;br /&gt;
&lt;br /&gt;
A freewheeling diode is also putted between the fan’s terminals, in order to protect it from being damaged by instant high voltages generated by the inductive property of the motor.&lt;br /&gt;
&lt;br /&gt;
=====Encoders interface=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_encoders_sch.png|500px|center|alt=Encoders interface circuit]]&lt;br /&gt;
&lt;br /&gt;
The encoders are used to measure accurately the distance traveled by the robot, it gives 1024 ’ticks’ for each wheel revolution.&lt;br /&gt;
These ticks are transmitted via two channels A and B, which both are differential outputs of the encoder.&lt;br /&gt;
&lt;br /&gt;
In order to treat these signals, AM26LV32 differential line receiver are used. This kind of chip can be supplied with only 3.3V however it accepts 5V inputs, which is the minimum supply level for the encoders.&lt;br /&gt;
&lt;br /&gt;
As a result, it plays a double role as converting the differential input in a single output, and as converting a 5V input to a 3.3V output which is acceptable for the FPGA or the microcontroller.&lt;br /&gt;
&lt;br /&gt;
=====Modules sockets=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_module_pinout.png|500px|center|alt=Module pin-out]]&lt;br /&gt;
&lt;br /&gt;
Each module can access to a 5V and 12V power supply generated from the power board, and a 3.3V logic supply generated by the daughter board.&lt;br /&gt;
It also has the possibility to use the CAN bus or an UART from the PIC32MX.&lt;br /&gt;
&lt;br /&gt;
Three of six modules have 8 GPIO each directly mapped to the Armadeus board’s FPGA, and the 3 others have these available GPIO linked to the PIC32MX microcontroller’s ports.&lt;br /&gt;
&lt;br /&gt;
=====Program=====&lt;br /&gt;
&lt;br /&gt;
======PIC32MX======&lt;br /&gt;
&lt;br /&gt;
At this stage of the project, there is no module which has been realized, so the only program running on the PIC32MX is blinking led code.&lt;br /&gt;
This one has been developed in order to test if microcontroller was working, according to the configuration bits.&lt;br /&gt;
This test has been successful, now need to be debugged the UART and the CAN bus.&lt;br /&gt;
&lt;br /&gt;
======PIC12F======&lt;br /&gt;
&lt;br /&gt;
For the PIC12F which control the fan, the program is very simple, there is a main loop in which the ADC is read, and this value determines the PWM duty cycle.&lt;br /&gt;
The relation between the temperature and the duty cycle value is shown in the figure below , where three phases can be seen:&lt;br /&gt;
&lt;br /&gt;
*before 30°C, the fan is stopped.&lt;br /&gt;
*between 30°C and 60°C the speed of the fan is linearly increasing according the temperature. An initial offset is required to start the fan’s motor.&lt;br /&gt;
*after 60°C, the fan remains at 100% speed&lt;br /&gt;
   &lt;br /&gt;
[[Image:Elder_fan_characteristic.png|500px|center|alt=Relation between the temperature and the fan’s PWM duty cycle]]&lt;br /&gt;
   &lt;br /&gt;
There is also a blinking LED, to be sure the microcontroller is correctly running.&lt;br /&gt;
&lt;br /&gt;
===Onboard GUI===&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_onboard_gui.jpg|800px|right|alt=Onboard GUI]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The [[APF27]] board can be interfaced with graphical [[LCD]] display and its associated touch screen.&lt;br /&gt;
&lt;br /&gt;
During the matches, the robot has to be completely autonomous, without a computer plugged to it.&lt;br /&gt;
&lt;br /&gt;
A simple graphical user interface has been developed in order to be able to display any type of useful informations on the robot such as:&lt;br /&gt;
&lt;br /&gt;
*The battery level&lt;br /&gt;
*The time left during the matches&lt;br /&gt;
*The position of the robot on the game table&lt;br /&gt;
*The number of points the robot has scored&lt;br /&gt;
&lt;br /&gt;
On this screen, there is also a console to display miscellaneous messages.&lt;br /&gt;
&lt;br /&gt;
The touch screen allows the user to be interactive with the robot, to browse menu and ask the robot execute an action.&lt;br /&gt;
This can be useful just before the matches to check if everything works properly.&lt;br /&gt;
&lt;br /&gt;
The LCD is directly interfaced with the SDL library.&lt;br /&gt;
This library can be used in C language to develop multimedia application on various platforms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More information comming soon&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=ELDER_Project&amp;diff=8357</id>
		<title>ELDER Project</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=ELDER_Project&amp;diff=8357"/>
		<updated>2010-06-29T11:29:07Z</updated>

		<summary type="html">&lt;p&gt;PaulM: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project overview ==&lt;br /&gt;
ELDER (Embedded Linux Development for Robotics) Project is a robotic team which participated to the [http://www.planete-sciences.org/robot/index.php?section=pages&amp;amp;pageid=100 French robotic cup] in May 2010. The team used an Armadeus APF27 + APF27Dev boards. This involved to work on both hardware and software designs. One of the goal of this project is to evolve and some parts are still under development.&lt;br /&gt;
&lt;br /&gt;
The main features provided by the APF27 were:&lt;br /&gt;
* Robot location computation (X,Y,Orientation), done in hardware by the FPGA&lt;br /&gt;
* Robot motion control, done by the FPGA as well&lt;br /&gt;
* Multithreading program for high level implementations: path-finding, A.I., gui manager, CAN manager etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[Image:elder_main-system.png|thumb|300px|center|ELDER&#039;s main system architecture]]&lt;br /&gt;
| [[Image:elder_pic-daughterboard.png|thumb|300px|center|ELDER&#039;s main boards (APF27 connected to the daughter board)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Project members ===&lt;br /&gt;
This project is actually the work of two students in last year of their Master in Engineering at the [http://www.strath.ac.uk/eee/ University of Strathclyde].&lt;br /&gt;
* [[User:PaulM|PaulM]]&lt;br /&gt;
* Sebastien&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
In order to help the development of this project and the team&#039;s communication, a wiki and a subversion repository have been created. Links are bellow. &lt;br /&gt;
* [http://www.mp-net.fr/elder Wiki] &#039;&#039;Note that the wiki might be updated during the next days&#039;&#039;.&lt;br /&gt;
* [http://www.mp-net.fr/elder/svn SVN repository]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes about the Subversion repository&#039;&#039;&#039;&lt;br /&gt;
* The actual FPGA firmware files are located at &amp;quot;svn-elder/projects/fpga_fw&amp;quot;&lt;br /&gt;
* The actual software files are located at &amp;quot;svn-elder/projects/elder_sw/armadeus&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Students project reports&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PaulM&#039;&#039;&#039;: Motion control, Beacon positioning system, High level software, Motor board: [http://syoctax.free.fr/Elder/Elder_report_paul.pdf PDF]&lt;br /&gt;
* &#039;&#039;&#039;Sebastien&#039;&#039;&#039;: Mechanical design, Power Board, Daughter board, GUI: [http://syoctax.free.fr/Elder/Elder_report_seb.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
== Detailled informations ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Daughter board===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:elder_pic-daughterboard.png|600px|right|alt=daughter board]]&lt;br /&gt;
&lt;br /&gt;
====Introduction====&lt;br /&gt;
&lt;br /&gt;
The aim of the daughter board is to interface the [[APF27]] board ( which is used for the intelligence and the motion control) with everything else on the robot such as sensors, actuators, servos, motors, etc...&lt;br /&gt;
Modules can also be plugged on it according to the robot needs and be interfaced with the Armadeus FPGA or the daughter board’s own microcontroller.&lt;br /&gt;
Therefore each year, small boards can be developed in line with the project theme and the chosen mechanical solutions.&lt;br /&gt;
&lt;br /&gt;
====Requirements====&lt;br /&gt;
&lt;br /&gt;
The electrical and mechanical requirements are:&lt;br /&gt;
*100 x 160 mm board : the board has to be the same size as Armadeus board in order to be stacked over it.&lt;br /&gt;
*45 x 45 mm plug-in modules (up to 6 can be plugged) with on each:&lt;br /&gt;
**3.3V logic supply&lt;br /&gt;
**5V and 12V power supply&lt;br /&gt;
**CAN Bus&lt;br /&gt;
**UART (serial transmission)&lt;br /&gt;
**8 GPIO&lt;br /&gt;
*Encoders interface&lt;br /&gt;
*Motors interface (PWM and directions)&lt;br /&gt;
*Fan control&lt;br /&gt;
    &lt;br /&gt;
The daughter board is meant to become a ’mother board’ on which can run the motion control (PID) and the intelligence of the robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====System design====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_Daughter_board_sch.png|600px|center|alt= Elder project: Daughter board system description]]&lt;br /&gt;
&lt;br /&gt;
=====Microcontroller=====&lt;br /&gt;
&lt;br /&gt;
The choice of the microcontroller was based on the requirements, and first an MSP430 from Texas Instrument was chosen.&lt;br /&gt;
But after two weeks of trying to make a programmer for this type of microcontroller without success, a PIC32MX has finally been selected instead.&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_daughter_board_mic.png|600px|center|alt=Daughter board main microcontroller, with its associated components]]&lt;br /&gt;
&lt;br /&gt;
The PIC32 is a 32 bits microcontroller architecture family from Microchip, and the PIC32MX575F512H has the following features:&lt;br /&gt;
*Max Speed: 80 Mhz&lt;br /&gt;
*10-bits ADC 16 channels&lt;br /&gt;
*5 PWM outputs&lt;br /&gt;
*5 timers&lt;br /&gt;
*53 I/O pins&lt;br /&gt;
*6 UARTS&lt;br /&gt;
&lt;br /&gt;
All this features were enough to fit to the requirements, moreover, this chip could be acquired for free, with the Microchip free samples process.&lt;br /&gt;
&lt;br /&gt;
Note that the microcontroller is also interfaced with the CAN bus, and the implementation is the same as described before for the power board.&lt;br /&gt;
A LED has been putted on a free pin at the end, which is useful to debug or to make the first ’led blinking test’ for example.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Fan control=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_fan_control.png|300px|center|alt=Fan control circuit]]&lt;br /&gt;
&lt;br /&gt;
The [[Armadeus]] board, daughter board, power board and plug-in modules are all mounted in a same box.&lt;br /&gt;
This configuration generate heat which has to be cooled by a fan in order to have correct performances.&lt;br /&gt;
&lt;br /&gt;
A small dedicated microcontroller is used to realize this function, which again has been chosen from the Microchip manufacturer.&lt;br /&gt;
It is a PIC12F683 which is small (8 pins), has got an ADC for the temperature reading and a PWM output for the fan speed setting.&lt;br /&gt;
&lt;br /&gt;
The fan is driven by a MOSFET which is triggered by the PWM, and gives the possibility to apply a 12V supply voltage directly on it.&lt;br /&gt;
&lt;br /&gt;
A freewheeling diode is also putted between the fan’s terminals, in order to protect it from being damaged by instant high voltages generated by the inductive property of the motor.&lt;br /&gt;
&lt;br /&gt;
=====Encoders interface=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_encoders_sch.png|500px|center|alt=Encoders interface circuit]]&lt;br /&gt;
&lt;br /&gt;
The encoders are used to measure accurately the distance traveled by the robot, it gives 1024 ’ticks’ for each wheel revolution.&lt;br /&gt;
These ticks are transmitted via two channels A and B, which both are differential outputs of the encoder.&lt;br /&gt;
&lt;br /&gt;
In order to treat these signals, AM26LV32 differential line receiver are used. This kind of chip can be supplied with only 3.3V however it accepts 5V inputs, which is the minimum supply level for the encoders.&lt;br /&gt;
&lt;br /&gt;
As a result, it plays a double role as converting the differential input in a single output, and as converting a 5V input to a 3.3V output which is acceptable for the FPGA or the microcontroller.&lt;br /&gt;
&lt;br /&gt;
=====Modules sockets=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_module_pinout.png|500px|center|alt=Module pin-out]]&lt;br /&gt;
&lt;br /&gt;
Each module can access to a 5V and 12V power supply generated from the power board, and a 3.3V logic supply generated by the daughter board.&lt;br /&gt;
It also has the possibility to use the CAN bus or an UART from the PIC32MX.&lt;br /&gt;
&lt;br /&gt;
Three of six modules have 8 GPIO each directly mapped to the Armadeus board’s FPGA, and the 3 others have these available GPIO linked to the PIC32MX microcontroller’s ports.&lt;br /&gt;
&lt;br /&gt;
=====Program=====&lt;br /&gt;
&lt;br /&gt;
======PIC32MX======&lt;br /&gt;
&lt;br /&gt;
At this stage of the project, there is no module which has been realized, so the only program running on the PIC32MX is blinking led code.&lt;br /&gt;
This one has been developed in order to test if microcontroller was working, according to the configuration bits.&lt;br /&gt;
This test has been successful, now need to be debugged the UART and the CAN bus.&lt;br /&gt;
&lt;br /&gt;
======PIC12F======&lt;br /&gt;
&lt;br /&gt;
For the PIC12F which control the fan, the program is very simple, there is a main loop in which the ADC is read, and this value determines the PWM duty cycle.&lt;br /&gt;
The relation between the temperature and the duty cycle value is shown in the figure below , where three phases can be seen:&lt;br /&gt;
&lt;br /&gt;
*before 30°C, the fan is stopped.&lt;br /&gt;
*between 30°C and 60°C the speed of the fan is linearly increasing according the temperature. An initial offset is required to start the fan’s motor.&lt;br /&gt;
*after 60°C, the fan remains at 100% speed&lt;br /&gt;
   &lt;br /&gt;
[[Image:Elder_fan_characteristic.png|500px|center|alt=Relation between the temperature and the fan’s PWM duty cycle]]&lt;br /&gt;
   &lt;br /&gt;
There is also a blinking LED, to be sure the microcontroller is correctly running.&lt;br /&gt;
&lt;br /&gt;
===Onboard GUI===&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_onboard_gui.jpg|800px|right|alt=Onboard GUI]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The [[APF27]] board can be interfaced with graphical [[LCD]] display and its associated touch screen.&lt;br /&gt;
&lt;br /&gt;
During the matches, the robot has to be completely autonomous, without a computer plugged to it.&lt;br /&gt;
&lt;br /&gt;
A simple graphical user interface has been developed in order to be able to display any type of useful information on the robot such as:&lt;br /&gt;
&lt;br /&gt;
*The battery level&lt;br /&gt;
*The time left during the matches&lt;br /&gt;
*The position of the robot on the game table&lt;br /&gt;
*The number of points the robot has scored&lt;br /&gt;
&lt;br /&gt;
On this screen, there is also a console to display miscellaneous messages.&lt;br /&gt;
&lt;br /&gt;
The touch screen allows the user to be interactive with the robot, to browse menu and ask the robot execute an action.&lt;br /&gt;
This can be useful just before the matches to check if everything works properly.&lt;br /&gt;
&lt;br /&gt;
The LCD is directly interfaced with the SDL library.&lt;br /&gt;
This library can be used in C language to develop multimedia application on various platforms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More information comming soon&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=ELDER_Project&amp;diff=8356</id>
		<title>ELDER Project</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=ELDER_Project&amp;diff=8356"/>
		<updated>2010-06-29T11:28:38Z</updated>

		<summary type="html">&lt;p&gt;PaulM: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project overview ==&lt;br /&gt;
ELDER (Embedded Linux Development for Robotics) Project is a robotic team which participated to the [http://www.planete-sciences.org/robot/index.php?section=pages&amp;amp;pageid=100 French robotic cup] in May 2010. The team used an Armadeus APF27 + APF27Dev boards. This involved to work on both hardware and software designs. One of the goal of this project is to evolve and some parts are still under development.&lt;br /&gt;
&lt;br /&gt;
The main features provided by the APF27 were:&lt;br /&gt;
* Robot location computation (X,Y,Orientation), done in hardware by the FPGA&lt;br /&gt;
* Robot motion control, done by the FPGA as well&lt;br /&gt;
* Multithreading program for high level implementations: path-finding, A.I., gui manager, CAN manager etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[Image:elder_main-system.png|thumb|300px|center|ELDER&#039;s main system architecture]]&lt;br /&gt;
| [[Image:elder_pic-daughterboard.png|thumb|300px|center|ELDER&#039;s main boards (APF27 connected to the daughter board)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Project members ===&lt;br /&gt;
This project is actually the work of two students in last year of their Master in Engineering at the [http://www.strath.ac.uk/eee/ University of Strathclyde].&lt;br /&gt;
* [[User:PaulM|PaulM]]&lt;br /&gt;
* Sebastien&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
In order to help the development of this project and the team&#039;s communication, a wiki and a subversion repository have been created. Links are bellow. &lt;br /&gt;
* [http://www.mp-net.fr/elder Wiki] &#039;&#039;Note that the wiki might be updated during the next days&#039;&#039;.&lt;br /&gt;
* [http://www.mp-net.fr/elder/svn SVN repository]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes about the Subversion repository&#039;&#039;&#039;&lt;br /&gt;
* The actual FPGA firmware files are located at &amp;quot;svn-elder/projects/fpga_fw&amp;quot;&lt;br /&gt;
* The actual software files are located at &amp;quot;svn-elder/projects/elder_sw/armadeus&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Students project reports&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PaulM&#039;&#039;&#039;: Motion control, Beacon positioning system, High level software, Motor board [http://syoctax.free.fr/Elder/Elder_report_paul.pdf PDF]&lt;br /&gt;
* &#039;&#039;&#039;Sebastien&#039;&#039;&#039;: Mechanical design, Power Board, Daughter board, GUI: [http://syoctax.free.fr/Elder/Elder_report_seb.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
== Detailled informations ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Daughter board===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:elder_pic-daughterboard.png|600px|right|alt=daughter board]]&lt;br /&gt;
&lt;br /&gt;
====Introduction====&lt;br /&gt;
&lt;br /&gt;
The aim of the daughter board is to interface the [[APF27]] board ( which is used for the intelligence and the motion control) with everything else on the robot such as sensors, actuators, servos, motors, etc...&lt;br /&gt;
Modules can also be plugged on it according to the robot needs and be interfaced with the Armadeus FPGA or the daughter board’s own microcontroller.&lt;br /&gt;
Therefore each year, small boards can be developed in line with the project theme and the chosen mechanical solutions.&lt;br /&gt;
&lt;br /&gt;
====Requirements====&lt;br /&gt;
&lt;br /&gt;
The electrical and mechanical requirements are:&lt;br /&gt;
*100 x 160 mm board : the board has to be the same size as Armadeus board in order to be stacked over it.&lt;br /&gt;
*45 x 45 mm plug-in modules (up to 6 can be plugged) with on each:&lt;br /&gt;
**3.3V logic supply&lt;br /&gt;
**5V and 12V power supply&lt;br /&gt;
**CAN Bus&lt;br /&gt;
**UART (serial transmission)&lt;br /&gt;
**8 GPIO&lt;br /&gt;
*Encoders interface&lt;br /&gt;
*Motors interface (PWM and directions)&lt;br /&gt;
*Fan control&lt;br /&gt;
    &lt;br /&gt;
The daughter board is meant to become a ’mother board’ on which can run the motion control (PID) and the intelligence of the robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====System design====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_Daughter_board_sch.png|600px|center|alt= Elder project: Daughter board system description]]&lt;br /&gt;
&lt;br /&gt;
=====Microcontroller=====&lt;br /&gt;
&lt;br /&gt;
The choice of the microcontroller was based on the requirements, and first an MSP430 from Texas Instrument was chosen.&lt;br /&gt;
But after two weeks of trying to make a programmer for this type of microcontroller without success, a PIC32MX has finally been selected instead.&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_daughter_board_mic.png|600px|center|alt=Daughter board main microcontroller, with its associated components]]&lt;br /&gt;
&lt;br /&gt;
The PIC32 is a 32 bits microcontroller architecture family from Microchip, and the PIC32MX575F512H has the following features:&lt;br /&gt;
*Max Speed: 80 Mhz&lt;br /&gt;
*10-bits ADC 16 channels&lt;br /&gt;
*5 PWM outputs&lt;br /&gt;
*5 timers&lt;br /&gt;
*53 I/O pins&lt;br /&gt;
*6 UARTS&lt;br /&gt;
&lt;br /&gt;
All this features were enough to fit to the requirements, moreover, this chip could be acquired for free, with the Microchip free samples process.&lt;br /&gt;
&lt;br /&gt;
Note that the microcontroller is also interfaced with the CAN bus, and the implementation is the same as described before for the power board.&lt;br /&gt;
A LED has been putted on a free pin at the end, which is useful to debug or to make the first ’led blinking test’ for example.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Fan control=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_fan_control.png|300px|center|alt=Fan control circuit]]&lt;br /&gt;
&lt;br /&gt;
The [[Armadeus]] board, daughter board, power board and plug-in modules are all mounted in a same box.&lt;br /&gt;
This configuration generate heat which has to be cooled by a fan in order to have correct performances.&lt;br /&gt;
&lt;br /&gt;
A small dedicated microcontroller is used to realize this function, which again has been chosen from the Microchip manufacturer.&lt;br /&gt;
It is a PIC12F683 which is small (8 pins), has got an ADC for the temperature reading and a PWM output for the fan speed setting.&lt;br /&gt;
&lt;br /&gt;
The fan is driven by a MOSFET which is triggered by the PWM, and gives the possibility to apply a 12V supply voltage directly on it.&lt;br /&gt;
&lt;br /&gt;
A freewheeling diode is also putted between the fan’s terminals, in order to protect it from being damaged by instant high voltages generated by the inductive property of the motor.&lt;br /&gt;
&lt;br /&gt;
=====Encoders interface=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_encoders_sch.png|500px|center|alt=Encoders interface circuit]]&lt;br /&gt;
&lt;br /&gt;
The encoders are used to measure accurately the distance traveled by the robot, it gives 1024 ’ticks’ for each wheel revolution.&lt;br /&gt;
These ticks are transmitted via two channels A and B, which both are differential outputs of the encoder.&lt;br /&gt;
&lt;br /&gt;
In order to treat these signals, AM26LV32 differential line receiver are used. This kind of chip can be supplied with only 3.3V however it accepts 5V inputs, which is the minimum supply level for the encoders.&lt;br /&gt;
&lt;br /&gt;
As a result, it plays a double role as converting the differential input in a single output, and as converting a 5V input to a 3.3V output which is acceptable for the FPGA or the microcontroller.&lt;br /&gt;
&lt;br /&gt;
=====Modules sockets=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_module_pinout.png|500px|center|alt=Module pin-out]]&lt;br /&gt;
&lt;br /&gt;
Each module can access to a 5V and 12V power supply generated from the power board, and a 3.3V logic supply generated by the daughter board.&lt;br /&gt;
It also has the possibility to use the CAN bus or an UART from the PIC32MX.&lt;br /&gt;
&lt;br /&gt;
Three of six modules have 8 GPIO each directly mapped to the Armadeus board’s FPGA, and the 3 others have these available GPIO linked to the PIC32MX microcontroller’s ports.&lt;br /&gt;
&lt;br /&gt;
=====Program=====&lt;br /&gt;
&lt;br /&gt;
======PIC32MX======&lt;br /&gt;
&lt;br /&gt;
At this stage of the project, there is no module which has been realized, so the only program running on the PIC32MX is blinking led code.&lt;br /&gt;
This one has been developed in order to test if microcontroller was working, according to the configuration bits.&lt;br /&gt;
This test has been successful, now need to be debugged the UART and the CAN bus.&lt;br /&gt;
&lt;br /&gt;
======PIC12F======&lt;br /&gt;
&lt;br /&gt;
For the PIC12F which control the fan, the program is very simple, there is a main loop in which the ADC is read, and this value determines the PWM duty cycle.&lt;br /&gt;
The relation between the temperature and the duty cycle value is shown in the figure below , where three phases can be seen:&lt;br /&gt;
&lt;br /&gt;
*before 30°C, the fan is stopped.&lt;br /&gt;
*between 30°C and 60°C the speed of the fan is linearly increasing according the temperature. An initial offset is required to start the fan’s motor.&lt;br /&gt;
*after 60°C, the fan remains at 100% speed&lt;br /&gt;
   &lt;br /&gt;
[[Image:Elder_fan_characteristic.png|500px|center|alt=Relation between the temperature and the fan’s PWM duty cycle]]&lt;br /&gt;
   &lt;br /&gt;
There is also a blinking LED, to be sure the microcontroller is correctly running.&lt;br /&gt;
&lt;br /&gt;
===Onboard GUI===&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_onboard_gui.jpg|800px|right|alt=Onboard GUI]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The [[APF27]] board can be interfaced with graphical [[LCD]] display and its associated touch screen.&lt;br /&gt;
&lt;br /&gt;
During the matches, the robot has to be completely autonomous, without a computer plugged to it.&lt;br /&gt;
&lt;br /&gt;
A simple graphical user interface has been developed in order to be able to display any type of useful information on the robot such as:&lt;br /&gt;
&lt;br /&gt;
*The battery level&lt;br /&gt;
*The time left during the matches&lt;br /&gt;
*The position of the robot on the game table&lt;br /&gt;
*The number of points the robot has scored&lt;br /&gt;
&lt;br /&gt;
On this screen, there is also a console to display miscellaneous messages.&lt;br /&gt;
&lt;br /&gt;
The touch screen allows the user to be interactive with the robot, to browse menu and ask the robot execute an action.&lt;br /&gt;
This can be useful just before the matches to check if everything works properly.&lt;br /&gt;
&lt;br /&gt;
The LCD is directly interfaced with the SDL library.&lt;br /&gt;
This library can be used in C language to develop multimedia application on various platforms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More information comming soon&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=ELDER_Project&amp;diff=8355</id>
		<title>ELDER Project</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=ELDER_Project&amp;diff=8355"/>
		<updated>2010-06-29T10:20:29Z</updated>

		<summary type="html">&lt;p&gt;PaulM: /* Detailled informations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project overview ==&lt;br /&gt;
ELDER (Embedded Linux Development for Robotics) Project is a robotic team which participated to the [http://www.planete-sciences.org/robot/index.php?section=pages&amp;amp;pageid=100 French robotic cup] in May 2010. The team used an Armadeus APF27 + APF27Dev boards. This involved to work on both hardware and software designs. One of the goal of this project is to evolve and some parts are still under development.&lt;br /&gt;
&lt;br /&gt;
The main features provided by the APF27 were:&lt;br /&gt;
* Robot location computation (X,Y,Orientation), done in hardware by the FPGA&lt;br /&gt;
* Robot motion control, done by the FPGA as well&lt;br /&gt;
* Multithreading program for high level implementations: path-finding, A.I., gui manager, CAN manager etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[Image:elder_main-system.png|thumb|300px|center|ELDER&#039;s main system architecture]]&lt;br /&gt;
| [[Image:elder_pic-daughterboard.png|thumb|300px|center|ELDER&#039;s main boards (APF27 connected to the daughter board)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Project members ===&lt;br /&gt;
This project is actually the work of two students in last year of their Master in Engineering at the [http://www.strath.ac.uk/eee/ University of Strathclyde].&lt;br /&gt;
* [[User:PaulM|PaulM]]&lt;br /&gt;
* Sebastien&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
In order to help the development of this project and the team&#039;s communication, a wiki and a subversion repository have been created. Links are bellow. &lt;br /&gt;
* [http://www.mp-net.fr/elder Wiki] &#039;&#039;Note that the wiki might be updated during the next days&#039;&#039;.&lt;br /&gt;
* [http://www.mp-net.fr/elder/svn SVN repository]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes about the Subversion repository&#039;&#039;&#039;&lt;br /&gt;
* The actual FPGA firmware files are located at &amp;quot;svn-elder/projects/fpga_fw&amp;quot;&lt;br /&gt;
* The actual software files are located at &amp;quot;svn-elder/projects/elder_sw/armadeus&amp;quot;&lt;br /&gt;
* You can already have a look to the students project reports at &amp;quot;svn-elder/resources/classe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Detailled informations ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Daughter board===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:elder_pic-daughterboard.png|600px|right|alt=daughter board]]&lt;br /&gt;
&lt;br /&gt;
====Introduction====&lt;br /&gt;
&lt;br /&gt;
The aim of the daughter board is to interface the [[APF27]] board ( which is used for the intelligence and the motion control) with everything else on the robot such as sensors, actuators, servos, motors, etc...&lt;br /&gt;
Modules can also be plugged on it according to the robot needs and be interfaced with the Armadeus FPGA or the daughter board’s own microcontroller.&lt;br /&gt;
Therefore each year, small boards can be developed in line with the project theme and the chosen mechanical solutions.&lt;br /&gt;
&lt;br /&gt;
====Requirements====&lt;br /&gt;
&lt;br /&gt;
The electrical and mechanical requirements are:&lt;br /&gt;
*100 x 160 mm board : the board has to be the same size as Armadeus board in order to be stacked over it.&lt;br /&gt;
*45 x 45 mm plug-in modules (up to 6 can be plugged) with on each:&lt;br /&gt;
**3.3V logic supply&lt;br /&gt;
**5V and 12V power supply&lt;br /&gt;
**CAN Bus&lt;br /&gt;
**UART (serial transmission)&lt;br /&gt;
**8 GPIO&lt;br /&gt;
*Encoders interface&lt;br /&gt;
*Motors interface (PWM and directions)&lt;br /&gt;
*Fan control&lt;br /&gt;
    &lt;br /&gt;
The daughter board is meant to become a ’mother board’ on which can run the motion control (PID) and the intelligence of the robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====System design====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_Daughter_board_sch.png|600px|center|alt= Elder project: Daughter board system description]]&lt;br /&gt;
&lt;br /&gt;
=====Microcontroller=====&lt;br /&gt;
&lt;br /&gt;
The choice of the microcontroller was based on the requirements, and first an MSP430 from Texas Instrument was chosen.&lt;br /&gt;
But after two weeks of trying to make a programmer for this type of microcontroller without success, a PIC32MX has finally been selected instead.&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_daughter_board_mic.png|600px|center|alt=Daughter board main microcontroller, with its associated components]]&lt;br /&gt;
&lt;br /&gt;
The PIC32 is a 32 bits microcontroller architecture family from Microchip, and the PIC32MX575F512H has the following features:&lt;br /&gt;
*Max Speed: 80 Mhz&lt;br /&gt;
*10-bits ADC 16 channels&lt;br /&gt;
*5 PWM outputs&lt;br /&gt;
*5 timers&lt;br /&gt;
*53 I/O pins&lt;br /&gt;
*6 UARTS&lt;br /&gt;
&lt;br /&gt;
All this features were enough to fit to the requirements, moreover, this chip could be acquired for free, with the Microchip free samples process.&lt;br /&gt;
&lt;br /&gt;
Note that the microcontroller is also interfaced with the CAN bus, and the implementation is the same as described before for the power board.&lt;br /&gt;
A LED has been putted on a free pin at the end, which is useful to debug or to make the first ’led blinking test’ for example.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Fan control=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_fan_control.png|300px|center|alt=Fan control circuit]]&lt;br /&gt;
&lt;br /&gt;
The [[Armadeus]] board, daughter board, power board and plug-in modules are all mounted in a same box.&lt;br /&gt;
This configuration generate heat which has to be cooled by a fan in order to have correct performances.&lt;br /&gt;
&lt;br /&gt;
A small dedicated microcontroller is used to realize this function, which again has been chosen from the Microchip manufacturer.&lt;br /&gt;
It is a PIC12F683 which is small (8 pins), has got an ADC for the temperature reading and a PWM output for the fan speed setting.&lt;br /&gt;
&lt;br /&gt;
The fan is driven by a MOSFET which is triggered by the PWM, and gives the possibility to apply a 12V supply voltage directly on it.&lt;br /&gt;
&lt;br /&gt;
A freewheeling diode is also putted between the fan’s terminals, in order to protect it from being damaged by instant high voltages generated by the inductive property of the motor.&lt;br /&gt;
&lt;br /&gt;
=====Encoders interface=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_encoders_sch.png|500px|center|alt=Encoders interface circuit]]&lt;br /&gt;
&lt;br /&gt;
The encoders are used to measure accurately the distance traveled by the robot, it gives 1024 ’ticks’ for each wheel revolution.&lt;br /&gt;
These ticks are transmitted via two channels A and B, which both are differential outputs of the encoder.&lt;br /&gt;
&lt;br /&gt;
In order to treat these signals, AM26LV32 differential line receiver are used. This kind of chip can be supplied with only 3.3V however it accepts 5V inputs, which is the minimum supply level for the encoders.&lt;br /&gt;
&lt;br /&gt;
As a result, it plays a double role as converting the differential input in a single output, and as converting a 5V input to a 3.3V output which is acceptable for the FPGA or the microcontroller.&lt;br /&gt;
&lt;br /&gt;
=====Modules sockets=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_module_pinout.png|500px|center|alt=Module pin-out]]&lt;br /&gt;
&lt;br /&gt;
Each module can access to a 5V and 12V power supply generated from the power board, and a 3.3V logic supply generated by the daughter board.&lt;br /&gt;
It also has the possibility to use the CAN bus or an UART from the PIC32MX.&lt;br /&gt;
&lt;br /&gt;
Three of six modules have 8 GPIO each directly mapped to the Armadeus board’s FPGA, and the 3 others have these available GPIO linked to the PIC32MX microcontroller’s ports.&lt;br /&gt;
&lt;br /&gt;
=====Program=====&lt;br /&gt;
&lt;br /&gt;
======PIC32MX======&lt;br /&gt;
&lt;br /&gt;
At this stage of the project, there is no module which has been realized, so the only program running on the PIC32MX is blinking led code.&lt;br /&gt;
This one has been developed in order to test if microcontroller was working, according to the configuration bits.&lt;br /&gt;
This test has been successful, now need to be debugged the UART and the CAN bus.&lt;br /&gt;
&lt;br /&gt;
======PIC12F======&lt;br /&gt;
&lt;br /&gt;
For the PIC12F which control the fan, the program is very simple, there is a main loop in which the ADC is read, and this value determines the PWM duty cycle.&lt;br /&gt;
The relation between the temperature and the duty cycle value is shown in the figure below , where three phases can be seen:&lt;br /&gt;
&lt;br /&gt;
*before 30°C, the fan is stopped.&lt;br /&gt;
*between 30°C and 60°C the speed of the fan is linearly increasing according the temperature. An initial offset is required to start the fan’s motor.&lt;br /&gt;
*after 60°C, the fan remains at 100% speed&lt;br /&gt;
   &lt;br /&gt;
[[Image:Elder_fan_characteristic.png|500px|center|alt=Relation between the temperature and the fan’s PWM duty cycle]]&lt;br /&gt;
   &lt;br /&gt;
There is also a blinking LED, to be sure the microcontroller is correctly running.&lt;br /&gt;
&lt;br /&gt;
===Onboard GUI===&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_onboard_gui.jpg|800px|right|alt=Onboard GUI]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The [[APF27]] board can be interfaced with graphical [[LCD]] display and its associated touch screen.&lt;br /&gt;
&lt;br /&gt;
During the matches, the robot has to be completely autonomous, without a computer plugged to it.&lt;br /&gt;
&lt;br /&gt;
A simple graphical user interface has been developed in order to be able to display any type of useful information on the robot such as:&lt;br /&gt;
&lt;br /&gt;
*The battery level&lt;br /&gt;
*The time left during the matches&lt;br /&gt;
*The position of the robot on the game table&lt;br /&gt;
*The number of points the robot has scored&lt;br /&gt;
&lt;br /&gt;
On this screen, there is also a console to display miscellaneous messages.&lt;br /&gt;
&lt;br /&gt;
The touch screen allows the user to be interactive with the robot, to browse menu and ask the robot execute an action.&lt;br /&gt;
This can be useful just before the matches to check if everything works properly.&lt;br /&gt;
&lt;br /&gt;
The LCD is directly interfaced with the SDL library.&lt;br /&gt;
This library can be used in C language to develop multimedia application on various platforms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More information comming soon&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=File:Elder_onboard_gui.jpg&amp;diff=8354</id>
		<title>File:Elder onboard gui.jpg</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=File:Elder_onboard_gui.jpg&amp;diff=8354"/>
		<updated>2010-06-29T10:18:47Z</updated>

		<summary type="html">&lt;p&gt;PaulM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=ELDER_Project&amp;diff=8353</id>
		<title>ELDER Project</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=ELDER_Project&amp;diff=8353"/>
		<updated>2010-06-29T10:17:15Z</updated>

		<summary type="html">&lt;p&gt;PaulM: /* Detailled informations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project overview ==&lt;br /&gt;
ELDER (Embedded Linux Development for Robotics) Project is a robotic team which participated to the [http://www.planete-sciences.org/robot/index.php?section=pages&amp;amp;pageid=100 French robotic cup] in May 2010. The team used an Armadeus APF27 + APF27Dev boards. This involved to work on both hardware and software designs. One of the goal of this project is to evolve and some parts are still under development.&lt;br /&gt;
&lt;br /&gt;
The main features provided by the APF27 were:&lt;br /&gt;
* Robot location computation (X,Y,Orientation), done in hardware by the FPGA&lt;br /&gt;
* Robot motion control, done by the FPGA as well&lt;br /&gt;
* Multithreading program for high level implementations: path-finding, A.I., gui manager, CAN manager etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[Image:elder_main-system.png|thumb|300px|center|ELDER&#039;s main system architecture]]&lt;br /&gt;
| [[Image:elder_pic-daughterboard.png|thumb|300px|center|ELDER&#039;s main boards (APF27 connected to the daughter board)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Project members ===&lt;br /&gt;
This project is actually the work of two students in last year of their Master in Engineering at the [http://www.strath.ac.uk/eee/ University of Strathclyde].&lt;br /&gt;
* [[User:PaulM|PaulM]]&lt;br /&gt;
* Sebastien&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
In order to help the development of this project and the team&#039;s communication, a wiki and a subversion repository have been created. Links are bellow. &lt;br /&gt;
* [http://www.mp-net.fr/elder Wiki] &#039;&#039;Note that the wiki might be updated during the next days&#039;&#039;.&lt;br /&gt;
* [http://www.mp-net.fr/elder/svn SVN repository]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes about the Subversion repository&#039;&#039;&#039;&lt;br /&gt;
* The actual FPGA firmware files are located at &amp;quot;svn-elder/projects/fpga_fw&amp;quot;&lt;br /&gt;
* The actual software files are located at &amp;quot;svn-elder/projects/elder_sw/armadeus&amp;quot;&lt;br /&gt;
* You can already have a look to the students project reports at &amp;quot;svn-elder/resources/classe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Detailled informations ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Daughter board===&lt;br /&gt;
====Introduction====&lt;br /&gt;
&lt;br /&gt;
The aim of the daughter board is to interface the [[APF27]] board ( which is used for the intelligence and the motion control) with everything else on the robot such as sensors, actuators, servos, motors, etc...&lt;br /&gt;
Modules can also be plugged on it according to the robot needs and be interfaced with the Armadeus FPGA or the daughter board’s own microcontroller.&lt;br /&gt;
Therefore each year, small boards can be developed in line with the project theme and the chosen mechanical solutions.&lt;br /&gt;
&lt;br /&gt;
====Requirements====&lt;br /&gt;
&lt;br /&gt;
The electrical and mechanical requirements are:&lt;br /&gt;
*100 x 160 mm board : the board has to be the same size as Armadeus board in order to be stacked over it.&lt;br /&gt;
*45 x 45 mm plug-in modules (up to 6 can be plugged) with on each:&lt;br /&gt;
**3.3V logic supply&lt;br /&gt;
**5V and 12V power supply&lt;br /&gt;
**CAN Bus&lt;br /&gt;
**UART (serial transmission)&lt;br /&gt;
**8 GPIO&lt;br /&gt;
*Encoders interface&lt;br /&gt;
*Motors interface (PWM and directions)&lt;br /&gt;
*Fan control&lt;br /&gt;
    &lt;br /&gt;
The daughter board is meant to become a ’mother board’ on which can run the motion control (PID) and the intelligence of the robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====System design====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_Daughter_board_sch.png|600px|center|alt= Elder project: Daughter board system description]]&lt;br /&gt;
&lt;br /&gt;
=====Microcontroller=====&lt;br /&gt;
&lt;br /&gt;
The choice of the microcontroller was based on the requirements, and first an MSP430 from Texas Instrument was chosen.&lt;br /&gt;
But after two weeks of trying to make a programmer for this type of microcontroller without success, a PIC32MX has finally been selected instead.&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_daughter_board_mic.png|600px|center|alt=Daughter board main microcontroller, with its associated components]]&lt;br /&gt;
&lt;br /&gt;
The PIC32 is a 32 bits microcontroller architecture family from Microchip, and the PIC32MX575F512H has the following features:&lt;br /&gt;
*Max Speed: 80 Mhz&lt;br /&gt;
*10-bits ADC 16 channels&lt;br /&gt;
*5 PWM outputs&lt;br /&gt;
*5 timers&lt;br /&gt;
*53 I/O pins&lt;br /&gt;
*6 UARTS&lt;br /&gt;
&lt;br /&gt;
All this features were enough to fit to the requirements, moreover, this chip could be acquired for free, with the Microchip free samples process.&lt;br /&gt;
&lt;br /&gt;
Note that the microcontroller is also interfaced with the CAN bus, and the implementation is the same as described before for the power board.&lt;br /&gt;
A LED has been putted on a free pin at the end, which is useful to debug or to make the first ’led blinking test’ for example.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Fan control=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_fan_control.png|300px|center|alt=Fan control circuit]]&lt;br /&gt;
&lt;br /&gt;
The [[Armadeus]] board, daughter board, power board and plug-in modules are all mounted in a same box.&lt;br /&gt;
This configuration generate heat which has to be cooled by a fan in order to have correct performances.&lt;br /&gt;
&lt;br /&gt;
A small dedicated microcontroller is used to realize this function, which again has been chosen from the Microchip manufacturer.&lt;br /&gt;
It is a PIC12F683 which is small (8 pins), has got an ADC for the temperature reading and a PWM output for the fan speed setting.&lt;br /&gt;
&lt;br /&gt;
The fan is driven by a MOSFET which is triggered by the PWM, and gives the possibility to apply a 12V supply voltage directly on it.&lt;br /&gt;
&lt;br /&gt;
A freewheeling diode is also putted between the fan’s terminals, in order to protect it from being damaged by instant high voltages generated by the inductive property of the motor.&lt;br /&gt;
&lt;br /&gt;
=====Encoders interface=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_encoders_sch.png|500px|center|alt=Encoders interface circuit]]&lt;br /&gt;
&lt;br /&gt;
The encoders are used to measure accurately the distance traveled by the robot, it gives 1024 ’ticks’ for each wheel revolution.&lt;br /&gt;
These ticks are transmitted via two channels A and B, which both are differential outputs of the encoder.&lt;br /&gt;
&lt;br /&gt;
In order to treat these signals, AM26LV32 differential line receiver are used. This kind of chip can be supplied with only 3.3V however it accepts 5V inputs, which is the minimum supply level for the encoders.&lt;br /&gt;
&lt;br /&gt;
As a result, it plays a double role as converting the differential input in a single output, and as converting a 5V input to a 3.3V output which is acceptable for the FPGA or the microcontroller.&lt;br /&gt;
&lt;br /&gt;
=====Modules sockets=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_module_pinout.png|500px|center|alt=Module pin-out]]&lt;br /&gt;
&lt;br /&gt;
Each module can access to a 5V and 12V power supply generated from the power board, and a 3.3V logic supply generated by the daughter board.&lt;br /&gt;
It also has the possibility to use the CAN bus or an UART from the PIC32MX.&lt;br /&gt;
&lt;br /&gt;
Three of six modules have 8 GPIO each directly mapped to the Armadeus board’s FPGA, and the 3 others have these available GPIO linked to the PIC32MX microcontroller’s ports.&lt;br /&gt;
&lt;br /&gt;
=====Program=====&lt;br /&gt;
&lt;br /&gt;
======PIC32MX======&lt;br /&gt;
&lt;br /&gt;
At this stage of the project, there is no module which has been realized, so the only program running on the PIC32MX is blinking led code.&lt;br /&gt;
This one has been developed in order to test if microcontroller was working, according to the configuration bits.&lt;br /&gt;
This test has been successful, now need to be debugged the UART and the CAN bus.&lt;br /&gt;
&lt;br /&gt;
======PIC12F======&lt;br /&gt;
&lt;br /&gt;
For the PIC12F which control the fan, the program is very simple, there is a main loop in which the ADC is read, and this value determines the PWM duty cycle.&lt;br /&gt;
The relation between the temperature and the duty cycle value is shown in the figure below , where three phases can be seen:&lt;br /&gt;
&lt;br /&gt;
*before 30°C, the fan is stopped.&lt;br /&gt;
*between 30°C and 60°C the speed of the fan is linearly increasing according the temperature. An initial offset is required to start the fan’s motor.&lt;br /&gt;
*after 60°C, the fan remains at 100% speed&lt;br /&gt;
   &lt;br /&gt;
[[Image:Elder_fan_characteristic.png|500px|center|alt=Relation between the temperature and the fan’s PWM duty cycle]]&lt;br /&gt;
   &lt;br /&gt;
There is also a blinking LED, to be sure the microcontroller is correctly running.&lt;br /&gt;
&lt;br /&gt;
===Onboard GUI===&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_onboard_gui.jpg|800px|right|alt=Onboard GUI]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The [[APF27]] board can be interfaced with graphical [[LCD]] display and its associated touch screen.&lt;br /&gt;
&lt;br /&gt;
During the matches, the robot has to be completely autonomous, without a computer plugged to it.&lt;br /&gt;
&lt;br /&gt;
A simple graphical user interface has been developed in order to be able to display any type of useful information on the robot such as:&lt;br /&gt;
&lt;br /&gt;
*The battery level&lt;br /&gt;
*The time left during the matches&lt;br /&gt;
*The position of the robot on the game table&lt;br /&gt;
*The number of points the robot has scored&lt;br /&gt;
&lt;br /&gt;
On this screen, there is also a console to display miscellaneous messages.&lt;br /&gt;
&lt;br /&gt;
The touch screen allows the user to be interactive with the robot, to browse menu and ask the robot execute an action.&lt;br /&gt;
This can be useful just before the matches to check if everything works properly.&lt;br /&gt;
&lt;br /&gt;
The LCD is directly interfaced with the SDL library.&lt;br /&gt;
This library can be used in C language to develop multimedia application on various platforms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More information comming soon&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=File:Elder_fan_characteristic.png&amp;diff=8352</id>
		<title>File:Elder fan characteristic.png</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=File:Elder_fan_characteristic.png&amp;diff=8352"/>
		<updated>2010-06-29T10:13:03Z</updated>

		<summary type="html">&lt;p&gt;PaulM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=File:Elder_module_pinout.png&amp;diff=8351</id>
		<title>File:Elder module pinout.png</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=File:Elder_module_pinout.png&amp;diff=8351"/>
		<updated>2010-06-29T10:12:52Z</updated>

		<summary type="html">&lt;p&gt;PaulM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=File:Elder_encoders_sch.png&amp;diff=8350</id>
		<title>File:Elder encoders sch.png</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=File:Elder_encoders_sch.png&amp;diff=8350"/>
		<updated>2010-06-29T10:12:38Z</updated>

		<summary type="html">&lt;p&gt;PaulM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=File:Elder_fan_control.png&amp;diff=8349</id>
		<title>File:Elder fan control.png</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=File:Elder_fan_control.png&amp;diff=8349"/>
		<updated>2010-06-29T10:12:15Z</updated>

		<summary type="html">&lt;p&gt;PaulM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=File:Elder_daughter_board_mic.png&amp;diff=8348</id>
		<title>File:Elder daughter board mic.png</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=File:Elder_daughter_board_mic.png&amp;diff=8348"/>
		<updated>2010-06-29T10:12:01Z</updated>

		<summary type="html">&lt;p&gt;PaulM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=File:Elder_Daughter_board_sch.png&amp;diff=8347</id>
		<title>File:Elder Daughter board sch.png</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=File:Elder_Daughter_board_sch.png&amp;diff=8347"/>
		<updated>2010-06-29T10:11:29Z</updated>

		<summary type="html">&lt;p&gt;PaulM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=ELDER_Project&amp;diff=8346</id>
		<title>ELDER Project</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=ELDER_Project&amp;diff=8346"/>
		<updated>2010-06-29T10:08:15Z</updated>

		<summary type="html">&lt;p&gt;PaulM: /* Daughter board */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project overview ==&lt;br /&gt;
ELDER (Embedded Linux Development for Robotics) Project is a robotic team which participated to the [http://www.planete-sciences.org/robot/index.php?section=pages&amp;amp;pageid=100 French robotic cup] in May 2010. The team used an Armadeus APF27 + APF27Dev boards. This involved to work on both hardware and software designs. One of the goal of this project is to evolve and some parts are still under development.&lt;br /&gt;
&lt;br /&gt;
The main features provided by the APF27 were:&lt;br /&gt;
* Robot location computation (X,Y,Orientation), done in hardware by the FPGA&lt;br /&gt;
* Robot motion control, done by the FPGA as well&lt;br /&gt;
* Multithreading program for high level implementations: path-finding, A.I., gui manager, CAN manager etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[Image:elder_main-system.png|thumb|300px|center|ELDER&#039;s main system architecture]]&lt;br /&gt;
| [[Image:elder_pic-daughterboard.png|thumb|300px|center|ELDER&#039;s main boards (APF27 connected to the daughter board)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Project members ===&lt;br /&gt;
This project is actually the work of two students in last year of their Master in Engineering at the [http://www.strath.ac.uk/eee/ University of Strathclyde].&lt;br /&gt;
* [[User:PaulM|PaulM]]&lt;br /&gt;
* Sebastien&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
In order to help the development of this project and the team&#039;s communication, a wiki and a subversion repository have been created. Links are bellow. &lt;br /&gt;
* [http://www.mp-net.fr/elder Wiki] &#039;&#039;Note that the wiki might be updated during the next days&#039;&#039;.&lt;br /&gt;
* [http://www.mp-net.fr/elder/svn SVN repository]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes about the Subversion repository&#039;&#039;&#039;&lt;br /&gt;
* The actual FPGA firmware files are located at &amp;quot;svn-elder/projects/fpga_fw&amp;quot;&lt;br /&gt;
* The actual software files are located at &amp;quot;svn-elder/projects/elder_sw/armadeus&amp;quot;&lt;br /&gt;
* You can already have a look to the students project reports at &amp;quot;svn-elder/resources/classe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Detailled informations ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Daughter board===&lt;br /&gt;
====Introduction====&lt;br /&gt;
&lt;br /&gt;
The aim of the daughter board is to interface the [[APF27]] board ( which is used for the intelligence and the motion control) with everything else on the robot such as sensors, actuators, servos, motors, etc...&lt;br /&gt;
Modules can also be plugged on it according to the robot needs and be interfaced with the Armadeus FPGA or the daughter board’s own microcontroller.&lt;br /&gt;
Therefore each year, small boards can be developed in line with the project theme and the chosen mechanical solutions.&lt;br /&gt;
&lt;br /&gt;
====Requirements====&lt;br /&gt;
&lt;br /&gt;
The electrical and mechanical requirements are:&lt;br /&gt;
*100 x 160 mm board : the board has to be the same size as Armadeus board in order to be stacked over it.&lt;br /&gt;
*45 x 45 mm plug-in modules (up to 6 can be plugged) with on each:&lt;br /&gt;
**3.3V logic supply&lt;br /&gt;
**5V and 12V power supply&lt;br /&gt;
**CAN Bus&lt;br /&gt;
**UART (serial transmission)&lt;br /&gt;
**8 GPIO&lt;br /&gt;
*Encoders interface&lt;br /&gt;
*Motors interface (PWM and directions)&lt;br /&gt;
*Fan control&lt;br /&gt;
    &lt;br /&gt;
The daughter board is meant to become a ’mother board’ on which can run the motion control (PID) and the intelligence of the robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====System design====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_Daughter_board_sch.png|600px|center|alt= Elder project: Daughter board system description]]&lt;br /&gt;
&lt;br /&gt;
=====Microcontroller=====&lt;br /&gt;
&lt;br /&gt;
The choice of the microcontroller was based on the requirements, and first an MSP430 from Texas Instrument was chosen.&lt;br /&gt;
But after two weeks of trying to make a programmer for this type of microcontroller without success, a PIC32MX has finally been selected instead.&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_daughter_board_mic.png|600px|center|alt=Daughter board main microcontroller, with its associated components]]&lt;br /&gt;
&lt;br /&gt;
The PIC32 is a 32 bits microcontroller architecture family from Microchip, and the PIC32MX575F512H has the following features:&lt;br /&gt;
*Max Speed: 80 Mhz&lt;br /&gt;
*10-bits ADC 16 channels&lt;br /&gt;
*5 PWM outputs&lt;br /&gt;
*5 timers&lt;br /&gt;
*53 I/O pins&lt;br /&gt;
*6 UARTS&lt;br /&gt;
&lt;br /&gt;
All this features were enough to fit to the requirements, moreover, this chip could be acquired for free, with the Microchip free samples process.&lt;br /&gt;
&lt;br /&gt;
Note that the microcontroller is also interfaced with the CAN bus, and the implementation is the same as described before for the power board.&lt;br /&gt;
A LED has been putted on a free pin at the end, which is useful to debug or to make the first ’led blinking test’ for example.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Fan control=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_fan_control.png|300px|center|alt=Fan control circuit]]&lt;br /&gt;
&lt;br /&gt;
The [[Armadeus]] board, daughter board, power board and plug-in modules are all mounted in a same box.&lt;br /&gt;
This configuration generate heat which has to be cooled by a fan in order to have correct performances.&lt;br /&gt;
&lt;br /&gt;
A small dedicated microcontroller is used to realize this function, which again has been chosen from the Microchip manufacturer.&lt;br /&gt;
It is a PIC12F683 which is small (8 pins), has got an ADC for the temperature reading and a PWM output for the fan speed setting.&lt;br /&gt;
&lt;br /&gt;
The fan is driven by a MOSFET which is triggered by the PWM, and gives the possibility to apply a 12V supply voltage directly on it.&lt;br /&gt;
&lt;br /&gt;
A freewheeling diode is also putted between the fan’s terminals, in order to protect it from being damaged by instant high voltages generated by the inductive property of the motor.&lt;br /&gt;
&lt;br /&gt;
=====Encoders interface=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_encoders_sch.png|500px|center|alt=Encoders interface circuit]]&lt;br /&gt;
&lt;br /&gt;
The encoders are used to measure accurately the distance traveled by the robot, it gives 1024 ’ticks’ for each wheel revolution.&lt;br /&gt;
These ticks are transmitted via two channels A and B, which both are differential outputs of the encoder.&lt;br /&gt;
&lt;br /&gt;
In order to treat these signals, AM26LV32 differential line receiver are used. This kind of chip can be supplied with only 3.3V however it accepts 5V inputs, which is the minimum supply level for the encoders.&lt;br /&gt;
&lt;br /&gt;
As a result, it plays a double role as converting the differential input in a single output, and as converting a 5V input to a 3.3V output which is acceptable for the FPGA or the microcontroller.&lt;br /&gt;
&lt;br /&gt;
=====Modules sockets=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_module_pinout.png|500px|center|alt=Module pin-out]]&lt;br /&gt;
&lt;br /&gt;
Each module can access to a 5V and 12V power supply generated from the power board, and a 3.3V logic supply generated by the daughter board.&lt;br /&gt;
It also has the possibility to use the CAN bus or an UART from the PIC32MX.&lt;br /&gt;
&lt;br /&gt;
Three of six modules have 8 GPIO each directly mapped to the Armadeus board’s FPGA, and the 3 others have these available GPIO linked to the PIC32MX microcontroller’s ports.&lt;br /&gt;
&lt;br /&gt;
=====Program=====&lt;br /&gt;
&lt;br /&gt;
======PIC32MX======&lt;br /&gt;
&lt;br /&gt;
At this stage of the project, there is no module which has been realized, so the only program running on the PIC32MX is blinking led code.&lt;br /&gt;
This one has been developed in order to test if microcontroller was working, according to the configuration bits.&lt;br /&gt;
This test has been successful, now need to be debugged the UART and the CAN bus.&lt;br /&gt;
&lt;br /&gt;
======PIC12F======&lt;br /&gt;
&lt;br /&gt;
For the PIC12F which control the fan, the program is very simple, there is a main loop in which the ADC is read, and this value determines the PWM duty cycle.&lt;br /&gt;
The relation between the temperature and the duty cycle value is shown in the figure below , where three phases can be seen:&lt;br /&gt;
&lt;br /&gt;
*before 30°C, the fan is stopped.&lt;br /&gt;
*between 30°C and 60°C the speed of the fan is linearly increasing according the temperature. An initial offset is required to start the fan’s motor.&lt;br /&gt;
*after 60°C, the fan remains at 100% speed&lt;br /&gt;
   &lt;br /&gt;
[[Image:Elder_fan_characteristic.png|500px|center|alt=Relation between the temperature and the fan’s PWM duty cycle]]&lt;br /&gt;
   &lt;br /&gt;
There is also a blinking LED, to be sure the microcontroller is correctly running.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More information comming soon&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=ELDER_Project&amp;diff=8344</id>
		<title>ELDER Project</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=ELDER_Project&amp;diff=8344"/>
		<updated>2010-06-29T10:07:11Z</updated>

		<summary type="html">&lt;p&gt;PaulM: /* Detailled informations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project overview ==&lt;br /&gt;
ELDER (Embedded Linux Development for Robotics) Project is a robotic team which participated to the [http://www.planete-sciences.org/robot/index.php?section=pages&amp;amp;pageid=100 French robotic cup] in May 2010. The team used an Armadeus APF27 + APF27Dev boards. This involved to work on both hardware and software designs. One of the goal of this project is to evolve and some parts are still under development.&lt;br /&gt;
&lt;br /&gt;
The main features provided by the APF27 were:&lt;br /&gt;
* Robot location computation (X,Y,Orientation), done in hardware by the FPGA&lt;br /&gt;
* Robot motion control, done by the FPGA as well&lt;br /&gt;
* Multithreading program for high level implementations: path-finding, A.I., gui manager, CAN manager etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[Image:elder_main-system.png|thumb|300px|center|ELDER&#039;s main system architecture]]&lt;br /&gt;
| [[Image:elder_pic-daughterboard.png|thumb|300px|center|ELDER&#039;s main boards (APF27 connected to the daughter board)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Project members ===&lt;br /&gt;
This project is actually the work of two students in last year of their Master in Engineering at the [http://www.strath.ac.uk/eee/ University of Strathclyde].&lt;br /&gt;
* [[User:PaulM|PaulM]]&lt;br /&gt;
* Sebastien&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
In order to help the development of this project and the team&#039;s communication, a wiki and a subversion repository have been created. Links are bellow. &lt;br /&gt;
* [http://www.mp-net.fr/elder Wiki] &#039;&#039;Note that the wiki might be updated during the next days&#039;&#039;.&lt;br /&gt;
* [http://www.mp-net.fr/elder/svn SVN repository]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes about the Subversion repository&#039;&#039;&#039;&lt;br /&gt;
* The actual FPGA firmware files are located at &amp;quot;svn-elder/projects/fpga_fw&amp;quot;&lt;br /&gt;
* The actual software files are located at &amp;quot;svn-elder/projects/elder_sw/armadeus&amp;quot;&lt;br /&gt;
* You can already have a look to the students project reports at &amp;quot;svn-elder/resources/classe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Detailled informations ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Daughter board===&lt;br /&gt;
====Introduction====&lt;br /&gt;
&lt;br /&gt;
The aim of the daughter board is to interface the [[Armadeus]] board ( which is used for the intelligence and the motion control) with everything else on the robot such as sensors, actuators, servos, motors, etc...&lt;br /&gt;
Modules can also be plugged on it according to the robot needs and be interfaced with the Armadeus FPGA or the daughter board’s own microcontroller.&lt;br /&gt;
Therefore each year, small boards can be developed in line with the project theme and the chosen mechanical solutions.&lt;br /&gt;
&lt;br /&gt;
====Requirements====&lt;br /&gt;
&lt;br /&gt;
The electrical and mechanical requirements are:&lt;br /&gt;
*100 x 160 mm board : the board has to be the same size as Armadeus board in order to be stacked over it.&lt;br /&gt;
*45 x 45 mm plug-in modules (up to 6 can be plugged) with on each:&lt;br /&gt;
**3.3V logic supply&lt;br /&gt;
**5V and 12V power supply&lt;br /&gt;
**CAN Bus&lt;br /&gt;
**UART (serial transmission)&lt;br /&gt;
**8 GPIO&lt;br /&gt;
*Encoders interface&lt;br /&gt;
*Motors interface (PWM and directions)&lt;br /&gt;
*Fan control&lt;br /&gt;
    &lt;br /&gt;
The daughter board is meant to become a ’mother board’ on which can run the motion control (PID) and the intelligence of the robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====System design====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_Daughter_board_sch.png|600px|center|alt= Elder project: Daughter board system description]]&lt;br /&gt;
&lt;br /&gt;
=====Microcontroller=====&lt;br /&gt;
&lt;br /&gt;
The choice of the microcontroller was based on the requirements, and first an MSP430 from Texas Instrument was chosen.&lt;br /&gt;
But after two weeks of trying to make a programmer for this type of microcontroller without success, a PIC32MX has finally been selected instead.&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_daughter_board_mic.png|600px|center|alt=Daughter board main microcontroller, with its associated components]]&lt;br /&gt;
&lt;br /&gt;
The PIC32 is a 32 bits microcontroller architecture family from Microchip, and the PIC32MX575F512H has the following features:&lt;br /&gt;
*Max Speed: 80 Mhz&lt;br /&gt;
*10-bits ADC 16 channels&lt;br /&gt;
*5 PWM outputs&lt;br /&gt;
*5 timers&lt;br /&gt;
*53 I/O pins&lt;br /&gt;
*6 UARTS&lt;br /&gt;
&lt;br /&gt;
All this features were enough to fit to the requirements, moreover, this chip could be acquired for free, with the Microchip free samples process.&lt;br /&gt;
&lt;br /&gt;
Note that the microcontroller is also interfaced with the CAN bus, and the implementation is the same as described before for the power board.&lt;br /&gt;
A LED has been putted on a free pin at the end, which is useful to debug or to make the first ’led blinking test’ for example.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Fan control=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_fan_control.png|300px|center|alt=Fan control circuit]]&lt;br /&gt;
&lt;br /&gt;
The [[Armadeus]] board, daughter board, power board and plug-in modules are all mounted in a same box.&lt;br /&gt;
This configuration generate heat which has to be cooled by a fan in order to have correct performances.&lt;br /&gt;
&lt;br /&gt;
A small dedicated microcontroller is used to realize this function, which again has been chosen from the Microchip manufacturer.&lt;br /&gt;
It is a PIC12F683 which is small (8 pins), has got an ADC for the temperature reading and a PWM output for the fan speed setting.&lt;br /&gt;
&lt;br /&gt;
The fan is driven by a MOSFET which is triggered by the PWM, and gives the possibility to apply a 12V supply voltage directly on it.&lt;br /&gt;
&lt;br /&gt;
A freewheeling diode is also putted between the fan’s terminals, in order to protect it from being damaged by instant high voltages generated by the inductive property of the motor.&lt;br /&gt;
&lt;br /&gt;
=====Encoders interface=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_encoders_sch.png|500px|center|alt=Encoders interface circuit]]&lt;br /&gt;
&lt;br /&gt;
The encoders are used to measure accurately the distance traveled by the robot, it gives 1024 ’ticks’ for each wheel revolution.&lt;br /&gt;
These ticks are transmitted via two channels A and B, which both are differential outputs of the encoder.&lt;br /&gt;
&lt;br /&gt;
In order to treat these signals, AM26LV32 differential line receiver are used. This kind of chip can be supplied with only 3.3V however it accepts 5V inputs, which is the minimum supply level for the encoders.&lt;br /&gt;
&lt;br /&gt;
As a result, it plays a double role as converting the differential input in a single output, and as converting a 5V input to a 3.3V output which is acceptable for the FPGA or the microcontroller.&lt;br /&gt;
&lt;br /&gt;
=====Modules sockets=====&lt;br /&gt;
&lt;br /&gt;
[[Image:Elder_module_pinout.png|500px|center|alt=Module pin-out]]&lt;br /&gt;
&lt;br /&gt;
Each module can access to a 5V and 12V power supply generated from the power board, and a 3.3V logic supply generated by the daughter board.&lt;br /&gt;
It also has the possibility to use the CAN bus or an UART from the PIC32MX.&lt;br /&gt;
&lt;br /&gt;
Three of six modules have 8 GPIO each directly mapped to the Armadeus board’s FPGA, and the 3 others have these available GPIO linked to the PIC32MX microcontroller’s ports.&lt;br /&gt;
&lt;br /&gt;
=====Program=====&lt;br /&gt;
&lt;br /&gt;
======PIC32MX======&lt;br /&gt;
&lt;br /&gt;
At this stage of the project, there is no module which has been realized, so the only program running on the PIC32MX is blinking led code.&lt;br /&gt;
This one has been developed in order to test if microcontroller was working, according to the configuration bits.&lt;br /&gt;
This test has been successful, now need to be debugged the UART and the CAN bus.&lt;br /&gt;
&lt;br /&gt;
======PIC12F======&lt;br /&gt;
&lt;br /&gt;
For the PIC12F which control the fan, the program is very simple, there is a main loop in which the ADC is read, and this value determines the PWM duty cycle.&lt;br /&gt;
The relation between the temperature and the duty cycle value is shown in the figure below , where three phases can be seen:&lt;br /&gt;
&lt;br /&gt;
*before 30°C, the fan is stopped.&lt;br /&gt;
*between 30°C and 60°C the speed of the fan is linearly increasing according the temperature. An initial offset is required to start the fan’s motor.&lt;br /&gt;
*after 60°C, the fan remains at 100% speed&lt;br /&gt;
   &lt;br /&gt;
[[Image:Elder_fan_characteristic.png|500px|center|alt=Relation between the temperature and the fan’s PWM duty cycle]]&lt;br /&gt;
   &lt;br /&gt;
There is also a blinking LED, to be sure the microcontroller is correctly running.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More information comming soon&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=ELDER_Project&amp;diff=8342</id>
		<title>ELDER Project</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=ELDER_Project&amp;diff=8342"/>
		<updated>2010-06-29T09:13:35Z</updated>

		<summary type="html">&lt;p&gt;PaulM: Page creation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project overview ==&lt;br /&gt;
ELDER (Embedded Linux Development for Robotics) Project is a robotic team which participated to the [http://www.planete-sciences.org/robot/index.php?section=pages&amp;amp;pageid=100 French robotic cup] in May 2010. The team used an Armadeus APF27 + APF27Dev boards. This involved to work on both hardware and software designs. One of the goal of this project is to evolve and some parts are still under development.&lt;br /&gt;
&lt;br /&gt;
The main features provided by the APF27 were:&lt;br /&gt;
* Robot location computation (X,Y,Orientation), done in hardware by the FPGA&lt;br /&gt;
* Robot motion control, done by the FPGA as well&lt;br /&gt;
* Multithreading program for high level implementations: path-finding, A.I., gui manager, CAN manager etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[Image:elder_main-system.png|thumb|300px|center|ELDER&#039;s main system architecture]]&lt;br /&gt;
| [[Image:elder_pic-daughterboard.png|thumb|300px|center|ELDER&#039;s main boards (APF27 connected to the daughter board)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Project members ===&lt;br /&gt;
This project is actually the work of two students in last year of their Master in Engineering at the [http://www.strath.ac.uk/eee/ University of Strathclyde].&lt;br /&gt;
* [[User:PaulM|PaulM]]&lt;br /&gt;
* Sebastien&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
In order to help the development of this project and the team&#039;s communication, a wiki and a subversion repository have been created. Links are bellow. &lt;br /&gt;
* [http://www.mp-net.fr/elder Wiki] &#039;&#039;Note that the wiki might be updated during the next days&#039;&#039;.&lt;br /&gt;
* [http://www.mp-net.fr/elder/svn SVN repository]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes about the Subversion repository&#039;&#039;&#039;&lt;br /&gt;
* The actual FPGA firmware files are located at &amp;quot;svn-elder/projects/fpga_fw&amp;quot;&lt;br /&gt;
* The actual software files are located at &amp;quot;svn-elder/projects/elder_sw/armadeus&amp;quot;&lt;br /&gt;
* You can already have a look to the students project reports at &amp;quot;svn-elder/resources/classe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Detailled informations ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More information comming soon&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=File:Elder_pic-daughterboard.png&amp;diff=8341</id>
		<title>File:Elder pic-daughterboard.png</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=File:Elder_pic-daughterboard.png&amp;diff=8341"/>
		<updated>2010-06-29T09:09:05Z</updated>

		<summary type="html">&lt;p&gt;PaulM: ELDER Project:
Picture of the APF27 connected to the daughter board.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ELDER Project:&lt;br /&gt;
Picture of the APF27 connected to the daughter board.&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=File:Elder_main-system.png&amp;diff=8340</id>
		<title>File:Elder main-system.png</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=File:Elder_main-system.png&amp;diff=8340"/>
		<updated>2010-06-29T08:56:14Z</updated>

		<summary type="html">&lt;p&gt;PaulM: ELDER Project:
Main system architecture diagram.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ELDER Project:&lt;br /&gt;
Main system architecture diagram.&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=Contest&amp;diff=8337</id>
		<title>Contest</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=Contest&amp;diff=8337"/>
		<updated>2010-06-29T08:30:04Z</updated>

		<summary type="html">&lt;p&gt;PaulM: Elder project added to the list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;2009-2010 Association Contest&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
On this page, you will find all the usefull informations to participate to the 2009-2010 Armadeus Project Association Contest&lt;br /&gt;
&lt;br /&gt;
==What is it and why ?==&lt;br /&gt;
After 2 years of existence, the association has generated enough cash to promote or speed up internal developments.&lt;br /&gt;
During the [[ArmadeusWiki:Current_events|last annual meeting]], it has been decided to use a part of these funds to organize a contest.&lt;br /&gt;
The goal of this contest is to increase the number of applications developped by the members.  &lt;br /&gt;
&lt;br /&gt;
==Who can participate ?==&lt;br /&gt;
The members of the association (ie the people who already have an [[APF9328]] or [[APF27]] board). &lt;br /&gt;
This is a restrictive point, but we consider that a common development system is mandatory to share the work.&lt;br /&gt;
&lt;br /&gt;
== The rules ==&lt;br /&gt;
* The projects have to be registered before: June 30th 2010&lt;br /&gt;
* The participant(s) is a (are) member(s) of the [[Association|Armadeus Project association]]&lt;br /&gt;
* The whole sources and the schematics have to be publicly available and usable (GPL/LGPL)&lt;br /&gt;
* Hardware or/and software applications can be proposed&lt;br /&gt;
* A wiki page is mandatory and must contain ([[Contest_Template_Page|here is a template]]):&lt;br /&gt;
** a description of the project (a few words)&lt;br /&gt;
** the name(s) of the member(s)&lt;br /&gt;
** the documentation to use the application, to compile the sources and to build the hardware&lt;br /&gt;
* No special components have to be used (for electronics projects): all must be easily purchased&lt;br /&gt;
* Registration is done by adding the link of the wiki page to the list below&lt;br /&gt;
* The jury is composed of all the interested Armadeus Project members (min 5 members) and will have one month to deliberate after the contest closure. The vote will be done by email and have to be sent to contest(at)armadeus(dot)org. Prices will be attributed during LSM 2010 (RMLLs) in Bordeaux (France) .&lt;br /&gt;
&lt;br /&gt;
== The awards (To be confirmed)==&lt;br /&gt;
* First award: an [[APF27]] kit (APF27 + corresponding [[APF27Dev]] board (full options))&lt;br /&gt;
* Second award: a 7&amp;quot; TFT and its adapter board for APF27&lt;br /&gt;
* Third award: an APF27 wireless extansion with GSM and GPS modules&lt;br /&gt;
&lt;br /&gt;
==Current Projects List (2009-2010)==&lt;br /&gt;
* [[Brushless motor controller]]&lt;br /&gt;
* [[OND - Open Navigation Device (Phase 1)]]&lt;br /&gt;
* [[ROBOTNIK]]&lt;br /&gt;
* [[ELDER Project]]&lt;br /&gt;
&lt;br /&gt;
==Older projects==&lt;br /&gt;
===2008-2009===&lt;br /&gt;
* [[FireBoard | FireBoard, development cards emulation project]]&lt;br /&gt;
* [[MotionSystem | MotionSystem, R/C Servos Controller and Motion Measurement]] &#039;&#039;&#039;&amp;lt;&amp;lt;&amp;lt; Winner&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=User:PaulM&amp;diff=7366</id>
		<title>User:PaulM</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=User:PaulM&amp;diff=7366"/>
		<updated>2009-09-18T09:06:39Z</updated>

		<summary type="html">&lt;p&gt;PaulM: /* Présentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[MemberList | Liste des membres]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
[[Image:PaulM.png|100px|left|Photo de Paul MONSINJON]]&lt;br /&gt;
&lt;br /&gt;
Je m&#039;appelle Paul MONSINJON, j&#039;ai 22 ans et habite à Rennes et en région parisienne (seine et marne). Vous pouvez me croiser sous le pseudo polo35/Hebus.&lt;br /&gt;
&lt;br /&gt;
Actuellement en dernière année d&#039;études à Glasgow en Ecosse, je prépare un double diplôme en [http://www.insa-rennes.fr/eii Électronique et Informatique Industriel] à l&#039;INSA de Rennes et un [http://www.strath.ac.uk/eee/ MEng in Electronics and Electrical Engineering] à l&#039;université de Strathclyde.&lt;br /&gt;
&lt;br /&gt;
Passionné d&#039;électronique depuis mes 15 ans, j&#039;ai toujours aimé concevoir et fabriquer des circuits électronique. Cela a commencé au lyçée avec ma première participation à une compétition de robotique ([http://www.planete-sciences.org/robot/index.php?section=pages&amp;amp;pageid=84 trophée E=M6 à l&#039;époque]). Plus tard, j&#039;aurai l&#039;occasion de participer à la [http://www.planete-sciences.org/robot/index.php?section=pages&amp;amp;pageid=79 Coupe de France] grâce au club de l&#039;INSA.&lt;br /&gt;
&lt;br /&gt;
Mes centres principaux d&#039;intérêt concernent les couches hardware et bas niveau software (développement de drivers). J&#039;aime particulièrement développer sur FPGA et SOC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour plus d&#039;informations ou pour me contacter, vous pouvez consulter mon site web : http://monsinjon.paul.free.fr.&lt;br /&gt;
&lt;br /&gt;
= Participation à l&#039;association Armadeus =&lt;br /&gt;
&lt;br /&gt;
Je possède une [[APF27]], sa carte de développement [[APF27Dev]] ainsi que l&#039;écran [[LQ043_Adapt]] et le touchscreen [[TSC2102]] (équipé quoi !).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2008/2009 ==&lt;br /&gt;
&lt;br /&gt;
En 2008, j&#039;ai réalisé une carte d&#039;interface [[User:YoannC#R.C3.A9alisation_avec_Armadeus_:_Club_Robotnik_Coupe_2009|présentée ici]]. Celle ci permet de connecter divers éléments d&#039;un robot à l&#039;[[APF9328]], en particulier :&lt;br /&gt;
&lt;br /&gt;
* 2 moteurs à courant continu&lt;br /&gt;
* 2 codeurs incrémentaux&lt;br /&gt;
* 3 servos moteurs&lt;br /&gt;
* 3 modules SF05 (modules ultrason)&lt;br /&gt;
* 1 boussole numérique&lt;br /&gt;
* 1 switch de reset connecté au FPGA&lt;br /&gt;
* 1 switch DPDT pour la sélection d&#039;une configuration de match (ici, la couleur)&lt;br /&gt;
* 1 switch relié à un jack pour le &amp;quot;top départ&amp;quot; du match&lt;br /&gt;
* 8 switchs DIL de configuration&lt;br /&gt;
* 8 leds qui servent à rien (éventuellement à debuguer !)&lt;br /&gt;
* Un afficheur 7 segments&lt;br /&gt;
* Et enfin 2 entrées supplémentaires en 5V.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2009/2010 ==&lt;br /&gt;
&lt;br /&gt;
Ayant fait récemment l&#039;acquisition d&#039;une carte, je compte continuer à développer l&#039;interface entre armadeus et un robot mobile. En particulier je compte réaliser une carte fille possédant les fonctionnalités suivantes :&lt;br /&gt;
&lt;br /&gt;
* Reprendre une bonne partie des fonctionnalités de la carte précédente&lt;br /&gt;
* Monitoring tension et courant de batteries (LI-PO) et circuit de protection via un AT90CAN32 et le bus CAN.&lt;br /&gt;
* Intégration dans une partie dédiée des interfaces de puissance (ponts en H, commande des actionneurs etc.)&lt;br /&gt;
* Augmenter la modularité de la carte en ajoutant des entrées (capteurs de types différents, nombre de codeurs incrémentaux augmenté etc.).&lt;br /&gt;
* Éventuellement intégrer un circuit dédié au traitement d&#039;image (DSP/DSPic) et à la gestion des capteurs.&lt;br /&gt;
&lt;br /&gt;
Pour schématiser, le processeur ARM s&#039;occuperait de la gestion globale du robot (stratégie, interface IHM via l&#039;écran, gestion du CAN). Le FPGA quand à lui serait entièrement dédié à l&#039;asservissement en position du robot via des FPU. Si possible celui-ci gérerait également l&#039;ensemble des capteurs et pourrait faire de la vision (mais j&#039;ai un doute par rapport au 200k portes ! d&#039;où l&#039;idée d&#039;un circuit dédié à base de DSP).&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=MemberList&amp;diff=7351</id>
		<title>MemberList</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=MemberList&amp;diff=7351"/>
		<updated>2009-09-15T12:13:08Z</updated>

		<summary type="html">&lt;p&gt;PaulM: Ajout de PaulM&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Here is the list of the (active) members and their skills==&lt;br /&gt;
&lt;br /&gt;
This list is maintained by the users themself.&lt;br /&gt;
&lt;br /&gt;
*0: Novice&lt;br /&gt;
*1: Notions. At least one successfull experiment&lt;br /&gt;
*2: Confirmed&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;Signal connections&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#efefef;&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;Name / IRC Nickname&#039;&#039;&#039; || &#039;&#039;&#039;Linux Apps&#039;&#039;&#039;|| &#039;&#039;&#039;Linux Drivers&#039;&#039;&#039;|| &#039;&#039;&#039;FPGA&#039;&#039;&#039; || &#039;&#039;&#039;Board Design&#039;&#039;&#039; || &#039;&#039;&#039;Projet/Domain&#039;&#039;&#039;&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:Salocin68|Nicolas Colombain / Salocin]] || 1 || 1 || 1 || 2 || domotics&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:JulienB|Julien Boibessot / Artemys]] || 2 || 2 || 0 || 1 || multimedia&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:JeanBaptisteM|Jean-Baptiste Mayer / JiBee]] || 2 || 1 || 1 || 1 || robotics&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:NicolasA|Nicolas Aguirre]] || 2 || 0 || 1 || 1 || multimedia&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:BenoitC|Benoît Canet]] || 2 || 0 || 0 || 0 || multimedia&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:SonZerro|Sonzerro]] || 0 || 0 || 1 || 2 || domotics&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:HenriG|Henri Geist]] || 1 || 1 || 0 || 1 || robotics&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:BorredonB|Bernard Borredon]] || 2 || 1 || 0 || 1 || domotics&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:ThomasB|Thomas Bores]] || 2 || 0 || 0 || 1 || Entertainment&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:FabriceM|Fabrice Mousset / KroMignon]] || 1 || 1 || 2 || 1 || Domotics &amp;amp; multimedia&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:AmineH|Amine EL HEDADI]] || 2 || 2 || 0 || 0 || domotics &amp;amp; robotics&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:PhilippeM|Philippe Monteil]] || 2 || 0 || 0 || 0 || multimedia&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:CedricZ|Cédric Zmyj]] || 0 || 0 || 0 || 0 || domotics &amp;amp; robotics&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:JeanMichelN|Jean Michel Naimo / jeanmi12 ]] || 2 || 1 || 1 || 1 || Domotics &amp;amp; entertainment&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:OlivierC|Olivier Coutanceau]] || 1 || 0 || 0 || 0 || multimedia&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:ArnaudC|Arnaud COFFINET]] || 0 || 0 || 1 || 2 || multimedia &amp;amp; domotics&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:SylvainP|Sylvain PARRINO]] || 2 || 1 || 0 || 0 || robotics&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:AurelienH|Aurélien HIRON]] || 2 || 0 || 0 || 1 || robotics&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:GuillaumeT|Guillaume TRANNOY]] || 0 || 0 || 0 || 2 || domotics &amp;amp; robotics&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:JulienN|Julien NICOLAS / jujun]] || 2 || 1 || 0 || 1 || multimedia &amp;amp; network&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:StephaneF|Stéphane Falck]] || 0 || 0 || 0 || 0 || multimedia &amp;amp; robotics &amp;amp; domotics&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:GillesD|Gilles DUSSIN/ Sellig]] || 1 || 0 || 1 || 1 || robotics&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:MaximeL|Maxime Liron]] || 0 || 0 || 0 || 0 || domotics, robotics &amp;amp; multimedia&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:NicolasC|Nicolas CHARLERY/ realniko]] || 2 || 0 || 0 || 0 || electronic&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:BenoitJ|Benoit JESTER]] || 0 || 0 || 0 || 0 || robotics &lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:FabienM|Fabien MARTEAU/ FabM]] || 1 || 2 || 1 || 1 || robotics,domotics &lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:XavierA|Xavier AZNAR]] || 1 || 1 || 0 || 0 || environment, entertainment, domotic &lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:AlbericA|Albéric AUBLANC / PoueT]] || 2 || 0 || 1 || 0 || domotics &amp;amp; multimedia, robotics, entertainment, &lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:FredericB| Frédéric Blain / creber]] || 2 || 1 || 0 || 0 || system, domotics&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:JeanBaptisteMa| Jean-Baptiste Maillet]] || 2 || 1 || 0 || 0 || system&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:JeanFrancoisR| Jean-François Rousval]] || 2 || 1 || 0 || 1 || &lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:JulienPeeters| Julien Peeters]] || 2 || 1 || 0 || 0 || domotics, real-time, entertainment, network&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:YoannC| Yoann Congal / Alpheb]] || 0 || 0 || 0 || 1 || robotics&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:MatthieuT| Matthieu Texier / weeber]] || 1 || 0 || 1 || 0 || robotics, real-time&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:MartialG| Martial Guex]] || 2 || 1 || 1 || 2 || transceiver RF, real-time, wireless&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:NicolasL| Nicolas Lantz]] || 2 || 2 || 1 || 1 ||&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:GuillaumeD| Guillaume DELVIT]] || 1 || 1 || 1 || 1 || system, asynchronous CPU&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:BernardR|Bernard REMOND ]] || x || x || x || x || &lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:SamirH| Samir HAMNACHE]] || 0 || 0 || 0 || 1 || électronique&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:OlivierT|Olivier TARDIEU]] || 0 || 0 || 0 || 1 || électronique,robotics,domotics &lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:ThibautR|Thibault Rétornaz]] || 1 || 1 || 1 || 0 || bio-med, électronique&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:BrunoS|Bruno Suarez]] || 2 || 0 || 0 || 0 || bio-med, électronique&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:guillaumeDe|Guillaume Denis]] || 0 || 0 || 2 || 1 || Electronique numérique, FPGA&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:KevinP|Kévin PETIT]] || 1 || 0 || 1 || 1 || Multimedia&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:PierreBa|Pierre Baudemont / b4ud3]] || 2 || 0 || 1 || 0 || domotics, robotics&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:BrunoL|Bruno Landré]] || 0 || 0 || 0 || 0 || robotics&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:AntonioMB|Antonio Meléndez]] || 0 || 0 || 1 || 2 || domotics, robotics, eletcronics&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:MichelTe|Michel Le Mer]] || 0 || 0 || 2 || 2 || electronics, software&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:JulienBa|Julien Baley]] || 0 || 0 || 0 || 0 || &lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:FrankA|Frank ANJEAUX]] || 1 || 0 || 0 || 1 || software,robotics, domotics, electronics&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:JulienViaud|Julien viaud/polric]] || 2 || 0 || 1 || 1 || &lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:NicolasCa|Nicolas CARTIER]] || 1 || 1 || 0 || 2 || domotics &amp;amp; robotics&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:PierreAlexandreS|Pierre Alexandre SCHEMBRI]] || 2 || 1 || 2 || 2 || electronics, board design, embedded software, FPGA, robotics, low power&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:AlexG|Alex GONZALEZ]] || 2 || 2 || 0 || 1 || telecommunications, network &amp;amp; multimedia&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:JulienL|Julien Lefrique / apapi]] || 1 || 0 || 1 || 1 ||&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:PaoloB|Paolo Bernini / nihil84]] || 2 || 1 || 0 || 0 || robotics, real-time&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:MichielE|Michiel Ettema]] || 0 || 0 || 0 || 1 || telecommunications, networking&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:NicolasD|Nicolas Duclos]] || 2 || 1 || 0 || 0 || telecommunications, domotics and funs&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:SebastienP|Sebastien Philippe]] || 1 || 2 || 1 || 2 || electronics, board design, embedded linux&lt;br /&gt;
|----------------&lt;br /&gt;
|[[User:PaulM|Paul MONSINJON]] || 1 || 1 || 2 || 1 || robotics, fpga, embedded linux&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* [[Members | Geographical position of the members]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Association]]&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=User:PaulM&amp;diff=7350</id>
		<title>User:PaulM</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=User:PaulM&amp;diff=7350"/>
		<updated>2009-09-15T12:10:34Z</updated>

		<summary type="html">&lt;p&gt;PaulM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[MemberList | Liste des membres]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
[[Image:PaulM.png|100px|left|Photo de Paul MONSINJON]]&lt;br /&gt;
&lt;br /&gt;
Je m&#039;appelle Paul MONSINJON, j&#039;ai 22 ans et habite à Rennes et en région parisienne (seine et marne). Vous pouvez me croiser sous le pseudo polo35/Hebus.&lt;br /&gt;
&lt;br /&gt;
Actuellement en dernière année d&#039;études à Glasgow en Ecosse, je prépare un double diplôme en [http://www.insa-rennes.fr/eii Électronique et Informatique Industriel] à l&#039;INSA de Rennes et un [http://www.strath.ac.uk/eee/ MEng in Electronics and Electrical Engineering] à l&#039;université de Strathclyde.&lt;br /&gt;
&lt;br /&gt;
Passionné d&#039;électronique depuis mes 15 ans, j&#039;ai toujours aimé concevoir et fabriquer des circuits électronique. Cela a commencé au lyçée avec ma première participation à une compétition de robotique ([http://www.planete-sciences.org/robot/index.php?section=pages&amp;amp;pageid=84 trophée E=M6 à l&#039;époque]). Plus tard, j&#039;aurai l&#039;occasion de participer à la [http://www.planete-sciences.org/robot/index.php?section=pages&amp;amp;pageid=79 Coupe de France] grâce au club de l&#039;INSA.&lt;br /&gt;
&lt;br /&gt;
Mes centres principaux d&#039;intérêt en ce qui concerne l&#039;électronique concernent les couches hardware et bas niveau software. J&#039;aime particulièrement développer sur FPGA et SOC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour plus d&#039;informations ou pour me contacter, vous pouvez consulter mon site web : http://monsinjon.paul.free.fr.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Participation à l&#039;association Armadeus =&lt;br /&gt;
&lt;br /&gt;
Je possède une [[APF27]], sa carte de développement [[APF27Dev]] ainsi que l&#039;écran [[LQ043_Adapt]] et le touchscreen [[TSC2102]] (équipé quoi !).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2008/2009 ==&lt;br /&gt;
&lt;br /&gt;
En 2008, j&#039;ai réalisé une carte d&#039;interface [[User:YoannC#R.C3.A9alisation_avec_Armadeus_:_Club_Robotnik_Coupe_2009|présentée ici]]. Celle ci permet de connecter divers éléments d&#039;un robot à l&#039;[[APF9328]], en particulier :&lt;br /&gt;
&lt;br /&gt;
* 2 moteurs à courant continu&lt;br /&gt;
* 2 codeurs incrémentaux&lt;br /&gt;
* 3 servos moteurs&lt;br /&gt;
* 3 modules SF05 (modules ultrason)&lt;br /&gt;
* 1 boussole numérique&lt;br /&gt;
* 1 switch de reset connecté au FPGA&lt;br /&gt;
* 1 switch DPDT pour la sélection d&#039;une configuration de match (ici, la couleur)&lt;br /&gt;
* 1 switch relié à un jack pour le &amp;quot;top départ&amp;quot; du match&lt;br /&gt;
* 8 switchs DIL de configuration&lt;br /&gt;
* 8 leds qui servent à rien (éventuellement à debuguer !)&lt;br /&gt;
* Un afficheur 7 segments&lt;br /&gt;
* Et enfin 2 entrées supplémentaires en 5V.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2009/2010 ==&lt;br /&gt;
&lt;br /&gt;
Ayant fait récemment l&#039;acquisition d&#039;une carte, je compte continuer à développer l&#039;interface entre armadeus et un robot mobile. En particulier je compte réaliser une carte fille possédant les fonctionnalités suivantes :&lt;br /&gt;
&lt;br /&gt;
* Reprendre une bonne partie des fonctionnalités de la carte précédente&lt;br /&gt;
* Monitoring tension et courant de batteries (LI-PO) et circuit de protection via un AT90CAN32 et le bus CAN.&lt;br /&gt;
* Intégration dans une partie dédiée des interfaces de puissance (ponts en H, commande des actionneurs etc.)&lt;br /&gt;
* Augmenter la modularité de la carte en ajoutant des entrées (capteurs de types différents, nombre de codeurs incrémentaux augmenté etc.).&lt;br /&gt;
* Éventuellement intégrer un circuit dédié au traitement d&#039;image (DSP/DSPic) et à la gestion des capteurs.&lt;br /&gt;
&lt;br /&gt;
Pour schématiser, le processeur ARM s&#039;occuperait de la gestion globale du robot (stratégie, interface IHM via l&#039;écran, gestion du CAN). Le FPGA quand à lui serait entièrement dédié à l&#039;asservissement en position du robot via des FPU. Si possible celui-ci gérerait également l&#039;ensemble des capteurs et pourrait faire de la vision (mais j&#039;ai un doute par rapport au 200k portes ! d&#039;où l&#039;idée d&#039;un circuit dédié à base de DSP).&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=User:PaulM&amp;diff=7349</id>
		<title>User:PaulM</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=User:PaulM&amp;diff=7349"/>
		<updated>2009-09-15T12:09:07Z</updated>

		<summary type="html">&lt;p&gt;PaulM: Création de la page personnelle de PaulM / PaulM&amp;#039;s personnal page creation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[MemberList | Liste des membres]]&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
&lt;br /&gt;
[[Image:PaulM.png|100px|left|Photo de Paul MONSINJON]]&lt;br /&gt;
&lt;br /&gt;
Je m&#039;appelle Paul MONSINJON, j&#039;ai 22 ans et habite à Rennes et en région parisienne (seine et marne). Vous pouvez me croiser sous le pseudo polo35/Hebus.&lt;br /&gt;
&lt;br /&gt;
Actuellement en dernière année d&#039;études à Glasgow en Ecosse, je prépare un double diplôme en [http://www.insa-rennes.fr/eii Électronique et Informatique Industriel] à l&#039;INSA de Rennes et un [http://www.strath.ac.uk/eee/ MEng in Electronics and Electrical Engineering] à l&#039;université de Strathclyde.&lt;br /&gt;
&lt;br /&gt;
Passionné d&#039;électronique depuis mes 15 ans, j&#039;ai toujours aimé concevoir et fabriquer des circuits électronique. Cela a commencé au lyçée avec ma première participation à une compétition de robotique ([http://www.planete-sciences.org/robot/index.php?section=pages&amp;amp;pageid=84 trophée E=M6 à l&#039;époque]). Plus tard, j&#039;aurai l&#039;occasion de participer à la [http://www.planete-sciences.org/robot/index.php?section=pages&amp;amp;pageid=79 Coupe de France] grâce au club de l&#039;INSA.&lt;br /&gt;
&lt;br /&gt;
Mes centres principaux d&#039;intérêt en ce qui concerne l&#039;électronique concernent les couches hardware et bas niveau software. J&#039;aime particulièrement développer sur FPGA et SOC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour plus d&#039;informations ou pour me contacter, vous pouvez consulter mon site web : http://monsinjon.paul.free.fr.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Participation à l&#039;association Armadeus =&lt;br /&gt;
&lt;br /&gt;
Je possède une [[APF27]], sa carte de développement [[APF27Dev]] ainsi que l&#039;écran [[LQ043_Adapt]] et le touchscreen [[TSC2102]] (équipé quoi !).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2008/2009 ==&lt;br /&gt;
&lt;br /&gt;
En 2008, j&#039;ai réalisé une carte d&#039;interface [[User:YoannC#R.C3.A9alisation_avec_Armadeus_:_Club_Robotnik_Coupe_2009|présentée ici]]. Celle ci permet de connecter divers éléments d&#039;un robot à l&#039;[[APF9328]], en particulier :&lt;br /&gt;
&lt;br /&gt;
* 2 moteurs à courant continu&lt;br /&gt;
* 2 codeurs incrémentaux&lt;br /&gt;
* 3 servos moteurs&lt;br /&gt;
* 3 modules SF05 (modules ultrason)&lt;br /&gt;
* 1 boussole numérique&lt;br /&gt;
* 1 switch de reset connecté au FPGA&lt;br /&gt;
* 1 switch DPDT pour la sélection d&#039;une configuration de match (ici, la couleur)&lt;br /&gt;
* 1 switch relié à un jack pour le &amp;quot;top départ&amp;quot; du match&lt;br /&gt;
* 8 switchs DIL de configuration&lt;br /&gt;
* 8 leds qui servent à rien (éventuellement à debuguer !)&lt;br /&gt;
* Un afficheur 7 segments&lt;br /&gt;
* Et enfin 2 entrées supplémentaires en 5V.&lt;br /&gt;
&lt;br /&gt;
== 2009/2010 ==&lt;br /&gt;
&lt;br /&gt;
Ayant fait récemment l&#039;acquisition d&#039;une carte, je compte continuer à développer l&#039;interface entre armadeus et un robot mobile. En particulier je compte réaliser une carte fille possédant les fonctionnalités suivantes :&lt;br /&gt;
&lt;br /&gt;
* Reprendre une bonne partie des fonctionnalités de la carte précédente&lt;br /&gt;
* Monitoring tension et courant de batteries (LI-PO) et circuit de protection via un AT90CAN32 et le bus CAN.&lt;br /&gt;
* Intégration dans une partie dédiée des interfaces de puissance (ponts en H, commande des actionneurs etc.)&lt;br /&gt;
* Augmenter la modularité de la carte en ajoutant des entrées (capteurs de types différents, nombre de codeurs incrémentaux augmenté etc.).&lt;br /&gt;
* Éventuellement intégrer un circuit dédié au traitement d&#039;image (DSP/DSPic) et à la gestion des capteurs.&lt;br /&gt;
&lt;br /&gt;
Pour schématiser, le processeur ARM s&#039;occuperait de la gestion globale du robot (stratégie, interface IHM via l&#039;écran, gestion du CAN). Le FPGA quand à lui serait entièrement dédié à l&#039;asservissement en position du robot via des FPU. Si possible celui-ci gérerait également l&#039;ensemble des capteurs et pourrait faire de la vision (mais j&#039;ai un doute par rapport au 200k portes ! d&#039;où l&#039;idée d&#039;un circuit dédié à base de DSP).&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
	<entry>
		<id>http://wikilegacy.armadeus.com/index.php?title=File:PaulM.png&amp;diff=7348</id>
		<title>File:PaulM.png</title>
		<link rel="alternate" type="text/html" href="http://wikilegacy.armadeus.com/index.php?title=File:PaulM.png&amp;diff=7348"/>
		<updated>2009-09-15T12:06:12Z</updated>

		<summary type="html">&lt;p&gt;PaulM: Photo de PaulM (Paul MONSINJON).&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Photo de PaulM (Paul MONSINJON).&lt;/div&gt;</summary>
		<author><name>PaulM</name></author>
	</entry>
</feed>