<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://rsewiki.electro.dtu.dk/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=S021786</id>
	<title>Rsewiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://rsewiki.electro.dtu.dk/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=S021786"/>
	<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Special:Contributions/S021786"/>
	<updated>2026-04-23T23:57:00Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:News&amp;diff=488</id>
		<title>RHD:News</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:News&amp;diff=488"/>
		<updated>2010-03-22T14:17:50Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
News for the [[RHD]] project&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- Lines to be included on the RHD frontpage --&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;22 March 2010:&#039;&#039;&#039; RHD 2.2 is now fully operational and considered the new choice for implementations. It has been moved to the SVN trunk and is required to use the new Stage3 simulation plugin.&lt;br /&gt;
* &#039;&#039;&#039;12 October 2009:&#039;&#039;&#039; RHD 2.2 work is in full progress. A substantial upgrade in the communications protocol will make it possible to observe write-variables from read-clients and furthermore provide better data security for slower updating clients (non real-time read-clients)&lt;br /&gt;
* &#039;&#039;&#039;07 January 2009:&#039;&#039;&#039; RHD 2.0 is now considered stable and has been moved to svn trunk. Version 1.1 is still avaliable through svn tags, however it is deprecated.&lt;br /&gt;
* &#039;&#039;&#039;29 September 2008:&#039;&#039;&#039; rFLEX plug-in is completed and ready for use (see doc here [[rFLEX plugin]])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Older news that does not go on the front page --&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;29 September 2008:&#039;&#039;&#039; RHD 2.0 is in it&#039;s final testing state&lt;br /&gt;
* &#039;&#039;&#039;18 September 2008:&#039;&#039;&#039; RHD 2.0 work started and RHD project report online&lt;br /&gt;
* &#039;&#039;&#039;21 July 2008:&#039;&#039;&#039; Development roadmap added&lt;br /&gt;
* &#039;&#039;&#039;29 June 2008:&#039;&#039;&#039; RHD Wiki page online (still no info though)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD&amp;diff=487</id>
		<title>RHD</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD&amp;diff=487"/>
		<updated>2010-03-22T14:14:18Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Disable TOC --&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- Main greeting frame --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;font-family:Verdana; font-size:16pt;color: #00008B; background: #f2f2f2;&amp;quot;|&lt;br /&gt;
&#039;&#039;&#039;Project page for Robot Hardware Daemon (RHD)&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
RHD is the realtime hardware abstraction layer for the RSE Mobotware platform.&amp;lt;br/&amp;gt;&lt;br /&gt;
It is a flexible plug-in based HAL, that allows simple and fast integration of new robot platforms, sensor and actuator hardware. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Transparent 3- column table for RHD properties --&amp;gt;&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;lt;!-- RHD Features table --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background: #f2f2f2;border: 1px solid #aaa; &amp;quot;|&lt;br /&gt;
===Project details===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[RHD:Features]]&lt;br /&gt;
* [[RHD:Downloads]]&lt;br /&gt;
* [[RHD:Changelog and roadmap]]&lt;br /&gt;
* [[RHD:Plug-ins]]&lt;br /&gt;
* [[RHD:FAQ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;lt;!-- RHD Documentationtable --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background: #f2f2f2;border: 1px solid #aaa;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===Documentation===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[RHD:Variable database]]&lt;br /&gt;
* [[RHD:TCP/IP Server]] &lt;br /&gt;
* [[RHD:Realtime Scheduler]]&lt;br /&gt;
* [[RHD:Plug-in architecture]]&lt;br /&gt;
* Project report [[Media:Rhd.pdf]]&lt;br /&gt;
* [[RHD:Code documentation]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;lt;!-- RHD News table --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background: #f2f2f2;border: 1px solid #aaa;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===News===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{{:RHD:News}}&lt;br /&gt;
&lt;br /&gt;
See all news [[RHD:News]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:Changelog_and_roadmap&amp;diff=473</id>
		<title>RHD:Changelog and roadmap</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:Changelog_and_roadmap&amp;diff=473"/>
		<updated>2009-10-12T11:50:10Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;RHD is a project in ongoing development.&lt;br /&gt;
&lt;br /&gt;
This page will present the versions in development, and the roadmap for future releases. Files for these releases can be downloaded from the [[RHD:Downloads]] page&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Current stable release ==&lt;br /&gt;
This version, is the recommended version for stable operation. This version should be found on the robots runnig the RSE flash&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.0 (trunk)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This version will implement the plug-in architecture, this is now the official way to write new hardware modules for RHD.&lt;br /&gt;
* Major change: Plug-in architecture implementation (AB: done)&lt;br /&gt;
* Build envoriment updated to handle shared libs and output structure (AB: done)&lt;br /&gt;
* New ncurses client application for testing (AB: done)&lt;br /&gt;
* Final testing (AB + LVM: done)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Versions in development ==&lt;br /&gt;
The list below, feature the current development versions of RHD. To obtain a version of RHD, that support new features, pick a version below. Remember, that this versions are not considered stable, before they are released. Requested features will be found in these versions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.1 (testing)&#039;&#039;&#039;&lt;br /&gt;
* Possibility to configure for soft-realtime through configuration. To run simulator in non-root environment. (AB:done)&lt;br /&gt;
* Add stage 2.1 simulator to package (LVM: done)&lt;br /&gt;
* Debugging of auSerial and RS232 linesensor plugins  (AB: done)&lt;br /&gt;
* Debuggnig of server&#039;s client handling (disconnected all clients on one-client disconnect)  (AB: done)&lt;br /&gt;
* Testing of plug-in structure on the HAKO platform (SH+JCA: Done)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.2 (in development)&#039;&#039;&#039;&lt;br /&gt;
* Improvement of client-sever communication to all variable data is exchanged on connect. (AB: pending)&lt;br /&gt;
* Buffering of update flags, so that all new data is exchanges, even if a client does not update in each period. (AB: done)&lt;br /&gt;
* Auto log-off on inactive clients to avoid locked master client when disconnecting. (Under discussion)&lt;br /&gt;
&lt;br /&gt;
== Previous releases ==&lt;br /&gt;
&lt;br /&gt;
Previous releases can be found here, with their change logs. Only use versions from this list, if some needed functions are broken in newer releases (and please inform the author if that is the case!) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1 (release tag)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Formailzed version numbering and first development version, using RSE SVN (AB:done)&lt;br /&gt;
* Removed usleep(100) bug in GPS module (AB:done)&lt;br /&gt;
* Implement NAA HakoCan functionality into main RHD branch (AB:done)&lt;br /&gt;
* Added freerunning mode to scheduler to let simulator control time (AB:done)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.0&#039;&#039;&#039;&lt;br /&gt;
* AuSerial integrated in test version&lt;br /&gt;
* HakoCan added in test version&lt;br /&gt;
* Variable database API optimized&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:News&amp;diff=472</id>
		<title>RHD:News</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:News&amp;diff=472"/>
		<updated>2009-10-12T07:43:48Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
News for the [[RHD]] project&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- Lines to be included on the RHD frontpage --&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;12 October 2009:&#039;&#039;&#039; RHD 2.2 work is in full progress. A substantial upgrade in the communications protocol will make it possible to observe write-variables from read-clients and furthermore provide better data security for slower updating clients (non real-time read-clients)&lt;br /&gt;
* &#039;&#039;&#039;07 January 2009:&#039;&#039;&#039; RHD 2.0 is now considered stable and has been moved to svn trunk. Version 1.1 is still avaliable through svn tags, however it is deprecated.&lt;br /&gt;
* &#039;&#039;&#039;29 September 2008:&#039;&#039;&#039; rFLEX plug-in is completed and ready for use (see doc here [[rFLEX plugin]])&lt;br /&gt;
* &#039;&#039;&#039;29 September 2008:&#039;&#039;&#039; RHD 2.0 is in it&#039;s final testing state&lt;br /&gt;
* &#039;&#039;&#039;18 September 2008:&#039;&#039;&#039; RHD 2.0 work started and RHD project report online&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Older news that does not go on the front page --&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;21 July 2008:&#039;&#039;&#039; Development roadmap added&lt;br /&gt;
* &#039;&#039;&#039;29 June 2008:&#039;&#039;&#039; RHD Wiki page online (still no info though)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RFLEX_plug-in&amp;diff=443</id>
		<title>RFLEX plug-in</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RFLEX_plug-in&amp;diff=443"/>
		<updated>2009-07-27T11:56:51Z</updated>

		<summary type="html">&lt;p&gt;S021786: New page: As the Institute for Automation got a hand on an iRobot ATRV-Jr robot platform, we needed a plug-in to control the robot. The robot has a fully developed control framework built-in, the rF...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As the Institute for Automation got a hand on an iRobot ATRV-Jr robot platform, we needed a plug-in to control the robot. The robot has a fully developed control framework built-in, the rFLEX, that provides odometry and sensors through a RS-232 connection.&lt;br /&gt;
&lt;br /&gt;
iRobot has moved focus towards developing consumer (vacuum) and military robots, so no documentation &#039;&#039;&#039;at all&#039;&#039;&#039; is available for the robot. Fortunately, Carnegie Mellon University (CMU) has drivers for the rFLEX in their Carnegie Mellon Robot Navigation Toolkit ([http://carmen.sourceforge.net, CARMEN]). This is actually also the base for the rFLEX drivers in Player/Stage framework. About half of the code is ported from [http://carmen.sourceforge.net, CARMEN] - Thank you guys!&lt;br /&gt;
&lt;br /&gt;
== The rFLEX system ==&lt;br /&gt;
&lt;br /&gt;
rFLEX provides a full interface to the robot sensors, and does somewhat of post-processing, such as odometry calculations and ultrasound processing. &lt;br /&gt;
&lt;br /&gt;
The intension of the interface is to create a flexible platform for all iRobot research robots. As we only had the ATRV-Jr robot for testing, the rFLEX plugin is kept as universal as possible, but bumpers and ultrasound sensors are mapped specifically for ATRV-Jr. &lt;br /&gt;
&lt;br /&gt;
Odometry is provided in a translation / rotation axis configuration. The system outputs position, velocity, acceleration and torque in both axes (i.e. forward speed and rotation speed)&lt;br /&gt;
&lt;br /&gt;
== XML Configuration ==&lt;br /&gt;
&lt;br /&gt;
Through the [[RHD]] XML configuration, it is possible to define parameters for the plug-in&lt;br /&gt;
&lt;br /&gt;
The default configuration is seen below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;rflex enable=&amp;quot;true&amp;quot; lib=&amp;quot;librflex.so.1&amp;quot; critical=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;serial port=&amp;quot;/dev/ttyUSB0&amp;quot; baudrate=&amp;quot;115200&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;odometry period=&amp;quot;100000&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;translation accel=&amp;quot;100000&amp;quot; torque=&amp;quot;30000&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;rotation accel=&amp;quot;100000&amp;quot; torque=&amp;quot;35000&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;bumperbrake default=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/rflex&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Configuration include serial port settings and default values for accelleration and torque in both translation and rotation axes. &lt;br /&gt;
&lt;br /&gt;
The odometry period sets, how often a odometry package is sampled to the serial bus. The value is in µs.&lt;br /&gt;
&lt;br /&gt;
The final parameter is the bumperbrake, that is described below.&lt;br /&gt;
&lt;br /&gt;
== Plug-in special features ==&lt;br /&gt;
&lt;br /&gt;
Normally, it is against [[RHD]] principles to assign too much robot functionality into the plug-ins. But as a safety feature, a brake feature is coupled to the bumpers of the robot.&lt;br /&gt;
&lt;br /&gt;
If the bumperbrake is enabled, the robot will enable it&#039;s brake, when bumpers is touched. The default setting is assigned in the XML configuration, but a write-variable makes it possible to en/disable the feature at runtime.&lt;br /&gt;
This makes the response-time as short as possible for emergency stop.&lt;br /&gt;
&lt;br /&gt;
== Plug-in variables ==&lt;br /&gt;
&lt;br /&gt;
Most of the plug-in functionality is described by the plug-ins it creates&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ rFLEX plugin variable table&lt;br /&gt;
|-&lt;br /&gt;
! Direction &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  !! Variable name &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;    !! Array contents &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;   !! Description&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| transvel || [vel] || Velocity of translation&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| transaccl || [accl] || Acceleration of translation&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| transtorque || [torque] || Torque of translation&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| transpos || [pos] || Position of translation (distance)&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| rotvel || [vel] || Velocity of rotation&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| rotaccl || [accl] || Acceleration of rotation&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| rottorque || [torque] || Torque of rotation&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| rotpos || [pos] || Position of rotation (bering)&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| sonar || [s0]..[s16] || Measurements of sonars (mapped 0-16, as on ATRV-Jr)&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| bumper || [front][rear] || Status of ARTV-Jr bumpers&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| brake || [brake] || Status of robot brake (updated at 1Hz)&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| battvoltage || [batt] || Raw mesurement of battery voltage (needs calibration and updated at 1Hz)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| cmdtransvel || [vel] || Desired velocity of translation (command)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| cmdtransaccl || [accl] || Max acceleration of translation (XML default used if = 0)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| cmdtranstorque || [torque] || Max torque of translation (XML default used if = 0)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| cmdrotvel || [vel] || Desired velocity of rotation (command)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| cmdrotaccl || [accl] || Max acceleration of rotation (XML default used if = 0)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| cmdrottorque || [torque] || Max torque of rotation (XML default used if = 0)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| usesonar || [enable] || Enable / disable ultrasound sonars (default off)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| cmdbrake || [brake] || Enable / disable robot brake (default off)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| bumperbrake || [enable] || Enable / disable bumperbrake (overrides default)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Using these variables, it is possible to control all functions on the ATRV-Jr robot... Enjoy&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD&amp;diff=442</id>
		<title>RHD</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD&amp;diff=442"/>
		<updated>2009-07-27T11:35:32Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Disable TOC --&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- Main greeting frame --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;font-family:Verdana; font-size:16pt;color: #00008B; background: #f2f2f2;&amp;quot;|&lt;br /&gt;
&#039;&#039;&#039;Project page for Robot Hardware Daemon (RHD)&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
RHD is the realtime hardware abstraction layer, for the RSE platform.&amp;lt;br/&amp;gt;&lt;br /&gt;
It is a flexible plug-in based HAL, that allows simple and fast integration of new robot platforms, sensor and actuator hardware. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Transparent 3- column table for RHD properties --&amp;gt;&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;lt;!-- RHD Features table --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background: #f2f2f2;border: 1px solid #aaa; &amp;quot;|&lt;br /&gt;
===Project details===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[RHD:Features]]&lt;br /&gt;
* [[RHD:Downloads]]&lt;br /&gt;
* [[RHD:Changelog and roadmap]]&lt;br /&gt;
* [[RHD:Plug-ins]]&lt;br /&gt;
* [[RHD:FAQ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;lt;!-- RHD Documentationtable --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background: #f2f2f2;border: 1px solid #aaa;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===Documentation===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[RHD:Variable database]]&lt;br /&gt;
* [[RHD:TCP/IP Server]] &lt;br /&gt;
* [[RHD:Realtime Scheduler]]&lt;br /&gt;
* [[RHD:Plug-in architecture]]&lt;br /&gt;
* Project report [[Media:Rhd.pdf]]&lt;br /&gt;
* [[RHD:Code documentation]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;lt;!-- RHD News table --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background: #f2f2f2;border: 1px solid #aaa;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===News===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{{:RHD:News}}&lt;br /&gt;
&lt;br /&gt;
See all news [[RHD:News]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:Changelog_and_roadmap&amp;diff=441</id>
		<title>RHD:Changelog and roadmap</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:Changelog_and_roadmap&amp;diff=441"/>
		<updated>2009-07-27T11:32:35Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;RHD is a project in ongoing development.&lt;br /&gt;
&lt;br /&gt;
This page will present the versions in development, and the roadmap for future releases. Files for these releases can be downloaded from the [[RHD:Downloads]] page&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Current stable release ==&lt;br /&gt;
This version, is the recommended version for stable operation. This version should be found on the robots runnig the RSE flash&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.0 (trunk)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This version will implement the plug-in architecture, this is now the official way to write new hardware modules for RHD.&lt;br /&gt;
* Major change: Plug-in architecture implementation (AB: done)&lt;br /&gt;
* Build envoriment updated to handle shared libs and output structure (AB: done)&lt;br /&gt;
* New ncurses client application for testing (AB: done)&lt;br /&gt;
* Final testing (AB + LVM: in progress)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Versions in development ==&lt;br /&gt;
The list below, feature the current development versions of RHD. To obtain a version of RHD, that support new features, pick a version below. Remember, that this versions are not considered stable, before they are released. Requested features will be found in these versions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.1 (testing)&#039;&#039;&#039;&lt;br /&gt;
* Possibility to configure for soft-realtime through configuration. To run simulator in non-root environment. (AB:done)&lt;br /&gt;
* Add stage 2.1 simulator to package (LVM: done)&lt;br /&gt;
* Debugging of auSerial and RS232 linesensor plugins  (AB: done)&lt;br /&gt;
* Debuggnig of server&#039;s client handling (disconnected all clients on one-client disconnect)  (AB: done)&lt;br /&gt;
* Testing of plug-in structure on the HAKO platform (SH+JCA: Done)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.2 (in development)&#039;&#039;&#039;&lt;br /&gt;
* Improvement of client-sever communication to all variable data is exchanged on connect. (AB: pending)&lt;br /&gt;
* Buffering of update flags, so that all new data is exchanges, even if a client does not update in each period. (AB: done)&lt;br /&gt;
* Auto log-off on inactive clients to avoid locked master client when disconnecting. (Under discussion)&lt;br /&gt;
&lt;br /&gt;
== Previous releases ==&lt;br /&gt;
&lt;br /&gt;
Previous releases can be found here, with their change logs. Only use versions from this list, if some needed functions are broken in newer releases (and please inform the author if that is the case!) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1 (release tag)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Formailzed version numbering and first development version, using RSE SVN (AB:done)&lt;br /&gt;
* Removed usleep(100) bug in GPS module (AB:done)&lt;br /&gt;
* Implement NAA HakoCan functionality into main RHD branch (AB:done)&lt;br /&gt;
* Added freerunning mode to scheduler to let simulator control time (AB:done)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.0&#039;&#039;&#039;&lt;br /&gt;
* AuSerial integrated in test version&lt;br /&gt;
* HakoCan added in test version&lt;br /&gt;
* Variable database API optimized&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:Plug-ins&amp;diff=397</id>
		<title>RHD:Plug-ins</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:Plug-ins&amp;diff=397"/>
		<updated>2009-04-27T14:45:30Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Some plug-ins were developed for RHD, enabling control of the AU SMR and the KVL HAKO robots using the framework.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Existing Plug-ins for RHD ==&lt;br /&gt;
* [[AUSerial plug-in]] Configurable driver for the RS485 bus used on the SMR&lt;br /&gt;
* [[HakoCan plug-in]]  Can-bus driver for controlling the automated Hako Tractor&lt;br /&gt;
* [[GPS plug-in]] GPS module supporting classic NMEA serial GPS and the RTK GPS at KVL&lt;br /&gt;
* [[FOGyro plug-in]] Driver for the Fibre Optic Gyro, from KVL&lt;br /&gt;
* [[Crossbow plug-in]] Driver for the Crossbow IMU400 unit &lt;br /&gt;
* [[SMRDSerial plug-in]] Wrapper for the old SMRD interface, used for testing on the SMR&lt;br /&gt;
* [[rFLEX plug-in]] Driver for the iRobot rFLEX research robots platform&lt;br /&gt;
* [[RS232 Linesensor plug-in]] Interface for the RS232-based SMR linesensor module&lt;br /&gt;
* [[Stage 2.1 plug-in]] Simulator plug-in, using the [http://playerstage.sourceforge.net/index.php?src=stage Stage simulator] from the [http://playerstage.sourceforge.net/ Player/Stage project]&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:Plug-ins&amp;diff=396</id>
		<title>RHD:Plug-ins</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:Plug-ins&amp;diff=396"/>
		<updated>2009-04-27T14:44:27Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Some plug-ins were developed for RHD, enabling control of the AU SMR and the KVL HAKO robots using the framework.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Existing Plug-ins for RHD ==&lt;br /&gt;
* [[AUSerial plug-in]] Configurable driver for the RS485 bus used on the SMR&lt;br /&gt;
* [[HakoCan plug-in]]  Can-bus driver for controlling the automated Hako Tractor&lt;br /&gt;
* [[GPS plug-in]] GPS module supporting classic NMEA serial GPS and the RTK GPS at KVL&lt;br /&gt;
* [[FOGyro plug-in]] Driver for the Fibre Optic Gyro, from KVL&lt;br /&gt;
* [[Crossbow plug-in]] Driver for the Crossbow IMU400 unit &lt;br /&gt;
* [[SMRDSerial plug-in]] Wrapper for the old SMRD interface, used for testing on the SMR&lt;br /&gt;
* [[rFLEX plug-in]] Driver for the iRobot rFLEX research robots platform&lt;br /&gt;
* [[RS232 Linesensor plug-in]] Interface for the RS232-based SMR linesensor module&lt;br /&gt;
* [[Stage 2.1 plug-in]] Simulator plug-in, using the [http://playerstage.sourceforge.net/index.php?src=stage Stage simulator]&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:Changelog_and_roadmap&amp;diff=395</id>
		<title>RHD:Changelog and roadmap</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:Changelog_and_roadmap&amp;diff=395"/>
		<updated>2009-04-27T14:37:13Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;RHD is a project in ongoing development.&lt;br /&gt;
&lt;br /&gt;
This page will present the versions in development, and the roadmap for future releases. Files for these releases can be downloaded from the [[RHD:Downloads]] page&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Current stable release ==&lt;br /&gt;
This version, is the recommended version for stable operation. This version should be found on the robots runnig the RSE flash&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.0 (trunk)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This version will implement the plug-in architecture, this is now the official way to write new hardware modules for RHD.&lt;br /&gt;
* Major change: Plug-in architecture implementation (AB: done)&lt;br /&gt;
* Build envoriment updated to handle shared libs and output structure (AB: done)&lt;br /&gt;
* New ncurses client application for testing (AB: done)&lt;br /&gt;
* Final testing (AB + LVM: in progress)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Versions in development ==&lt;br /&gt;
The list below, feature the current development versions of RHD. To obtain a version of RHD, that support new features, pick a version below. Remember, that this versions are not considered stable, before they are released. Requested features will be found in these versions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.1 (testing)&#039;&#039;&#039;&lt;br /&gt;
* Possibility to configure for soft-realtime through configuration. To run simulator in non-root environment. (AB:done)&lt;br /&gt;
* Add stage 2.1 simulator to package (LVM: done)&lt;br /&gt;
* Debugging of auSerial and RS232 linesensor plugins  (AB: done)&lt;br /&gt;
* Debuggnig of server&#039;s client handling (disconnected all clients on one-client disconnect)  (AB: done)&lt;br /&gt;
* Testing of plug-in structure on the HAKO platform (SH+JCA: Done)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.2 (planned)&#039;&#039;&#039;&lt;br /&gt;
* Improvement of client-sever communication to all variable data is exchanged on connect.&lt;br /&gt;
* Auto log-off on inactive clients to avoid locked master client when disconnecting.&lt;br /&gt;
&lt;br /&gt;
== Previous releases ==&lt;br /&gt;
&lt;br /&gt;
Previous releases can be found here, with their change logs. Only use versions from this list, if some needed functions are broken in newer releases (and please inform the author if that is the case!) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1 (release tag)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Formailzed version numbering and first development version, using RSE SVN (AB:done)&lt;br /&gt;
* Removed usleep(100) bug in GPS module (AB:done)&lt;br /&gt;
* Implement NAA HakoCan functionality into main RHD branch (AB:done)&lt;br /&gt;
* Added freerunning mode to scheduler to let simulator control time (AB:done)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.0&#039;&#039;&#039;&lt;br /&gt;
* AuSerial integrated in test version&lt;br /&gt;
* HakoCan added in test version&lt;br /&gt;
* Variable database API optimized&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=SMRD_communication&amp;diff=341</id>
		<title>SMRD communication</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=SMRD_communication&amp;diff=341"/>
		<updated>2009-02-05T10:50:51Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Normally, the SMR C library copes with communication between a user&#039;s program and the SMR&lt;br /&gt;
sensor daemon SMRD.&lt;br /&gt;
&lt;br /&gt;
This page documents this communication.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Connect&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
SMRD listens for TCP/IP connections on port 24901.&lt;br /&gt;
Multiple clients (up to ten) can be connected at once.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Data Packets&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The communication protocol is byte oriented and binary coded.&lt;br /&gt;
&lt;br /&gt;
Data both from client to server, and from server to client, is sent in packets.&lt;br /&gt;
Each packet starts with a &#039;&#039;length&#039;&#039; byte, specifying the number of bytes to follow.&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
 0x04 0x10 0x20 0x30 0x40&lt;br /&gt;
&lt;br /&gt;
Only the lower 5 bits of the first byte give the length. The upper 3 bits describe the source/destination of the packet:&lt;br /&gt;
   0b000?????:   RS485 master/slave serial bus&lt;br /&gt;
   0b001?????:   RS232 serial port&lt;br /&gt;
   0b011?????:   AU simulator packet&lt;br /&gt;
   0b111?????:   SMRD control packet&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Poll&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Clients start the communication by sending a &#039;&#039;client ready&#039;&#039; packet:&lt;br /&gt;
&lt;br /&gt;
 0xE1 0x02&lt;br /&gt;
&lt;br /&gt;
The server responds with a number of packets. First, a &#039;&#039;start of period&#039;&#039;. This is followed by a series of data packets. Finally, an &#039;&#039;end of period&#039;&#039; packet is sent.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Start of period&#039;&#039;&#039;&lt;br /&gt;
 0xE9 0x00 &amp;lt;sample no.&amp;gt; &amp;lt;time stamp&amp;gt;&lt;br /&gt;
   &amp;lt;sample no.&amp;gt;:   4 byte (integer) sample number&lt;br /&gt;
   &amp;lt;time stamp&amp;gt;:   4 byte (integer) cpu clock time stamp&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Motor data&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The two motors on an SMR are numbered 1 and 2. In the following, replace &#039;&#039;i&#039;&#039; with the motor number.&lt;br /&gt;
&lt;br /&gt;
Some motor modules return more data than others. The length byte distinguishes between module types.&lt;br /&gt;
&lt;br /&gt;
 0x03 0xAi &amp;lt;encoder position&amp;gt;&lt;br /&gt;
 0x05 0xAi &amp;lt;encoder position&amp;gt; &amp;lt;status&amp;gt; &amp;lt;pwm&amp;gt;&lt;br /&gt;
   &amp;lt;encoder position&amp;gt;:   2 byte (integer). 2000 positions per wheel turn.&lt;br /&gt;
   &amp;lt;status&amp;gt;:   1 byte status&lt;br /&gt;
   &amp;lt;pwm&amp;gt;:   1 byte motor drive voltage&lt;br /&gt;
&lt;br /&gt;
MSB is to the left, for example: encoder position = 256*byte2 + byte3. &lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;IR proximity data&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 0x09 0x88 &amp;lt;proximity data&amp;gt;&lt;br /&gt;
   &amp;lt;proximity data&amp;gt;:   8 bytes (array of bytes) proximity data. The first 6 bytes contain measurement data.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Serial line sensor&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The serial port line sensor sends 16 bytes of sensor data; typically split into 2 or more packets.&lt;br /&gt;
So, the &#039;&#039;length&#039;&#039; fields can vary from packet, and from sample to sample. A typical period might look like this:&lt;br /&gt;
 0x27 0x73 &amp;lt;6 bytes serial data&amp;gt;&lt;br /&gt;
 0x2B 0x73 &amp;lt;10 bytes serial data&amp;gt;&lt;br /&gt;
   &amp;lt;serial data&amp;gt;:   Up to 16 bytes (array of bytes) serial data. The first 8 bytes contain measurement data.&lt;br /&gt;
Other packets may be received between serial port packets.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;RS485 line sensor&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 0x09 0x17 &amp;lt;line sensor data&amp;gt;&lt;br /&gt;
   &amp;lt;line sensor data&amp;gt;:   8 bytes (array of bytes) line sensor data.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Power module&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 0x08 0x19 0b&amp;lt;fedcbaAA&amp;gt; 0b&amp;lt;BBCCDDEE&amp;gt; 0b&amp;lt;AAAAAAAA&amp;gt; 0b&amp;lt;BBBBBBBB&amp;gt; 0b&amp;lt;CCCCCCCC&amp;gt; 0b&amp;lt;DDDDDDDD&amp;gt; 0b&amp;lt;EEEEEEEE&amp;gt;&lt;br /&gt;
   fedcba:   Digital input channels 5 to 0.&lt;br /&gt;
   AAAAAAAAAA...EEEEEEEEEE:   Analog input (10 bits) channels 0 to 4. The two MSBs come from one of the pairs in byte 2 or 3. LSB is to the right.&lt;br /&gt;
&lt;br /&gt;
The module inputs are connected as follows:&lt;br /&gt;
   Digital input 0:   Power on.&lt;br /&gt;
   Digital input 1...5:   Unused.&lt;br /&gt;
   Analog input 0:   Battery voltage.&lt;br /&gt;
   Analog input 1:   External supply voltage.&lt;br /&gt;
   Analog input 2,3,4:   Unused.&lt;br /&gt;
&lt;br /&gt;
To convert analog input readings to volts:&lt;br /&gt;
&lt;br /&gt;
Vin = 4.1 * 3.5 / 1.1 / 1024 * ADin&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;New Power Module v. 3.3b (firmware 3.31+)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Data is sent in same format as the old module&lt;br /&gt;
&lt;br /&gt;
The module inputs are connected as follows:&lt;br /&gt;
   Digital input 0 (a):   Power on.&lt;br /&gt;
   Digital input 1 (b):   External Power Connected.&lt;br /&gt;
   Digital input 2 (c):   Robot is charging.&lt;br /&gt;
   Digital input 3 (d):   Robot is calibrating battery&lt;br /&gt;
   Digital input 4..5 (e..f):   Unused.&lt;br /&gt;
   Analog input 0 (A):   Battery voltage.&lt;br /&gt;
   Analog input 1 (B):   Robot Power Supply voltage.&lt;br /&gt;
   Analog input 2 (C):   Battery charge current.&lt;br /&gt;
   Analog input 3 (D):   Battery temperature sensor 1.&lt;br /&gt;
   Analog input 4 (E):   Battery state-of-charge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To convert analog input readings into usable values:&#039;&#039;&#039;&lt;br /&gt;
 Battery voltage:     Vbatt = 4.1 * 3.5 / 1.1 / 1024 * ADin. [V]&lt;br /&gt;
 Robot PSU voltage:   Vpsu = 4.1 * 3.5 / 1.1 / 1024 * ADin.  [V]&lt;br /&gt;
 Battery Chg Current: Ichg = ADin * 3 [mA].&lt;br /&gt;
 Battery Temp 1:      Tbatt = ADin [0.1 °C].&lt;br /&gt;
 Battery SOC:         Bsoc = ADin [% remaining capacity]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;End of period&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
SMRD signals that the period is finished by sending &#039;&#039;end of period&#039;&#039;.&lt;br /&gt;
 0xE1 0x01&lt;br /&gt;
No more packets will be sent to the client until a new poll is started.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Simulation time&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When SMRdemo is connected to the simulator, it will receive the simulation&lt;br /&gt;
time just before the &#039;&#039;end of period&#039;&#039; packet.&lt;br /&gt;
 0x69 0x01 &amp;lt;simulation time&amp;gt;&lt;br /&gt;
   &amp;lt;simulation time&amp;gt;: 8 byte (double) simulation time.&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=SMRD_communication&amp;diff=340</id>
		<title>SMRD communication</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=SMRD_communication&amp;diff=340"/>
		<updated>2009-02-05T10:50:15Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Normally, the SMR C library copes with communication between a user&#039;s program and the SMR&lt;br /&gt;
sensor daemon SMRD.&lt;br /&gt;
&lt;br /&gt;
This page documents this communication.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Connect&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
SMRD listens for TCP/IP connections on port 24901.&lt;br /&gt;
Multiple clients (up to ten) can be connected at once.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Data Packets&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The communication protocol is byte oriented and binary coded.&lt;br /&gt;
&lt;br /&gt;
Data both from client to server, and from server to client, is sent in packets.&lt;br /&gt;
Each packet starts with a &#039;&#039;length&#039;&#039; byte, specifying the number of bytes to follow.&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
 0x04 0x10 0x20 0x30 0x40&lt;br /&gt;
&lt;br /&gt;
Only the lower 5 bits of the first byte give the length. The upper 3 bits describe the source/destination of the packet:&lt;br /&gt;
   0b000?????:   RS485 master/slave serial bus&lt;br /&gt;
   0b001?????:   RS232 serial port&lt;br /&gt;
   0b011?????:   AU simulator packet&lt;br /&gt;
   0b111?????:   SMRD control packet&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Poll&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Clients start the communication by sending a &#039;&#039;client ready&#039;&#039; packet:&lt;br /&gt;
&lt;br /&gt;
 0xE1 0x02&lt;br /&gt;
&lt;br /&gt;
The server responds with a number of packets. First, a &#039;&#039;start of period&#039;&#039;. This is followed by a series of data packets. Finally, an &#039;&#039;end of period&#039;&#039; packet is sent.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Start of period&#039;&#039;&#039;&lt;br /&gt;
 0xE9 0x00 &amp;lt;sample no.&amp;gt; &amp;lt;time stamp&amp;gt;&lt;br /&gt;
   &amp;lt;sample no.&amp;gt;:   4 byte (integer) sample number&lt;br /&gt;
   &amp;lt;time stamp&amp;gt;:   4 byte (integer) cpu clock time stamp&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Motor data&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The two motors on an SMR are numbered 1 and 2. In the following, replace &#039;&#039;i&#039;&#039; with the motor number.&lt;br /&gt;
&lt;br /&gt;
Some motor modules return more data than others. The length byte distinguishes between module types.&lt;br /&gt;
&lt;br /&gt;
 0x03 0xAi &amp;lt;encoder position&amp;gt;&lt;br /&gt;
 0x05 0xAi &amp;lt;encoder position&amp;gt; &amp;lt;status&amp;gt; &amp;lt;pwm&amp;gt;&lt;br /&gt;
   &amp;lt;encoder position&amp;gt;:   2 byte (integer). 2000 positions per wheel turn.&lt;br /&gt;
   &amp;lt;status&amp;gt;:   1 byte status&lt;br /&gt;
   &amp;lt;pwm&amp;gt;:   1 byte motor drive voltage&lt;br /&gt;
&lt;br /&gt;
MSB is to the left, for example: encoder position = 256*byte2 + byte3. &lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;IR proximity data&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 0x09 0x88 &amp;lt;proximity data&amp;gt;&lt;br /&gt;
   &amp;lt;proximity data&amp;gt;:   8 bytes (array of bytes) proximity data. The first 6 bytes contain measurement data.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Serial line sensor&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The serial port line sensor sends 16 bytes of sensor data; typically split into 2 or more packets.&lt;br /&gt;
So, the &#039;&#039;length&#039;&#039; fields can vary from packet, and from sample to sample. A typical period might look like this:&lt;br /&gt;
 0x27 0x73 &amp;lt;6 bytes serial data&amp;gt;&lt;br /&gt;
 0x2B 0x73 &amp;lt;10 bytes serial data&amp;gt;&lt;br /&gt;
   &amp;lt;serial data&amp;gt;:   Up to 16 bytes (array of bytes) serial data. The first 8 bytes contain measurement data.&lt;br /&gt;
Other packets may be received between serial port packets.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;RS485 line sensor&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 0x09 0x17 &amp;lt;line sensor data&amp;gt;&lt;br /&gt;
   &amp;lt;line sensor data&amp;gt;:   8 bytes (array of bytes) line sensor data.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Power module&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 0x08 0x19 0b&amp;lt;fedcbaAA&amp;gt; 0b&amp;lt;BBCCDDEE&amp;gt; 0b&amp;lt;AAAAAAAA&amp;gt; 0b&amp;lt;BBBBBBBB&amp;gt; 0b&amp;lt;CCCCCCCC&amp;gt; 0b&amp;lt;DDDDDDDD&amp;gt; 0b&amp;lt;EEEEEEEE&amp;gt;&lt;br /&gt;
   fedcba:   Digital input channels 5 to 0.&lt;br /&gt;
   AAAAAAAAAA...EEEEEEEEEE:   Analog input (10 bits) channels 0 to 4. The two MSBs come from one of the pairs in byte 2 or 3. LSB is to the right.&lt;br /&gt;
&lt;br /&gt;
The module inputs are connected as follows:&lt;br /&gt;
   Digital input 0:   Power on.&lt;br /&gt;
   Digital input 1...5:   Unused.&lt;br /&gt;
   Analog input 0:   Battery voltage.&lt;br /&gt;
   Analog input 1:   External supply voltage.&lt;br /&gt;
   Analog input 2,3,4:   Unused.&lt;br /&gt;
&lt;br /&gt;
To convert analog input readings to volts:&lt;br /&gt;
&lt;br /&gt;
Vin = 4.1 * 3.5 / 1.1 / 1024 * ADin&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;New Power Module v. 3.3b (firmware 3.31+)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Data is sent in same format as the old module&lt;br /&gt;
&lt;br /&gt;
The module inputs are connected as follows:&lt;br /&gt;
   Digital input 0 (a):   Power on.&lt;br /&gt;
   Digital input 1 (b):   External Power Connected.&lt;br /&gt;
   Digital input 2 (c):   Robot is charging.&lt;br /&gt;
   Digital input 3 (d):   Robot is calibrating battery&lt;br /&gt;
   Digital input 4..5 (e..f):   Unused.&lt;br /&gt;
   Analog input 0 (A):   Battery voltage.&lt;br /&gt;
   Analog input 1 (B):   Robot Power Supply voltage.&lt;br /&gt;
   Analog input 2 (C):   Battery charge current.&lt;br /&gt;
   Analog input 3 (D):   Battery temperature sensor 1.&lt;br /&gt;
   Analog input 4 (E):   Battery state-of-charge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To convert analog input readings into usable values:&#039;&#039;&#039;&lt;br /&gt;
 Battery voltage:     Vbatt = 4.1 * 3.5 / 1.1 / 1024 * ADin. [V]&lt;br /&gt;
 Robot PSU voltage:   Vpsu = 4.1 * 3.5 / 1.1 / 1024 * ADin.  [V]&lt;br /&gt;
 Battery Chg Current: Ichg = ADin * 3 [mA].&lt;br /&gt;
 Battery Temp 1:  Tbatt = ADin [0.1 °C].&lt;br /&gt;
 Battery SOC: Bsoc = ADin [% remaining capacity]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;End of period&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
SMRD signals that the period is finished by sending &#039;&#039;end of period&#039;&#039;.&lt;br /&gt;
 0xE1 0x01&lt;br /&gt;
No more packets will be sent to the client until a new poll is started.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Simulation time&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When SMRdemo is connected to the simulator, it will receive the simulation&lt;br /&gt;
time just before the &#039;&#039;end of period&#039;&#039; packet.&lt;br /&gt;
 0x69 0x01 &amp;lt;simulation time&amp;gt;&lt;br /&gt;
   &amp;lt;simulation time&amp;gt;: 8 byte (double) simulation time.&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:Changelog_and_roadmap&amp;diff=339</id>
		<title>RHD:Changelog and roadmap</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:Changelog_and_roadmap&amp;diff=339"/>
		<updated>2009-02-03T22:33:18Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;RHD is a project in ongoing development.&lt;br /&gt;
&lt;br /&gt;
This page will present the versions in development, and the roadmap for future releases. Files for these releases can be downloaded from the [[RHD:Downloads]] page&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Current stable release ==&lt;br /&gt;
This version, is the recommended version for stable operation. This version should be found on the robots runnig the RSE flash&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.0 (trunk)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This version will implement the plug-in architecture, this is now the official way to write new hardware modules for RHD.&lt;br /&gt;
* Major change: Plug-in architecture implementation (AB: done)&lt;br /&gt;
* Build envoriment updated to handle shared libs and output structure (AB: done)&lt;br /&gt;
* New ncurses client application for testing (AB: done)&lt;br /&gt;
* Final testing (AB + LVM: in progress)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Versions in development ==&lt;br /&gt;
The list below, feature the current development versions of RHD. To obtain a version of RHD, that support new features, pick a version below. Remember, that this versions are not considered stable, before they are released. Requested features will be found in these versions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.1 (testing)&#039;&#039;&#039;&lt;br /&gt;
* Possibility to configure for soft-realtime through configuration. To run simulator in non-root environment. (AB:done)&lt;br /&gt;
* Add stage 2.1 simulator to package (LVM: done)&lt;br /&gt;
* Debugging of auSerial and RS232 linesensor plugins  (AB: done)&lt;br /&gt;
* Debuggnig of server&#039;s client handling (disconnected all clients on one-client disconnect)  (AB: done)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.2 (planned)&#039;&#039;&#039;&lt;br /&gt;
* Improvement of client-sever communication to all variable data is exchanged on connect.&lt;br /&gt;
&lt;br /&gt;
== Previous releases ==&lt;br /&gt;
&lt;br /&gt;
Previous releases can be found here, with their change logs. Only use versions from this list, if some needed functions are broken in newer releases (and please inform the author if that is the case!) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1 (release tag)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Formailzed version numbering and first development version, using RSE SVN (AB:done)&lt;br /&gt;
* Removed usleep(100) bug in GPS module (AB:done)&lt;br /&gt;
* Implement NAA HakoCan functionality into main RHD branch (AB:done)&lt;br /&gt;
* Added freerunning mode to scheduler to let simulator control time (AB:done)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.0&#039;&#039;&#039;&lt;br /&gt;
* AuSerial integrated in test version&lt;br /&gt;
* HakoCan added in test version&lt;br /&gt;
* Variable database API optimized&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:Changelog_and_roadmap&amp;diff=338</id>
		<title>RHD:Changelog and roadmap</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:Changelog_and_roadmap&amp;diff=338"/>
		<updated>2009-02-03T22:32:46Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;RHD is a project in ongoing development.&lt;br /&gt;
&lt;br /&gt;
This page will present the versions in development, and the roadmap for future releases. Files for these releases can be downloaded from the [[RHD:Downloads]] page&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Current stable release ==&lt;br /&gt;
This version, is the recommended version for stable operation. This version should be found on the robots runnig the RSE flash&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.0 (trunk)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This version will implement the plug-in architecture, this is now the official way to write new hardware modules for RHD.&lt;br /&gt;
* Major change: Plug-in architecture implementation (AB: done)&lt;br /&gt;
* Build envoriment updated to handle shared libs and output structure (AB: done)&lt;br /&gt;
* New ncurses client application for testing (AB: done)&lt;br /&gt;
* Final testing (AB + LVM: in progress)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Versions in development ==&lt;br /&gt;
The list below, feature the current development versions of RHD. To obtain a version of RHD, that support new features, pick a version below. Remember, that this versions are not considered stable, before they are released. Requested features will be found in these versions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.1 (testing)&#039;&#039;&#039;&lt;br /&gt;
* Possibility to configure for soft-realtime through configuration. To run simulator in non-root environment. (AB:done)&lt;br /&gt;
* Add stage 2.1 simulator to package (LVM: in progress)&lt;br /&gt;
* Debugging of auSerial and RS232 linesensor plugins&lt;br /&gt;
* Debuggnig of server&#039;s client handling (disconnected all clients on one-client disconnect)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.2 (planned)&#039;&#039;&#039;&lt;br /&gt;
* Improvement of client-sever communication to all variable data is exchanged on connect.&lt;br /&gt;
&lt;br /&gt;
== Previous releases ==&lt;br /&gt;
&lt;br /&gt;
Previous releases can be found here, with their change logs. Only use versions from this list, if some needed functions are broken in newer releases (and please inform the author if that is the case!) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1 (release tag)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Formailzed version numbering and first development version, using RSE SVN (AB:done)&lt;br /&gt;
* Removed usleep(100) bug in GPS module (AB:done)&lt;br /&gt;
* Implement NAA HakoCan functionality into main RHD branch (AB:done)&lt;br /&gt;
* Added freerunning mode to scheduler to let simulator control time (AB:done)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.0&#039;&#039;&#039;&lt;br /&gt;
* AuSerial integrated in test version&lt;br /&gt;
* HakoCan added in test version&lt;br /&gt;
* Variable database API optimized&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:Variable_database&amp;diff=334</id>
		<title>RHD:Variable database</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:Variable_database&amp;diff=334"/>
		<updated>2009-01-28T09:05:20Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The variable database deﬁnes the functionality of [[RHD]]. Upon initialization, all plug-in&lt;br /&gt;
modules create their needed I/O variables, and ﬁnally the database is locked when going&lt;br /&gt;
into soft/hard realtime.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
&lt;br /&gt;
The database itself, are based upon a symbol table and a data area. The symbol table&lt;br /&gt;
deﬁnes the static information regarding the variables and bookkeeping information. The&lt;br /&gt;
data area, contains the dynamic information, the actual data and it’s timestamp. The&lt;br /&gt;
needed memory is dynamically allocated, when variables are created. Figure 1 below,&lt;br /&gt;
show the internal structure of the variable database and the association between symbol&lt;br /&gt;
table and data area.&lt;br /&gt;
&lt;br /&gt;
Image to come...&lt;br /&gt;
&lt;br /&gt;
Figure 1: Structural overview of an element in the variable database&lt;br /&gt;
&lt;br /&gt;
Note, that a standard variable size of a 32-bit signed integer is selected. This decision&lt;br /&gt;
is made, to keep variables ”large enough” for most future applications, and the fact that&lt;br /&gt;
memory and bandwidth is not a dramatic issue on most modern platforms.&lt;br /&gt;
&lt;br /&gt;
Some discussion has concerned to include a type to the variable database, as it might&lt;br /&gt;
seem inefficient to represent text strings in 32-bit integers. A future enhancement of [[RHD]]&lt;br /&gt;
might supply the possibility of using other integer sizes, but so far the design decision is&lt;br /&gt;
to keep it simple with the highest ﬂexibility.&lt;br /&gt;
&lt;br /&gt;
Bidirectionality is obtained by using two separate symbol tables: a read and a write table.&lt;br /&gt;
Data read from sensors are fed into the read-table, and data from the client is received in&lt;br /&gt;
the write table.&lt;br /&gt;
&lt;br /&gt;
Each variable is supplied with a ”updated” ﬂag (see ﬁg 1). The ﬂag is used to implement&lt;br /&gt;
reactions to updated variables, and to determine what data should be exchanged with the&lt;br /&gt;
client.&lt;br /&gt;
&lt;br /&gt;
There might always be a need to know the exact time a variable was updated, so all&lt;br /&gt;
variables has a timestamp, that is set, every time a variable is updated. This makes&lt;br /&gt;
it possible to control timing with a much higher resolution than the fundamental RHD&lt;br /&gt;
scheduler period.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
The API is deﬁned in database.h. This API overview is not intended as a programming&lt;br /&gt;
reference, but just to give a feel of, how the database is interfaced.&lt;br /&gt;
Variable creation is done by the plug-ins using the function below:&lt;br /&gt;
int createVariable (char dir, char len, char ∗name) Add a variable array to the variable pool&lt;br /&gt;
The direction, dir, is either the ’r’ og ’w’ character, that determines in which symbol&lt;br /&gt;
table the variable is created. len assigns the number of elements in the variable array,&lt;br /&gt;
and the name parameter is a pointer to a text string, containing the desired name of the&lt;br /&gt;
variable. CreateVariable returns the id number of the variable, that is used to address&lt;br /&gt;
the data, when performing I/O. When initialization is completed, the database is locked&lt;br /&gt;
in soft-realtime-mode, and no further variables can be created.&lt;br /&gt;
&lt;br /&gt;
Interfacing the variables are done through the following functions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
int setVariable (int id , int index, int value) Update a array in the data pool&lt;br /&gt;
int setArray (int id , int length, int ∗array) Update a array in the data pool&lt;br /&gt;
int setVariable (int id , int index, int value) Get a read variable from the data pool&lt;br /&gt;
int getWriteArray (int id, int index, int ∗array) Get a read variable from the data pool&lt;br /&gt;
int getReadVariable (int id, int index) Get a read variable from the data pool&lt;br /&gt;
int getReadArray (int id, int index, int ∗array) Get a read array from the data pool&lt;br /&gt;
int isUpdated (char dir, int id) Check if a variable is updated&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using this simple API, data can be transferred into the read database and out from the&lt;br /&gt;
read and write database. The id parameter is the variable id, that is returned when the&lt;br /&gt;
variable is created, and index is the array-index in the database. Check if variables are&lt;br /&gt;
updated is performed through the isUpdated() function.&lt;br /&gt;
&lt;br /&gt;
Other functions, that can be found in the RHD documentation, give the possibility of&lt;br /&gt;
interfacing the symboltables directly, but their use is highly discouraged. The API above&lt;br /&gt;
provide semaphore and boundary projection, and result in more safe and readable code.&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:Variable_database&amp;diff=333</id>
		<title>RHD:Variable database</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:Variable_database&amp;diff=333"/>
		<updated>2009-01-28T09:04:14Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The variable database deﬁnes the functionality of RHD. Upon initialization, all plug-in&lt;br /&gt;
modules create their needed I/O variables, and ﬁnally the database is locked when going&lt;br /&gt;
into soft/hard realtime.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
&lt;br /&gt;
The database itself, are based upon a symbol table and a data area. The symbol table&lt;br /&gt;
deﬁnes the static information regarding the variables and bookkeeping information. The&lt;br /&gt;
data area, contains the dynamic information, the actual data and it’s timestamp. The&lt;br /&gt;
needed memory is dynamically allocated, when variables are created. Figure 1 below,&lt;br /&gt;
show the internal structure of the variable database and the association between symbol&lt;br /&gt;
table and data area.&lt;br /&gt;
&lt;br /&gt;
Image to come...&lt;br /&gt;
&lt;br /&gt;
Figure 1: Structural overview of an element in the variable database&lt;br /&gt;
&lt;br /&gt;
Note, that a standard variable size of a 32-bit signed integer is selected. This decision&lt;br /&gt;
is made, to keep variables ”large enough” for most future applications, and the fact that&lt;br /&gt;
memory and bandwidth is not a dramatic issue on most modern platforms.&lt;br /&gt;
&lt;br /&gt;
Some discussion has concerned to include a type to the variable database, as it might&lt;br /&gt;
seem inefficient to represent text strings in 32-bit integers. A future enhancement of RHD&lt;br /&gt;
might supply the possibility of using other integer sizes, but so far the design decision is&lt;br /&gt;
to keep it simple with the highest ﬂexibility.&lt;br /&gt;
&lt;br /&gt;
Bidirectionality is obtained by using two separate symbol tables: a read and a write table.&lt;br /&gt;
Data read from sensors are fed into the read-table, and data from the client is received in&lt;br /&gt;
the write table.&lt;br /&gt;
&lt;br /&gt;
Each variable is supplied with a ”updated” ﬂag (see ﬁg 1). The ﬂag is used to implement&lt;br /&gt;
reactions to updated variables, and to determine what data should be exchanged with the&lt;br /&gt;
client.&lt;br /&gt;
&lt;br /&gt;
There might always be a need to know the exact time a variable was updated, so all&lt;br /&gt;
variables has a timestamp, that is set, every time a variable is updated. This makes&lt;br /&gt;
it possible to control timing with a much higher resolution than the fundamental RHD&lt;br /&gt;
scheduler period.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
The API is deﬁned in database.h. This API overview is not intended as a programming&lt;br /&gt;
reference, but just to give a feel of, how the database is interfaced.&lt;br /&gt;
Variable creation is done by the plug-ins using the function below:&lt;br /&gt;
int createVariable (char dir, char len, char ∗name) Add a variable array to the variable pool&lt;br /&gt;
The direction, dir, is either the ’r’ og ’w’ character, that determines in which symbol&lt;br /&gt;
table the variable is created. len assigns the number of elements in the variable array,&lt;br /&gt;
and the name parameter is a pointer to a text string, containing the desired name of the&lt;br /&gt;
variable. CreateVariable returns the id number of the variable, that is used to address&lt;br /&gt;
the data, when performing I/O. When initialization is completed, the database is locked&lt;br /&gt;
in soft-realtime-mode, and no further variables can be created.&lt;br /&gt;
&lt;br /&gt;
Interfacing the variables are done through the following functions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
int setVariable (int id , int index, int value) Update a array in the data pool&lt;br /&gt;
int setArray (int id , int length, int ∗array) Update a array in the data pool&lt;br /&gt;
int setVariable (int id , int index, int value) Get a read variable from the data pool&lt;br /&gt;
int getWriteArray (int id, int index, int ∗array) Get a read variable from the data pool&lt;br /&gt;
int getReadVariable (int id, int index) Get a read variable from the data pool&lt;br /&gt;
int getReadArray (int id, int index, int ∗array) Get a read array from the data pool&lt;br /&gt;
int isUpdated (char dir, int id) Check if a variable is updated&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using this simple API, data can be transferred into the read database and out from the&lt;br /&gt;
read and write database. The id parameter is the variable id, that is returned when the&lt;br /&gt;
variable is created, and index is the array-index in the database. Check if variables are&lt;br /&gt;
updated is performed through the isUpdated() function.&lt;br /&gt;
&lt;br /&gt;
Other functions, that can be found in the RHD documentation, give the possibility of&lt;br /&gt;
interfacing the symboltables directly, but their use is highly discouraged. The API above&lt;br /&gt;
provide semaphore and boundary projection, and result in more safe and readable code.&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:Variable_database&amp;diff=332</id>
		<title>RHD:Variable database</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:Variable_database&amp;diff=332"/>
		<updated>2009-01-28T09:03:11Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The variable database deﬁnes the functionality of RHD. Upon initialization, all plug-in&lt;br /&gt;
modules create their needed I/O variables, and ﬁnally the database is locked when going&lt;br /&gt;
into soft/hard realtime.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
&lt;br /&gt;
The database itself, are based upon a symbol table and a data area. The symbol table&lt;br /&gt;
deﬁnes the static information regarding the variables and bookkeeping information. The&lt;br /&gt;
data area, contains the dynamic information, the actual data and it’s timestamp. The&lt;br /&gt;
needed memory is dynamically allocated, when variables are created. Figure 1 below,&lt;br /&gt;
show the internal structure of the variable database and the association between symbol&lt;br /&gt;
table and data area.&lt;br /&gt;
&lt;br /&gt;
Image to come...&lt;br /&gt;
&lt;br /&gt;
Figure 1: Structural overview of an element in the variable database&lt;br /&gt;
&lt;br /&gt;
Note, that a standard variable size of a 32-bit signed integer is selected. This decision&lt;br /&gt;
is made, to keep variables ”large enough” for most future applications, and the fact that&lt;br /&gt;
memory and bandwidth is not a dramatic issue on most modern platforms.&lt;br /&gt;
&lt;br /&gt;
Some discussion has concerned to include a type to the variable database, as it might&lt;br /&gt;
seem inefficient to represent text strings in 32-bit integers. A future enhancement of RHD&lt;br /&gt;
might supply the possibility of using other integer sizes, but so far the design decision is&lt;br /&gt;
to keep it simple with the highest ﬂexibility.&lt;br /&gt;
&lt;br /&gt;
Bidirectionality is obtained by using two separate symbol tables: a read and a write table.&lt;br /&gt;
Data read from sensors are fed into the read-table, and data from the client is received in&lt;br /&gt;
the write table.&lt;br /&gt;
&lt;br /&gt;
Each variable is supplied with a ”updated” ﬂag (see ﬁg 1). The ﬂag is used to implement&lt;br /&gt;
reactions to updated variables, and to determine what data should be exchanged with the&lt;br /&gt;
client.&lt;br /&gt;
&lt;br /&gt;
There might always be a need to know the exact time a variable was updated, so all&lt;br /&gt;
variables has a timestamp, that is set, every time a variable is updated. This makes&lt;br /&gt;
it possible to control timing with a much higher resolution than the fundamental RHD&lt;br /&gt;
scheduler period.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
The API is deﬁned in database.h. This API overview is not intended as a programming&lt;br /&gt;
reference, but just to give a feel of, how the database is interfaced.&lt;br /&gt;
Variable creation is done by the plug-ins using the function below:&lt;br /&gt;
int createVariable (char dir, char len, char ∗name) Add a variable array to the variable pool&lt;br /&gt;
The direction, dir, is either the ’r’ og ’w’ character, that determines in which symbol&lt;br /&gt;
table the variable is created. len assigns the number of elements in the variable array,&lt;br /&gt;
and the name parameter is a pointer to a text string, containing the desired name of the&lt;br /&gt;
variable. CreateVariable returns the id number of the variable, that is used to address&lt;br /&gt;
the data, when performing I/O. When initialization is completed, the database is locked&lt;br /&gt;
in soft-realtime-mode, and no further variables can be created.&lt;br /&gt;
&lt;br /&gt;
Interfacing the variables are done through the following functions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
int setVariable (int id , int index, int value) Update a array in the data pool&amp;lt;/br&amp;gt;&lt;br /&gt;
int setArray (int id , int length, int ∗array) Update a array in the data pool&amp;lt;/br&amp;gt;&lt;br /&gt;
int setVariable (int id , int index, int value) Get a read variable from the data pool&amp;lt;/br&amp;gt;&lt;br /&gt;
int getWriteArray (int id, int index, int ∗array) Get a read variable from the data pool&amp;lt;/br&amp;gt;&lt;br /&gt;
int getReadVariable (int id, int index) Get a read variable from the data pool&amp;lt;/br&amp;gt;&lt;br /&gt;
int getReadArray (int id, int index, int ∗array) Get a read array from the data pool&amp;lt;/br&amp;gt;&lt;br /&gt;
int isUpdated (char dir, int id) Check if a variable is updated&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using this simple API, data can be transferred into the read database and out from the&lt;br /&gt;
read and write database. The id parameter is the variable id, that is returned when the&lt;br /&gt;
variable is created, and index is the array-index in the database. Check if variables are&lt;br /&gt;
updated is performed through the isUpdated() function.&lt;br /&gt;
&lt;br /&gt;
Other functions, that can be found in the RHD documentation, give the possibility of&lt;br /&gt;
interfacing the symboltables directly, but their use is highly discouraged. The API above&lt;br /&gt;
provide semaphore and boundary projection, and result in more safe and readable code.&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:Variable_database&amp;diff=331</id>
		<title>RHD:Variable database</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:Variable_database&amp;diff=331"/>
		<updated>2009-01-28T09:02:29Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The variable database deﬁnes the functionality of RHD. Upon initialization, all plug-in&lt;br /&gt;
modules create their needed I/O variables, and ﬁnally the database is locked when going&lt;br /&gt;
into soft/hard realtime.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
&lt;br /&gt;
The database itself, are based upon a symbol table and a data area. The symbol table&lt;br /&gt;
deﬁnes the static information regarding the variables and bookkeeping information. The&lt;br /&gt;
data area, contains the dynamic information, the actual data and it’s timestamp. The&lt;br /&gt;
needed memory is dynamically allocated, when variables are created. Figure 1 below,&lt;br /&gt;
show the internal structure of the variable database and the association between symbol&lt;br /&gt;
table and data area.&lt;br /&gt;
&lt;br /&gt;
Image to come...&lt;br /&gt;
&lt;br /&gt;
Figure 1: Structural overview of an element in the variable database&lt;br /&gt;
&lt;br /&gt;
Note, that a standard variable size of a 32-bit signed integer is selected. This decision&lt;br /&gt;
is made, to keep variables ”large enough” for most future applications, and the fact that&lt;br /&gt;
memory and bandwidth is not a dramatic issue on most modern platforms.&lt;br /&gt;
&lt;br /&gt;
Some discussion has concerned to include a type to the variable database, as it might&lt;br /&gt;
seem inefficient to represent text strings in 32-bit integers. A future enhancement of RHD&lt;br /&gt;
might supply the possibility of using other integer sizes, but so far the design decision is&lt;br /&gt;
to keep it simple with the highest ﬂexibility.&lt;br /&gt;
&lt;br /&gt;
Bidirectionality is obtained by using two separate symbol tables: a read and a write table.&lt;br /&gt;
Data read from sensors are fed into the read-table, and data from the client is received in&lt;br /&gt;
the write table.&lt;br /&gt;
&lt;br /&gt;
Each variable is supplied with a ”updated” ﬂag (see ﬁg 1). The ﬂag is used to implement&lt;br /&gt;
reactions to updated variables, and to determine what data should be exchanged with the&lt;br /&gt;
client.&lt;br /&gt;
&lt;br /&gt;
There might always be a need to know the exact time a variable was updated, so all&lt;br /&gt;
variables has a timestamp, that is set, every time a variable is updated. This makes&lt;br /&gt;
it possible to control timing with a much higher resolution than the fundamental RHD&lt;br /&gt;
scheduler period.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
The API is deﬁned in database.h. This API overview is not intended as a programming&lt;br /&gt;
reference, but just to give a feel of, how the database is interfaced.&lt;br /&gt;
Variable creation is done by the plug-ins using the function below:&lt;br /&gt;
int createVariable (char dir, char len, char ∗name) Add a variable array to the variable pool&lt;br /&gt;
The direction, dir, is either the ’r’ og ’w’ character, that determines in which symbol&lt;br /&gt;
table the variable is created. len assigns the number of elements in the variable array,&lt;br /&gt;
and the name parameter is a pointer to a text string, containing the desired name of the&lt;br /&gt;
variable. CreateVariable returns the id number of the variable, that is used to address&lt;br /&gt;
the data, when performing I/O. When initialization is completed, the database is locked&lt;br /&gt;
in soft-realtime-mode, and no further variables can be created.&lt;br /&gt;
&lt;br /&gt;
Interfacing the variables are done through the following functions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
int setVariable (int id , int index, int value) Update a array in the data pool&lt;br /&gt;
int setArray (int id , int length, int ∗array) Update a array in the data pool&lt;br /&gt;
int setVariable (int id , int index, int value) Get a read variable from the data pool&lt;br /&gt;
int getWriteArray (int id, int index, int ∗array) Get a read variable from the data pool&lt;br /&gt;
int getReadVariable (int id, int index) Get a read variable from the data pool&lt;br /&gt;
int getReadArray (int id, int index, int ∗array) Get a read array from the data pool&lt;br /&gt;
int isUpdated (char dir, int id) Check if a variable is updated&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using this simple API, data can be transferred into the read database and out from the&lt;br /&gt;
read and write database. The id parameter is the variable id, that is returned when the&lt;br /&gt;
variable is created, and index is the array-index in the database. Check if variables are&lt;br /&gt;
updated is performed through the isUpdated() function.&lt;br /&gt;
&lt;br /&gt;
Other functions, that can be found in the RHD documentation, give the possibility of&lt;br /&gt;
interfacing the symboltables directly, but their use is highly discouraged. The API above&lt;br /&gt;
provide semaphore and boundary projection, and result in more safe and readable code.&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:Variable_database&amp;diff=330</id>
		<title>RHD:Variable database</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:Variable_database&amp;diff=330"/>
		<updated>2009-01-28T09:02:06Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The variable database deﬁnes the functionality of RHD. Upon initialization, all plug-in&lt;br /&gt;
modules create their needed I/O variables, and ﬁnally the database is locked when going&lt;br /&gt;
into soft/hard realtime.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
&lt;br /&gt;
The database itself, are based upon a symbol table and a data area. The symbol table&lt;br /&gt;
deﬁnes the static information regarding the variables and bookkeeping information. The&lt;br /&gt;
data area, contains the dynamic information, the actual data and it’s timestamp. The&lt;br /&gt;
needed memory is dynamically allocated, when variables are created. Figure 1 below,&lt;br /&gt;
show the internal structure of the variable database and the association between symbol&lt;br /&gt;
table and data area.&lt;br /&gt;
&lt;br /&gt;
Image to come...&lt;br /&gt;
&lt;br /&gt;
Figure 1: Structural overview of an element in the variable database&lt;br /&gt;
&lt;br /&gt;
Note, that a standard variable size of a 32-bit signed integer is selected. This decision&lt;br /&gt;
is made, to keep variables ”large enough” for most future applications, and the fact that&lt;br /&gt;
memory and bandwidth is not a dramatic issue on most modern platforms.&lt;br /&gt;
&lt;br /&gt;
Some discussion has concerned to include a type to the variable database, as it might&lt;br /&gt;
seem inefficient to represent text strings in 32-bit integers. A future enhancement of RHD&lt;br /&gt;
might supply the possibility of using other integer sizes, but so far the design decision is&lt;br /&gt;
to keep it simple with the highest ﬂexibility.&lt;br /&gt;
&lt;br /&gt;
Bidirectionality is obtained by using two separate symbol tables: a read and a write table.&lt;br /&gt;
Data read from sensors are fed into the read-table, and data from the client is received in&lt;br /&gt;
the write table.&lt;br /&gt;
&lt;br /&gt;
Each variable is supplied with a ”updated” ﬂag (see ﬁg 1). The ﬂag is used to implement&lt;br /&gt;
reactions to updated variables, and to determine what data should be exchanged with the&lt;br /&gt;
client.&lt;br /&gt;
&lt;br /&gt;
There might always be a need to know the exact time a variable was updated, so all&lt;br /&gt;
variables has a timestamp, that is set, every time a variable is updated. This makes&lt;br /&gt;
it possible to control timing with a much higher resolution than the fundamental RHD&lt;br /&gt;
scheduler period.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
The API is deﬁned in database.h. This API overview is not intended as a programming&lt;br /&gt;
reference, but just to give a feel of, how the database is interfaced.&lt;br /&gt;
Variable creation is done by the plug-ins using the function below:&lt;br /&gt;
int createVariable (char dir, char len, char ∗name) Add a variable array to the variable pool&lt;br /&gt;
The direction, dir, is either the ’r’ og ’w’ character, that determines in which symbol&lt;br /&gt;
table the variable is created. len assigns the number of elements in the variable array,&lt;br /&gt;
and the name parameter is a pointer to a text string, containing the desired name of the&lt;br /&gt;
variable. CreateVariable returns the id number of the variable, that is used to address&lt;br /&gt;
the data, when performing I/O. When initialization is completed, the database is locked&lt;br /&gt;
in soft-realtime-mode, and no further variables can be created.&lt;br /&gt;
&lt;br /&gt;
Interfacing the variables are done through the following functions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
int setVariable (int id , int index, int value) Update a array in the data pool&lt;br /&gt;
&lt;br /&gt;
int setArray (int id , int length, int ∗array) Update a array in the data pool&lt;br /&gt;
&lt;br /&gt;
int setVariable (int id , int index, int value) Get a read variable from the data pool&lt;br /&gt;
&lt;br /&gt;
int getWriteArray (int id, int index, int ∗array) Get a read variable from the data pool&lt;br /&gt;
&lt;br /&gt;
int getReadVariable (int id, int index) Get a read variable from the data pool&lt;br /&gt;
&lt;br /&gt;
int getReadArray (int id, int index, int ∗array) Get a read array from the data pool&lt;br /&gt;
&lt;br /&gt;
int isUpdated (char dir, int id) Check if a variable is updated&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using this simple API, data can be transferred into the read database and out from the&lt;br /&gt;
read and write database. The id parameter is the variable id, that is returned when the&lt;br /&gt;
variable is created, and index is the array-index in the database. Check if variables are&lt;br /&gt;
updated is performed through the isUpdated() function.&lt;br /&gt;
&lt;br /&gt;
Other functions, that can be found in the RHD documentation, give the possibility of&lt;br /&gt;
interfacing the symboltables directly, but their use is highly discouraged. The API above&lt;br /&gt;
provide semaphore and boundary projection, and result in more safe and readable code.&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:Variable_database&amp;diff=329</id>
		<title>RHD:Variable database</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:Variable_database&amp;diff=329"/>
		<updated>2009-01-28T08:59:51Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The variable database deﬁnes the functionality of RHD. Upon initialization, all plug-in&lt;br /&gt;
modules create their needed I/O variables, and ﬁnally the database is locked when going&lt;br /&gt;
into soft/hard realtime.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
&lt;br /&gt;
The database itself, are based upon a symbol table and a data area. The symbol table&lt;br /&gt;
deﬁnes the static information regarding the variables and bookkeeping information. The&lt;br /&gt;
data area, contains the dynamic information, the actual data and it’s timestamp. The&lt;br /&gt;
needed memory is dynamically allocated, when variables are created. Figure 1 below,&lt;br /&gt;
show the internal structure of the variable database and the association between symbol&lt;br /&gt;
table and data area.&lt;br /&gt;
&lt;br /&gt;
Image to come...&lt;br /&gt;
&lt;br /&gt;
Figure 1: Structural overview of an element in the variable database&lt;br /&gt;
&lt;br /&gt;
Note, that a standard variable size of a 32-bit signed integer is selected. This decision&lt;br /&gt;
is made, to keep variables ”large enough” for most future applications, and the fact that&lt;br /&gt;
memory and bandwidth is not a dramatic issue on most modern platforms.&lt;br /&gt;
&lt;br /&gt;
Some discussion has concerned to include a type to the variable database, as it might&lt;br /&gt;
seem inefficient to represent text strings in 32-bit integers. A future enhancement of RHD&lt;br /&gt;
might supply the possibility of using other integer sizes, but so far the design decision is&lt;br /&gt;
to keep it simple with the highest ﬂexibility.&lt;br /&gt;
&lt;br /&gt;
Bidirectionality is obtained by using two separate symbol tables: a read and a write table.&lt;br /&gt;
Data read from sensors are fed into the read-table, and data from the client is received in&lt;br /&gt;
the write table.&lt;br /&gt;
&lt;br /&gt;
Each variable is supplied with a ”updated” ﬂag (see ﬁg 1). The ﬂag is used to implement&lt;br /&gt;
reactions to updated variables, and to determine what data should be exchanged with the&lt;br /&gt;
client.&lt;br /&gt;
&lt;br /&gt;
There might always be a need to know the exact time a variable was updated, so all&lt;br /&gt;
variables has a timestamp, that is set, every time a variable is updated. This makes&lt;br /&gt;
it possible to control timing with a much higher resolution than the fundamental RHD&lt;br /&gt;
scheduler period.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
The API is deﬁned in database.h. This API overview is not intended as a programming&lt;br /&gt;
reference, but just to give a feel of, how the database is interfaced.&lt;br /&gt;
Variable creation is done by the plug-ins using the function below:&lt;br /&gt;
int createVariable (char dir, char len, char ∗name) Add a variable array to the variable pool&lt;br /&gt;
The direction, dir, is either the ’r’ og ’w’ character, that determines in which symbol&lt;br /&gt;
table the variable is created. len assigns the number of elements in the variable array,&lt;br /&gt;
and the name parameter is a pointer to a text string, containing the desired name of the&lt;br /&gt;
variable. CreateVariable returns the id number of the variable, that is used to address&lt;br /&gt;
the data, when performing I/O. When initialization is completed, the database is locked&lt;br /&gt;
in soft-realtime-mode, and no further variables can be created.&lt;br /&gt;
&lt;br /&gt;
Interfacing the variables are done through the following functions:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
int setVariable (int id , int index, int value) Update a array in the data pool&lt;br /&gt;
&lt;br /&gt;
int setArray (int id , int length, int ∗array) Update a array in the data pool&lt;br /&gt;
&lt;br /&gt;
int setVariable (int id , int index, int value) Get a read variable from the data pool&lt;br /&gt;
&lt;br /&gt;
int getWriteArray (int id, int index, int ∗array) Get a read variable from the data pool&lt;br /&gt;
&lt;br /&gt;
int getReadVariable (int id, int index) Get a read variable from the data pool&lt;br /&gt;
&lt;br /&gt;
int getReadArray (int id, int index, int ∗array) Get a read array from the data pool&lt;br /&gt;
&lt;br /&gt;
int isUpdated (char dir, int id) Check if a variable is updated&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using this simple API, data can be transferred into the read database and out from the&lt;br /&gt;
read and write database. The id parameter is the variable id, that is returned when the&lt;br /&gt;
variable is created, and index is the array-index in the database. Check if variables are&lt;br /&gt;
updated is performed through the isUpdated() function.&lt;br /&gt;
&lt;br /&gt;
Other functions, that can be found in the RHD documentation, give the possibility of&lt;br /&gt;
interfacing the symboltables directly, but their use is highly discouraged. The API above&lt;br /&gt;
provide semaphore and boundary projection, and result in more safe and readable code.&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:Variable_database&amp;diff=328</id>
		<title>RHD:Variable database</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:Variable_database&amp;diff=328"/>
		<updated>2009-01-28T08:58:09Z</updated>

		<summary type="html">&lt;p&gt;S021786: New page: The variable database deﬁnes the functionality of RHD. Upon initialization, all plug-in modules create their needed I/O variables, and ﬁnally the database is locked when going into sof...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The variable database deﬁnes the functionality of RHD. Upon initialization, all plug-in&lt;br /&gt;
modules create their needed I/O variables, and ﬁnally the database is locked when going&lt;br /&gt;
into soft/hard realtime.&lt;br /&gt;
&lt;br /&gt;
The database itself, are based upon a symbol table and a data area. The symbol table&lt;br /&gt;
deﬁnes the static information regarding the variables and bookkeeping information. The&lt;br /&gt;
data area, contains the dynamic information, the actual data and it’s timestamp. The&lt;br /&gt;
needed memory is dynamically allocated, when variables are created. Figure 1 below,&lt;br /&gt;
show the internal structure of the variable database and the association between symbol&lt;br /&gt;
table and data area.&lt;br /&gt;
&lt;br /&gt;
Image to come...&lt;br /&gt;
&lt;br /&gt;
Figure 1: Structural overview of an element in the variable database&lt;br /&gt;
&lt;br /&gt;
Note, that a standard variable size of a 32-bit signed integer is selected. This decision&lt;br /&gt;
is made, to keep variables ”large enough” for most future applications, and the fact that&lt;br /&gt;
memory and bandwidth is not a dramatic issue on most modern platforms.&lt;br /&gt;
&lt;br /&gt;
Some discussion has concerned to include a type to the variable database, as it might&lt;br /&gt;
seem ineﬃcient to represent text strings in 32-bit integers. A future enhancement of RHD&lt;br /&gt;
might supply the possibility of using other integer sizes, but so far the design decision is&lt;br /&gt;
to keep it simple with the highest ﬂexibility.&lt;br /&gt;
&lt;br /&gt;
Bidirectionality is obtained by using two separate symbol tables: a read and a write table.&lt;br /&gt;
Data read from sensors are fed into the read-table, and data from the client is received in&lt;br /&gt;
the write table.&lt;br /&gt;
&lt;br /&gt;
Each variable is supplied with a ”updated” ﬂag (see ﬁg 1). The ﬂag is used to implement&lt;br /&gt;
reactions to updated variables, and to determine what data should be exchanged with the&lt;br /&gt;
client.&lt;br /&gt;
&lt;br /&gt;
There might always be a need to know the exact time a variable was updated, so all&lt;br /&gt;
variables has a timestamp, that is set, every time a variable is updated. This makes&lt;br /&gt;
it possible to control timing with a much higher resolution than the fundamental RHD&lt;br /&gt;
scheduler period.&lt;br /&gt;
&lt;br /&gt;
The API is deﬁned in database.h. This API overview is not intended as a programming&lt;br /&gt;
reference, but just to give a feel of, how the database is interfaced.&lt;br /&gt;
Variable creation is done by the plug-ins using the function below:&lt;br /&gt;
int createVariable (char dir, char len, char ∗name) Add a variable array to the variable pool&lt;br /&gt;
The direction, dir, is either the ’r’ og ’w’ character, that determines in which symbol&lt;br /&gt;
table the variable is created. len assigns the number of elements in the variable array,&lt;br /&gt;
and the name parameter is a pointer to a text string, containing the desired name of the&lt;br /&gt;
variable. CreateVariable returns the id number of the variable, that is used to address&lt;br /&gt;
the data, when performing I/O. When initialization is completed, the database is locked&lt;br /&gt;
in soft-realtime-mode, and no further variables can be created.&lt;br /&gt;
&lt;br /&gt;
Interfacing the variables are done through the following functions:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
int setVariable (int id , int index, int value) Update a array in the data pool&lt;br /&gt;
int setArray (int id , int length, int ∗array) Update a array in the data pool&lt;br /&gt;
int setVariable (int id , int index, int value) Get a read variable from the data pool&lt;br /&gt;
int getWriteArray (int id, int index, int ∗array) Get a read variable from the data pool&lt;br /&gt;
int getReadVariable (int id, int index) Get a read variable from the data pool&lt;br /&gt;
int getReadArray (int id, int index, int ∗array) Get a read array from the data pool&lt;br /&gt;
int isUpdated (char dir, int id) Check if a variable is updated&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using this simple API, data can be transferred into the read database and out from the&lt;br /&gt;
read and write database. The id parameter is the variable id, that is returned when the&lt;br /&gt;
variable is created, and index is the array-index in the database. Check if variables are&lt;br /&gt;
updated is performed through the isUpdated() function.&lt;br /&gt;
&lt;br /&gt;
Other functions, that can be found in the RHD documentation, give the possibility of&lt;br /&gt;
interfacing the symboltables directly, but their use is highly discouraged. The API above&lt;br /&gt;
provide semaphore and boundary projection, and result in more safe and readable code.&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RFLEX_plugin&amp;diff=327</id>
		<title>RFLEX plugin</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RFLEX_plugin&amp;diff=327"/>
		<updated>2009-01-28T08:53:00Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As the Institute for Automation got a hand on an iRobot ATRV-Jr robot platform, we needed a plug-in to control the robot. The robot has a fully developed control framework built-in, the rFLEX, that provides odometry and sensors through a RS-232 connection.&lt;br /&gt;
&lt;br /&gt;
iRobot has moved focus towards developing consumer (vacuum) and military robots, so no documentation &#039;&#039;&#039;at all&#039;&#039;&#039; is available for the robot. Fortunately, Carnegie Mellon University (CMU) has drivers for the rFLEX in their Carnegie Mellon Robot Navigation Toolkit ([http://carmen.sourceforge.net, CARMEN]). This is actually also the base for the rFLEX drivers in Player/Stage framework. About half of the code is ported from [http://carmen.sourceforge.net, CARMEN] - Thank you guys!&lt;br /&gt;
&lt;br /&gt;
== The rFLEX system ==&lt;br /&gt;
&lt;br /&gt;
rFLEX provides a full interface to the robot sensors, and does somewhat of post-processing, such as odometry calculations and ultrasound processing. &lt;br /&gt;
&lt;br /&gt;
The intension of the interface is to create a flexible platform for all iRobot research robots. As we only had the ATRV-Jr robot for testing, the rFLEX plugin is kept as universal as possible, but bumpers and ultrasound sensors are mapped specifically for ATRV-Jr. &lt;br /&gt;
&lt;br /&gt;
Odometry is provided in a translation / rotation axis configuration. The system outputs position, velocity, acceleration and torque in both axes (i.e. forward speed and rotation speed)&lt;br /&gt;
&lt;br /&gt;
== XML Configuration ==&lt;br /&gt;
&lt;br /&gt;
Through the [[RHD]] XML configuration, it is possible to define parameters for the plug-in&lt;br /&gt;
&lt;br /&gt;
The default configuration is seen below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;rflex enable=&amp;quot;true&amp;quot; lib=&amp;quot;librflex.so.1&amp;quot; critical=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;serial port=&amp;quot;/dev/ttyUSB0&amp;quot; baudrate=&amp;quot;115200&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;odometry period=&amp;quot;100000&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;translation accel=&amp;quot;100000&amp;quot; torque=&amp;quot;30000&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;rotation accel=&amp;quot;100000&amp;quot; torque=&amp;quot;35000&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;bumperbrake default=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/rflex&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Configuration include serial port settings and default values for accelleration and torque in both translation and rotation axes. &lt;br /&gt;
&lt;br /&gt;
The odometry period sets, how often a odometry package is sampled to the serial bus. The value is in µs.&lt;br /&gt;
&lt;br /&gt;
The final parameter is the bumperbrake, that is described below.&lt;br /&gt;
&lt;br /&gt;
== Plug-in special features ==&lt;br /&gt;
&lt;br /&gt;
Normally, it is against [[RHD]] principles to assign too much robot functionality into the plug-ins. But as a safety feature, a brake feature is coupled to the bumpers of the robot.&lt;br /&gt;
&lt;br /&gt;
If the bumperbrake is enabled, the robot will enable it&#039;s brake, when bumpers is touched. The default setting is assigned in the XML configuration, but a write-variable makes it possible to en/disable the feature at runtime.&lt;br /&gt;
This makes the response-time as short as possible for emergency stop.&lt;br /&gt;
&lt;br /&gt;
== Plug-in variables ==&lt;br /&gt;
&lt;br /&gt;
Most of the plug-in functionality is described by the plug-ins it creates&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ rFLEX plugin variable table&lt;br /&gt;
|-&lt;br /&gt;
! Direction &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  !! Variable name &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;    !! Array contents &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;   !! Description&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| transvel || [vel] || Velocity of translation&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| transaccl || [accl] || Acceleration of translation&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| transtorque || [torque] || Torque of translation&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| transpos || [pos] || Position of translation (distance)&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| rotvel || [vel] || Velocity of rotation&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| rotaccl || [accl] || Acceleration of rotation&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| rottorque || [torque] || Torque of rotation&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| rotpos || [pos] || Position of rotation (bering)&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| sonar || [s0]..[s16] || Measurements of sonars (mapped 0-16, as on ATRV-Jr)&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| bumper || [front][rear] || Status of ARTV-Jr bumpers&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| brake || [brake] || Status of robot brake (updated at 1Hz)&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| battvoltage || [batt] || Raw mesurement of battery voltage (needs calibration and updated at 1Hz)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| cmdtransvel || [vel] || Desired velocity of translation (command)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| cmdtransaccl || [accl] || Max acceleration of translation (XML default used if = 0)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| cmdtranstorque || [torque] || Max torque of translation (XML default used if = 0)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| cmdrotvel || [vel] || Desired velocity of rotation (command)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| cmdrotaccl || [accl] || Max acceleration of rotation (XML default used if = 0)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| cmdrottorque || [torque] || Max torque of rotation (XML default used if = 0)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| usesonar || [enable] || Enable / disable ultrasound sonars (default off)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| cmdbrake || [brake] || Enable / disable robot brake (default off)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| bumperbrake || [enable] || Enable / disable bumperbrake (overrides default)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Using these variables, it is possible to control all functions on the ATRV-Jr robot... Enjoy&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:Plug-ins&amp;diff=326</id>
		<title>RHD:Plug-ins</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:Plug-ins&amp;diff=326"/>
		<updated>2009-01-28T08:51:06Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Some plug-ins were developed for RHD, enabling control of the AU SMR and the KVL HAKO robots using the framework.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Existing Plug-ins for RHD ==&lt;br /&gt;
* [[AUSerial plugin]] Configurable driver for the RS485 bus used on the SMR&lt;br /&gt;
* [[HakoCan plugin]]  Can-bus driver for controlling the automated Hako Tractor&lt;br /&gt;
* [[GPS plugin]] GPS module supporting classic NMEA serial GPS and the RTK GPS at KVL&lt;br /&gt;
* [[FOGyro plugin]] Driver for the Fibre Optic Gyro, from KVL&lt;br /&gt;
* [[Crossbow plugin]] Driver for the Crossbow IMU400 unit &lt;br /&gt;
* [[SMRDSerial plugin]] Wrapper for the old SMRD interface, used for testing on the SMR&lt;br /&gt;
* [[rFLEX plugin]] Driver for the iRobot rFLEX research robots platform&lt;br /&gt;
* [[RS232 Linesensor plugin]] Interface for the RS232-based SMR linesensor module&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD&amp;diff=325</id>
		<title>RHD</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD&amp;diff=325"/>
		<updated>2009-01-28T08:49:31Z</updated>

		<summary type="html">&lt;p&gt;S021786: /* News */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Disable TOC --&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- Main greeting frame --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;font-family:Verdana; font-size:16pt;color: #00008B; background: #f2f2f2;&amp;quot;|&lt;br /&gt;
&#039;&#039;&#039;Project page for Robot Hardware Daemon (RHD)&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
RHD is the realtime hardware abstraction layer, that is replacing SMRD (and it&#039;s devirates).Testing and implementations are in full progress, and within 2008 RHD will be the default realtime hardware interface of the RSE architecture.&amp;lt;br/&amp;gt;&lt;br /&gt;
RHD was developed in a special course at Automation, DTU Electro by Anders Billesø Beck in close cooperation with supervisor Nils A. Andersen. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Transparent 3- column table for RHD properties --&amp;gt;&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;lt;!-- RHD Features table --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background: #f2f2f2;border: 1px solid #aaa; &amp;quot;|&lt;br /&gt;
===Project details===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[RHD:Features]]&lt;br /&gt;
* [[RHD:Downloads]]&lt;br /&gt;
* [[RHD:Changelog and roadmap]]&lt;br /&gt;
* [[RHD:Plug-ins]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;lt;!-- RHD Documentationtable --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background: #f2f2f2;border: 1px solid #aaa;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===Documentation===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[RHD:Variable database]]&lt;br /&gt;
* [[RHD:TCP/IP Server]] &lt;br /&gt;
* [[RHD:Realtime Scheduler]]&lt;br /&gt;
* [[RHD:Plug-in architecture]]&lt;br /&gt;
* Project report [[Media:Rhd.pdf]]&lt;br /&gt;
* [[RHD:Code documentation]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;lt;!-- RHD News table --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background: #f2f2f2;border: 1px solid #aaa;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===News===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{{:RHD:News}}&lt;br /&gt;
&lt;br /&gt;
See all news [[RHD:News]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD&amp;diff=324</id>
		<title>RHD</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD&amp;diff=324"/>
		<updated>2009-01-28T08:49:21Z</updated>

		<summary type="html">&lt;p&gt;S021786: /* News */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Disable TOC --&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- Main greeting frame --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;font-family:Verdana; font-size:16pt;color: #00008B; background: #f2f2f2;&amp;quot;|&lt;br /&gt;
&#039;&#039;&#039;Project page for Robot Hardware Daemon (RHD)&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
RHD is the realtime hardware abstraction layer, that is replacing SMRD (and it&#039;s devirates).Testing and implementations are in full progress, and within 2008 RHD will be the default realtime hardware interface of the RSE architecture.&amp;lt;br/&amp;gt;&lt;br /&gt;
RHD was developed in a special course at Automation, DTU Electro by Anders Billesø Beck in close cooperation with supervisor Nils A. Andersen. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Transparent 3- column table for RHD properties --&amp;gt;&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;lt;!-- RHD Features table --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background: #f2f2f2;border: 1px solid #aaa; &amp;quot;|&lt;br /&gt;
===Project details===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[RHD:Features]]&lt;br /&gt;
* [[RHD:Downloads]]&lt;br /&gt;
* [[RHD:Changelog and roadmap]]&lt;br /&gt;
* [[RHD:Plug-ins]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;lt;!-- RHD Documentationtable --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background: #f2f2f2;border: 1px solid #aaa;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===Documentation===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[RHD:Variable database]]&lt;br /&gt;
* [[RHD:TCP/IP Server]] &lt;br /&gt;
* [[RHD:Realtime Scheduler]]&lt;br /&gt;
* [[RHD:Plug-in architecture]]&lt;br /&gt;
* Project report [[Media:Rhd.pdf]]&lt;br /&gt;
* [[RHD:Code documentation]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;lt;!-- RHD News table --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background: #f2f2f2;border: 1px solid #aaa;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===News===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{{:RHD:News}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See all news [[RHD:News]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:Features&amp;diff=323</id>
		<title>RHD:Features</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:Features&amp;diff=323"/>
		<updated>2009-01-28T08:48:25Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[RHD]] is developed as a flexible hardware abstraction layer framework, that could be used in any application where interaction between a high-level control program and hardware devices are needed in real-time.&lt;br /&gt;
&lt;br /&gt;
The main philosophy of [[RHD]] is the idea of a distributed variable database, making all communication variable oriented. A plug-in structure makes it simple to write interfaces to new hardware.&lt;br /&gt;
&lt;br /&gt;
== Feature list ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Soft and hard real-time operation possible&lt;br /&gt;
** Linux or RTAI scheduling support&lt;br /&gt;
** Fixed and accurate timebase&lt;br /&gt;
* Two-way variable database&lt;br /&gt;
** 32-bit signed database variables&lt;br /&gt;
** Timestamps for all variable updated&lt;br /&gt;
* TCP / IP Socket interface&lt;br /&gt;
** Only one write-client accepted (first in, first access)&lt;br /&gt;
** Theoretically up to 256 read-clients&lt;br /&gt;
** Low communication overhead in protocol&lt;br /&gt;
* Plug-in interface with a range of plugins avalible (see [[RHD:Plug-ins]])&lt;br /&gt;
** Fast and efficient development of interfaces for new hardware&lt;br /&gt;
** Easy plug-in updates using shared libraries&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:Features&amp;diff=322</id>
		<title>RHD:Features</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:Features&amp;diff=322"/>
		<updated>2009-01-28T08:47:52Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;RHD is developed as a flexible hardware abstraction layer framework, that could be used in any application where interaction between a high-level control program and hardware devices are needed in real-time.&lt;br /&gt;
&lt;br /&gt;
The main philosophy of RHD is the idea of a distributed variable database, making all communication variable oriented. A plug-in structure makes it simple to write interfaces to new hardware.&lt;br /&gt;
&lt;br /&gt;
== Feature list ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Soft and hard real-time operation possible&lt;br /&gt;
** Linux or RTAI scheduling support&lt;br /&gt;
** Fixed and accurate timebase&lt;br /&gt;
* Two-way variable database&lt;br /&gt;
** 32-bit signed database variables&lt;br /&gt;
** Timestamps for all variable updated&lt;br /&gt;
* TCP / IP Socket interface&lt;br /&gt;
** Only one write-client accepted (first in, first access)&lt;br /&gt;
** Theoretically up to 256 read-clients&lt;br /&gt;
** Low communication overhead in protocol&lt;br /&gt;
* Plug-in interface with a range of plugins avalible (see [[RHD:Plug-ins]])&lt;br /&gt;
** Fast and efficient development of interfaces for new hardware&lt;br /&gt;
** Easy plug-in updates using shared libraries&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:Changelog_and_roadmap&amp;diff=321</id>
		<title>RHD:Changelog and roadmap</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:Changelog_and_roadmap&amp;diff=321"/>
		<updated>2009-01-28T08:46:43Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;RHD is a project in ongoing development.&lt;br /&gt;
&lt;br /&gt;
This page will present the versions in development, and the roadmap for future releases. Files for these releases can be downloaded from the [[RHD:Downloads]] page&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Current stable release ==&lt;br /&gt;
This version, is the recommended version for stable operation. This version should be found on the robots runnig the RSE flash&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.0 (trunk)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This version will implement the plug-in architecture, this is now the official way to write new hardware modules for RHD.&lt;br /&gt;
* Major change: Plug-in architecture implementation (AB: done)&lt;br /&gt;
* Build envoriment updated to handle shared libs and output structure (AB: done)&lt;br /&gt;
* New ncurses client application for testing (AB: done)&lt;br /&gt;
* Final testing (AB + LVM: in progress)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Versions in development ==&lt;br /&gt;
The list below, feature the current development versions of RHD. To obtain a version of RHD, that support new features, pick a version below. Remember, that this versions are not considered stable, before they are released. Requested features will be found in these versions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.1 (somewhat in progress)&#039;&#039;&#039;&lt;br /&gt;
* Improvement of client-sever communication to all variable data is exchanged on connect.&lt;br /&gt;
* Possibility to configure for soft-realtime through configuration. To run simulator in non-root environment. &lt;br /&gt;
* Add stage 2.1 simulator to package (LVM: in progress)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Previous releases ==&lt;br /&gt;
&lt;br /&gt;
Previous releases can be found here, with their change logs. Only use versions from this list, if some needed functions are broken in newer releases (and please inform the author if that is the case!) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1 (release tag)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Formailzed version numbering and first development version, using RSE SVN (AB:done)&lt;br /&gt;
* Removed usleep(100) bug in GPS module (AB:done)&lt;br /&gt;
* Implement NAA HakoCan functionality into main RHD branch (AB:done)&lt;br /&gt;
* Added freerunning mode to scheduler to let simulator control time (AB:done)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.0&#039;&#039;&#039;&lt;br /&gt;
* AuSerial integrated in test version&lt;br /&gt;
* HakoCan added in test version&lt;br /&gt;
* Variable database API optimized&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:Changelog_and_roadmap&amp;diff=320</id>
		<title>RHD:Changelog and roadmap</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:Changelog_and_roadmap&amp;diff=320"/>
		<updated>2009-01-27T13:50:41Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;RHD is a project in ongoing development.&lt;br /&gt;
&lt;br /&gt;
This page will present the versions in development, and the roadmap for future releases. Files for these releases can be downloaded from the [[RHD:Downloads]] page&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Current stable release ==&lt;br /&gt;
This version, is the recommended version for stable operation. This version should be found on the robots runnig the RSE flash&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.0 (trunk)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This version will implement the plug-in architecture, that will be the official way to write new hardware modules for RHD.&lt;br /&gt;
* Major change: Plug-in architecture implementation (AB: done)&lt;br /&gt;
* Build envoriment updated to handle shared libs and output structure (AB: done)&lt;br /&gt;
* New ncurses client application for testing (AB: done)&lt;br /&gt;
* Final testing (AB: in progress)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Versions in development ==&lt;br /&gt;
The list below, feature the current development versions of RHD. To obtain a version of RHD, that support new features, pick a version below. Remember, that this versions are not considered stable, before they are released. Requested features will be found in these versions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.1 (somewhat in progress)&#039;&#039;&#039;&lt;br /&gt;
* Improvement of client-sever communication to all variable data is exchanged on connect.&lt;br /&gt;
* Possibility to configure for soft-realtime through configuration. To run simulator in non-root enviorment. &lt;br /&gt;
* Add stage 2.1 simulator to package (LVM: in progress)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Previous releases ==&lt;br /&gt;
&lt;br /&gt;
Previous releases can be found here, with their change logs. Only use versions from this list, if some needed functions are broken in newer releases (and please inform the author if that is the case!) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1 (release tag)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Formailzed version numbering and first development version, using RSE SVN (AB:done)&lt;br /&gt;
* Removed usleep(100) bug in GPS module (AB:done)&lt;br /&gt;
* Implement NAA HakoCan functionality into main RHD branch (AB:done)&lt;br /&gt;
* Added freerunning mode to scheduler to let simulator control time (AB:done)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.0&#039;&#039;&#039;&lt;br /&gt;
* AuSerial integrated in test version&lt;br /&gt;
* HakoCan added in test version&lt;br /&gt;
* Variable database API optimized&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:Changelog_and_roadmap&amp;diff=319</id>
		<title>RHD:Changelog and roadmap</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:Changelog_and_roadmap&amp;diff=319"/>
		<updated>2009-01-27T13:50:11Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;RHD is a project in ongoing development.&lt;br /&gt;
&lt;br /&gt;
This page will present the versions in development, and the roadmap for future releases. Files for these releases can be downloaded from the [[RHD:Downloads]] page&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Current stable release ==&lt;br /&gt;
This version, is the recommended version for stable operation. This version should be found on the robots runnig the RSE flash&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.0 (trunk)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This version will implement the plug-in architecture, that will be the official way to write new hardware modules for RHD.&lt;br /&gt;
* Major change: Plug-in architecture implementation (AB: done)&lt;br /&gt;
* Build envoriment updated to handle shared libs and output structure (AB: done)&lt;br /&gt;
* New ncurses client application for testing (AB: done)&lt;br /&gt;
* Final testing (AB: in progress)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Versions in development ==&lt;br /&gt;
The list below, feature the current development versions of RHD. To obtain a version of RHD, that support new features, pick a version below. Remember, that this versions are not considered stable, before they are released. Requested features will be found in these versions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.1 (planned)&#039;&#039;&#039;&lt;br /&gt;
* Improvement of client-sever communication to all variable data is exchanged on connect.&lt;br /&gt;
* Possibility to configure for soft-realtime through configuration. To run simulator in non-root enviorment. &lt;br /&gt;
* Add stage 2.1 simulator to package (LVM: in progress)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Previous releases ==&lt;br /&gt;
&lt;br /&gt;
Previous releases can be found here, with their change logs. Only use versions from this list, if some needed functions are broken in newer releases (and please inform the author if that is the case!) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1 (release tag)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Formailzed version numbering and first development version, using RSE SVN (AB:done)&lt;br /&gt;
* Removed usleep(100) bug in GPS module (AB:done)&lt;br /&gt;
* Implement NAA HakoCan functionality into main RHD branch (AB:done)&lt;br /&gt;
* Added freerunning mode to scheduler to let simulator control time (AB:done)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.0&#039;&#039;&#039;&lt;br /&gt;
* AuSerial integrated in test version&lt;br /&gt;
* HakoCan added in test version&lt;br /&gt;
* Variable database API optimized&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:News&amp;diff=318</id>
		<title>RHD:News</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:News&amp;diff=318"/>
		<updated>2009-01-27T13:46:10Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
News for the [[RHD]] project&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- Lines to be included on the RHD frontpage --&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;07 January 2009:&#039;&#039;&#039; RHD 2.0 is now considered stable and has been moved to svn trunk. Version 1.1 is still avaliable through svn tags, however it is deprecated.&lt;br /&gt;
* &#039;&#039;&#039;29 September 2008:&#039;&#039;&#039; rFLEX plug-in is completed and ready for use (see doc here [[rFLEX plugin]])&lt;br /&gt;
* &#039;&#039;&#039;29 September 2008:&#039;&#039;&#039; RHD 2.0 is in it&#039;s final testing state&lt;br /&gt;
* &#039;&#039;&#039;18 September 2008:&#039;&#039;&#039; RHD 2.0 work started and RHD project report online&lt;br /&gt;
* &#039;&#039;&#039;21 July 2008:&#039;&#039;&#039; Development roadmap added&lt;br /&gt;
* &#039;&#039;&#039;29 June 2008:&#039;&#039;&#039; RHD Wiki page online (still no info though)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Older news that does not go on the front page --&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:News&amp;diff=317</id>
		<title>RHD:News</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:News&amp;diff=317"/>
		<updated>2009-01-27T13:45:35Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
News for the [[RHD]] project&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- Lines to be included on the RHD frontpage --&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;07 January 2009:&#039;&#039;&#039; RHD 2.0 is now considered stable and has been moved to svn trunk. Version 1.3 is still avaliable through svn tags, however it is deprecated.&lt;br /&gt;
* &#039;&#039;&#039;29 September 2008:&#039;&#039;&#039; rFLEX plug-in is completed and ready for use (see doc here [[rFLEX plugin]])&lt;br /&gt;
* &#039;&#039;&#039;29 September 2008:&#039;&#039;&#039; RHD 2.0 is in it&#039;s final testing state&lt;br /&gt;
* &#039;&#039;&#039;18 September 2008:&#039;&#039;&#039; RHD 2.0 work started and RHD project report online&lt;br /&gt;
* &#039;&#039;&#039;21 July 2008:&#039;&#039;&#039; Development roadmap added&lt;br /&gt;
* &#039;&#039;&#039;29 June 2008:&#039;&#039;&#039; RHD Wiki page online (still no info though)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Older news that does not go on the front page --&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RFLEX_plugin&amp;diff=243</id>
		<title>RFLEX plugin</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RFLEX_plugin&amp;diff=243"/>
		<updated>2008-09-30T11:05:07Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As the Institute for Automation got a hand on an iRobot ATRV-Jr robot platform, we needed a plug-in to control the robot. The robot has a fully developed control framework built-in, the rFLEX, that provides odometry and sensors through a RS-232 connection.&lt;br /&gt;
&lt;br /&gt;
iRobot has moved focus towards developing consumer (vacuum) and military robots, so no documentation &#039;&#039;&#039;at all&#039;&#039;&#039; is available for the robot. Fortunately, Carnegie Mellon University (CMU) has drivers for the rFLEX in their Carnegie Mellon Robot Navigation Toolkit ([http://carmen.sourceforge.net, CARMEN]). This is actually also the base for the rFLEX drivers in Player/Stage framework. About half of the code is ported from [http://carmen.sourceforge.net, CARMEN] - Thank you guys!&lt;br /&gt;
&lt;br /&gt;
== The rFLEX system ==&lt;br /&gt;
&lt;br /&gt;
rFLEX provides a full interface to the robot sensors, and does somewhat of post-processing, such as odometry calculations and ultrasound processing. &lt;br /&gt;
&lt;br /&gt;
The intension of the interface is to create a flexible platform for all iRobot research robots. As we only had the ATRV-Jr robot for testing, the rFLEX plugin is kept as universal as possible, but bumpers and ultrasound senaors are mapped specifically for ATRV-Jr. &lt;br /&gt;
&lt;br /&gt;
Odometry is provided in a translation / rotation axis configuration. The system outputs position, velocity, accelleration and torque in both axes (i.e. forward speed and rotation speed)&lt;br /&gt;
&lt;br /&gt;
== XML Configuration ==&lt;br /&gt;
&lt;br /&gt;
Through the RHD XML configuration, it is possible to define parameters for the plug-in&lt;br /&gt;
&lt;br /&gt;
The default configuration is seen below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;rflex enable=&amp;quot;true&amp;quot; lib=&amp;quot;librflex.so.1&amp;quot; critical=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;serial port=&amp;quot;/dev/ttyUSB0&amp;quot; baudrate=&amp;quot;115200&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;odometry period=&amp;quot;100000&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;translation accel=&amp;quot;100000&amp;quot; torque=&amp;quot;30000&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;rotation accel=&amp;quot;100000&amp;quot; torque=&amp;quot;35000&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;bumperbrake default=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/rflex&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Configuration include serial port settings and default values for accelleration and torque in both translation and rotation axes. &lt;br /&gt;
&lt;br /&gt;
The odometry period sets, how often a odometry package is sampled to the serial bus. The value is in µs.&lt;br /&gt;
&lt;br /&gt;
The final parameter is the bumperbrake, that is described below.&lt;br /&gt;
&lt;br /&gt;
== Plug-in special features ==&lt;br /&gt;
&lt;br /&gt;
Normally, it is against RHD principles to assign too much robot functionality into the plug-ins. But as a safety feature, a brake feature is coupled to the bumpers of the robot.&lt;br /&gt;
&lt;br /&gt;
If the bumperbrake is enabled, the robot will enable it&#039;s brake, when bumpers is touched. The default setting is assigned in the XML configuration, but a write-variable makes it possible to en/disable the feature at runtime.&lt;br /&gt;
This makes the response-time as short as possible for emergency stop.&lt;br /&gt;
&lt;br /&gt;
== Plug-in variables ==&lt;br /&gt;
&lt;br /&gt;
Most of the plug-in functionality is described by the plug-ins it creates&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ rFLEX plugin variable table&lt;br /&gt;
|-&lt;br /&gt;
! Direction &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  !! Variable name &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;    !! Array contents &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;   !! Description&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| transvel || [vel] || Velocity of translation&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| transaccl || [accl] || Acceleration of translation&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| transtorque || [torque] || Torque of translation&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| transpos || [pos] || Position of translation (distance)&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| rotvel || [vel] || Velocity of rotation&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| rotaccl || [accl] || Acceleration of rotation&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| rottorque || [torque] || Torque of rotation&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| rotpos || [pos] || Position of rotation (bering)&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| sonar || [s0]..[s16] || Measurements of sonars (mapped 0-16, as on ATRV-Jr)&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| bumper || [front][rear] || Status of ARTV-Jr bumpers&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| brake || [brake] || Status of robot brake (updated at 1Hz)&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| battvoltage || [batt] || Raw mesurement of battery voltage (needs calibration and updated at 1Hz)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| cmdtransvel || [vel] || Desired velocity of translation (command)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| cmdtransaccl || [accl] || Max acceleration of translation (XML default used if = 0)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| cmdtranstorque || [torque] || Max torque of translation (XML default used if = 0)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| cmdrotvel || [vel] || Desired velocity of rotation (command)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| cmdrotaccl || [accl] || Max acceleration of rotation (XML default used if = 0)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| cmdrottorque || [torque] || Max torque of rotation (XML default used if = 0)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| usesonar || [enable] || Enable / disable ultrasound sonars (default off)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| cmdbrake || [brake] || Enable / disable robot brake (default off)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| bumperbrake || [enable] || Enable / disable bumperbrake (overrides default)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Using these variables, it is possible to control all functions on the ATRV-Jr robot... Enjoy&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:Changelog_and_roadmap&amp;diff=239</id>
		<title>RHD:Changelog and roadmap</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:Changelog_and_roadmap&amp;diff=239"/>
		<updated>2008-09-29T13:58:33Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;RHD is a project in ongoing development.&lt;br /&gt;
&lt;br /&gt;
This page will present the versions in development, and the roadmap for future releases. Files for these releases can be downloaded from the [[RHD:Downloads]] page&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Current stable release ==&lt;br /&gt;
This version, is the recomended version for stable operation. This version should be found on the robots runnig the RSE flash&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.0&#039;&#039;&#039;&lt;br /&gt;
* AuSerial integrated in test version&lt;br /&gt;
* HakoCan added in test version&lt;br /&gt;
* Variable database API optimized&lt;br /&gt;
&lt;br /&gt;
== Versions in development ==&lt;br /&gt;
The list below, feature the current development versions of RHD. To obtain a version of RHD, that support new features, pick a version below. Remember, that this versions are not considered stable, before they are released. Requested features will be found in these versions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1 (trunk)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Formailzed version numbering and first development version, using RSE SVN (AB:done)&lt;br /&gt;
* Removed usleep(100) bug in GPS module (AB:done)&lt;br /&gt;
* Implement NAA HakoCan functionality into main RHD branch (pending)&lt;br /&gt;
* Added freerunning mode to scheduler to let simulator control time (AB:done)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.0 (branch)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This version will implement the plug-in architecture, that will be the official way to write new hardware modules for RHD.&lt;br /&gt;
* Major change: Plug-in architecture implementation (AB: done)&lt;br /&gt;
* Build envoriment updated to handle shared libs and output structure (AB: done)&lt;br /&gt;
* New ncurses client application for testing (AB: done)&lt;br /&gt;
* Final testing (pending)&lt;br /&gt;
&lt;br /&gt;
== Previous releases ==&lt;br /&gt;
&lt;br /&gt;
Previous releases can be found here, with their change logs. Only use versions from this list, if some needed functions are broken in newer releases (and please inform the author if that is the case!) &lt;br /&gt;
&lt;br /&gt;
The list is empty so far...&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:Changelog_and_roadmap&amp;diff=238</id>
		<title>RHD:Changelog and roadmap</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:Changelog_and_roadmap&amp;diff=238"/>
		<updated>2008-09-29T13:57:41Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;RHD is a project in ongoing development.&lt;br /&gt;
&lt;br /&gt;
This page will present the versions in development, and the roadmap for future releases. Files for these releases can be downloaded from the [[RHD:Downloads]] page&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Current stable release ==&lt;br /&gt;
This version, is the recomended version for stable operation. This version should be found on the robots runnig the RSE flash&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.0&#039;&#039;&#039;&lt;br /&gt;
* AuSerial integrated in test version&lt;br /&gt;
* HakoCan added in test version&lt;br /&gt;
* Variable database API optimized&lt;br /&gt;
&lt;br /&gt;
== Versions in development ==&lt;br /&gt;
The list below, feature the current development versions of RHD. To obtain a version of RHD, that support new features, pick a version below. Remember, that this versions are not considered stable, before they are released. Requested features will be found in these versions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1 (trunk)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Formailzed version numbering and first development version, using RSE SVN (AB:done)&lt;br /&gt;
* Removed usleep(100) bug in GPS module (AB:done)&lt;br /&gt;
* Implement NAA HakoCan functionality into main RHD branch (pending)&lt;br /&gt;
* Added freerunning mode to scheduler to let simulator control time (AB:done)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.0 (branch)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This version will implement the plug-in architecture, that will be the official way to write new hardware modules for RHD.&lt;br /&gt;
* Major change: Plug-in architecture implementation (AB: done)&lt;br /&gt;
* Build envoriment updated to handle shared libs and output structure (AB: done)&lt;br /&gt;
* Final testing (pending)&lt;br /&gt;
&lt;br /&gt;
== Previous releases ==&lt;br /&gt;
&lt;br /&gt;
Previous releases can be found here, with their change logs. Only use versions from this list, if some needed functions are broken in newer releases (and please inform the author if that is the case!) &lt;br /&gt;
&lt;br /&gt;
The list is empty so far...&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:News&amp;diff=237</id>
		<title>RHD:News</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:News&amp;diff=237"/>
		<updated>2008-09-29T13:56:39Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
News for the [[RHD]] project&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- Lines to be included on the RHD frontpage --&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;29 September 2008:&#039;&#039;&#039; rFLEX plug-in is completed and ready for use (see doc here [[rFLEX plugin]])&lt;br /&gt;
* &#039;&#039;&#039;29 September 2008:&#039;&#039;&#039; RHD 2.0 is in it&#039;s final testing state&lt;br /&gt;
* &#039;&#039;&#039;18 September 2008:&#039;&#039;&#039; RHD 2.0 work started and RHD project report online&lt;br /&gt;
* &#039;&#039;&#039;21 July 2008:&#039;&#039;&#039; Development roadmap added&lt;br /&gt;
* &#039;&#039;&#039;29 June 2008:&#039;&#039;&#039; RHD Wiki page online (still no info though)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Older news that does not go on the front page --&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:News&amp;diff=236</id>
		<title>RHD:News</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:News&amp;diff=236"/>
		<updated>2008-09-29T13:56:14Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
News for the [[RHD]] project&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- Lines to be included on the RHD frontpage --&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;29 September 2008&#039;&#039;&#039; rFLEX plug-in is completed and ready for use (see doc here [[rFLEX plugin]])&lt;br /&gt;
* &#039;&#039;&#039;29 September 2008&#039;&#039;&#039; RHD 2.0 is in it&#039;s final testing state&lt;br /&gt;
* &#039;&#039;&#039;18 September 2008:&#039;&#039;&#039; RHD 2.0 work started and RHD project report online&lt;br /&gt;
* &#039;&#039;&#039;21 July 2008:&#039;&#039;&#039; Development roadmap added&lt;br /&gt;
* &#039;&#039;&#039;29 June 2008:&#039;&#039;&#039; RHD Wiki page online (still no info though)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Older news that does not go on the front page --&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RFLEX_plugin&amp;diff=235</id>
		<title>RFLEX plugin</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RFLEX_plugin&amp;diff=235"/>
		<updated>2008-09-29T13:54:39Z</updated>

		<summary type="html">&lt;p&gt;S021786: rFLEX plugin description final&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As the Institute for Automation got a hand on an iRobot ATRV-Jr robot platform, we needed a plug-in to control the robot. The robot has a fully developed control framework built-in, the rFLEX, that provides odometry and sensors through a RS-232 connection.&lt;br /&gt;
&lt;br /&gt;
iRobot has moved focus towards developing consumer (vacuum) and military robots, so no documentation &#039;&#039;&#039;at all&#039;&#039;&#039; is available for the robot. Fortunately, Carnegie Mellon University (CMU) has drivers for the rFLEX in their Carnegie Mellon Robot Navigation Toolkit ([http://carmen.sourceforge.net, CARMEN]). This is actually also the base for the rFLEX drivers in Player/Stage framework. About half of the code is ported from [http://carmen.sourceforge.net, CARMEN] - Thank you guys!&lt;br /&gt;
&lt;br /&gt;
== The rFLEX system ==&lt;br /&gt;
&lt;br /&gt;
rFLEX provides a full interface to the robot sensors, and does somewhat of post-processing, such as odometry calculations and ultrasound processing. &lt;br /&gt;
&lt;br /&gt;
The intension of the interface is to create a flexible platform for all iRobot research robots. As we only had the ATRV-Jr robot for testing, the rFLEX plugin is kept as universal as possible, but bumpers and ultrasound senaors are mapped specifically for ATRV-Jr. &lt;br /&gt;
&lt;br /&gt;
Odometry is provided in a translation / rotation axis configuration. The system outputs position, velocity, accelleration and torque in both axes (i.e. forward speed and rotation speed)&lt;br /&gt;
&lt;br /&gt;
== XML Configuration ==&lt;br /&gt;
&lt;br /&gt;
Through the RHD XML configuration, it is possible to define parameters for the plug-in&lt;br /&gt;
&lt;br /&gt;
The default configuration is seen below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;rflex enable=&amp;quot;true&amp;quot; lib=&amp;quot;librflex.so.1&amp;quot; critical=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;serial port=&amp;quot;/dev/ttyUSB0&amp;quot; baudrate=&amp;quot;115200&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;odometry period=&amp;quot;100000&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;translation accel=&amp;quot;100000&amp;quot; torque=&amp;quot;30000&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;rotation accel=&amp;quot;100000&amp;quot; torque=&amp;quot;35000&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;bumperbrake default=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/rflex&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Configuration include serial port settings and default values for accelleration and torque in both translation and rotation axes. &lt;br /&gt;
&lt;br /&gt;
The odometry period sets, how often a odometry package is sampled to the serial bus. The value is in µs.&lt;br /&gt;
&lt;br /&gt;
The final parameter is the bumperbrake, that is described below.&lt;br /&gt;
&lt;br /&gt;
== Plug-in special features ==&lt;br /&gt;
&lt;br /&gt;
Normally, it is against RHD principles to assign too much robot functionality into the plug-ins. But as a safety feature, a brake feature is coupled to the bumpers of the robot.&lt;br /&gt;
&lt;br /&gt;
If the bumperbrake is enabled, the robot will enable it&#039;s brake, when bumpers is touched. The default setting is assigned in the XML configuration, but a write-variable makes it possible to en/disable the feature at runtime.&lt;br /&gt;
This makes the response-time as short as possible for emergency stop.&lt;br /&gt;
&lt;br /&gt;
== Plug-in variables ==&lt;br /&gt;
&lt;br /&gt;
Most of the plug-in functionality is described by the plug-ins it creates&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ rFLEX plugin variable table&lt;br /&gt;
|-&lt;br /&gt;
! Direction &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;  !! Variable name &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;    !! Array contents &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;   !! Description&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| transvel || [vel] || Velocity of translation&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| transaccl || [accl] || Acceleration of translation&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| transtorque || [torque] || Torque of translation&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| transposition || [pos] || Position of translation (distance)&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| rotvel || [vel] || Velocity of rotation&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| rotaccl || [accl] || Acceleration of rotation&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| rottorque || [torque] || Torque of rotation&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| rotposition || [pos] || Position of rotation (bering)&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| sonar || [s0]..[s16] || Measurements of sonars (mapped 0-16, as on ATRV-Jr)&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| bumper || [front][rear] || Status of ARTV-Jr bumpers&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| brake || [brake] || Status of robot brake (updated at 1Hz)&lt;br /&gt;
|-&lt;br /&gt;
! r&lt;br /&gt;
| battvoltage || [batt] || Raw mesurement of battery voltage (needs calibration and updated at 1Hz)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| cmdtransvel || [vel] || Desired velocity of translation (command)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| transaccl || [accl] || Max acceleration of translation (XML default used if = 0)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| transtorque || [torque] || Max torque of translation (XML default used if = 0)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| rotvel || [vel] || Desired velocity of rotation (command)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| rotaccl || [accl] || Max acceleration of rotation (XML default used if = 0)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| rottorque || [torque] || Max torque of rotation (XML default used if = 0)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| usesonar || [enable] || Enable / disable ultrasound sonars (default off)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| cmdbrake || [brake] || Enable / disable robot brake (default off)&lt;br /&gt;
|-&lt;br /&gt;
! w&lt;br /&gt;
| bumperbrake || [enable] || Enable / disable bumperbrake (overrides default)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Using these variables, it is possible to control all functions on the ATRV-Jr robot... Enjoy&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:Plug-ins&amp;diff=232</id>
		<title>RHD:Plug-ins</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:Plug-ins&amp;diff=232"/>
		<updated>2008-09-29T12:40:58Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Some plug-ins were developed for RHD, enabling control of the AU SMR and the KVL HAKO robots using the framework.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Existing Plug-ins for RHD ==&lt;br /&gt;
* [[AUSerial plugin]] Configurable driver for the RS485 bus used on the SMR&lt;br /&gt;
* [[HakoCan plugin]]  Can-bus driver for controlling the automated Hako Tractor&lt;br /&gt;
* [[GPS plugin]] GPS module supporting classic NMEA serial GPS and the RTK GPS at KVL&lt;br /&gt;
* [[FOGyro plugin]] Driver for the Fibre Optic Gyro, from KVL&lt;br /&gt;
* [[Crossbow plugin]] Driver for the Crossbow IMU400 unit &lt;br /&gt;
* [[SMRDSerial plugin]] Wrapper for the old SMRD interface, used for testing on the SMR&lt;br /&gt;
* [[rFLEX plugin]] Driver for the iRobot rFLEX research robots platform&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD&amp;diff=231</id>
		<title>RHD</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD&amp;diff=231"/>
		<updated>2008-09-29T12:38:29Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Disable TOC --&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- Main greeting frame --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;font-family:Verdana; font-size:16pt;color: #00008B; background: #f2f2f2;&amp;quot;|&lt;br /&gt;
&#039;&#039;&#039;Project page for Robot Hardware Daemon (RHD)&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
RHD is the realtime hardware abstraction layer, that is replacing SMRD (and it&#039;s devirates).Testing and implementations are in full progress, and within 2008 RHD will be the default realtime hardware interface of the RSE architecture.&amp;lt;br/&amp;gt;&lt;br /&gt;
RHD was developed in a special course at Automation, DTU Electro by Anders Billesø Beck in close cooperation with supervisor Nils A. Andersen. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Transparent 3- column table for RHD properties --&amp;gt;&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;lt;!-- RHD Features table --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background: #f2f2f2;border: 1px solid #aaa; &amp;quot;|&lt;br /&gt;
===Project details===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[RHD:Features]]&lt;br /&gt;
* [[RHD:Downloads]]&lt;br /&gt;
* [[RHD:Changelog and roadmap]]&lt;br /&gt;
* [[RHD:Plug-ins]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;lt;!-- RHD Documentationtable --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background: #f2f2f2;border: 1px solid #aaa;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===Documentation===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[RHD:Variable database]]&lt;br /&gt;
* [[RHD:TCP/IP Server]] &lt;br /&gt;
* [[RHD:Realtime Scheduler]]&lt;br /&gt;
* [[RHD:Plug-in architecture]]&lt;br /&gt;
* Project report [[Media:Rhd.pdf]]&lt;br /&gt;
* [[RHD:Code documentation]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;lt;!-- RHD News table --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background: #f2f2f2;border: 1px solid #aaa;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===News===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{{:RHD:News}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See all news [[RHD:News]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Mission_monitor_sequencer&amp;diff=154</id>
		<title>Mission monitor sequencer</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Mission_monitor_sequencer&amp;diff=154"/>
		<updated>2008-09-21T13:01:17Z</updated>

		<summary type="html">&lt;p&gt;S021786: Corrected spelling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Introduction===&lt;br /&gt;
&lt;br /&gt;
This plug-in implements a a language that is a mixture of a rule-based and a sequential based language. The idea is that a number of situations need permanent - or semi permanent - monitoring to get a good situation awareness for the root, and at the same time a large number of the robot tasks are better described by a sequential language.&lt;br /&gt;
&lt;br /&gt;
This implementation attempts to cover this gab.&lt;br /&gt;
&lt;br /&gt;
===Language===&lt;br /&gt;
&lt;br /&gt;
An example function could look like this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;plan name=&amp;quot;CrossRoad&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;init&amp;gt;&lt;br /&gt;
        odoPose.tripB = 0&lt;br /&gt;
        nearRoad = false // define local variable&lt;br /&gt;
        &amp;lt;plan name=&amp;quot;maxOdoDist&amp;quot; if=&amp;quot;odoPose.tripB &amp;gt; 250&amp;quot;&amp;gt; &lt;br /&gt;
            print(&amp;quot;Driven too far on odo &amp;quot; odoPose.tripB &amp;quot;m&amp;quot;) // print message&lt;br /&gt;
            break CrossRoad // failed to cross road - could trigger a relocalization&lt;br /&gt;
        &amp;lt;/plan&amp;gt;&lt;br /&gt;
        &amp;lt;plan name=&amp;quot;closeToRoad&amp;quot; if=&amp;quot;hypot(utmPose.poseY - 6174307, utmPose.poseX - 707873) &amp;amp;amp;lt; 15&amp;quot; &amp;gt;&lt;br /&gt;
            print(&amp;quot;Cose to road slowing down) // print message&lt;br /&gt;
            smr.speed=0.5  // set the desired maximum speed in mrc interface module&lt;br /&gt;
            nearRoad = true  // set flag&lt;br /&gt;
            disable  // disable this rule (plan)&lt;br /&gt;
        &amp;lt;/plan&amp;gt;&lt;br /&gt;
        &amp;lt;plan name=&amp;quot;turn&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;parameter angle=&amp;quot;pi&amp;quot; dist=1.0/&amp;gt;&lt;br /&gt;
            &amp;lt;commands to=&amp;quot;smr.send&amp;quot;&amp;gt;&lt;br /&gt;
              # construct commands to MRC using the smr.send command&lt;br /&gt;
              &#039;drive @v &#039; smr.speed &#039; : ($drivendist &amp;gt; &#039; dist &#039;)&#039;&lt;br /&gt;
              &#039;turn &#039; angle&lt;br /&gt;
              &#039;drive : ($drivendist &amp;gt; &#039; dist &#039;)&#039;&lt;br /&gt;
            &amp;lt;/commands&amp;gt;&lt;br /&gt;
        &amp;lt;/plan&amp;gt;&lt;br /&gt;
    &amp;lt;/init&amp;gt;&lt;br /&gt;
    print(&amp;quot;started&amp;quot;)&lt;br /&gt;
    enable maxOdoDist    // should have found road by now&lt;br /&gt;
    enable closeToRoad   // active until disabled.&lt;br /&gt;
    roaddrive.right(0.75) : nearRoad // follow road 75cm from edge until near road&lt;br /&gt;
    // more stuff missing here to detect traffic etc.&lt;br /&gt;
    ...&lt;br /&gt;
    turn() // turn back - using a call to a plan&lt;br /&gt;
    success=true&lt;br /&gt;
    &amp;lt;post&amp;gt;&lt;br /&gt;
        print(&amp;quot;finsihed crossRoad - success=&amp;quot; success)&lt;br /&gt;
    &amp;lt;/post&amp;gt;&lt;br /&gt;
 &amp;lt;/plan&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A number of these plans can be started (enabled) simultaniously, an can in principle be total independant. I.e.one can control the robot arm while another controls the navigation.&lt;br /&gt;
&lt;br /&gt;
===Language definition===&lt;br /&gt;
&lt;br /&gt;
The language definition is:&lt;br /&gt;
&lt;br /&gt;
====Plan====&lt;br /&gt;
&lt;br /&gt;
planBlock ::= planOpenTag   planBody   planCloseTag&lt;br /&gt;
&lt;br /&gt;
planOpenTag ::= &#039;&amp;lt;plan&#039; &#039;name=&#039; planName [runAttribute] [ruleCondition] &#039;&amp;gt;\n&#039;&lt;br /&gt;
&lt;br /&gt;
planName ::= &#039;&amp;quot;&#039; symbol &#039;&amp;quot;&#039;&lt;br /&gt;
&lt;br /&gt;
runAttribute ::= &#039;run=&amp;quot;default&amp;quot;&#039;  (there may come more values later)&lt;br /&gt;
&lt;br /&gt;
ruleCondition ::= &#039;if=&amp;quot;&#039; expression &#039;&amp;quot;&#039; (this expression may be split into more lines)&lt;br /&gt;
&lt;br /&gt;
planCloseTag ::= &#039;&amp;lt;/plan&amp;gt;\n&#039;&lt;br /&gt;
&lt;br /&gt;
planBody ::= [parameters] [description] [planInitBlock] planMainBlock [planPostBlock]&lt;br /&gt;
&lt;br /&gt;
parameters ::= &#039;&amp;lt;parameters &#039; [symbol &#039;=&amp;quot;&#039; [paramDefaultValue] &#039;&amp;quot;&#039;]* &#039;/&amp;gt;\n&#039;&lt;br /&gt;
&lt;br /&gt;
paramDefaultValue ::= constantValue&lt;br /&gt;
&lt;br /&gt;
description ::= &#039;&amp;lt;description&amp;gt;\n&#039; xmlText &#039;&amp;lt;/description&amp;gt;\n&#039;&lt;br /&gt;
&lt;br /&gt;
xmlText ::= any 7-bit characters except &#039;\0&#039;, &#039;&amp;amp;&#039; and &#039;&amp;lt;&#039;, the last two must be coded as &amp;amp;amp; and &amp;amp;lt;&lt;br /&gt;
&lt;br /&gt;
planInitBlock ::= &#039;&amp;lt;init&amp;gt;\n&#039; [declarationStatement]* &#039;&amp;lt;/init&amp;gt;\n&#039;&lt;br /&gt;
&lt;br /&gt;
declarationStatement ::= planBlock | executableStatement&lt;br /&gt;
&lt;br /&gt;
planMainBlock ::= [statement]*&lt;br /&gt;
&lt;br /&gt;
planPostBlock ::= &#039;&amp;lt;post&amp;gt;\n&#039; [statement]* &#039;&amp;lt;/post&amp;gt;\n&#039;&lt;br /&gt;
&lt;br /&gt;
====Statements====&lt;br /&gt;
&lt;br /&gt;
statement ::= executableStatement | controlStatement &lt;br /&gt;
&lt;br /&gt;
executableStatement ::= assignment | procedureCall | blockStatement | &lt;br /&gt;
breakStatement | enableStatement | ifStatement | emptyStatement&lt;br /&gt;
&lt;br /&gt;
controlStatement ::= proceureCall &#039;:&#039; expression [remark] &#039;\n&#039;&lt;br /&gt;
&lt;br /&gt;
assignment ::= [symbol.]* symbol &#039;=&#039; expression [remark] &#039;\n&#039;&lt;br /&gt;
&lt;br /&gt;
procedureCall ::= [symbol.]* symbol &#039;(&#039; [expression [&#039;,&#039; expression]* &#039;)&#039; [remark] &#039;\n&#039;&lt;br /&gt;
&lt;br /&gt;
blockStatement ::= &#039;&amp;lt;block&amp;gt;\n&#039; [statement]* &#039;&amp;lt;/block&amp;gt;\n&#039;&lt;br /&gt;
&lt;br /&gt;
breakStatement ::= (&#039;break&#039; [symbol] | &#039;continue&#039; ) [remark] &#039;\n&#039;&lt;br /&gt;
&lt;br /&gt;
enableStatement ::= (&#039;enable&#039; | &#039;disable&#039;) [symbol] [remark] &#039;\n&#039;&lt;br /&gt;
&lt;br /&gt;
ifStatement ::= &#039;if (&#039; expression &#039;)&#039; [remark] &#039;\n&#039; statement [remark] &#039;\n&#039; [elseStatement]&lt;br /&gt;
&lt;br /&gt;
elseStatement ::= &#039;else&#039; [remark] &#039;\n&#039; statement [remark] &#039;\n&#039;&lt;br /&gt;
&lt;br /&gt;
emptyStatement ::= [remark] &#039;\n&#039;&lt;br /&gt;
&lt;br /&gt;
remark ::= (&#039;#&#039; | &#039;;&#039; | &#039;//&#039;) xmlText except &#039;\n&#039;&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:News&amp;diff=147</id>
		<title>RHD:News</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:News&amp;diff=147"/>
		<updated>2008-09-18T12:34:08Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
News for the [[RHD]] project&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- Lines to be included on the RHD frontpage --&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;18 September 2008:&#039;&#039;&#039; RHD 2.0 work started and RHD project report online&lt;br /&gt;
* &#039;&#039;&#039;21 July 2008:&#039;&#039;&#039; Development roadmap added&lt;br /&gt;
* &#039;&#039;&#039;29 June 2008:&#039;&#039;&#039; RHD Wiki page online (still no info though)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Older news that does not go on the front page --&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD&amp;diff=146</id>
		<title>RHD</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD&amp;diff=146"/>
		<updated>2008-09-18T12:33:34Z</updated>

		<summary type="html">&lt;p&gt;S021786: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Disable TOC --&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- Main greeting frame --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;font-family:Verdana; font-size:16pt;color: #00008B; background: #f2f2f2;&amp;quot;|&lt;br /&gt;
&#039;&#039;&#039;Project page for Robot Hardware Daemon (RHD)&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
RHD is the realtime hardware abstraction layer, that is replacing SMRD (and it&#039;s devirates).Testing and implementations are in full progress, and within 2008 RHD will be the default realtime hardware interface of the RSE architecture.&amp;lt;br/&amp;gt;&lt;br /&gt;
RHD was developed in a special course at Automation, DTU Electro by Anders Billesø Beck in close cooperation with supervisor Nils A. Andersen. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Transparent 3- column table for RHD properties --&amp;gt;&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;lt;!-- RHD Features table --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background: #f2f2f2;border: 1px solid #aaa; &amp;quot;|&lt;br /&gt;
===Project details===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[RHD:Features]]&lt;br /&gt;
* [[RHD:Downloads]]&lt;br /&gt;
* [[RHD:Changelog and roadmap]]&lt;br /&gt;
* [[RHD:Plug-ins]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;lt;!-- RHD Documentationtable --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background: #f2f2f2;border: 1px solid #aaa;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===Documentation===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[RHD:Variable database]]&lt;br /&gt;
* [[RHD:TCP/IP Server]] &lt;br /&gt;
* [[RHD:Realtime Scheduler]]&lt;br /&gt;
* [[RHD:Plug-in architecture]]&lt;br /&gt;
* Project report [[Media:Rhd.pdf]]&lt;br /&gt;
* [[RHD:Code documentation]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;lt;!-- RHD News table --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background: #f2f2f2;border: 1px solid #aaa;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===News===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{{:RHD:News}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See all news [[RHD:News]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD&amp;diff=145</id>
		<title>RHD</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD&amp;diff=145"/>
		<updated>2008-09-18T12:33:18Z</updated>

		<summary type="html">&lt;p&gt;S021786: /* Project details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Disable TOC --&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- Main greeting frame --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;font-family:Verdana; font-size:16pt;color: #00008B; background: #f2f2f2;&amp;quot;|&lt;br /&gt;
&#039;&#039;&#039;Project page for Robot Hardware Daemon (RHD)&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
RHD is the realtime hardware abstraction layer, that is replacing SMRD (and it&#039;s devirates).Testing and implementations are in full progress, and within 2008 RHD will be the default realtime hardware interface of the RSE architecture.&amp;lt;br/&amp;gt;&lt;br /&gt;
RHD was developed in a special course at Automation, DTU Electro by Anders Billesø Beck in close cooperation with supervisor Nils A. Andersen. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Transparent 3- column table for RHD properties --&amp;gt;&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;lt;!-- RHD Features table --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background: #f2f2f2;border: 1px solid #aaa; &amp;quot;|&lt;br /&gt;
===Project details===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[RHD:Features]]&lt;br /&gt;
* [[RHD:Downloads]]&lt;br /&gt;
* [[RHD:Changelog and roadmap]]&lt;br /&gt;
* [[RHD:Plug-ins]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;lt;!-- RHD Documentationtable --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background: #f2f2f2;border: 1px solid #aaa;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===Documentation===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[RHD:Variable database]]&lt;br /&gt;
* [[RHD:TCP/IP Server]] &lt;br /&gt;
* [[RHD:Realtime Scheduler]]&lt;br /&gt;
* [[RHD:Plug-in architecture]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Project report [[Media:Rhd.pdf]]&lt;br /&gt;
* [[RHD:Code documentation]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;lt;!-- RHD News table --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background: #f2f2f2;border: 1px solid #aaa;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===News===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{{:RHD:News}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See all news [[RHD:News]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:News&amp;diff=144</id>
		<title>RHD:News</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:News&amp;diff=144"/>
		<updated>2008-09-18T12:33:03Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
News for the [[RHD]] project&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- Lines to be included on the RHD frontpage --&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;18 September:&#039;&#039;&#039; RHD 2.0 work started and RHD project report online&lt;br /&gt;
* &#039;&#039;&#039;21 July 2008:&#039;&#039;&#039; Development roadmap added&lt;br /&gt;
* &#039;&#039;&#039;29 June 2008:&#039;&#039;&#039; RHD Wiki page online (still no info though)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Older news that does not go on the front page --&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD&amp;diff=143</id>
		<title>RHD</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD&amp;diff=143"/>
		<updated>2008-09-18T12:31:56Z</updated>

		<summary type="html">&lt;p&gt;S021786: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Disable TOC --&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- Main greeting frame --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;font-family:Verdana; font-size:16pt;color: #00008B; background: #f2f2f2;&amp;quot;|&lt;br /&gt;
&#039;&#039;&#039;Project page for Robot Hardware Daemon (RHD)&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
RHD is the realtime hardware abstraction layer, that is replacing SMRD (and it&#039;s devirates).Testing and implementations are in full progress, and within 2008 RHD will be the default realtime hardware interface of the RSE architecture.&amp;lt;br/&amp;gt;&lt;br /&gt;
RHD was developed in a special course at Automation, DTU Electro by Anders Billesø Beck in close cooperation with supervisor Nils A. Andersen. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Transparent 3- column table for RHD properties --&amp;gt;&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;lt;!-- RHD Features table --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background: #f2f2f2;border: 1px solid #aaa; &amp;quot;|&lt;br /&gt;
===Project details===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[RHD:Features]]&lt;br /&gt;
* [[RHD:Downloads]]&lt;br /&gt;
* [[RHD:Changelog and roadmap]]&lt;br /&gt;
* [[RHD:Plug-ins]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;lt;!-- RHD Documentationtable --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background: #f2f2f2;border: 1px solid #aaa;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===Documentation===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[RHD:Variable database]]&lt;br /&gt;
* [[RHD:TCP/IP Server]] &lt;br /&gt;
* [[RHD:Realtime Scheduler]]&lt;br /&gt;
* [[RHD:Plug-in architecture]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Project report [[Media:Rhd.pdf]]&lt;br /&gt;
* [[RHD:Code documentation]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;lt;!-- RHD News table --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background: #f2f2f2;border: 1px solid #aaa;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===News===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{{:RHD:News}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See all news [[RHD:News]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD&amp;diff=142</id>
		<title>RHD</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD&amp;diff=142"/>
		<updated>2008-09-18T12:31:27Z</updated>

		<summary type="html">&lt;p&gt;S021786: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Disable TOC --&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;!-- Main greeting frame --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;font-family:Verdana; font-size:16pt;color: #00008B; background: #f2f2f2;&amp;quot;|&lt;br /&gt;
&#039;&#039;&#039;Project page for Robot Hardware Daemon (RHD)&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
RHD is the realtime hardware abstraction layer, that is replacing SMRD (and it&#039;s devirates).Testing and implementations are in full progress, and within 2008 RHD will be the default realtime hardware interface of the RSE architecture.&amp;lt;br/&amp;gt;&lt;br /&gt;
RHD was developed in a special course at Automation, DTU Electro by Anders Billesø Beck in close cooperation with supervisor Nils A. Andersen. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Transparent 3- column table for RHD properties --&amp;gt;&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;lt;!-- RHD Features table --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background: #f2f2f2;border: 1px solid #aaa; &amp;quot;|&lt;br /&gt;
===Project details===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[RHD:Features]]&lt;br /&gt;
* [[RHD:Downloads]]&lt;br /&gt;
* [[RHD:Changelog and roadmap]]&lt;br /&gt;
* [[RHD:Plug-ins]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;lt;!-- RHD Documentationtable --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background: #f2f2f2;border: 1px solid #aaa;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===Documentation===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[RHD:Variable database]]&lt;br /&gt;
* [[RHD:TCP/IP Server]] &lt;br /&gt;
* [[RHD:Realtime Scheduler]]&lt;br /&gt;
* [[RHD:Plug-in architecture]]&lt;br /&gt;
&lt;br /&gt;
* Project report [[Media:Rhd.pdf]]&lt;br /&gt;
* [[RHD:Code documentation]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;33%&amp;quot;|&lt;br /&gt;
&amp;lt;!-- RHD News table --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #aaa; background: #f9f9f9; border-collapse: collapse;&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;1&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background: #f2f2f2;border: 1px solid #aaa;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===News===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{{:RHD:News}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See all news [[RHD:News]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=File:Rhd.pdf&amp;diff=141</id>
		<title>File:Rhd.pdf</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=File:Rhd.pdf&amp;diff=141"/>
		<updated>2008-09-18T12:22:13Z</updated>

		<summary type="html">&lt;p&gt;S021786: Robot Hardware Daemon Documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Robot Hardware Daemon Documentation&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RSE_SVN&amp;diff=140</id>
		<title>RSE SVN</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RSE_SVN&amp;diff=140"/>
		<updated>2008-09-18T08:06:26Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;RSE projects are all developmental projects, with ongoing improvement and research.&lt;br /&gt;
&lt;br /&gt;
For proper version management, backup and sharing, the projects are managed in a central SVN repository, hosted by the DTU Elektro production server Timmy.&lt;br /&gt;
&lt;br /&gt;
== SVN Access ==&lt;br /&gt;
&lt;br /&gt;
To get access to the RSE SVN, you must have an account on the timmy server and be a RSE group member.&lt;br /&gt;
&lt;br /&gt;
The SVN is accessed using the svn+ssh protocol, with the following connection string:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
svn+ssh://[timmy username]@timmy.elektro.dtu.dk/home/project-users/rse/svnrepo&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As the SVN is run through SSH, you will be requested to input your SSH password MANY times, until you have setup your computer with a shared SSH key. &lt;br /&gt;
&lt;br /&gt;
== Handling SVN projects ==&lt;br /&gt;
&lt;br /&gt;
Managing the projects in SVN should be done according to the guidelines in the SVN book[http://svnbook.red-bean.com/]. It is really good and usefull reading.&lt;br /&gt;
&lt;br /&gt;
At a prevoius robot-meeting, there was given an introduction for SVN useage. &lt;br /&gt;
&lt;br /&gt;
The slides from the presentation can be found here: [[Media:SVN_Best_practice.pdf]]&lt;br /&gt;
&lt;br /&gt;
== SSH Shared keys ==&lt;br /&gt;
&lt;br /&gt;
A great toturial for generating shared SSH keys can be found in the article [http://www.cvrti.utah.edu/~dustman/no-more-pw-ssh/ No More Passwords (with SSH)]&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=RHD:Changelog_and_roadmap&amp;diff=139</id>
		<title>RHD:Changelog and roadmap</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=RHD:Changelog_and_roadmap&amp;diff=139"/>
		<updated>2008-09-15T14:48:45Z</updated>

		<summary type="html">&lt;p&gt;S021786: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;RHD is a project in ongoing development.&lt;br /&gt;
&lt;br /&gt;
This page will present the versions in development, and the roadmap for future releases. Files for these releases can be downloaded from the [[RHD:Downloads]] page&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Current stable release ==&lt;br /&gt;
This version, is the recomended version for stable operation. This version should be found on the robots runnig the RSE flash&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.0&#039;&#039;&#039;&lt;br /&gt;
* AuSerial integrated in test version&lt;br /&gt;
* HakoCan added in test version&lt;br /&gt;
* Variable database API optimized&lt;br /&gt;
&lt;br /&gt;
== Versions in development ==&lt;br /&gt;
The list below, feature the current development versions of RHD. To obtain a version of RHD, that support new features, pick a version below. Remember, that this versions are not considered stable, before they are released. Requested features will be found in these versions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1 (trunk)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Formailzed version numbering and first development version, using RSE SVN (AB:done)&lt;br /&gt;
* Removed usleep(100) bug in GPS module (AB:done)&lt;br /&gt;
* Implement NAA HakoCan functionality into main RHD branch (pending)&lt;br /&gt;
* Added freerunning mode to scheduler to let simulator control time (AB:done)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.0 (branch)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This version will implement the plug-in architecture, that will be the official way to write new hardware modules for RHD.&lt;br /&gt;
* Major change: Plug-in architecture implementation (pending)&lt;br /&gt;
* Build envoriment updated to handle shared libs and output structure (pending)&lt;br /&gt;
&lt;br /&gt;
== Previous releases ==&lt;br /&gt;
&lt;br /&gt;
Previous releases can be found here, with their change logs. Only use versions from this list, if some needed functions are broken in newer releases (and please inform the author if that is the case!) &lt;br /&gt;
&lt;br /&gt;
The list is empty so far...&lt;/div&gt;</summary>
		<author><name>S021786</name></author>
	</entry>
</feed>