<?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=S253745</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=S253745"/>
	<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Special:Contributions/S253745"/>
	<updated>2026-06-11T13:31:59Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_Bridge_ROS2&amp;diff=8961</id>
		<title>Fejemis Bridge ROS2</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_Bridge_ROS2&amp;diff=8961"/>
		<updated>2026-05-28T09:03:59Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Fejemis ROS2 Software]]&lt;br /&gt;
&lt;br /&gt;
== Fejemis Bridge ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
This document explains how the &amp;lt;code&amp;gt;fejemis_bridge&amp;lt;/code&amp;gt; package is organized and how its pieces interact. It focuses on the runtime flow, the core files you need to know, and the responsibilities of each component.&lt;br /&gt;
&lt;br /&gt;
=== Core idea ===&lt;br /&gt;
The bridge translates a text-based serial protocol used by the Teensy controllers into typed ROS2 messages and back. It is implemented as a ROS2 node that instantiates two serial &amp;quot;sources&amp;quot; (front and drive). Each source registers a set of &amp;quot;proxies&amp;quot; that convert between device text prefixes and ROS message types. The low-level serial framing, CRC, confirmation and retry logic are provided by the &amp;lt;code&amp;gt;raubase&amp;lt;/code&amp;gt; serial framework.&lt;br /&gt;
&lt;br /&gt;
=== Primary components and responsibilities ===&lt;br /&gt;
* &amp;lt;code&amp;gt;bridge&amp;lt;/code&amp;gt; node (wrapper): coordinates sources and the ROS2 side. The node registers sources, runs the executor and exposes high-level services. See &amp;lt;code&amp;gt;src/bridge/main.cpp&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;include/fejemis_bridge/bridge.hpp&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;SerialSource&amp;lt;/code&amp;gt; implementations: the device-specific classes that open the serial port, run the read/write loop, queue outbound messages and dispatch inbound lines to proxies. In this package: &amp;lt;code&amp;gt;FrontTeensy&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DriveTeensy&amp;lt;/code&amp;gt; (see &amp;lt;code&amp;gt;include/fejemis_bridge/sources/*.hpp&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;src/bridge/sources/*.cpp&amp;lt;/code&amp;gt;).&lt;br /&gt;
* &amp;lt;code&amp;gt;Proxies&amp;lt;/code&amp;gt;: conversion modules that map device text prefixes to ROS message types and back. Each proxy knows a prefix (e.g. &amp;lt;code&amp;gt;hbt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;fwl&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;manage&amp;lt;/code&amp;gt;) and implements &amp;lt;code&amp;gt;from_device(...)&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;to_device(...)&amp;lt;/code&amp;gt; conversions. Proxies are declared in &amp;lt;code&amp;gt;include/fejemis_bridge/proxies.hpp&amp;lt;/code&amp;gt; and implemented under &amp;lt;code&amp;gt;src/bridge/proxies/&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;raubase&amp;lt;/code&amp;gt; serial layer: provides &amp;lt;code&amp;gt;Message&amp;lt;/code&amp;gt; objects, CRC, confirmation handling, thread-safe queues, and the TX/RX loop behavior. Relevant files live in the &amp;lt;code&amp;gt;deps/raubase_core&amp;lt;/code&amp;gt; tree (e.g. &amp;lt;code&amp;gt;message.hpp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;source_txrx.cpp&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Key files and what they do ===&lt;br /&gt;
* &amp;lt;code&amp;gt;src/bridge/main.cpp&amp;lt;/code&amp;gt; — process entry point: constructs the &amp;lt;code&amp;gt;Bridge&amp;lt;/code&amp;gt; instance and runs it.&lt;br /&gt;
* &amp;lt;code&amp;gt;include/fejemis_bridge/bridge.hpp&amp;lt;/code&amp;gt; — wrapper around &amp;lt;code&amp;gt;raubase::SerialBridge&amp;lt;/code&amp;gt;, declares parameters and registers the &amp;lt;code&amp;gt;FrontTeensy&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DriveTeensy&amp;lt;/code&amp;gt; sources.&lt;br /&gt;
* &amp;lt;code&amp;gt;include/fejemis_bridge/sources/*.hpp&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;src/bridge/sources/*.cpp&amp;lt;/code&amp;gt; — &amp;lt;code&amp;gt;FrontTeensy&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DriveTeensy&amp;lt;/code&amp;gt; classes. They register the proxies relevant to each Teensy.&lt;br /&gt;
* &amp;lt;code&amp;gt;include/fejemis_bridge/proxies.hpp&amp;lt;/code&amp;gt; — proxy declarations and proxy-to-prefix mappings.&lt;br /&gt;
* &amp;lt;code&amp;gt;src/bridge/proxies/*.cpp&amp;lt;/code&amp;gt; — proxy implementation: parse device strings and publish ROS messages; or receive ROS messages and generate device strings.&lt;br /&gt;
* &amp;lt;code&amp;gt;config/bridge.yaml&amp;lt;/code&amp;gt; — runtime parameters used by the node (message rates, enabling specific proxies, device defaults).&lt;br /&gt;
* &amp;lt;code&amp;gt;launch/bridge.launch.py&amp;lt;/code&amp;gt; — launch-time wiring and remappings (used by operators, not needed for design understanding).&lt;br /&gt;
* &amp;lt;code&amp;gt;deps/raubase_core/.../message.hpp&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.../source_txrx.cpp&amp;lt;/code&amp;gt; — serial framing, CRC, confirm/resend and the TX/RX loop. Read these to understand byte-level behavior.&lt;br /&gt;
&lt;br /&gt;
=== Runtime flow (concise) ===&lt;br /&gt;
1. Initialization: the &amp;lt;code&amp;gt;Bridge&amp;lt;/code&amp;gt; (wrapper) declares parameters and registers both sources. Each source registers its proxies.&lt;br /&gt;
2. Each &amp;lt;code&amp;gt;SerialSource&amp;lt;/code&amp;gt; opens its serial port and enters a TRX loop that alternates reading bytes and sending queued messages.&lt;br /&gt;
3. Inbound line handling:&lt;br /&gt;
   * The TRX loop assembles bytes into a line starting with &amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt; and ending with &amp;lt;code&amp;gt;\n&amp;lt;/code&amp;gt;.&lt;br /&gt;
   * CRC is validated (3-char &amp;lt;code&amp;gt;;NN&amp;lt;/code&amp;gt; prefix). Confirmation messages are detected separately and handled by queue logic.&lt;br /&gt;
   * Valid data lines are stripped of CRC and passed to proxy candidates; the first proxy whose prefix matches the line handles it and typically publishes a ROS message.&lt;br /&gt;
4. Outbound handling:&lt;br /&gt;
   * A ROS message (or internal code) is converted to device text by a proxy, wrapped in a &amp;lt;code&amp;gt;Message&amp;lt;/code&amp;gt; object (CRC added, optional &amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt; requesting confirmation), and pushed to a thread-safe TX queue.&lt;br /&gt;
   * The TRX loop sends the first message in the queue. If the message requested confirmation, the source waits until a matching confirmation arrives; if none arrives within the timeout, the message is retried (and eventually dropped after a max resend count).&lt;br /&gt;
&lt;br /&gt;
=== Proxies and topics (how they interact) ===&lt;br /&gt;
Proxies are the translators between raw device lines and typed ROS messages. Think of each proxy as a small adapter that knows:&lt;br /&gt;
&lt;br /&gt;
* the device text prefix it handles (for example &amp;lt;code&amp;gt;hbt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;fwl&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;manage&amp;lt;/code&amp;gt;),&lt;br /&gt;
* how to parse the device payload into a ROS message, and&lt;br /&gt;
* how to format a ROS message back into a device string when sending to the Teensy.&lt;br /&gt;
&lt;br /&gt;
How inbound messages are handled (device → ROS):&lt;br /&gt;
1. The &amp;lt;code&amp;gt;SerialSource&amp;lt;/code&amp;gt; receives a framed line and strips the CRC prefix.&lt;br /&gt;
2. It looks up the first proxy whose prefix matches the start of the line.&lt;br /&gt;
3. The proxy&#039;s &amp;lt;code&amp;gt;from_device(...)&amp;lt;/code&amp;gt; parses the remaining payload and publishes a typed ROS message (typically under the &amp;lt;code&amp;gt;fejemis&amp;lt;/code&amp;gt; namespace).&lt;br /&gt;
&lt;br /&gt;
Example: device sends &amp;lt;code&amp;gt;;NNhbt 123 1\n&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;SerialSource&amp;lt;/code&amp;gt; finds the &amp;lt;code&amp;gt;hbt&amp;lt;/code&amp;gt; proxy → &amp;lt;code&amp;gt;hbt&amp;lt;/code&amp;gt; proxy parses the numbers and publishes a &amp;lt;code&amp;gt;Heartbeat&amp;lt;/code&amp;gt; message.&lt;br /&gt;
&lt;br /&gt;
How outbound messages are handled (ROS → device):&lt;br /&gt;
1. A ROS node or bridge logic creates a typed message (or calls a helper API).&lt;br /&gt;
2. The relevant proxy&#039;s &amp;lt;code&amp;gt;to_device(...)&amp;lt;/code&amp;gt; (or equivalent helper) formats the message as a device string.&lt;br /&gt;
3. The &amp;lt;code&amp;gt;SerialSource::send()&amp;lt;/code&amp;gt; method enqueues that string as a &amp;lt;code&amp;gt;Message&amp;lt;/code&amp;gt; (CRC will be added) and the TRX loop transmits it.&lt;br /&gt;
&lt;br /&gt;
Example: a controller publishes &amp;lt;code&amp;gt;DriveManage&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;cmd_type = START_MOTORS&amp;lt;/code&amp;gt; → Drive proxy converts it to &amp;lt;code&amp;gt;manage start\n&amp;lt;/code&amp;gt; → bridge sends it to the drive Teensy.&lt;br /&gt;
&lt;br /&gt;
=== Practical notes ===&lt;br /&gt;
* Proxies are registered per source (see &amp;lt;code&amp;gt;FrontTeensy&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DriveTeensy&amp;lt;/code&amp;gt;), so a prefix is handled only by proxies attached to that source.&lt;br /&gt;
* Only the first matching proxy handles an inbound line; ensure prefixes are unique or ordered appropriately.&lt;br /&gt;
* Topic names and remapping are controlled by the node&#039;s namespace and launch remaps — check the proxy implementation to see the exact topic names.&lt;br /&gt;
&lt;br /&gt;
=== Where to look / extend ===&lt;br /&gt;
* Declarations: &amp;lt;code&amp;gt;include/fejemis_bridge/proxies.hpp&amp;lt;/code&amp;gt; (which prefix maps to which proxy).&lt;br /&gt;
* Implementations: &amp;lt;code&amp;gt;src/bridge/proxies/*.cpp&amp;lt;/code&amp;gt; (parsing and publish/format logic).&lt;br /&gt;
* To add a new mapping: create or reuse a &amp;lt;code&amp;gt;msg&amp;lt;/code&amp;gt;, implement conversions in a new proxy, and register it in the appropriate source constructor.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re unsure what topic a proxy publishes, open its &amp;lt;code&amp;gt;.cpp&amp;lt;/code&amp;gt; implementation — it shows the exact ROS topic and message type used.&lt;br /&gt;
&lt;br /&gt;
=== Extension points (practical recipe) ===&lt;br /&gt;
If you need to add support for a new device message or new telemetry:&lt;br /&gt;
1. Add a ROS &amp;lt;code&amp;gt;msg&amp;lt;/code&amp;gt; if a new typed payload is required.&lt;br /&gt;
2. Implement the conversion functions for the proxy (both directions if needed).&lt;br /&gt;
3. Declare the new proxy in &amp;lt;code&amp;gt;include/fejemis_bridge/proxies.hpp&amp;lt;/code&amp;gt;.&lt;br /&gt;
4. Add the proxy to the appropriate source in the source constructor (&amp;lt;code&amp;gt;FrontTeensy&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;DriveTeensy&amp;lt;/code&amp;gt;).&lt;br /&gt;
5. Add any runtime parameters to &amp;lt;code&amp;gt;config/bridge.yaml&amp;lt;/code&amp;gt; and, if helpful, a launch remap.&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_Bridge_ROS2&amp;diff=8957</id>
		<title>Fejemis Bridge ROS2</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_Bridge_ROS2&amp;diff=8957"/>
		<updated>2026-05-28T08:51:38Z</updated>

		<summary type="html">&lt;p&gt;S253745: /* Fejemis Bridge — Design, flow and file map */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Fejemis ROS2 Software]]&lt;br /&gt;
&lt;br /&gt;
== Fejemis Bridge ==&lt;br /&gt;
&lt;br /&gt;
=== Purpose ===&lt;br /&gt;
`fejemis_bridge` translates the Teensy serial protocol into typed ROS2 messages and back. This page explains the runtime flow, the core files to edit, and the small number of extension points developers need.&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
The bridge runs as a ROS2 node that creates two serial sources (`front` and `drive`). Each source registers lightweight &amp;quot;proxies&amp;quot; that convert between device text prefixes and ROS messages. Low-level framing, CRC, confirmation and retry are handled by the shared `raubase` serial layer.&lt;br /&gt;
&lt;br /&gt;
=== Primary components ===&lt;br /&gt;
* `bridge` node — wrapper around `raubase::SerialBridge` that registers sources and parameters. (`src/bridge/main.cpp`, `include/fejemis_bridge/bridge.hpp`)&lt;br /&gt;
* `SerialSource` subclasses — device-specific handlers that run the TRX loop and own proxies (`include/fejemis_bridge/sources/*`, `src/bridge/sources/*`).&lt;br /&gt;
* Proxies — single-purpose adapters mapping device prefixes ↔ ROS messages (`include/fejemis_bridge/proxies.hpp`, `src/bridge/proxies/*`).&lt;br /&gt;
* `raubase` serial core — framing, CRC, confirm/resend, queues (`deps/raubase_core/.../message.hpp`, `.../source_txrx.cpp`).&lt;br /&gt;
&lt;br /&gt;
=== Key files (quick map) ===&lt;br /&gt;
* `include/fejemis_bridge/bridge.hpp` — registers `FrontTeensy` and `DriveTeensy`.&lt;br /&gt;
* `src/bridge/sources/*.cpp` — source constructors (where proxies are registered).&lt;br /&gt;
* `include/fejemis_bridge/proxies.hpp` and `src/bridge/proxies/*.cpp` — proxy declarations and conversions.&lt;br /&gt;
* `config/bridge.yaml` — runtime parameters (proxies, rates, device defaults).&lt;br /&gt;
&lt;br /&gt;
=== Runtime flow (short) ===&lt;br /&gt;
1. Bridge constructs sources and registers proxies.&lt;br /&gt;
2. Each source runs a TRX loop: read bytes → assemble framed line → validate CRC → dispatch to proxy; and handle TX queue → send messages → wait for confirm if requested.&lt;br /&gt;
3. Inbound: device line → proxy `from_device()` → publish ROS message.&lt;br /&gt;
4. Outbound: ROS message → proxy `to_device()` → enqueue `Message` → TRX loop sends (CRC added).&lt;br /&gt;
&lt;br /&gt;
=== Message framing (exact) ===&lt;br /&gt;
* Frame start: `;` (CRC prefix starts immediately after).&lt;br /&gt;
* CRC: 3-char prefix `;NN` (computed by `Message::generateCRC`).&lt;br /&gt;
* Terminator: `\n` (newline).&lt;br /&gt;
* Confirmation: messages may request confirmation (`!` flag); confirmations are matched to queue head and cause the entry to be popped.&lt;br /&gt;
&lt;br /&gt;
=== Proxies and topics (simple) ===&lt;br /&gt;
Proxies are tiny adapters. For each proxy you should know three things:&lt;br /&gt;
1. Device prefix it handles (e.g. `hbt`, `fwl`, `manage`).&lt;br /&gt;
2. Which ROS message type it publishes/subscribes.&lt;br /&gt;
3. Which source (front/drive) it is registered with.&lt;br /&gt;
&lt;br /&gt;
Inbound example:&lt;br /&gt;
* `;NNhbt 123 1\n` → `SerialSource` strips CRC → finds `hbt` proxy → `hbt` proxy parses payload → publishes `Heartbeat` message.&lt;br /&gt;
&lt;br /&gt;
Outbound example:&lt;br /&gt;
* Publish `DriveManage` with `cmd_type=START_MOTORS` → Drive proxy formats `manage start` → bridge sends `;NNmanage start\n` to Teensy.&lt;br /&gt;
&lt;br /&gt;
Where to find exact topic names: open the proxy implementation in `src/bridge/proxies/*.cpp` — it shows the publisher/subscriber topic strings and message types used.&lt;br /&gt;
&lt;br /&gt;
=== Extension (what to edit) ===&lt;br /&gt;
To add a new device message:&lt;br /&gt;
* Add or reuse a ROS `msg` (if needed).&lt;br /&gt;
* Implement conversions in a new proxy (`src/bridge/proxies/YourProxy.cpp`).&lt;br /&gt;
* Declare the proxy in `include/fejemis_bridge/proxies.hpp` and register it in the appropriate source constructor (`src/bridge/sources/*`).&lt;br /&gt;
* Optionally add parameters to `config/bridge.yaml`.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting (short) ===&lt;br /&gt;
* CRC failures: check RX logs (CRC check messages) — invalid CRC means device or framing differs.&lt;br /&gt;
* Missing confirmations: inspect `source_txrx.cpp` logs for timeouts and resend messages; check `timeout_confirm` / `max_resend` in `SourceConfig`.&lt;br /&gt;
* Swapped serial ports: verify `front_device` and `drive_device` parameters and use `/dev/serial/by-id/*` symlinks if needed.&lt;br /&gt;
&lt;br /&gt;
=== Quick checklist to include in the wiki ===&lt;br /&gt;
* Parameters &amp;amp; defaults: `front_device`, `drive_device`, `timeout_confirm`, `max_resend` (see `bridge.hpp` and `source` config).&lt;br /&gt;
* Proxy → prefix → topic → msg table (optional, can be generated from `src/bridge/proxies`).&lt;br /&gt;
* One inbound and one outbound framed example (in Message framing section).&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_Bridge_ROS2&amp;diff=8956</id>
		<title>Fejemis Bridge ROS2</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_Bridge_ROS2&amp;diff=8956"/>
		<updated>2026-05-28T08:51:22Z</updated>

		<summary type="html">&lt;p&gt;S253745: Created page with &amp;quot;Back to Fejemis ROS2 Software  == Fejemis Bridge — Design, flow and file map ==  === Purpose === `fejemis_bridge` translates the Teensy serial protocol into typed ROS2 messages and back. This page explains the runtime flow, the core files to edit, and the small number of extension points developers need.  === Overview === The bridge runs as a ROS2 node that creates two serial sources (`front` and `drive`). Each source registers lightweight &amp;quot;proxies&amp;quot; that convert be...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Fejemis ROS2 Software]]&lt;br /&gt;
&lt;br /&gt;
== Fejemis Bridge — Design, flow and file map ==&lt;br /&gt;
&lt;br /&gt;
=== Purpose ===&lt;br /&gt;
`fejemis_bridge` translates the Teensy serial protocol into typed ROS2 messages and back. This page explains the runtime flow, the core files to edit, and the small number of extension points developers need.&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
The bridge runs as a ROS2 node that creates two serial sources (`front` and `drive`). Each source registers lightweight &amp;quot;proxies&amp;quot; that convert between device text prefixes and ROS messages. Low-level framing, CRC, confirmation and retry are handled by the shared `raubase` serial layer.&lt;br /&gt;
&lt;br /&gt;
=== Primary components ===&lt;br /&gt;
* `bridge` node — wrapper around `raubase::SerialBridge` that registers sources and parameters. (`src/bridge/main.cpp`, `include/fejemis_bridge/bridge.hpp`)&lt;br /&gt;
* `SerialSource` subclasses — device-specific handlers that run the TRX loop and own proxies (`include/fejemis_bridge/sources/*`, `src/bridge/sources/*`).&lt;br /&gt;
* Proxies — single-purpose adapters mapping device prefixes ↔ ROS messages (`include/fejemis_bridge/proxies.hpp`, `src/bridge/proxies/*`).&lt;br /&gt;
* `raubase` serial core — framing, CRC, confirm/resend, queues (`deps/raubase_core/.../message.hpp`, `.../source_txrx.cpp`).&lt;br /&gt;
&lt;br /&gt;
=== Key files (quick map) ===&lt;br /&gt;
* `include/fejemis_bridge/bridge.hpp` — registers `FrontTeensy` and `DriveTeensy`.&lt;br /&gt;
* `src/bridge/sources/*.cpp` — source constructors (where proxies are registered).&lt;br /&gt;
* `include/fejemis_bridge/proxies.hpp` and `src/bridge/proxies/*.cpp` — proxy declarations and conversions.&lt;br /&gt;
* `config/bridge.yaml` — runtime parameters (proxies, rates, device defaults).&lt;br /&gt;
&lt;br /&gt;
=== Runtime flow (short) ===&lt;br /&gt;
1. Bridge constructs sources and registers proxies.&lt;br /&gt;
2. Each source runs a TRX loop: read bytes → assemble framed line → validate CRC → dispatch to proxy; and handle TX queue → send messages → wait for confirm if requested.&lt;br /&gt;
3. Inbound: device line → proxy `from_device()` → publish ROS message.&lt;br /&gt;
4. Outbound: ROS message → proxy `to_device()` → enqueue `Message` → TRX loop sends (CRC added).&lt;br /&gt;
&lt;br /&gt;
=== Message framing (exact) ===&lt;br /&gt;
* Frame start: `;` (CRC prefix starts immediately after).&lt;br /&gt;
* CRC: 3-char prefix `;NN` (computed by `Message::generateCRC`).&lt;br /&gt;
* Terminator: `\n` (newline).&lt;br /&gt;
* Confirmation: messages may request confirmation (`!` flag); confirmations are matched to queue head and cause the entry to be popped.&lt;br /&gt;
&lt;br /&gt;
=== Proxies and topics (simple) ===&lt;br /&gt;
Proxies are tiny adapters. For each proxy you should know three things:&lt;br /&gt;
1. Device prefix it handles (e.g. `hbt`, `fwl`, `manage`).&lt;br /&gt;
2. Which ROS message type it publishes/subscribes.&lt;br /&gt;
3. Which source (front/drive) it is registered with.&lt;br /&gt;
&lt;br /&gt;
Inbound example:&lt;br /&gt;
* `;NNhbt 123 1\n` → `SerialSource` strips CRC → finds `hbt` proxy → `hbt` proxy parses payload → publishes `Heartbeat` message.&lt;br /&gt;
&lt;br /&gt;
Outbound example:&lt;br /&gt;
* Publish `DriveManage` with `cmd_type=START_MOTORS` → Drive proxy formats `manage start` → bridge sends `;NNmanage start\n` to Teensy.&lt;br /&gt;
&lt;br /&gt;
Where to find exact topic names: open the proxy implementation in `src/bridge/proxies/*.cpp` — it shows the publisher/subscriber topic strings and message types used.&lt;br /&gt;
&lt;br /&gt;
=== Extension (what to edit) ===&lt;br /&gt;
To add a new device message:&lt;br /&gt;
* Add or reuse a ROS `msg` (if needed).&lt;br /&gt;
* Implement conversions in a new proxy (`src/bridge/proxies/YourProxy.cpp`).&lt;br /&gt;
* Declare the proxy in `include/fejemis_bridge/proxies.hpp` and register it in the appropriate source constructor (`src/bridge/sources/*`).&lt;br /&gt;
* Optionally add parameters to `config/bridge.yaml`.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting (short) ===&lt;br /&gt;
* CRC failures: check RX logs (CRC check messages) — invalid CRC means device or framing differs.&lt;br /&gt;
* Missing confirmations: inspect `source_txrx.cpp` logs for timeouts and resend messages; check `timeout_confirm` / `max_resend` in `SourceConfig`.&lt;br /&gt;
* Swapped serial ports: verify `front_device` and `drive_device` parameters and use `/dev/serial/by-id/*` symlinks if needed.&lt;br /&gt;
&lt;br /&gt;
=== Quick checklist to include in the wiki ===&lt;br /&gt;
* Parameters &amp;amp; defaults: `front_device`, `drive_device`, `timeout_confirm`, `max_resend` (see `bridge.hpp` and `source` config).&lt;br /&gt;
* Proxy → prefix → topic → msg table (optional, can be generated from `src/bridge/proxies`).&lt;br /&gt;
* One inbound and one outbound framed example (in Message framing section).&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Electronics&amp;diff=8892</id>
		<title>Electronics</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Electronics&amp;diff=8892"/>
		<updated>2026-05-27T13:25:56Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Fejemis 2026]]&lt;br /&gt;
&lt;br /&gt;
= Raspberry Pi =&lt;br /&gt;
&lt;br /&gt;
The robot uses two Raspberry Pi 5 units, referred to as the &amp;quot;Main&amp;quot; and &amp;quot;Aux&amp;quot; Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Main Pi&amp;quot; is responsible for core robot functionality and launches the odometry, lifecycle management, and bridge-related ROS nodes.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Aux Pi&amp;quot; handles the majority of the remaining ROS launch packages, including the computationally intensive perception and support nodes.&lt;br /&gt;
&lt;br /&gt;
=== Main Raspberry Pi ===&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 5&lt;br /&gt;
* 16 GB RAM&lt;br /&gt;
* 60 GB storage (SD card)&lt;br /&gt;
&lt;br /&gt;
=== Aux Raspberry Pi ===&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 5&lt;br /&gt;
* 8 GB RAM&lt;br /&gt;
* 512 GB external SSD storage&lt;br /&gt;
&lt;br /&gt;
== System Architecture ==&lt;br /&gt;
&lt;br /&gt;
During testing, it was observed that the Main Pi could not reliably handle all ROS launch packages simultaneously. To improve stability and performance, most workloads were therefore moved to the Aux Pi.&lt;br /&gt;
&lt;br /&gt;
One likely reason for this difference is the storage medium. The Main Pi uses an SD card, while the Aux Pi uses an external SSD, which provides significantly faster read/write performance and better handling of high I/O workloads generated by ROS 2 nodes, logging, and vision processing.&lt;br /&gt;
&lt;br /&gt;
This split architecture allows the robot to distribute computational load more effectively and improves overall system responsiveness and reliability.&lt;br /&gt;
&lt;br /&gt;
= Ethernet Network =&lt;br /&gt;
&lt;br /&gt;
== Router ==&lt;br /&gt;
The router is used to connect the Raspberry Pi units and external devices on the robot network. It allows communication between the onboard computers and provides Ethernet access for external computers during development, debugging, and monitoring.&lt;br /&gt;
&lt;br /&gt;
The router has a total of five Ethernet ports:&lt;br /&gt;
&lt;br /&gt;
* Two ports are currently occupied by the Main and Aux Raspberry Pi units&lt;br /&gt;
* The remaining ports can be used to connect external computers directly to the robot network&lt;br /&gt;
* Router power supply: 5V / 0.6A&lt;br /&gt;
&lt;br /&gt;
=== Network Configuration ===&lt;br /&gt;
&lt;br /&gt;
* Network/CIDR: 192.168.1.0/24&lt;br /&gt;
&lt;br /&gt;
* Subnet mask: 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
=== Ethernet IP Addresses ===&lt;br /&gt;
&lt;br /&gt;
* Main Raspberry Pi: 192.168.1.1&lt;br /&gt;
* Aux Raspberry Pi: 192.168.1.2&lt;br /&gt;
&lt;br /&gt;
=== Setup for External Computers ===&lt;br /&gt;
&lt;br /&gt;
To connect a computer to the robot network through Ethernet, configure the network interface manually. The following settings must be configured:&lt;br /&gt;
* Subnet mask: 255.255.255.0&lt;br /&gt;
* Assign an available static IP address in the range 192.168.1.x&lt;br /&gt;
&lt;br /&gt;
Note: 192.168.1.1 and 192.168.1.2 are already assigned to the Raspberry Pi units and must not be reused&lt;br /&gt;
&lt;br /&gt;
= Teensy Configuration =&lt;br /&gt;
&lt;br /&gt;
[[File:teensy-configuration.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
Figure: The main hardware blocks. Two Teensy processors are the interface to the hardware. The drive processor controls the drive motors, safety and battery system. The front processor controls the brush and the front wheel to lift the brush. A main PC integrates the functionality with additional sensors to allow autonomous operation.&lt;br /&gt;
&lt;br /&gt;
= Teensy firmware =&lt;br /&gt;
&lt;br /&gt;
[[Fejemis Teensy]] software is build using standard Arduino library configurations.&lt;br /&gt;
The interface to the main PC is organized as text-lines.&lt;br /&gt;
&lt;br /&gt;
= Electrical =&lt;br /&gt;
&lt;br /&gt;
[[Fejemis electrical]] wiring etc.&lt;br /&gt;
&lt;br /&gt;
= Battery control =&lt;br /&gt;
&lt;br /&gt;
The [[Fejemis battery control]] is a 24V system (2x3cell LiPo 5Ah) with power on-off and measurement electronics. There is on-board chargers for all batteries.&lt;br /&gt;
&lt;br /&gt;
= Other features =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== LD19 LiDAR Sensor ===&lt;br /&gt;
&lt;br /&gt;
The LD19 is a 2D DTOF LiDAR sensor used for obstacle detection, mapping, and localization in the Fejemis platform.&lt;br /&gt;
&lt;br /&gt;
Technical specifications:&lt;br /&gt;
* Scanning range: 360°&lt;br /&gt;
* Scan frequency: 10 ± 0.1 Hz&lt;br /&gt;
* Sampling rate: 4500 measurements per second&lt;br /&gt;
* Communication interface: UART&lt;br /&gt;
* Baud rate: 230400 bit/s&lt;br /&gt;
* Supply voltage: 5V (4.5V–5.5V)&lt;br /&gt;
* Typical logic level: 3.3V&lt;br /&gt;
&lt;br /&gt;
More information and full documentation: https://www.elecrow.com/download/product/SLD06360F/LD19_Development%20Manual_V2.3.pdf&lt;br /&gt;
&lt;br /&gt;
=== Realsense D455 ===&lt;br /&gt;
&lt;br /&gt;
The camera is a ...&lt;br /&gt;
&lt;br /&gt;
=== Linear actuator ===&lt;br /&gt;
&lt;br /&gt;
The linear actuator used is a 12V DC actuator from Transmotec with a 10:1 gear ratio, 250 N maximum force, and a 150 mm stroke length.&lt;br /&gt;
&lt;br /&gt;
More information and full documentation: https://transmotec.com/product/DLA-12-10-A-150-HS2-IP65/&lt;br /&gt;
&lt;br /&gt;
=== Brush unit ===&lt;br /&gt;
&lt;br /&gt;
The Fejemis brush unit is a commercial brush that comes with its own battery (12V), charger and motor control. The unit is slightly modified to to allow measurement and control from the software.&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Electronics&amp;diff=8890</id>
		<title>Electronics</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Electronics&amp;diff=8890"/>
		<updated>2026-05-27T13:17:14Z</updated>

		<summary type="html">&lt;p&gt;S253745: /* Linear actuator */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Fejemis 2026]]&lt;br /&gt;
&lt;br /&gt;
= Raspberry Pi =&lt;br /&gt;
&lt;br /&gt;
The robot uses two Raspberry Pi 5 units, referred to as the &amp;quot;Main&amp;quot; and &amp;quot;Aux&amp;quot; Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Main Pi&amp;quot; is responsible for core robot functionality and launches the odometry, lifecycle management, and bridge-related ROS nodes.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Aux Pi&amp;quot; handles the majority of the remaining ROS launch packages, including the computationally intensive perception and support nodes.&lt;br /&gt;
&lt;br /&gt;
=== Main Raspberry Pi ===&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 5&lt;br /&gt;
* 16 GB RAM&lt;br /&gt;
* 60 GB storage (SD card)&lt;br /&gt;
&lt;br /&gt;
=== Aux Raspberry Pi ===&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 5&lt;br /&gt;
* 8 GB RAM&lt;br /&gt;
* 512 GB external SSD storage&lt;br /&gt;
&lt;br /&gt;
== System Architecture ==&lt;br /&gt;
&lt;br /&gt;
During testing, it was observed that the Main Pi could not reliably handle all ROS launch packages simultaneously. To improve stability and performance, most workloads were therefore moved to the Aux Pi.&lt;br /&gt;
&lt;br /&gt;
One likely reason for this difference is the storage medium. The Main Pi uses an SD card, while the Aux Pi uses an external SSD, which provides significantly faster read/write performance and better handling of high I/O workloads generated by ROS 2 nodes, logging, and vision processing.&lt;br /&gt;
&lt;br /&gt;
This split architecture allows the robot to distribute computational load more effectively and improves overall system responsiveness and reliability.&lt;br /&gt;
&lt;br /&gt;
= Ethernet Network =&lt;br /&gt;
&lt;br /&gt;
== Router ==&lt;br /&gt;
The router is used to connect the Raspberry Pi units and external devices on the robot network. It allows communication between the onboard computers and provides Ethernet access for external computers during development, debugging, and monitoring.&lt;br /&gt;
&lt;br /&gt;
The router has a total of five Ethernet ports:&lt;br /&gt;
&lt;br /&gt;
* Two ports are currently occupied by the Main and Aux Raspberry Pi units&lt;br /&gt;
* The remaining ports can be used to connect external computers directly to the robot network&lt;br /&gt;
* Router power supply: 5V / 0.6A&lt;br /&gt;
&lt;br /&gt;
=== Network Configuration ===&lt;br /&gt;
&lt;br /&gt;
* Network/CIDR: 192.168.1.0/24&lt;br /&gt;
&lt;br /&gt;
* Subnet mask: 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
=== Ethernet IP Addresses ===&lt;br /&gt;
&lt;br /&gt;
* Main Raspberry Pi: 192.168.1.1&lt;br /&gt;
* Aux Raspberry Pi: 192.168.1.2&lt;br /&gt;
&lt;br /&gt;
=== Setup for External Computers ===&lt;br /&gt;
&lt;br /&gt;
To connect a computer to the robot network through Ethernet, configure the network interface manually. The following settings must be configured:&lt;br /&gt;
* Subnet mask: 255.255.255.0&lt;br /&gt;
* Assign an available static IP address in the range 192.168.1.x&lt;br /&gt;
&lt;br /&gt;
Note: 192.168.1.1 and 192.168.1.2 are already assigned to the Raspberry Pi units and must not be reused&lt;br /&gt;
&lt;br /&gt;
= Teensy Configuration =&lt;br /&gt;
&lt;br /&gt;
[[File:teensy-configuration.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
Figure: The main hardware blocks. Two Teensy processors are the interface to the hardware. The drive processor controls the drive motors, safety and battery system. The front processor controls the brush and the front wheel to lift the brush. A main PC integrates the functionality with additional sensors to allow autonomous operation.&lt;br /&gt;
&lt;br /&gt;
= Teensy firmware =&lt;br /&gt;
&lt;br /&gt;
[[Fejemis Teensy]] software is build using standard Arduino library configurations.&lt;br /&gt;
The interface to the main PC is organized as text-lines.&lt;br /&gt;
&lt;br /&gt;
= Electrical =&lt;br /&gt;
&lt;br /&gt;
[[Fejemis electrical]] wiring etc.&lt;br /&gt;
&lt;br /&gt;
= Battery control =&lt;br /&gt;
&lt;br /&gt;
The [[Fejemis battery control]] is a 24V system (2x3cell LiPo 5Ah) with power on-off and measurement electronics. There is on-board chargers for all batteries.&lt;br /&gt;
&lt;br /&gt;
= Other features =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== LD19 LiDAR Sensor ===&lt;br /&gt;
&lt;br /&gt;
The LD19 is a 2D DTOF LiDAR sensor used for obstacle detection, mapping, and localization in the Fejemis platform.&lt;br /&gt;
&lt;br /&gt;
Technical specifications:&lt;br /&gt;
* Scanning range: 360°&lt;br /&gt;
* Scan frequency: 10 ± 0.1 Hz&lt;br /&gt;
* Sampling rate: 4500 measurements per second&lt;br /&gt;
* Communication interface: UART&lt;br /&gt;
* Baud rate: 230400 bit/s&lt;br /&gt;
* Supply voltage: 5V (4.5V–5.5V)&lt;br /&gt;
* Typical logic level: 3.3V&lt;br /&gt;
&lt;br /&gt;
More information and full documentation: https://www.elecrow.com/download/product/SLD06360F/LD19_Development%20Manual_V2.3.pdf&lt;br /&gt;
&lt;br /&gt;
=== Realsense D455 ===&lt;br /&gt;
&lt;br /&gt;
The camera is a ...&lt;br /&gt;
&lt;br /&gt;
=== Linear actuator ===&lt;br /&gt;
&lt;br /&gt;
The linear actuator used is a 12V DC actuator from Transmotec with a 10:1 gear ratio, 250 N maximum force, and a 150 mm stroke length.&lt;br /&gt;
&lt;br /&gt;
=== Brush unit ===&lt;br /&gt;
&lt;br /&gt;
The Fejemis brush unit is a commercial brush that comes with its own battery (12V), charger and motor control. The unit is slightly modified to to allow measurement and control from the software.&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Electronics&amp;diff=8885</id>
		<title>Electronics</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Electronics&amp;diff=8885"/>
		<updated>2026-05-27T13:10:06Z</updated>

		<summary type="html">&lt;p&gt;S253745: /* Other features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Fejemis 2026]]&lt;br /&gt;
&lt;br /&gt;
= Raspberry Pi =&lt;br /&gt;
&lt;br /&gt;
The robot uses two Raspberry Pi 5 units, referred to as the &amp;quot;Main&amp;quot; and &amp;quot;Aux&amp;quot; Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Main Pi&amp;quot; is responsible for core robot functionality and launches the odometry, lifecycle management, and bridge-related ROS nodes.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Aux Pi&amp;quot; handles the majority of the remaining ROS launch packages, including the computationally intensive perception and support nodes.&lt;br /&gt;
&lt;br /&gt;
=== Main Raspberry Pi ===&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 5&lt;br /&gt;
* 16 GB RAM&lt;br /&gt;
* 60 GB storage (SD card)&lt;br /&gt;
&lt;br /&gt;
=== Aux Raspberry Pi ===&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 5&lt;br /&gt;
* 8 GB RAM&lt;br /&gt;
* 512 GB external SSD storage&lt;br /&gt;
&lt;br /&gt;
== System Architecture ==&lt;br /&gt;
&lt;br /&gt;
During testing, it was observed that the Main Pi could not reliably handle all ROS launch packages simultaneously. To improve stability and performance, most workloads were therefore moved to the Aux Pi.&lt;br /&gt;
&lt;br /&gt;
One likely reason for this difference is the storage medium. The Main Pi uses an SD card, while the Aux Pi uses an external SSD, which provides significantly faster read/write performance and better handling of high I/O workloads generated by ROS 2 nodes, logging, and vision processing.&lt;br /&gt;
&lt;br /&gt;
This split architecture allows the robot to distribute computational load more effectively and improves overall system responsiveness and reliability.&lt;br /&gt;
&lt;br /&gt;
= Ethernet Network =&lt;br /&gt;
&lt;br /&gt;
== Router ==&lt;br /&gt;
The router is used to connect the Raspberry Pi units and external devices on the robot network. It allows communication between the onboard computers and provides Ethernet access for external computers during development, debugging, and monitoring.&lt;br /&gt;
&lt;br /&gt;
The router has a total of five Ethernet ports:&lt;br /&gt;
&lt;br /&gt;
* Two ports are currently occupied by the Main and Aux Raspberry Pi units&lt;br /&gt;
* The remaining ports can be used to connect external computers directly to the robot network&lt;br /&gt;
* Router power supply: 5V / 0.6A&lt;br /&gt;
&lt;br /&gt;
=== Network Configuration ===&lt;br /&gt;
&lt;br /&gt;
* Network/CIDR: 192.168.1.0/24&lt;br /&gt;
&lt;br /&gt;
* Subnet mask: 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
=== Ethernet IP Addresses ===&lt;br /&gt;
&lt;br /&gt;
* Main Raspberry Pi: 192.168.1.1&lt;br /&gt;
* Aux Raspberry Pi: 192.168.1.2&lt;br /&gt;
&lt;br /&gt;
=== Setup for External Computers ===&lt;br /&gt;
&lt;br /&gt;
To connect a computer to the robot network through Ethernet, configure the network interface manually. The following settings must be configured:&lt;br /&gt;
* Subnet mask: 255.255.255.0&lt;br /&gt;
* Assign an available static IP address in the range 192.168.1.x&lt;br /&gt;
&lt;br /&gt;
Note: 192.168.1.1 and 192.168.1.2 are already assigned to the Raspberry Pi units and must not be reused&lt;br /&gt;
&lt;br /&gt;
= Teensy Configuration =&lt;br /&gt;
&lt;br /&gt;
[[File:teensy-configuration.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
Figure: The main hardware blocks. Two Teensy processors are the interface to the hardware. The drive processor controls the drive motors, safety and battery system. The front processor controls the brush and the front wheel to lift the brush. A main PC integrates the functionality with additional sensors to allow autonomous operation.&lt;br /&gt;
&lt;br /&gt;
= Teensy firmware =&lt;br /&gt;
&lt;br /&gt;
[[Fejemis Teensy]] software is build using standard Arduino library configurations.&lt;br /&gt;
The interface to the main PC is organized as text-lines.&lt;br /&gt;
&lt;br /&gt;
= Electrical =&lt;br /&gt;
&lt;br /&gt;
[[Fejemis electrical]] wiring etc.&lt;br /&gt;
&lt;br /&gt;
= Battery control =&lt;br /&gt;
&lt;br /&gt;
The [[Fejemis battery control]] is a 24V system (2x3cell LiPo 5Ah) with power on-off and measurement electronics. There is on-board chargers for all batteries.&lt;br /&gt;
&lt;br /&gt;
= Other features =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lidar ===&lt;br /&gt;
&lt;br /&gt;
The lidar is a ...&lt;br /&gt;
&lt;br /&gt;
=== Realsense D455 ===&lt;br /&gt;
&lt;br /&gt;
The camera is a ...&lt;br /&gt;
&lt;br /&gt;
=== Linear actuator ===&lt;br /&gt;
&lt;br /&gt;
The actuator is a ...&lt;br /&gt;
&lt;br /&gt;
=== Brush unit ===&lt;br /&gt;
&lt;br /&gt;
The Fejemis brush unit is a commercial brush that comes with its own battery (12V), charger and motor control. The unit is slightly modified to to allow measurement and control from the software.&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Electronics&amp;diff=8883</id>
		<title>Electronics</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Electronics&amp;diff=8883"/>
		<updated>2026-05-27T13:09:45Z</updated>

		<summary type="html">&lt;p&gt;S253745: /* Brush unit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Fejemis 2026]]&lt;br /&gt;
&lt;br /&gt;
= Raspberry Pi =&lt;br /&gt;
&lt;br /&gt;
The robot uses two Raspberry Pi 5 units, referred to as the &amp;quot;Main&amp;quot; and &amp;quot;Aux&amp;quot; Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Main Pi&amp;quot; is responsible for core robot functionality and launches the odometry, lifecycle management, and bridge-related ROS nodes.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Aux Pi&amp;quot; handles the majority of the remaining ROS launch packages, including the computationally intensive perception and support nodes.&lt;br /&gt;
&lt;br /&gt;
=== Main Raspberry Pi ===&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 5&lt;br /&gt;
* 16 GB RAM&lt;br /&gt;
* 60 GB storage (SD card)&lt;br /&gt;
&lt;br /&gt;
=== Aux Raspberry Pi ===&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 5&lt;br /&gt;
* 8 GB RAM&lt;br /&gt;
* 512 GB external SSD storage&lt;br /&gt;
&lt;br /&gt;
== System Architecture ==&lt;br /&gt;
&lt;br /&gt;
During testing, it was observed that the Main Pi could not reliably handle all ROS launch packages simultaneously. To improve stability and performance, most workloads were therefore moved to the Aux Pi.&lt;br /&gt;
&lt;br /&gt;
One likely reason for this difference is the storage medium. The Main Pi uses an SD card, while the Aux Pi uses an external SSD, which provides significantly faster read/write performance and better handling of high I/O workloads generated by ROS 2 nodes, logging, and vision processing.&lt;br /&gt;
&lt;br /&gt;
This split architecture allows the robot to distribute computational load more effectively and improves overall system responsiveness and reliability.&lt;br /&gt;
&lt;br /&gt;
= Ethernet Network =&lt;br /&gt;
&lt;br /&gt;
== Router ==&lt;br /&gt;
The router is used to connect the Raspberry Pi units and external devices on the robot network. It allows communication between the onboard computers and provides Ethernet access for external computers during development, debugging, and monitoring.&lt;br /&gt;
&lt;br /&gt;
The router has a total of five Ethernet ports:&lt;br /&gt;
&lt;br /&gt;
* Two ports are currently occupied by the Main and Aux Raspberry Pi units&lt;br /&gt;
* The remaining ports can be used to connect external computers directly to the robot network&lt;br /&gt;
* Router power supply: 5V / 0.6A&lt;br /&gt;
&lt;br /&gt;
=== Network Configuration ===&lt;br /&gt;
&lt;br /&gt;
* Network/CIDR: 192.168.1.0/24&lt;br /&gt;
&lt;br /&gt;
* Subnet mask: 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
=== Ethernet IP Addresses ===&lt;br /&gt;
&lt;br /&gt;
* Main Raspberry Pi: 192.168.1.1&lt;br /&gt;
* Aux Raspberry Pi: 192.168.1.2&lt;br /&gt;
&lt;br /&gt;
=== Setup for External Computers ===&lt;br /&gt;
&lt;br /&gt;
To connect a computer to the robot network through Ethernet, configure the network interface manually. The following settings must be configured:&lt;br /&gt;
* Subnet mask: 255.255.255.0&lt;br /&gt;
* Assign an available static IP address in the range 192.168.1.x&lt;br /&gt;
&lt;br /&gt;
Note: 192.168.1.1 and 192.168.1.2 are already assigned to the Raspberry Pi units and must not be reused&lt;br /&gt;
&lt;br /&gt;
= Teensy Configuration =&lt;br /&gt;
&lt;br /&gt;
[[File:teensy-configuration.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
Figure: The main hardware blocks. Two Teensy processors are the interface to the hardware. The drive processor controls the drive motors, safety and battery system. The front processor controls the brush and the front wheel to lift the brush. A main PC integrates the functionality with additional sensors to allow autonomous operation.&lt;br /&gt;
&lt;br /&gt;
= Teensy firmware =&lt;br /&gt;
&lt;br /&gt;
[[Fejemis Teensy]] software is build using standard Arduino library configurations.&lt;br /&gt;
The interface to the main PC is organized as text-lines.&lt;br /&gt;
&lt;br /&gt;
= Electrical =&lt;br /&gt;
&lt;br /&gt;
[[Fejemis electrical]] wiring etc.&lt;br /&gt;
&lt;br /&gt;
= Battery control =&lt;br /&gt;
&lt;br /&gt;
The [[Fejemis battery control]] is a 24V system (2x3cell LiPo 5Ah) with power on-off and measurement electronics. There is on-board chargers for all batteries.&lt;br /&gt;
&lt;br /&gt;
= Other features =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lidar ===&lt;br /&gt;
&lt;br /&gt;
The lidar is a ...&lt;br /&gt;
&lt;br /&gt;
=== Realsense D455 ===&lt;br /&gt;
&lt;br /&gt;
The camera is a ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Linear actuator ===&lt;br /&gt;
&lt;br /&gt;
The actuator is a ...&lt;br /&gt;
&lt;br /&gt;
=== Brush unit ===&lt;br /&gt;
&lt;br /&gt;
The Fejemis brush unit is a commercial brush that comes with its own battery (12V), charger and motor control. The unit is slightly modified to to allow measurement and control from the software.&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_brush_unit&amp;diff=8882</id>
		<title>Fejemis brush unit</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_brush_unit&amp;diff=8882"/>
		<updated>2026-05-27T13:08:59Z</updated>

		<summary type="html">&lt;p&gt;S253745: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Electronics&amp;diff=8881</id>
		<title>Electronics</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Electronics&amp;diff=8881"/>
		<updated>2026-05-27T13:08:30Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Fejemis 2026]]&lt;br /&gt;
&lt;br /&gt;
= Raspberry Pi =&lt;br /&gt;
&lt;br /&gt;
The robot uses two Raspberry Pi 5 units, referred to as the &amp;quot;Main&amp;quot; and &amp;quot;Aux&amp;quot; Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Main Pi&amp;quot; is responsible for core robot functionality and launches the odometry, lifecycle management, and bridge-related ROS nodes.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Aux Pi&amp;quot; handles the majority of the remaining ROS launch packages, including the computationally intensive perception and support nodes.&lt;br /&gt;
&lt;br /&gt;
=== Main Raspberry Pi ===&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 5&lt;br /&gt;
* 16 GB RAM&lt;br /&gt;
* 60 GB storage (SD card)&lt;br /&gt;
&lt;br /&gt;
=== Aux Raspberry Pi ===&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 5&lt;br /&gt;
* 8 GB RAM&lt;br /&gt;
* 512 GB external SSD storage&lt;br /&gt;
&lt;br /&gt;
== System Architecture ==&lt;br /&gt;
&lt;br /&gt;
During testing, it was observed that the Main Pi could not reliably handle all ROS launch packages simultaneously. To improve stability and performance, most workloads were therefore moved to the Aux Pi.&lt;br /&gt;
&lt;br /&gt;
One likely reason for this difference is the storage medium. The Main Pi uses an SD card, while the Aux Pi uses an external SSD, which provides significantly faster read/write performance and better handling of high I/O workloads generated by ROS 2 nodes, logging, and vision processing.&lt;br /&gt;
&lt;br /&gt;
This split architecture allows the robot to distribute computational load more effectively and improves overall system responsiveness and reliability.&lt;br /&gt;
&lt;br /&gt;
= Ethernet Network =&lt;br /&gt;
&lt;br /&gt;
== Router ==&lt;br /&gt;
The router is used to connect the Raspberry Pi units and external devices on the robot network. It allows communication between the onboard computers and provides Ethernet access for external computers during development, debugging, and monitoring.&lt;br /&gt;
&lt;br /&gt;
The router has a total of five Ethernet ports:&lt;br /&gt;
&lt;br /&gt;
* Two ports are currently occupied by the Main and Aux Raspberry Pi units&lt;br /&gt;
* The remaining ports can be used to connect external computers directly to the robot network&lt;br /&gt;
* Router power supply: 5V / 0.6A&lt;br /&gt;
&lt;br /&gt;
=== Network Configuration ===&lt;br /&gt;
&lt;br /&gt;
* Network/CIDR: 192.168.1.0/24&lt;br /&gt;
&lt;br /&gt;
* Subnet mask: 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
=== Ethernet IP Addresses ===&lt;br /&gt;
&lt;br /&gt;
* Main Raspberry Pi: 192.168.1.1&lt;br /&gt;
* Aux Raspberry Pi: 192.168.1.2&lt;br /&gt;
&lt;br /&gt;
=== Setup for External Computers ===&lt;br /&gt;
&lt;br /&gt;
To connect a computer to the robot network through Ethernet, configure the network interface manually. The following settings must be configured:&lt;br /&gt;
* Subnet mask: 255.255.255.0&lt;br /&gt;
* Assign an available static IP address in the range 192.168.1.x&lt;br /&gt;
&lt;br /&gt;
Note: 192.168.1.1 and 192.168.1.2 are already assigned to the Raspberry Pi units and must not be reused&lt;br /&gt;
&lt;br /&gt;
= Teensy Configuration =&lt;br /&gt;
&lt;br /&gt;
[[File:teensy-configuration.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
Figure: The main hardware blocks. Two Teensy processors are the interface to the hardware. The drive processor controls the drive motors, safety and battery system. The front processor controls the brush and the front wheel to lift the brush. A main PC integrates the functionality with additional sensors to allow autonomous operation.&lt;br /&gt;
&lt;br /&gt;
= Teensy firmware =&lt;br /&gt;
&lt;br /&gt;
[[Fejemis Teensy]] software is build using standard Arduino library configurations.&lt;br /&gt;
The interface to the main PC is organized as text-lines.&lt;br /&gt;
&lt;br /&gt;
= Electrical =&lt;br /&gt;
&lt;br /&gt;
[[Fejemis electrical]] wiring etc.&lt;br /&gt;
&lt;br /&gt;
= Battery control =&lt;br /&gt;
&lt;br /&gt;
The [[Fejemis battery control]] is a 24V system (2x3cell LiPo 5Ah) with power on-off and measurement electronics. There is on-board chargers for all batteries.&lt;br /&gt;
&lt;br /&gt;
= Other features =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lidar ===&lt;br /&gt;
&lt;br /&gt;
The lidar is a ...&lt;br /&gt;
&lt;br /&gt;
=== Realsense D455 ===&lt;br /&gt;
&lt;br /&gt;
The camera is a ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Linear actuator ===&lt;br /&gt;
&lt;br /&gt;
The actuator is a ...&lt;br /&gt;
&lt;br /&gt;
=== Brush unit ===&lt;br /&gt;
&lt;br /&gt;
The [[Fejemis brush unit]] is a commercial brush that comes with its own battery (12V), charger and motor control. The unit is slightly modified to to allow measurement and control from the software.&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Electronics&amp;diff=8880</id>
		<title>Electronics</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Electronics&amp;diff=8880"/>
		<updated>2026-05-27T13:05:54Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Fejemis 2026]]&lt;br /&gt;
&lt;br /&gt;
= Raspberry Pi =&lt;br /&gt;
&lt;br /&gt;
The robot uses two Raspberry Pi 5 units, referred to as the &amp;quot;Main&amp;quot; and &amp;quot;Aux&amp;quot; Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Main Pi&amp;quot; is responsible for core robot functionality and launches the odometry, lifecycle management, and bridge-related ROS nodes.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Aux Pi&amp;quot; handles the majority of the remaining ROS launch packages, including the computationally intensive perception and support nodes.&lt;br /&gt;
&lt;br /&gt;
=== Main Raspberry Pi ===&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 5&lt;br /&gt;
* 16 GB RAM&lt;br /&gt;
* 60 GB storage (SD card)&lt;br /&gt;
&lt;br /&gt;
=== Aux Raspberry Pi ===&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 5&lt;br /&gt;
* 8 GB RAM&lt;br /&gt;
* 512 GB external SSD storage&lt;br /&gt;
&lt;br /&gt;
== System Architecture ==&lt;br /&gt;
&lt;br /&gt;
During testing, it was observed that the Main Pi could not reliably handle all ROS launch packages simultaneously. To improve stability and performance, most workloads were therefore moved to the Aux Pi.&lt;br /&gt;
&lt;br /&gt;
One likely reason for this difference is the storage medium. The Main Pi uses an SD card, while the Aux Pi uses an external SSD, which provides significantly faster read/write performance and better handling of high I/O workloads generated by ROS 2 nodes, logging, and vision processing.&lt;br /&gt;
&lt;br /&gt;
This split architecture allows the robot to distribute computational load more effectively and improves overall system responsiveness and reliability.&lt;br /&gt;
&lt;br /&gt;
= Ethernet Network =&lt;br /&gt;
&lt;br /&gt;
== Router ==&lt;br /&gt;
The router is used to connect the Raspberry Pi units and external devices on the robot network. It allows communication between the onboard computers and provides Ethernet access for external computers during development, debugging, and monitoring.&lt;br /&gt;
&lt;br /&gt;
The router has a total of five Ethernet ports:&lt;br /&gt;
&lt;br /&gt;
* Two ports are currently occupied by the Main and Aux Raspberry Pi units&lt;br /&gt;
* The remaining ports can be used to connect external computers directly to the robot network&lt;br /&gt;
* Router power supply: 5V / 0.6A&lt;br /&gt;
&lt;br /&gt;
=== Network Configuration ===&lt;br /&gt;
&lt;br /&gt;
* Network/CIDR: 192.168.1.0/24&lt;br /&gt;
&lt;br /&gt;
* Subnet mask: 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
=== Ethernet IP Addresses ===&lt;br /&gt;
&lt;br /&gt;
* Main Raspberry Pi: 192.168.1.1&lt;br /&gt;
* Aux Raspberry Pi: 192.168.1.2&lt;br /&gt;
&lt;br /&gt;
=== Setup for External Computers ===&lt;br /&gt;
&lt;br /&gt;
To connect a computer to the robot network through Ethernet, configure the network interface manually. The following settings must be configured:&lt;br /&gt;
* Subnet mask: 255.255.255.0&lt;br /&gt;
* Assign an available static IP address in the range 192.168.1.x&lt;br /&gt;
&lt;br /&gt;
Note: 192.168.1.1 and 192.168.1.2 are already assigned to the Raspberry Pi units and must not be reused&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Lidar =&lt;br /&gt;
&lt;br /&gt;
The lidar is a ...&lt;br /&gt;
&lt;br /&gt;
= Realsense D455 =&lt;br /&gt;
&lt;br /&gt;
The camera is a ...&lt;br /&gt;
&lt;br /&gt;
= Teensy Configuration =&lt;br /&gt;
&lt;br /&gt;
[[File:teensy-configuration.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
Figure: The main hardware blocks. Two Teensy processors are the interface to the hardware. The drive processor controls the drive motors, safety and battery system. The front processor controls the brush and the front wheel to lift the brush. A main PC integrates the functionality with additional sensors to allow autonomous operation.&lt;br /&gt;
&lt;br /&gt;
= Teensy firmware =&lt;br /&gt;
&lt;br /&gt;
[[Fejemis Teensy]] software is build using standard Arduino library configurations.&lt;br /&gt;
The interface to the main PC is organized as text-lines.&lt;br /&gt;
&lt;br /&gt;
= Electrical =&lt;br /&gt;
&lt;br /&gt;
[[Fejemis electrical]] wiring etc.&lt;br /&gt;
&lt;br /&gt;
= Battery control =&lt;br /&gt;
&lt;br /&gt;
The [[Fejemis battery control]] is a 24V system (2x3cell LiPo 5Ah) with power on-off and measurement electronics. There is on-board chargers for all batteries.&lt;br /&gt;
&lt;br /&gt;
= Other features =&lt;br /&gt;
&lt;br /&gt;
=== Linear actuator ===&lt;br /&gt;
&lt;br /&gt;
The actuator is a ...&lt;br /&gt;
&lt;br /&gt;
=== Brush unit ===&lt;br /&gt;
&lt;br /&gt;
The [[Fejemis brush unit]] is a commercial brush that comes with its own battery (12V), charger and motor control. The unit is slightly modified to to allow measurement and control from the software.&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8874</id>
		<title>Fejemis 2026</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8874"/>
		<updated>2026-05-27T12:34:23Z</updated>

		<summary type="html">&lt;p&gt;S253745: /* Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Fejemis is an autonomous cleaning robot developed to clean the Asta building. The building is divided into different cleaning areas, where the robot navigates autonomously to a selected point, plans a cleaning path, and performs the cleaning task using its brushing system while following the generated route.&lt;br /&gt;
&lt;br /&gt;
[[File:Fejemis.jpeg | 600px]]&lt;br /&gt;
&lt;br /&gt;
== Start up guide ==&lt;br /&gt;
&lt;br /&gt;
To turn on Fejemis, you need to press the turn on button for more than 2 seconds. If not, both Raspberry Pis wont boot. To turn it off you need to press it for more than 7 seconds.&lt;br /&gt;
&lt;br /&gt;
To work with Fejemis, you can connect directly using a monitor and keyboard. The monitor can be connected to one of the Raspberry Pis, while the keyboard connects through USB. After booting, log into the Ubuntu system using the provided credentials.&lt;br /&gt;
&lt;br /&gt;
Fejemis uses two Raspberry Pis:&lt;br /&gt;
&lt;br /&gt;
Main Raspberry Pi and Auxiliary Raspberry Pi&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pis can be also accessed through SSH.(The IP some time changes, check it by connecting directly with the monitor)&lt;br /&gt;
 Main lab&lt;br /&gt;
 local@10.197.213.227&lt;br /&gt;
 Aux lab&lt;br /&gt;
 local@10.197.213.226&lt;br /&gt;
 Main asta&lt;br /&gt;
 local@10.197.219.238&lt;br /&gt;
 Aux lab&lt;br /&gt;
 local@10.197.219.237&lt;br /&gt;
&lt;br /&gt;
The last way of connecting is through Ethernet. &lt;br /&gt;
 Main&lt;br /&gt;
 197.168.1.1 &lt;br /&gt;
 Aux&lt;br /&gt;
 197.168.1.2&lt;br /&gt;
&lt;br /&gt;
If you are connected to the main Raspberry Pi,the auxiliary Raspberry Pi can also be accessed using:&lt;br /&gt;
 &lt;br /&gt;
 ssh fejemis-aux&lt;br /&gt;
&lt;br /&gt;
=== Launch===&lt;br /&gt;
&lt;br /&gt;
Launching the bridge (from anywhere):&lt;br /&gt;
 ros2 launch fejemis_bridge bridge.launch.py&lt;br /&gt;
&lt;br /&gt;
Launching the mixer + gamepad control (from anywhere):&lt;br /&gt;
 ros2 launch fejemis_bridge mixer.launch.py&lt;br /&gt;
&lt;br /&gt;
You need to press the &amp;quot;BACK&amp;quot; button on the gamepad to actually start the control from the gamepad.&lt;br /&gt;
&lt;br /&gt;
You can launch both at once with the following command: ros2 launch fejemis_bridge control.launch.py&lt;br /&gt;
&lt;br /&gt;
This launch file runs the latest version of the autonomous cleaning software:&lt;br /&gt;
&lt;br /&gt;
 ros2 launch fejemis robot.launch.py &lt;br /&gt;
&lt;br /&gt;
It must be launched on both Raspberry Pis, since each device handles different parts of the system.&lt;br /&gt;
&lt;br /&gt;
Arguments:&lt;br /&gt;
 localization:=true/false, map_location:=asta/lab&lt;br /&gt;
&lt;br /&gt;
Default: localization true, map loc asta&lt;br /&gt;
&lt;br /&gt;
If the argument &amp;quot;localization:=false&amp;quot; is provided, the robot will automatically start a new mapping process and overwrite the current map.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If Fejemis crash (one of the battery display will turn off), you need to plug it in before turning it on again.&lt;br /&gt;
&lt;br /&gt;
=== Other utilities ===&lt;br /&gt;
&lt;br /&gt;
If you want to generate a square signal, you can use the node I made:&lt;br /&gt;
&lt;br /&gt;
ros2 run arcana_tools signal_generator --ros-args -p frequency:=&amp;lt;signal_freq&amp;gt; -p out_type:=&amp;lt;output ROS2 type&amp;gt; -r /sig_out:=&amp;lt;output topic&amp;gt; -p bias:=&amp;lt;signal bias&amp;gt; -p range:=&amp;lt;vmax-vmin&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Typically you wight want to send it as if it was a gamepad input:&lt;br /&gt;
&lt;br /&gt;
ros2 run arcana_tools signal_generator--ros-args -p frequency:=0.5 -p out_type:=geometry_msgs.msg.Twist.linear.x -r /sig_out:=/joy_control/cmd_vel -p range:=0.5&lt;br /&gt;
&lt;br /&gt;
You can display graphs using the rqt tool (type rqt in a terminal). There&#039;s a plugin &amp;quot;Vizualization&amp;gt;Plot&amp;quot; that integrate the python 3 matplotlib package.&lt;br /&gt;
&lt;br /&gt;
To enable the fetching of the wheels velocities from the bridge, you may need to edit the file &amp;quot;~/.config/fejemis_bridge/bridge.yaml&amp;quot; and set enable: true instead of false in the vel section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Mechanics ===&lt;br /&gt;
&lt;br /&gt;
You can access the technical description of the [[Mechanics]] in this page. &lt;br /&gt;
&lt;br /&gt;
=== Electronics ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can access the technical description of the [[Electronics]] in this page.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
The software is split into two components:&lt;br /&gt;
*&#039;&#039;&#039;[[Fejemis bridge]]&#039;&#039;&#039; — handles communication between the main Raspberry Pi and the Teensy controllers and provides a manual/remote-control interface. See [[Fejemis repository]] for source and docs.&lt;br /&gt;
*&#039;&#039;&#039;[[Fejemis ROS2 Software]]&#039;&#039;&#039; — higher-level programs for mapping, navigation, and robot behaviours located in &#039;&#039;&#039;Fejemis_workspace_2026&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Old repository ====&lt;br /&gt;
You can access the description of the legacy  through this link.&lt;br /&gt;
&lt;br /&gt;
== Mission Statement ==&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Repository&amp;diff=8873</id>
		<title>Repository</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Repository&amp;diff=8873"/>
		<updated>2026-05-27T12:33:57Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Back to [[Flexbot]] main page&lt;br /&gt;
&lt;br /&gt;
=Git repository=&lt;br /&gt;
&lt;br /&gt;
The git repository holds all project files. This includes:&lt;br /&gt;
* 3D files (*.stl)&lt;br /&gt;
* Schematics (exported from and available through Upverter)&lt;br /&gt;
* Datasheets and documentation for all hardware components&lt;br /&gt;
* Software for the Flexbot&lt;br /&gt;
&lt;br /&gt;
Use this page to browse: https://repos.gbar.dtu.dk/gitweb/?p=jcan/flexbot.git;a=tree &lt;br /&gt;
&lt;br /&gt;
== Read only access==&lt;br /&gt;
&lt;br /&gt;
Get a copy of all&lt;br /&gt;
&lt;br /&gt;
 git clone git://repos.gbar.dtu.dk/git/jcan/flexbot.git&lt;br /&gt;
&lt;br /&gt;
This should not ask for a username/password&lt;br /&gt;
&lt;br /&gt;
== Read write access ==&lt;br /&gt;
&lt;br /&gt;
First get a copy of the repository (will be in a subdirectory called &#039;flexbot&#039;.&lt;br /&gt;
&lt;br /&gt;
 git clone https://repos.gbar.dtu.dk/git/jcan/flexbot.git&lt;br /&gt;
&lt;br /&gt;
Then to refresh the copy, go to the flexbot directory and say:&lt;br /&gt;
&lt;br /&gt;
 git pull&lt;br /&gt;
&lt;br /&gt;
Adding new files&lt;br /&gt;
&lt;br /&gt;
 git add foo.cpp bar.h&lt;br /&gt;
 git commit -m &amp;quot;commit message (i.e. what was changed)&amp;quot;&lt;br /&gt;
 git push&lt;br /&gt;
&lt;br /&gt;
After modifying files, this may be easier (there may be simpler ways, but then I don&#039;t know)&lt;br /&gt;
&lt;br /&gt;
 git add *.h *.cpp&lt;br /&gt;
 git commit -m &amp;quot;commit message (i.e. what was changed)&amp;quot;&lt;br /&gt;
 git push&lt;br /&gt;
&lt;br /&gt;
--[[User:Jca|Jca]] ([[User talk:Jca|talk]]) 12:58, 9 June 2018 (CEST)&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Repository&amp;diff=8872</id>
		<title>Repository</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Repository&amp;diff=8872"/>
		<updated>2026-05-27T12:33:26Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Fejemis_2026]]&lt;br /&gt;
&lt;br /&gt;
Back to [[Flexbot]] main page&lt;br /&gt;
&lt;br /&gt;
=Git repository=&lt;br /&gt;
&lt;br /&gt;
The git repository holds all project files. This includes:&lt;br /&gt;
* 3D files (*.stl)&lt;br /&gt;
* Schematics (exported from and available through Upverter)&lt;br /&gt;
* Datasheets and documentation for all hardware components&lt;br /&gt;
* Software for the Flexbot&lt;br /&gt;
&lt;br /&gt;
Use this page to browse: https://repos.gbar.dtu.dk/gitweb/?p=jcan/flexbot.git;a=tree &lt;br /&gt;
&lt;br /&gt;
== Read only access==&lt;br /&gt;
&lt;br /&gt;
Get a copy of all&lt;br /&gt;
&lt;br /&gt;
 git clone git://repos.gbar.dtu.dk/git/jcan/flexbot.git&lt;br /&gt;
&lt;br /&gt;
This should not ask for a username/password&lt;br /&gt;
&lt;br /&gt;
== Read write access ==&lt;br /&gt;
&lt;br /&gt;
First get a copy of the repository (will be in a subdirectory called &#039;flexbot&#039;.&lt;br /&gt;
&lt;br /&gt;
 git clone https://repos.gbar.dtu.dk/git/jcan/flexbot.git&lt;br /&gt;
&lt;br /&gt;
Then to refresh the copy, go to the flexbot directory and say:&lt;br /&gt;
&lt;br /&gt;
 git pull&lt;br /&gt;
&lt;br /&gt;
Adding new files&lt;br /&gt;
&lt;br /&gt;
 git add foo.cpp bar.h&lt;br /&gt;
 git commit -m &amp;quot;commit message (i.e. what was changed)&amp;quot;&lt;br /&gt;
 git push&lt;br /&gt;
&lt;br /&gt;
After modifying files, this may be easier (there may be simpler ways, but then I don&#039;t know)&lt;br /&gt;
&lt;br /&gt;
 git add *.h *.cpp&lt;br /&gt;
 git commit -m &amp;quot;commit message (i.e. what was changed)&amp;quot;&lt;br /&gt;
 git push&lt;br /&gt;
&lt;br /&gt;
--[[User:Jca|Jca]] ([[User talk:Jca|talk]]) 12:58, 9 June 2018 (CEST)&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Repository&amp;diff=8871</id>
		<title>Repository</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Repository&amp;diff=8871"/>
		<updated>2026-05-27T12:33:17Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Fejemis_2026]]&lt;br /&gt;
Back to [[Flexbot]] main page&lt;br /&gt;
&lt;br /&gt;
=Git repository=&lt;br /&gt;
&lt;br /&gt;
The git repository holds all project files. This includes:&lt;br /&gt;
* 3D files (*.stl)&lt;br /&gt;
* Schematics (exported from and available through Upverter)&lt;br /&gt;
* Datasheets and documentation for all hardware components&lt;br /&gt;
* Software for the Flexbot&lt;br /&gt;
&lt;br /&gt;
Use this page to browse: https://repos.gbar.dtu.dk/gitweb/?p=jcan/flexbot.git;a=tree &lt;br /&gt;
&lt;br /&gt;
== Read only access==&lt;br /&gt;
&lt;br /&gt;
Get a copy of all&lt;br /&gt;
&lt;br /&gt;
 git clone git://repos.gbar.dtu.dk/git/jcan/flexbot.git&lt;br /&gt;
&lt;br /&gt;
This should not ask for a username/password&lt;br /&gt;
&lt;br /&gt;
== Read write access ==&lt;br /&gt;
&lt;br /&gt;
First get a copy of the repository (will be in a subdirectory called &#039;flexbot&#039;.&lt;br /&gt;
&lt;br /&gt;
 git clone https://repos.gbar.dtu.dk/git/jcan/flexbot.git&lt;br /&gt;
&lt;br /&gt;
Then to refresh the copy, go to the flexbot directory and say:&lt;br /&gt;
&lt;br /&gt;
 git pull&lt;br /&gt;
&lt;br /&gt;
Adding new files&lt;br /&gt;
&lt;br /&gt;
 git add foo.cpp bar.h&lt;br /&gt;
 git commit -m &amp;quot;commit message (i.e. what was changed)&amp;quot;&lt;br /&gt;
 git push&lt;br /&gt;
&lt;br /&gt;
After modifying files, this may be easier (there may be simpler ways, but then I don&#039;t know)&lt;br /&gt;
&lt;br /&gt;
 git add *.h *.cpp&lt;br /&gt;
 git commit -m &amp;quot;commit message (i.e. what was changed)&amp;quot;&lt;br /&gt;
 git push&lt;br /&gt;
&lt;br /&gt;
--[[User:Jca|Jca]] ([[User talk:Jca|talk]]) 12:58, 9 June 2018 (CEST)&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_ROS2_Software&amp;diff=8870</id>
		<title>Fejemis ROS2 Software</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_ROS2_Software&amp;diff=8870"/>
		<updated>2026-05-27T12:32:51Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Fejemis_2026]]&lt;br /&gt;
&lt;br /&gt;
== Fejemis Software Overview ==&lt;br /&gt;
The Fejemis software is split into multiple components. The full ROS2 workspace and related repositories are available on GitHub: https://github.com/Melvin-Angel/Fejemis_Workspace_2026.git&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
This documentation summarises the main software components used on the robot and explains how the system can be distributed across multiple Raspberry Pis (Multi‑Pi setup).&lt;br /&gt;
&lt;br /&gt;
The two primary concerns are:&lt;br /&gt;
* Hardware bridge and low-level microcontroller integration (the Fejemis bridge).&lt;br /&gt;
* The ROS 2 software stack for mapping, perception, and high-level behaviours (the Fejemis ROS2 workspace).&lt;br /&gt;
&lt;br /&gt;
== Fejemis ==&lt;br /&gt;
The top-level `fejemis` package is the entry point for the robot stack. It ties the bridge, description, map/localisation, simulation, and vision packages together and installs the main launch files for the complete system.&lt;br /&gt;
&lt;br /&gt;
Launch files:&lt;br /&gt;
* `launch/robot.launch.py` - main bringup file for the real robot and multi-Pi setup. It starts the bridge control first and then launches odometry, LiDAR, SLAM, localisation, and vision depending on the selected options.&lt;br /&gt;
* `launch/sim.launch.py` - convenience entry point for simulation. It starts `launch/robot.launch.py` with `in_sim=True`.&lt;br /&gt;
&lt;br /&gt;
Configurable parameters in `launch/robot.launch.py`:&lt;br /&gt;
* `is_aux` - marks whether the launch is running on the auxiliary Raspberry Pi. The default is detected automatically.&lt;br /&gt;
* `in_sim` - enables simulation mode.&lt;br /&gt;
* `localization` - runs RTAB-Map in localisation mode when `true`.&lt;br /&gt;
* `map_location` - selects the map database to load (`lab` or `asta`).&lt;br /&gt;
* `enable_vision` - enables the vision stack for people, cable, and net detection.&lt;br /&gt;
&lt;br /&gt;
== Fejemis Bridge ==&lt;br /&gt;
The `fejemis_bridge` package handles the low-level interface between the main Raspberry Pi and the Teensy controllers. It contains the serial bridge, the command mixer, and the joystick helper nodes used for manual control.&lt;br /&gt;
&lt;br /&gt;
Launch files:&lt;br /&gt;
* `launch/bridge.launch.py` - starts the bridge node itself.&lt;br /&gt;
* `launch/mixer.launch.py` - starts the command mixer and joystick input nodes.&lt;br /&gt;
* `launch/control.launch.py` - launches the full control side of the bridge stack and forwards the serial-device arguments.&lt;br /&gt;
&lt;br /&gt;
Nodes in this package:&lt;br /&gt;
* `bridge` - main bridge executable, published in the `fejemis` namespace.&lt;br /&gt;
* `raubase_core/rcmixer` - command mixer that combines control inputs.&lt;br /&gt;
* `joy/game_controller_node` - joystick/gamepad input node.&lt;br /&gt;
* `raubase_core/joy_control` - joystick mode switch node.&lt;br /&gt;
* `joy_brush_toggle.py` - button toggle for the brush control.&lt;br /&gt;
* `joy_linear_actuator.py` - button toggle for the linear actuator.&lt;br /&gt;
&lt;br /&gt;
Configurable parameters:&lt;br /&gt;
* `front_device` - serial device for the front Teensy controller.&lt;br /&gt;
* `drive_device` - serial device for the drive Teensy controller.&lt;br /&gt;
* `log_level` - logging level for the bridge node.&lt;br /&gt;
* `in_sim` and `is_aux` - forwarded through the control launch file to select the correct runtime path.&lt;br /&gt;
* Joystick helper settings such as `joy_topic`, `steer_manage_topic`, `linear_actuator_topic`, `button_index`, `initial_brush_on`, and `initial_actuator_up`.&lt;br /&gt;
&lt;br /&gt;
== Fejemis Description ==&lt;br /&gt;
The `fejemis_description` package provides the robot model and URDF/Xacro setup. It is responsible for publishing the robot description and state so the rest of the stack can use the same model.&lt;br /&gt;
&lt;br /&gt;
Launch files:&lt;br /&gt;
* `launch/model.launch.py` - generates the URDF from the Xacro description and launches `robot_state_publisher`.&lt;br /&gt;
&lt;br /&gt;
Nodes in this package:&lt;br /&gt;
* `robot_state_publisher` - publishes the robot TF tree from the generated `robot_description`.&lt;br /&gt;
&lt;br /&gt;
Configurable parameters:&lt;br /&gt;
* `use_sim_time` - enables simulated time when running in Gazebo or another simulator.&lt;br /&gt;
&lt;br /&gt;
== Fejemis Sim ==&lt;br /&gt;
The `fejemis_sim` package contains the Gazebo simulation resources and the simulation bringup. It combines the robot description with the simulation world and connects ROS topics to Gazebo.&lt;br /&gt;
&lt;br /&gt;
Launch files:&lt;br /&gt;
* `launch/sim.launch.py` - starts the full simulation stack.&lt;br /&gt;
&lt;br /&gt;
Nodes in this package:&lt;br /&gt;
* `ros_gz_sim/create` - spawns the robot in Gazebo from `/robot_description`.&lt;br /&gt;
* `ros_gz_bridge/parameter_bridge` - bridges ROS and Gazebo topics.&lt;br /&gt;
* `raubase_core/rover_2_twist` - optional adapter that converts rover commands into Twist commands for Gazebo.&lt;br /&gt;
&lt;br /&gt;
Configurable parameters:&lt;br /&gt;
* `world` - world file to load, defaulting to `fejemis_sim::worlds/room.world`.&lt;br /&gt;
* `rover_cmd_adapter` - enables or disables the RoverCommand-to-Twist adapter.&lt;br /&gt;
* `rviz` - optional RViz flag provided by the launch file.&lt;br /&gt;
&lt;br /&gt;
== Fejemis Maploc ==&lt;br /&gt;
&lt;br /&gt;
== Fejemis Vision ==&lt;br /&gt;
&lt;br /&gt;
== Multi pi setup ==&lt;br /&gt;
This system supports a multi‑Pi arrangement where some hardware (for example, a RealSense camera or other sensors) runs on an auxiliary Raspberry Pi while the main robot and ROS 2 stack run on the primary Pi.&lt;br /&gt;
&lt;br /&gt;
Recommended minimal steps for a Multi‑Pi setup:&lt;br /&gt;
&lt;br /&gt;
1. Network and host setup&lt;br /&gt;
* Ensure all Pis are on the same local network (switch, VLAN or Wi‑Fi SSID) and can reach each other via IP.&lt;br /&gt;
* Prefer DHCP reservations or static IPs for each Pi to simplify configuration.&lt;br /&gt;
&lt;br /&gt;
2. SSH and automation&lt;br /&gt;
* Install SSH keys on each Pi so you can run remote commands and automation without passwords.&lt;br /&gt;
&lt;br /&gt;
3. Clone the workspace and install dependencies&lt;br /&gt;
On each Pi that needs software from the repository, clone the workspace and run the provided install scripts:&lt;br /&gt;
&lt;br /&gt;
```bash&lt;br /&gt;
git clone https://github.com/Melvin-Angel/Fejemis_Workspace_2026.git&lt;br /&gt;
cd Fejemis_Workspace_2026&lt;br /&gt;
./install.sh&lt;br /&gt;
source ./activate.sh&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
4. Camera / sensor hosts&lt;br /&gt;
* If the camera is on an auxiliary Pi, run the camera driver or streaming node there and expose the expected ROS topics across the network.&lt;br /&gt;
* In this workspace the mapping components expect RealSense RGB‑D topics; when the camera is on an aux Pi you can launch the camera remotely. Example (run on the primary Pi to start the aux launch):&lt;br /&gt;
&lt;br /&gt;
```bash&lt;br /&gt;
fejemis launch_aux fejemis_maploc realsense.launch.py&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
5. Time sync and reliability&lt;br /&gt;
* Enable NTP or systemd‑timesyncd on all Pis so timestamps on messages line up for logging and perception.&lt;br /&gt;
&lt;br /&gt;
=== Convenience commands ===&lt;br /&gt;
These helper commands make working with a two‑Pi setup easier.&lt;br /&gt;
&lt;br /&gt;
* `fejemis launch_aux` — start a launch file on an auxiliary Pi from the primary Pi. This is commonly used to start camera or sensor nodes remotely. Example:&lt;br /&gt;
&lt;br /&gt;
```bash&lt;br /&gt;
fejemis launch_aux fejemis robot.launch.py&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
* `fejemis sync_clocks` — synchronise system clocks across Pis (uses SSH and sudo on targets). Run this before recording or starting perception stacks so timestamps align. Example:&lt;br /&gt;
&lt;br /&gt;
```bash&lt;br /&gt;
fejemis sync_clocks&lt;br /&gt;
```&lt;br /&gt;
== Network Configuration ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- end --&amp;gt;&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_bridge&amp;diff=8869</id>
		<title>Fejemis bridge</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_bridge&amp;diff=8869"/>
		<updated>2026-05-27T12:32:37Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Fejemis_2026]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bridge overview==&lt;br /&gt;
&lt;br /&gt;
[[File:bridge-overview.png | 700px]]&lt;br /&gt;
&lt;br /&gt;
The bridge combines different inputs from hardware sources to a single message database from which the messages can be seubscriber.&lt;br /&gt;
This makes the bridge a combination of a bridge (slightly reformatting the messsages) and a message broker, from which clients can subscribe to messages. Messahes can also be send from any of these broker-clients.&lt;br /&gt;
&lt;br /&gt;
Selected interface points are made available as ROS messages and key commands can be received from ROS.&lt;br /&gt;
&lt;br /&gt;
The main input and output connections are to the Drive and Front Teensy boards, these connections are protected by a simple checksum, the &#039;;99&#039; part, to avoid false or half messages when powering up. &lt;br /&gt;
&lt;br /&gt;
* All data items are single lines of text. These data items start with a key and optionally additional parameters. The data item has further a data source associated. &lt;br /&gt;
* Data items can be directed to a destination (data forward). &lt;br /&gt;
* A data item can be requested, or updates to a data item can be subscribed.&lt;br /&gt;
&lt;br /&gt;
The ini-file holds a set of commands, e.g. calibration data or subscription of data to any destination.&lt;br /&gt;
&lt;br /&gt;
All data items can be logged individually with a timestamp.&lt;br /&gt;
&lt;br /&gt;
The client GUI is to help configure/calibrate the sensors and low-level control loops.&lt;br /&gt;
&lt;br /&gt;
==Bridge initialization file==&lt;br /&gt;
&lt;br /&gt;
The initialization file holds a list of commands that will be handled by the bridge.&lt;br /&gt;
The file is called bridge.ini and is positioned in the same directory as the executable&lt;br /&gt;
&lt;br /&gt;
Most commands start with a destination keyword. If that interface is opened after the initial read of the initialization file, then the file is read again for the commands destinated for this interface.&lt;br /&gt;
&lt;br /&gt;
An example of an initialization file could be:&lt;br /&gt;
&lt;br /&gt;
 ; inifile to fejemis bridge&lt;br /&gt;
 ; start both Teensy connections&lt;br /&gt;
 bridge teensy 0 1&lt;br /&gt;
 bridge teensy 1 1&lt;br /&gt;
 ; front teensy help&lt;br /&gt;
 # Text from ini-loader&lt;br /&gt;
 drive posei&lt;br /&gt;
 drive veli&lt;br /&gt;
 drive gyroi&lt;br /&gt;
 drive confi&lt;br /&gt;
 ; subscribe to regular stream of data&lt;br /&gt;
 drive sub pose 10&lt;br /&gt;
 drive sub gyro 11&lt;br /&gt;
 drive sub enc 9&lt;br /&gt;
 drive sub bat 400&lt;br /&gt;
 drive sub conf 801&lt;br /&gt;
 drive sub hbt 601&lt;br /&gt;
 drive sub mot 23&lt;br /&gt;
 drive sub id 2000&lt;br /&gt;
 drive sub ver 2001&lt;br /&gt;
 ; &lt;br /&gt;
 front led 1 200 0 0&lt;br /&gt;
 front led 2 200 0 0&lt;br /&gt;
 front led 3 200 0 0&lt;br /&gt;
 front led 4 200 0 0&lt;br /&gt;
 front led 5 200 0 0&lt;br /&gt;
 front led 6 200 0 0&lt;br /&gt;
 ; steering control settings&lt;br /&gt;
 ; cssteer 1 Kp I_use I_tau I_lim 1 Df_use tz tp Db_use tz tp ...&lt;br /&gt;
 ;         pre_use tz tp lim_use max min ff_use Kff fff_use tz tp angAdj&lt;br /&gt;
 ;               Kp  ---I-------  fwd-filter-  bk-filt-  pre-f   out-limit--- --ff+filt- fold&lt;br /&gt;
 front cssteer  1 5   0 1 100  1  1 0.5 0.05  1 0 0.02   0 1 1   0 -1000 1000 0 1 0 1 1  1&lt;br /&gt;
 front sub id 2000&lt;br /&gt;
 front sub ver 2001&lt;br /&gt;
 front sub hbt 601&lt;br /&gt;
 ; max values for RC control &lt;br /&gt;
 ; velocity (m/sec), turn rate deg/sec, and slow factor (0.2&#039;ish)&lt;br /&gt;
 gamepad rcmax 2.0 45 0.2&lt;br /&gt;
 ;drive:pose logopen&lt;br /&gt;
 ;drive:gyro logopen&lt;br /&gt;
 ; allow robot to drive&lt;br /&gt;
 ;drive arm&lt;br /&gt;
 ; send RC to both front and drive&lt;br /&gt;
 gamepad:rc subscribe -1 front&lt;br /&gt;
 gamepad:rc subscribe -1 drive&lt;br /&gt;
 gamepad:rc subscribe -1 regbot&lt;br /&gt;
 ; send steer angle to drive&lt;br /&gt;
 front:fwl subscribe -1 drive&lt;br /&gt;
 ;&lt;br /&gt;
 ; command-line options&lt;br /&gt;
 ; if bridge is run from the command line&lt;br /&gt;
 regbot:# subscribe -1 console&lt;br /&gt;
 front:# subscribe -1 console&lt;br /&gt;
 drive:# subscribe -1 console&lt;br /&gt;
 ;&lt;br /&gt;
 ; publish pose to ROS&lt;br /&gt;
 ; if source is a regbot&lt;br /&gt;
 ;regbot:pose subscribe -1 ros&lt;br /&gt;
 ; if source is fejemis&lt;br /&gt;
 ;drive:pose subscribe -1 ros&lt;br /&gt;
&lt;br /&gt;
Lines starting with &#039;;&#039; is a comment&lt;br /&gt;
&lt;br /&gt;
==Management commands==&lt;br /&gt;
&lt;br /&gt;
Both data items and data sources can be managed by a set of reserved keywords.&lt;br /&gt;
That is, if a command is sent to a destination with one of these keywords, the message is not sent to the data source, but handled by the interface.&lt;br /&gt;
&lt;br /&gt;
===Reserved commands for an interface===&lt;br /&gt;
&lt;br /&gt;
The reserved keywords or commands related to an interface:&lt;br /&gt;
&lt;br /&gt;
====Ini-file handler====&lt;br /&gt;
&lt;br /&gt;
A command line starting with the destination &#039;ini&#039; is handled by the initialization module, e.g.:&lt;br /&gt;
 ini reload drive&lt;br /&gt;
Command list:&lt;br /&gt;
&lt;br /&gt;
 * load &amp;lt;filename&amp;gt;         Load a specific initialization file (bridge.ini is always loaded at the start of the bridge).&lt;br /&gt;
 * reload &amp;lt;interface name&amp;gt; Reloads the system initialization file (bridge.ini) for this interface.&lt;br /&gt;
 * logopen                 Creates a log for use of ini-file.&lt;br /&gt;
 * logclose                Closes log for ini-use.&lt;br /&gt;
 * help                    This list&lt;br /&gt;
&lt;br /&gt;
==== Teensy interface ====&lt;br /&gt;
&lt;br /&gt;
There are two Teensy interfaces &#039;drive&#039; and &#039;front&#039;&lt;br /&gt;
&lt;br /&gt;
e.g.:&lt;br /&gt;
 drive logopen&lt;br /&gt;
&lt;br /&gt;
Command list:&lt;br /&gt;
&lt;br /&gt;
 * meta      Get the metadata related to the interface, a text message.&lt;br /&gt;
 * logopen   Create logfile with all updates through this data source (one for tx and one for rx).&lt;br /&gt;
 * logclose  Close the logfiles.&lt;br /&gt;
 * help      This list&lt;br /&gt;
&lt;br /&gt;
The Teensys has data items and commands as described here: ????&lt;br /&gt;
&lt;br /&gt;
==== Bridge ====&lt;br /&gt;
&lt;br /&gt;
e.g.:&lt;br /&gt;
 bridge list&lt;br /&gt;
&lt;br /&gt;
Command list:&lt;br /&gt;
&lt;br /&gt;
 * list         List all data items and data sources in the system as text&lt;br /&gt;
 * items        List all data items in the format &#039;item N U L source: keyword params&#039;, where N is item number, U is number of updates received, L is logfile open.&lt;br /&gt;
 * restart      Is a command to restart the bridge (and thereby delete all data points)&lt;br /&gt;
 * quit         Quit the bridge&lt;br /&gt;
 * batlow V     Set the battry low value to V (the system shuts down, when this value is passed).&lt;br /&gt;
 * teensy D A   Starts or stops a teensy connection, D is device (0 or 1), set A=1 to activate or A=0 to deactivate.&lt;br /&gt;
 * help         This list&lt;br /&gt;
&lt;br /&gt;
==== Joystick (gamepad) ====&lt;br /&gt;
&lt;br /&gt;
e.g.:&lt;br /&gt;
 gamepad dev&lt;br /&gt;
&lt;br /&gt;
Command list:&lt;br /&gt;
&lt;br /&gt;
 * dev           Lists gamepad interface details&lt;br /&gt;
 * rcmax V T S   Set maximum velocity (m/s), turnrate (deg/sec) and slow factor ]0..1]&lt;br /&gt;
 * spgm  B cmd   Associate a buttom B on the gamepad with a command &#039;cmd&#039;&lt;br /&gt;
 * help          This list&lt;br /&gt;
&lt;br /&gt;
==== ROS interface ====&lt;br /&gt;
&lt;br /&gt;
No specific commands.&lt;br /&gt;
&lt;br /&gt;
===Reserved commands for a data item===&lt;br /&gt;
&lt;br /&gt;
The reserved keywords handled by a data item are:&lt;br /&gt;
&lt;br /&gt;
e.g.:&lt;br /&gt;
 drive:pose subscribe -1 ROS&lt;br /&gt;
Command list:&lt;br /&gt;
 * subscribe    E.g. &#039;drive:pose subscribe -1 ros&#039;, where the data item is &#039;pose&#039; from the &lt;br /&gt;
                source &#039;drive&#039;, the parameter -1 means all updates and the destination &lt;br /&gt;
                interface is &#039;ROS&#039;.&lt;br /&gt;
 * onupdate P C Set a message to be handled, when this data item is updated, &lt;br /&gt;
                e.g. request a gyro message, when an actuator is activated. &lt;br /&gt;
                P=-1 all updates, 0=none, else interval in ms as fastest rate. C is the action string.&lt;br /&gt;
 * status       Request status for the data item (number of updates, and list of subscribers).&lt;br /&gt;
 * name string  Set the name of the data item, e.g. &#039;drive::conf name Configuration values &lt;br /&gt;
                for drive system&#039;, anything after &#039;name &#039; is the new description of the data item.&lt;br /&gt;
 * get          Get the latest value of the data item.&lt;br /&gt;
 * meta         Get the metadata related to the data item (including the name).&lt;br /&gt;
 * logopen      Create logfile with all updates to this data item or all traffic through this data source.&lt;br /&gt;
 * logclose     Close the logfile.&lt;br /&gt;
 * help         This list).&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_bridge&amp;diff=8868</id>
		<title>Fejemis bridge</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_bridge&amp;diff=8868"/>
		<updated>2026-05-27T12:31:49Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[fejemis]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bridge overview==&lt;br /&gt;
&lt;br /&gt;
[[File:bridge-overview.png | 700px]]&lt;br /&gt;
&lt;br /&gt;
The bridge combines different inputs from hardware sources to a single message database from which the messages can be seubscriber.&lt;br /&gt;
This makes the bridge a combination of a bridge (slightly reformatting the messsages) and a message broker, from which clients can subscribe to messages. Messahes can also be send from any of these broker-clients.&lt;br /&gt;
&lt;br /&gt;
Selected interface points are made available as ROS messages and key commands can be received from ROS.&lt;br /&gt;
&lt;br /&gt;
The main input and output connections are to the Drive and Front Teensy boards, these connections are protected by a simple checksum, the &#039;;99&#039; part, to avoid false or half messages when powering up. &lt;br /&gt;
&lt;br /&gt;
* All data items are single lines of text. These data items start with a key and optionally additional parameters. The data item has further a data source associated. &lt;br /&gt;
* Data items can be directed to a destination (data forward). &lt;br /&gt;
* A data item can be requested, or updates to a data item can be subscribed.&lt;br /&gt;
&lt;br /&gt;
The ini-file holds a set of commands, e.g. calibration data or subscription of data to any destination.&lt;br /&gt;
&lt;br /&gt;
All data items can be logged individually with a timestamp.&lt;br /&gt;
&lt;br /&gt;
The client GUI is to help configure/calibrate the sensors and low-level control loops.&lt;br /&gt;
&lt;br /&gt;
==Bridge initialization file==&lt;br /&gt;
&lt;br /&gt;
The initialization file holds a list of commands that will be handled by the bridge.&lt;br /&gt;
The file is called bridge.ini and is positioned in the same directory as the executable&lt;br /&gt;
&lt;br /&gt;
Most commands start with a destination keyword. If that interface is opened after the initial read of the initialization file, then the file is read again for the commands destinated for this interface.&lt;br /&gt;
&lt;br /&gt;
An example of an initialization file could be:&lt;br /&gt;
&lt;br /&gt;
 ; inifile to fejemis bridge&lt;br /&gt;
 ; start both Teensy connections&lt;br /&gt;
 bridge teensy 0 1&lt;br /&gt;
 bridge teensy 1 1&lt;br /&gt;
 ; front teensy help&lt;br /&gt;
 # Text from ini-loader&lt;br /&gt;
 drive posei&lt;br /&gt;
 drive veli&lt;br /&gt;
 drive gyroi&lt;br /&gt;
 drive confi&lt;br /&gt;
 ; subscribe to regular stream of data&lt;br /&gt;
 drive sub pose 10&lt;br /&gt;
 drive sub gyro 11&lt;br /&gt;
 drive sub enc 9&lt;br /&gt;
 drive sub bat 400&lt;br /&gt;
 drive sub conf 801&lt;br /&gt;
 drive sub hbt 601&lt;br /&gt;
 drive sub mot 23&lt;br /&gt;
 drive sub id 2000&lt;br /&gt;
 drive sub ver 2001&lt;br /&gt;
 ; &lt;br /&gt;
 front led 1 200 0 0&lt;br /&gt;
 front led 2 200 0 0&lt;br /&gt;
 front led 3 200 0 0&lt;br /&gt;
 front led 4 200 0 0&lt;br /&gt;
 front led 5 200 0 0&lt;br /&gt;
 front led 6 200 0 0&lt;br /&gt;
 ; steering control settings&lt;br /&gt;
 ; cssteer 1 Kp I_use I_tau I_lim 1 Df_use tz tp Db_use tz tp ...&lt;br /&gt;
 ;         pre_use tz tp lim_use max min ff_use Kff fff_use tz tp angAdj&lt;br /&gt;
 ;               Kp  ---I-------  fwd-filter-  bk-filt-  pre-f   out-limit--- --ff+filt- fold&lt;br /&gt;
 front cssteer  1 5   0 1 100  1  1 0.5 0.05  1 0 0.02   0 1 1   0 -1000 1000 0 1 0 1 1  1&lt;br /&gt;
 front sub id 2000&lt;br /&gt;
 front sub ver 2001&lt;br /&gt;
 front sub hbt 601&lt;br /&gt;
 ; max values for RC control &lt;br /&gt;
 ; velocity (m/sec), turn rate deg/sec, and slow factor (0.2&#039;ish)&lt;br /&gt;
 gamepad rcmax 2.0 45 0.2&lt;br /&gt;
 ;drive:pose logopen&lt;br /&gt;
 ;drive:gyro logopen&lt;br /&gt;
 ; allow robot to drive&lt;br /&gt;
 ;drive arm&lt;br /&gt;
 ; send RC to both front and drive&lt;br /&gt;
 gamepad:rc subscribe -1 front&lt;br /&gt;
 gamepad:rc subscribe -1 drive&lt;br /&gt;
 gamepad:rc subscribe -1 regbot&lt;br /&gt;
 ; send steer angle to drive&lt;br /&gt;
 front:fwl subscribe -1 drive&lt;br /&gt;
 ;&lt;br /&gt;
 ; command-line options&lt;br /&gt;
 ; if bridge is run from the command line&lt;br /&gt;
 regbot:# subscribe -1 console&lt;br /&gt;
 front:# subscribe -1 console&lt;br /&gt;
 drive:# subscribe -1 console&lt;br /&gt;
 ;&lt;br /&gt;
 ; publish pose to ROS&lt;br /&gt;
 ; if source is a regbot&lt;br /&gt;
 ;regbot:pose subscribe -1 ros&lt;br /&gt;
 ; if source is fejemis&lt;br /&gt;
 ;drive:pose subscribe -1 ros&lt;br /&gt;
&lt;br /&gt;
Lines starting with &#039;;&#039; is a comment&lt;br /&gt;
&lt;br /&gt;
==Management commands==&lt;br /&gt;
&lt;br /&gt;
Both data items and data sources can be managed by a set of reserved keywords.&lt;br /&gt;
That is, if a command is sent to a destination with one of these keywords, the message is not sent to the data source, but handled by the interface.&lt;br /&gt;
&lt;br /&gt;
===Reserved commands for an interface===&lt;br /&gt;
&lt;br /&gt;
The reserved keywords or commands related to an interface:&lt;br /&gt;
&lt;br /&gt;
====Ini-file handler====&lt;br /&gt;
&lt;br /&gt;
A command line starting with the destination &#039;ini&#039; is handled by the initialization module, e.g.:&lt;br /&gt;
 ini reload drive&lt;br /&gt;
Command list:&lt;br /&gt;
&lt;br /&gt;
 * load &amp;lt;filename&amp;gt;         Load a specific initialization file (bridge.ini is always loaded at the start of the bridge).&lt;br /&gt;
 * reload &amp;lt;interface name&amp;gt; Reloads the system initialization file (bridge.ini) for this interface.&lt;br /&gt;
 * logopen                 Creates a log for use of ini-file.&lt;br /&gt;
 * logclose                Closes log for ini-use.&lt;br /&gt;
 * help                    This list&lt;br /&gt;
&lt;br /&gt;
==== Teensy interface ====&lt;br /&gt;
&lt;br /&gt;
There are two Teensy interfaces &#039;drive&#039; and &#039;front&#039;&lt;br /&gt;
&lt;br /&gt;
e.g.:&lt;br /&gt;
 drive logopen&lt;br /&gt;
&lt;br /&gt;
Command list:&lt;br /&gt;
&lt;br /&gt;
 * meta      Get the metadata related to the interface, a text message.&lt;br /&gt;
 * logopen   Create logfile with all updates through this data source (one for tx and one for rx).&lt;br /&gt;
 * logclose  Close the logfiles.&lt;br /&gt;
 * help      This list&lt;br /&gt;
&lt;br /&gt;
The Teensys has data items and commands as described here: ????&lt;br /&gt;
&lt;br /&gt;
==== Bridge ====&lt;br /&gt;
&lt;br /&gt;
e.g.:&lt;br /&gt;
 bridge list&lt;br /&gt;
&lt;br /&gt;
Command list:&lt;br /&gt;
&lt;br /&gt;
 * list         List all data items and data sources in the system as text&lt;br /&gt;
 * items        List all data items in the format &#039;item N U L source: keyword params&#039;, where N is item number, U is number of updates received, L is logfile open.&lt;br /&gt;
 * restart      Is a command to restart the bridge (and thereby delete all data points)&lt;br /&gt;
 * quit         Quit the bridge&lt;br /&gt;
 * batlow V     Set the battry low value to V (the system shuts down, when this value is passed).&lt;br /&gt;
 * teensy D A   Starts or stops a teensy connection, D is device (0 or 1), set A=1 to activate or A=0 to deactivate.&lt;br /&gt;
 * help         This list&lt;br /&gt;
&lt;br /&gt;
==== Joystick (gamepad) ====&lt;br /&gt;
&lt;br /&gt;
e.g.:&lt;br /&gt;
 gamepad dev&lt;br /&gt;
&lt;br /&gt;
Command list:&lt;br /&gt;
&lt;br /&gt;
 * dev           Lists gamepad interface details&lt;br /&gt;
 * rcmax V T S   Set maximum velocity (m/s), turnrate (deg/sec) and slow factor ]0..1]&lt;br /&gt;
 * spgm  B cmd   Associate a buttom B on the gamepad with a command &#039;cmd&#039;&lt;br /&gt;
 * help          This list&lt;br /&gt;
&lt;br /&gt;
==== ROS interface ====&lt;br /&gt;
&lt;br /&gt;
No specific commands.&lt;br /&gt;
&lt;br /&gt;
===Reserved commands for a data item===&lt;br /&gt;
&lt;br /&gt;
The reserved keywords handled by a data item are:&lt;br /&gt;
&lt;br /&gt;
e.g.:&lt;br /&gt;
 drive:pose subscribe -1 ROS&lt;br /&gt;
Command list:&lt;br /&gt;
 * subscribe    E.g. &#039;drive:pose subscribe -1 ros&#039;, where the data item is &#039;pose&#039; from the &lt;br /&gt;
                source &#039;drive&#039;, the parameter -1 means all updates and the destination &lt;br /&gt;
                interface is &#039;ROS&#039;.&lt;br /&gt;
 * onupdate P C Set a message to be handled, when this data item is updated, &lt;br /&gt;
                e.g. request a gyro message, when an actuator is activated. &lt;br /&gt;
                P=-1 all updates, 0=none, else interval in ms as fastest rate. C is the action string.&lt;br /&gt;
 * status       Request status for the data item (number of updates, and list of subscribers).&lt;br /&gt;
 * name string  Set the name of the data item, e.g. &#039;drive::conf name Configuration values &lt;br /&gt;
                for drive system&#039;, anything after &#039;name &#039; is the new description of the data item.&lt;br /&gt;
 * get          Get the latest value of the data item.&lt;br /&gt;
 * meta         Get the metadata related to the data item (including the name).&lt;br /&gt;
 * logopen      Create logfile with all updates to this data item or all traffic through this data source.&lt;br /&gt;
 * logclose     Close the logfile.&lt;br /&gt;
 * help         This list).&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_bridge&amp;diff=8867</id>
		<title>Fejemis bridge</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_bridge&amp;diff=8867"/>
		<updated>2026-05-27T12:31:23Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Fejemis_2026]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bridge overview==&lt;br /&gt;
&lt;br /&gt;
[[File:bridge-overview.png | 700px]]&lt;br /&gt;
&lt;br /&gt;
The bridge combines different inputs from hardware sources to a single message database from which the messages can be seubscriber.&lt;br /&gt;
This makes the bridge a combination of a bridge (slightly reformatting the messsages) and a message broker, from which clients can subscribe to messages. Messahes can also be send from any of these broker-clients.&lt;br /&gt;
&lt;br /&gt;
Selected interface points are made available as ROS messages and key commands can be received from ROS.&lt;br /&gt;
&lt;br /&gt;
The main input and output connections are to the Drive and Front Teensy boards, these connections are protected by a simple checksum, the &#039;;99&#039; part, to avoid false or half messages when powering up. &lt;br /&gt;
&lt;br /&gt;
* All data items are single lines of text. These data items start with a key and optionally additional parameters. The data item has further a data source associated. &lt;br /&gt;
* Data items can be directed to a destination (data forward). &lt;br /&gt;
* A data item can be requested, or updates to a data item can be subscribed.&lt;br /&gt;
&lt;br /&gt;
The ini-file holds a set of commands, e.g. calibration data or subscription of data to any destination.&lt;br /&gt;
&lt;br /&gt;
All data items can be logged individually with a timestamp.&lt;br /&gt;
&lt;br /&gt;
The client GUI is to help configure/calibrate the sensors and low-level control loops.&lt;br /&gt;
&lt;br /&gt;
==Bridge initialization file==&lt;br /&gt;
&lt;br /&gt;
The initialization file holds a list of commands that will be handled by the bridge.&lt;br /&gt;
The file is called bridge.ini and is positioned in the same directory as the executable&lt;br /&gt;
&lt;br /&gt;
Most commands start with a destination keyword. If that interface is opened after the initial read of the initialization file, then the file is read again for the commands destinated for this interface.&lt;br /&gt;
&lt;br /&gt;
An example of an initialization file could be:&lt;br /&gt;
&lt;br /&gt;
 ; inifile to fejemis bridge&lt;br /&gt;
 ; start both Teensy connections&lt;br /&gt;
 bridge teensy 0 1&lt;br /&gt;
 bridge teensy 1 1&lt;br /&gt;
 ; front teensy help&lt;br /&gt;
 # Text from ini-loader&lt;br /&gt;
 drive posei&lt;br /&gt;
 drive veli&lt;br /&gt;
 drive gyroi&lt;br /&gt;
 drive confi&lt;br /&gt;
 ; subscribe to regular stream of data&lt;br /&gt;
 drive sub pose 10&lt;br /&gt;
 drive sub gyro 11&lt;br /&gt;
 drive sub enc 9&lt;br /&gt;
 drive sub bat 400&lt;br /&gt;
 drive sub conf 801&lt;br /&gt;
 drive sub hbt 601&lt;br /&gt;
 drive sub mot 23&lt;br /&gt;
 drive sub id 2000&lt;br /&gt;
 drive sub ver 2001&lt;br /&gt;
 ; &lt;br /&gt;
 front led 1 200 0 0&lt;br /&gt;
 front led 2 200 0 0&lt;br /&gt;
 front led 3 200 0 0&lt;br /&gt;
 front led 4 200 0 0&lt;br /&gt;
 front led 5 200 0 0&lt;br /&gt;
 front led 6 200 0 0&lt;br /&gt;
 ; steering control settings&lt;br /&gt;
 ; cssteer 1 Kp I_use I_tau I_lim 1 Df_use tz tp Db_use tz tp ...&lt;br /&gt;
 ;         pre_use tz tp lim_use max min ff_use Kff fff_use tz tp angAdj&lt;br /&gt;
 ;               Kp  ---I-------  fwd-filter-  bk-filt-  pre-f   out-limit--- --ff+filt- fold&lt;br /&gt;
 front cssteer  1 5   0 1 100  1  1 0.5 0.05  1 0 0.02   0 1 1   0 -1000 1000 0 1 0 1 1  1&lt;br /&gt;
 front sub id 2000&lt;br /&gt;
 front sub ver 2001&lt;br /&gt;
 front sub hbt 601&lt;br /&gt;
 ; max values for RC control &lt;br /&gt;
 ; velocity (m/sec), turn rate deg/sec, and slow factor (0.2&#039;ish)&lt;br /&gt;
 gamepad rcmax 2.0 45 0.2&lt;br /&gt;
 ;drive:pose logopen&lt;br /&gt;
 ;drive:gyro logopen&lt;br /&gt;
 ; allow robot to drive&lt;br /&gt;
 ;drive arm&lt;br /&gt;
 ; send RC to both front and drive&lt;br /&gt;
 gamepad:rc subscribe -1 front&lt;br /&gt;
 gamepad:rc subscribe -1 drive&lt;br /&gt;
 gamepad:rc subscribe -1 regbot&lt;br /&gt;
 ; send steer angle to drive&lt;br /&gt;
 front:fwl subscribe -1 drive&lt;br /&gt;
 ;&lt;br /&gt;
 ; command-line options&lt;br /&gt;
 ; if bridge is run from the command line&lt;br /&gt;
 regbot:# subscribe -1 console&lt;br /&gt;
 front:# subscribe -1 console&lt;br /&gt;
 drive:# subscribe -1 console&lt;br /&gt;
 ;&lt;br /&gt;
 ; publish pose to ROS&lt;br /&gt;
 ; if source is a regbot&lt;br /&gt;
 ;regbot:pose subscribe -1 ros&lt;br /&gt;
 ; if source is fejemis&lt;br /&gt;
 ;drive:pose subscribe -1 ros&lt;br /&gt;
&lt;br /&gt;
Lines starting with &#039;;&#039; is a comment&lt;br /&gt;
&lt;br /&gt;
==Management commands==&lt;br /&gt;
&lt;br /&gt;
Both data items and data sources can be managed by a set of reserved keywords.&lt;br /&gt;
That is, if a command is sent to a destination with one of these keywords, the message is not sent to the data source, but handled by the interface.&lt;br /&gt;
&lt;br /&gt;
===Reserved commands for an interface===&lt;br /&gt;
&lt;br /&gt;
The reserved keywords or commands related to an interface:&lt;br /&gt;
&lt;br /&gt;
====Ini-file handler====&lt;br /&gt;
&lt;br /&gt;
A command line starting with the destination &#039;ini&#039; is handled by the initialization module, e.g.:&lt;br /&gt;
 ini reload drive&lt;br /&gt;
Command list:&lt;br /&gt;
&lt;br /&gt;
 * load &amp;lt;filename&amp;gt;         Load a specific initialization file (bridge.ini is always loaded at the start of the bridge).&lt;br /&gt;
 * reload &amp;lt;interface name&amp;gt; Reloads the system initialization file (bridge.ini) for this interface.&lt;br /&gt;
 * logopen                 Creates a log for use of ini-file.&lt;br /&gt;
 * logclose                Closes log for ini-use.&lt;br /&gt;
 * help                    This list&lt;br /&gt;
&lt;br /&gt;
==== Teensy interface ====&lt;br /&gt;
&lt;br /&gt;
There are two Teensy interfaces &#039;drive&#039; and &#039;front&#039;&lt;br /&gt;
&lt;br /&gt;
e.g.:&lt;br /&gt;
 drive logopen&lt;br /&gt;
&lt;br /&gt;
Command list:&lt;br /&gt;
&lt;br /&gt;
 * meta      Get the metadata related to the interface, a text message.&lt;br /&gt;
 * logopen   Create logfile with all updates through this data source (one for tx and one for rx).&lt;br /&gt;
 * logclose  Close the logfiles.&lt;br /&gt;
 * help      This list&lt;br /&gt;
&lt;br /&gt;
The Teensys has data items and commands as described here: ????&lt;br /&gt;
&lt;br /&gt;
==== Bridge ====&lt;br /&gt;
&lt;br /&gt;
e.g.:&lt;br /&gt;
 bridge list&lt;br /&gt;
&lt;br /&gt;
Command list:&lt;br /&gt;
&lt;br /&gt;
 * list         List all data items and data sources in the system as text&lt;br /&gt;
 * items        List all data items in the format &#039;item N U L source: keyword params&#039;, where N is item number, U is number of updates received, L is logfile open.&lt;br /&gt;
 * restart      Is a command to restart the bridge (and thereby delete all data points)&lt;br /&gt;
 * quit         Quit the bridge&lt;br /&gt;
 * batlow V     Set the battry low value to V (the system shuts down, when this value is passed).&lt;br /&gt;
 * teensy D A   Starts or stops a teensy connection, D is device (0 or 1), set A=1 to activate or A=0 to deactivate.&lt;br /&gt;
 * help         This list&lt;br /&gt;
&lt;br /&gt;
==== Joystick (gamepad) ====&lt;br /&gt;
&lt;br /&gt;
e.g.:&lt;br /&gt;
 gamepad dev&lt;br /&gt;
&lt;br /&gt;
Command list:&lt;br /&gt;
&lt;br /&gt;
 * dev           Lists gamepad interface details&lt;br /&gt;
 * rcmax V T S   Set maximum velocity (m/s), turnrate (deg/sec) and slow factor ]0..1]&lt;br /&gt;
 * spgm  B cmd   Associate a buttom B on the gamepad with a command &#039;cmd&#039;&lt;br /&gt;
 * help          This list&lt;br /&gt;
&lt;br /&gt;
==== ROS interface ====&lt;br /&gt;
&lt;br /&gt;
No specific commands.&lt;br /&gt;
&lt;br /&gt;
===Reserved commands for a data item===&lt;br /&gt;
&lt;br /&gt;
The reserved keywords handled by a data item are:&lt;br /&gt;
&lt;br /&gt;
e.g.:&lt;br /&gt;
 drive:pose subscribe -1 ROS&lt;br /&gt;
Command list:&lt;br /&gt;
 * subscribe    E.g. &#039;drive:pose subscribe -1 ros&#039;, where the data item is &#039;pose&#039; from the &lt;br /&gt;
                source &#039;drive&#039;, the parameter -1 means all updates and the destination &lt;br /&gt;
                interface is &#039;ROS&#039;.&lt;br /&gt;
 * onupdate P C Set a message to be handled, when this data item is updated, &lt;br /&gt;
                e.g. request a gyro message, when an actuator is activated. &lt;br /&gt;
                P=-1 all updates, 0=none, else interval in ms as fastest rate. C is the action string.&lt;br /&gt;
 * status       Request status for the data item (number of updates, and list of subscribers).&lt;br /&gt;
 * name string  Set the name of the data item, e.g. &#039;drive::conf name Configuration values &lt;br /&gt;
                for drive system&#039;, anything after &#039;name &#039; is the new description of the data item.&lt;br /&gt;
 * get          Get the latest value of the data item.&lt;br /&gt;
 * meta         Get the metadata related to the data item (including the name).&lt;br /&gt;
 * logopen      Create logfile with all updates to this data item or all traffic through this data source.&lt;br /&gt;
 * logclose     Close the logfile.&lt;br /&gt;
 * help         This list).&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_repository&amp;diff=8866</id>
		<title>Fejemis repository</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_repository&amp;diff=8866"/>
		<updated>2026-05-27T12:31:09Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Fejemis_2026]]&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
The software is in an SVN (subversion) repository, SVN is maintained by Adobe.&lt;br /&gt;
&lt;br /&gt;
=== ROS bridge ===&lt;br /&gt;
&lt;br /&gt;
The ROS bridge is in a separate SVN repository&lt;br /&gt;
&lt;br /&gt;
Make a checkout (open access) in the ROS2 workspace, i.e.&lt;br /&gt;
&lt;br /&gt;
 cd ~/fejemis_ws/src&lt;br /&gt;
 svn co svn://repos.gbar.dtu.dk/jcan/fejemis_bridge bridge&lt;br /&gt;
&lt;br /&gt;
After this, the bridge could be built and run by:&lt;br /&gt;
&lt;br /&gt;
 cd ~/fejemis_ws/&lt;br /&gt;
 colcon build&lt;br /&gt;
 source install/setup.bash&lt;br /&gt;
 ros2 run bridge hw_bridge&lt;br /&gt;
&lt;br /&gt;
=== Teensy firmware and support stuff ===&lt;br /&gt;
&lt;br /&gt;
Make a checkout (open access)&lt;br /&gt;
&lt;br /&gt;
 svn co svn://repos.gbar.dtu.dk/jcan/fejemis&lt;br /&gt;
&lt;br /&gt;
This will extract a directory structure like this&lt;br /&gt;
&lt;br /&gt;
 fejemis/&lt;br /&gt;
    doc               # documents related to project&lt;br /&gt;
    fejemis-brush     # EAGLE project with schematic for brush and front-wheel control&lt;br /&gt;
    fejemis_drive     # Main firmware (Teensy 3.5 based) for wheel and power control&lt;br /&gt;
    fejemis_front     # Firmware for brush and front wheel control (Teensy 3.2 based)&lt;br /&gt;
    fejemis_gui       # QT-based graphical user interface for configuration and calibration of the firmware.&lt;br /&gt;
    3D-print&lt;br /&gt;
&lt;br /&gt;
== Tool chain ==&lt;br /&gt;
&lt;br /&gt;
=== Teensy firmware ===&lt;br /&gt;
&lt;br /&gt;
The teensy based firmware builds on Arduino library with the Teensyduino extension.&lt;br /&gt;
The compilation is Makefile based (rather than using the Arduino tool).&lt;br /&gt;
But arduino tool can be used too, if the main C++ file is renamed to .ino.&lt;br /&gt;
The main files are:&lt;br /&gt;
&lt;br /&gt;
 fejemis/fejemis_drive/udrive.cpp&lt;br /&gt;
 fejemis/fejemis_front/main.cpp&lt;br /&gt;
&lt;br /&gt;
The Makefile assumes that arduino and teensyduino are installed - see Makefile for base directory.&lt;br /&gt;
&lt;br /&gt;
 fejemis&lt;br /&gt;
   fejemis_drive&lt;br /&gt;
     Makefile (compiled with &#039;make&#039;, not Arduino GUI.)&lt;br /&gt;
     src (source files *.cpp and *.h)&lt;br /&gt;
   fejemis_front&lt;br /&gt;
     Makefile&lt;br /&gt;
     src (source files *cpp and *.h)&lt;br /&gt;
     &lt;br /&gt;
&lt;br /&gt;
 cd ~/fejemis/fejemis_drive&lt;br /&gt;
 make -j6       (should make a fejemis_drive.hex file)&lt;br /&gt;
 make upload    (with the Teensy available on USB as the only Teensy device)&lt;br /&gt;
&lt;br /&gt;
Same method for fejemis_front.&lt;br /&gt;
&lt;br /&gt;
==== TY commander ====&lt;br /&gt;
&lt;br /&gt;
An alternative to the teensy firmware loader, the TY commander is fine and can handle more than one Teensy, and includes a serial console (eliminating the need for Putty)&lt;br /&gt;
&lt;br /&gt;
See https://github.com/Koromix/tytools&lt;br /&gt;
&lt;br /&gt;
=== The GUI ===&lt;br /&gt;
&lt;br /&gt;
The graphical user interface is QT and Python-based and requires the QT tool-chain and Python3 to be installed.&lt;br /&gt;
&lt;br /&gt;
The interface is best with a direct connection to one of the Teensy processors directly using USB.&lt;br /&gt;
&lt;br /&gt;
A small number of Python packages are needed too:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; pip install pyqt5&lt;br /&gt;
 &amp;gt; pip install pyqtgraph&lt;br /&gt;
 &amp;gt; pip install pyserial&lt;br /&gt;
&lt;br /&gt;
Run with&lt;br /&gt;
&lt;br /&gt;
 cd fejemis/fejemis_gui&lt;br /&gt;
 python3 fejemis_gui.py&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Electronics&amp;diff=8864</id>
		<title>Electronics</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Electronics&amp;diff=8864"/>
		<updated>2026-05-27T12:29:18Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Fejemis_2026]]&lt;br /&gt;
&lt;br /&gt;
= Raspberry Pi =&lt;br /&gt;
&lt;br /&gt;
The robot uses two Raspberry Pi 5 units, referred to as the &amp;quot;Main&amp;quot; and &amp;quot;Aux&amp;quot; Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Main Pi&amp;quot; is responsible for core robot functionality and launches the odometry, lifecycle management, and bridge-related ROS nodes.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Aux Pi&amp;quot; handles the majority of the remaining ROS launch packages, including the computationally intensive perception and support nodes.&lt;br /&gt;
&lt;br /&gt;
=== Main Raspberry Pi ===&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 5&lt;br /&gt;
* 16 GB RAM&lt;br /&gt;
* 60 GB storage (SD card)&lt;br /&gt;
&lt;br /&gt;
=== Aux Raspberry Pi ===&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 5&lt;br /&gt;
* 8 GB RAM&lt;br /&gt;
* 512 GB external SSD storage&lt;br /&gt;
&lt;br /&gt;
=== System Architecture ===&lt;br /&gt;
&lt;br /&gt;
During testing, it was observed that the Main Pi could not reliably handle all ROS launch packages simultaneously. To improve stability and performance, most workloads were therefore moved to the Aux Pi.&lt;br /&gt;
&lt;br /&gt;
One likely reason for this difference is the storage medium. The Main Pi uses an SD card, while the Aux Pi uses an external SSD, which provides significantly faster read/write performance and better handling of high I/O workloads generated by ROS 2 nodes, logging, and vision processing.&lt;br /&gt;
&lt;br /&gt;
This split architecture allows the robot to distribute computational load more effectively and improves overall system responsiveness and reliability.&lt;br /&gt;
&lt;br /&gt;
== Ethernet Network ==&lt;br /&gt;
&lt;br /&gt;
=== Router ===&lt;br /&gt;
The router is used to connect the Raspberry Pi units and external devices on the robot network. It allows communication between the onboard computers and provides Ethernet access for external computers during development, debugging, and monitoring.&lt;br /&gt;
&lt;br /&gt;
The router has a total of five Ethernet ports:&lt;br /&gt;
&lt;br /&gt;
* Two ports are currently occupied by the Main and Aux Raspberry Pi units&lt;br /&gt;
* The remaining ports can be used to connect external computers directly to the robot network&lt;br /&gt;
* Router power supply: 5V / 0.6A&lt;br /&gt;
&lt;br /&gt;
=== Network Configuration ===&lt;br /&gt;
&lt;br /&gt;
* Network/CIDR: 192.168.1.0/24&lt;br /&gt;
&lt;br /&gt;
* Subnet mask: 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
=== Ethernet IP Addresses ===&lt;br /&gt;
&lt;br /&gt;
* Main Raspberry Pi: 192.168.1.1&lt;br /&gt;
* Aux Raspberry Pi: 192.168.1.2&lt;br /&gt;
&lt;br /&gt;
=== Setup for External Computers ===&lt;br /&gt;
&lt;br /&gt;
To connect a computer to the robot network through Ethernet, configure the network interface manually. The following settings must be configured:&lt;br /&gt;
* Subnet mask: 255.255.255.0&lt;br /&gt;
* Assign an available static IP address in the range 192.168.1.x&lt;br /&gt;
&lt;br /&gt;
Note: 192.168.1.1 and 192.168.1.2 are already assigned to the Raspberry Pi units and must not be reused&lt;br /&gt;
&lt;br /&gt;
=== Linear actuator ===&lt;br /&gt;
&lt;br /&gt;
The actuator is a ...&lt;br /&gt;
&lt;br /&gt;
=== Lidar ===&lt;br /&gt;
&lt;br /&gt;
The lidar is a ...&lt;br /&gt;
&lt;br /&gt;
=== Realsense D455 ===&lt;br /&gt;
&lt;br /&gt;
The camera is a ...&lt;br /&gt;
&lt;br /&gt;
=== Teensy Configuration ===&lt;br /&gt;
&lt;br /&gt;
[[File:teensy-configuration.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
Figure: The main hardware blocks. Two Teensy processors are the interface to the hardware. The drive processor controls the drive motors, safety and battery system. The front processor controls the brush and the front wheel to lift the brush. A main PC integrates the functionality with additional sensors to allow autonomous operation.&lt;br /&gt;
&lt;br /&gt;
===== Teensy firmware =====&lt;br /&gt;
&lt;br /&gt;
[[Fejemis Teensy]] software is build using standard Arduino library configurations.&lt;br /&gt;
The interface to the main PC is organized as text-lines.&lt;br /&gt;
&lt;br /&gt;
===== Electrical =====&lt;br /&gt;
&lt;br /&gt;
[[Fejemis electrical]] wiring etc.&lt;br /&gt;
&lt;br /&gt;
=== Battery control ===&lt;br /&gt;
&lt;br /&gt;
The [[Fejemis battery control]] is a 24V system (2x3cell LiPo 5Ah) with power on-off and measurement electronics. There is on-board chargers for all batteries.&lt;br /&gt;
&lt;br /&gt;
=== Brush unit ===&lt;br /&gt;
&lt;br /&gt;
The [[Fejemis brush unit]] is a commercial brush that comes with its own battery (12V), charger and motor control. The unit is slightly modified to to allow measurement and control from the software.&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Mechanics&amp;diff=8863</id>
		<title>Mechanics</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Mechanics&amp;diff=8863"/>
		<updated>2026-05-27T12:28:23Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Fejemis_2026]]&lt;br /&gt;
&lt;br /&gt;
== General Description ==&lt;br /&gt;
&lt;br /&gt;
Fejemis is a three wheels mobile robot. The front part in yellow and black is a commercial brush for industry floor. The manual handle has been replaced with the Fejemis drive system. The front wheel can be lowered to allow the brush to be lifted when not in use.&lt;br /&gt;
&lt;br /&gt;
It has been modeled in the cad program OnShape, as you can see in the next figure. &lt;br /&gt;
&lt;br /&gt;
[[File:fejemis-from-onshape.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
The drawings can be accessed here: https://cad.onshape.com/documents/c3f44096b0f5e4646ed48e3f/w/670467f68cac02b087631e3d/e/e591dbcff8879adc4528ee2b&lt;br /&gt;
== Main Mechanical Parts ==&lt;br /&gt;
&lt;br /&gt;
=== Front Wheel Design ===&lt;br /&gt;
&lt;br /&gt;
The rigidity of the front wheel was a significant flaw of the robot, affecting the odometry and the movement. We improve it by adding ball bearings, increasing the infill of the 3D printed parts and fixing correctly the magnetic encoder.&lt;br /&gt;
&lt;br /&gt;
This changes had a great effect in the performance of the robot. But there are things that can be enhance.&lt;br /&gt;
&lt;br /&gt;
The support that fix the linear actuator to the robot must be reprinted. Increasing the infill and the width of the two thin walls in the sides.&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Mechanics&amp;diff=8862</id>
		<title>Mechanics</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Mechanics&amp;diff=8862"/>
		<updated>2026-05-27T12:27:32Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[fejemis]]&lt;br /&gt;
&lt;br /&gt;
== General Description ==&lt;br /&gt;
&lt;br /&gt;
Fejemis is a three wheels mobile robot. The front part in yellow and black is a commercial brush for industry floor. The manual handle has been replaced with the Fejemis drive system. The front wheel can be lowered to allow the brush to be lifted when not in use.&lt;br /&gt;
&lt;br /&gt;
It has been modeled in the cad program OnShape, as you can see in the next figure. &lt;br /&gt;
&lt;br /&gt;
[[File:fejemis-from-onshape.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
The drawings can be accessed here: https://cad.onshape.com/documents/c3f44096b0f5e4646ed48e3f/w/670467f68cac02b087631e3d/e/e591dbcff8879adc4528ee2b&lt;br /&gt;
== Main Mechanical Parts ==&lt;br /&gt;
&lt;br /&gt;
=== Front Wheel Design ===&lt;br /&gt;
&lt;br /&gt;
The rigidity of the front wheel was a significant flaw of the robot, affecting the odometry and the movement. We improve it by adding ball bearings, increasing the infill of the 3D printed parts and fixing correctly the magnetic encoder.&lt;br /&gt;
&lt;br /&gt;
This changes had a great effect in the performance of the robot. But there are things that can be enhance.&lt;br /&gt;
&lt;br /&gt;
The support that fix the linear actuator to the robot must be reprinted. Increasing the infill and the width of the two thin walls in the sides.&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Mechanics&amp;diff=8861</id>
		<title>Mechanics</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Mechanics&amp;diff=8861"/>
		<updated>2026-05-27T12:26:38Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General Description ==&lt;br /&gt;
&lt;br /&gt;
Fejemis is a three wheels mobile robot. The front part in yellow and black is a commercial brush for industry floor. The manual handle has been replaced with the Fejemis drive system. The front wheel can be lowered to allow the brush to be lifted when not in use.&lt;br /&gt;
&lt;br /&gt;
It has been modeled in the cad program OnShape, as you can see in the next figure. &lt;br /&gt;
&lt;br /&gt;
[[File:fejemis-from-onshape.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
The drawings can be accessed here: https://cad.onshape.com/documents/c3f44096b0f5e4646ed48e3f/w/670467f68cac02b087631e3d/e/e591dbcff8879adc4528ee2b&lt;br /&gt;
== Main Mechanical Parts ==&lt;br /&gt;
&lt;br /&gt;
=== Front Wheel Design ===&lt;br /&gt;
&lt;br /&gt;
The rigidity of the front wheel was a significant flaw of the robot, affecting the odometry and the movement. We improve it by adding ball bearings, increasing the infill of the 3D printed parts and fixing correctly the magnetic encoder.&lt;br /&gt;
&lt;br /&gt;
This changes had a great effect in the performance of the robot. But there are things that can be enhance.&lt;br /&gt;
&lt;br /&gt;
The support that fix the linear actuator to the robot must be reprinted. Increasing the infill and the width of the two thin walls in the sides.&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Mechanics&amp;diff=8846</id>
		<title>Mechanics</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Mechanics&amp;diff=8846"/>
		<updated>2026-05-27T12:04:27Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General Description ==&lt;br /&gt;
&lt;br /&gt;
Fejemis is a three wheels mobile robot. The front part in yellow and black is a commercial brush for industry floor. The manual handle has been replaced with the Fejemis drive system. The front wheel can be lowered to allow the brush to be lifted when not in use.&lt;br /&gt;
&lt;br /&gt;
It has been modeled in the cad program OnShape, as you can see in the next figure. &lt;br /&gt;
&lt;br /&gt;
[[File:fejemis-from-onshape.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
The drawings can be accessed here: https://cad.onshape.com/documents/c3f44096b0f5e4646ed48e3f/w/670467f68cac02b087631e3d/e/e591dbcff8879adc4528ee2b&lt;br /&gt;
== Main Mechanical Parts ==&lt;br /&gt;
&lt;br /&gt;
=== Front Wheel Design ===&lt;br /&gt;
&lt;br /&gt;
In the last improvement the changes in the design have the objective of making the wheel more rigid. We achieved this by adding ball bearings and increasing the infill of the 3D printed parts.&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Mechanics&amp;diff=8844</id>
		<title>Mechanics</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Mechanics&amp;diff=8844"/>
		<updated>2026-05-27T11:58:12Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General Description ==&lt;br /&gt;
&lt;br /&gt;
[[File:fejemis-from-onshape.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
Figure: Sketch of Fejemis from OnShape. The front part in yellow and black is a commercial brush for industry floor. The manual handle has been replaced with the Fejemis drive system. The front wheel can be lowered to allow the brush to be lifted when not in use.&lt;br /&gt;
&lt;br /&gt;
The drawings can be accessed here: https://cad.onshape.com/documents/c3f44096b0f5e4646ed48e3f/w/670467f68cac02b087631e3d/e/e591dbcff8879adc4528ee2b&lt;br /&gt;
== Main Mechanical Parts ==&lt;br /&gt;
&lt;br /&gt;
=== Front Wheel Design ===&lt;br /&gt;
&lt;br /&gt;
In the last improvement the changes in the design have the objective of making the wheel more rigid. We achieved this by adding ball bearings and increasing the infill of the 3D printed parts.&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8841</id>
		<title>Fejemis 2026</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8841"/>
		<updated>2026-05-27T11:49:05Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Fejemis is an autonomous cleaning robot developed to clean the Asta building. The building is divided into different cleaning areas, where the robot navigates autonomously to a selected point, plans a cleaning path, and performs the cleaning task using its brushing system while following the generated route.&lt;br /&gt;
&lt;br /&gt;
[[File:Fejemis.jpeg | 600px]]&lt;br /&gt;
&lt;br /&gt;
== Start up guide ==&lt;br /&gt;
&lt;br /&gt;
To turn on Fejemis, you need to press the turn on button for more than 2 seconds. If not, both Raspberry Pis wont boot. To turn it off you need to press it for more than 7 seconds.&lt;br /&gt;
&lt;br /&gt;
To work with Fejemis, you can connect directly using a monitor and keyboard. The monitor can be connected to one of the Raspberry Pis, while the keyboard connects through USB. After booting, log into the Ubuntu system using the provided credentials.&lt;br /&gt;
&lt;br /&gt;
Fejemis uses two Raspberry Pis:&lt;br /&gt;
&lt;br /&gt;
Main Raspberry Pi and Auxiliary Raspberry Pi&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pis can be also accessed through SSH.(The IP some time changes, check it by connecting directly with the monitor)&lt;br /&gt;
 Main lab&lt;br /&gt;
 local@10.197.213.227&lt;br /&gt;
 Aux lab&lt;br /&gt;
 local@10.197.213.226&lt;br /&gt;
 Main asta&lt;br /&gt;
 local@10.197.219.238&lt;br /&gt;
 Aux lab&lt;br /&gt;
 local@10.197.219.237&lt;br /&gt;
&lt;br /&gt;
The last way of connecting is through Ethernet. &lt;br /&gt;
 Main&lt;br /&gt;
 197.168.1.1 &lt;br /&gt;
 Aux&lt;br /&gt;
 197.168.1.2&lt;br /&gt;
&lt;br /&gt;
If you are connected to the main Raspberry Pi,the auxiliary Raspberry Pi can also be accessed using:&lt;br /&gt;
 &lt;br /&gt;
 ssh fejemis-aux&lt;br /&gt;
&lt;br /&gt;
=== Launch===&lt;br /&gt;
&lt;br /&gt;
Launching the bridge (from anywhere):&lt;br /&gt;
 ros2 launch fejemis_bridge bridge.launch.py&lt;br /&gt;
&lt;br /&gt;
Launching the mixer + gamepad control (from anywhere):&lt;br /&gt;
 ros2 launch fejemis_bridge mixer.launch.py&lt;br /&gt;
&lt;br /&gt;
You need to press the &amp;quot;BACK&amp;quot; button on the gamepad to actually start the control from the gamepad.&lt;br /&gt;
&lt;br /&gt;
You can launch both at once with the following command: ros2 launch fejemis_bridge control.launch.py&lt;br /&gt;
&lt;br /&gt;
This launch file runs the latest version of the autonomous cleaning software:&lt;br /&gt;
&lt;br /&gt;
 ros2 launch fejemis robot.launch.py &lt;br /&gt;
&lt;br /&gt;
It must be launched on both Raspberry Pis, since each device handles different parts of the system.&lt;br /&gt;
&lt;br /&gt;
Arguments:&lt;br /&gt;
 localization:=true/false, map_location:=asta/lab&lt;br /&gt;
&lt;br /&gt;
Default: localization true, map loc asta&lt;br /&gt;
&lt;br /&gt;
If the argument &amp;quot;localization:=false&amp;quot; is provided, the robot will automatically start a new mapping process and overwrite the current map.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If Fejemis crash (one of the battery display will turn off), you need to plug it in before turning it on again.&lt;br /&gt;
&lt;br /&gt;
=== Other utilities ===&lt;br /&gt;
&lt;br /&gt;
If you want to generate a square signal, you can use the node I made:&lt;br /&gt;
&lt;br /&gt;
ros2 run arcana_tools signal_generator --ros-args -p frequency:=&amp;lt;signal_freq&amp;gt; -p out_type:=&amp;lt;output ROS2 type&amp;gt; -r /sig_out:=&amp;lt;output topic&amp;gt; -p bias:=&amp;lt;signal bias&amp;gt; -p range:=&amp;lt;vmax-vmin&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Typically you wight want to send it as if it was a gamepad input:&lt;br /&gt;
&lt;br /&gt;
ros2 run arcana_tools signal_generator--ros-args -p frequency:=0.5 -p out_type:=geometry_msgs.msg.Twist.linear.x -r /sig_out:=/joy_control/cmd_vel -p range:=0.5&lt;br /&gt;
&lt;br /&gt;
You can display graphs using the rqt tool (type rqt in a terminal). There&#039;s a plugin &amp;quot;Vizualization&amp;gt;Plot&amp;quot; that integrate the python 3 matplotlib package.&lt;br /&gt;
&lt;br /&gt;
To enable the fetching of the wheels velocities from the bridge, you may need to edit the file &amp;quot;~/.config/fejemis_bridge/bridge.yaml&amp;quot; and set enable: true instead of false in the vel section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Mechanics ===&lt;br /&gt;
&lt;br /&gt;
You can access the technical description of the [[Mechanics]] in this page. &lt;br /&gt;
&lt;br /&gt;
=== Electronics ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can access the technical description of the [[Electronics]] in this page.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
You can access the detailed description of the github repository through this link [[Fejemis ROS2 Software]].&lt;br /&gt;
&lt;br /&gt;
==== Old repository ====&lt;br /&gt;
You can access the description of the legacy [[Repository]] through this link.&lt;br /&gt;
&lt;br /&gt;
== Mission Statement ==&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8840</id>
		<title>Fejemis 2026</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8840"/>
		<updated>2026-05-27T11:48:18Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Fejemis is an autonomous cleaning robot developed to clean the Asta building. The building is divided into different cleaning areas, where the robot navigates autonomously to a selected point, plans a cleaning path, and performs the cleaning task using its brushing system while following the generated route.&lt;br /&gt;
&lt;br /&gt;
[[File:Fejemis.jpeg | 600px]]&lt;br /&gt;
&lt;br /&gt;
== Start up guide ==&lt;br /&gt;
&lt;br /&gt;
To turn on Fejemis, you need to press the turn on button for more than 2 seconds. If not, both Raspberry Pis wont boot. To turn it off you need to press it for more than 7 seconds.&lt;br /&gt;
&lt;br /&gt;
To work with Fejemis, you can connect directly using a monitor and keyboard. The monitor can be connected to one of the Raspberry Pis, while the keyboard connects through USB. After booting, log into the Ubuntu system using the provided credentials.&lt;br /&gt;
&lt;br /&gt;
Fejemis uses two Raspberry Pis:&lt;br /&gt;
&lt;br /&gt;
Main Raspberry Pi and Auxiliary Raspberry Pi&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pis can be also accessed through SSH.(The IP some time changes, check it by connecting directly with the monitor)&lt;br /&gt;
 Main lab&lt;br /&gt;
 local@10.197.213.227&lt;br /&gt;
 Aux lab&lt;br /&gt;
 local@10.197.213.226&lt;br /&gt;
 Main asta&lt;br /&gt;
 local@10.197.219.238&lt;br /&gt;
 Aux lab&lt;br /&gt;
 local@10.197.219.237&lt;br /&gt;
&lt;br /&gt;
The last way of connecting is through Ethernet. &lt;br /&gt;
 Main&lt;br /&gt;
 197.168.1.1 &lt;br /&gt;
 Aux&lt;br /&gt;
 197.168.1.2&lt;br /&gt;
&lt;br /&gt;
If you are connected to the main Raspberry Pi,the auxiliary Raspberry Pi can also be accessed using:&lt;br /&gt;
 &lt;br /&gt;
 ssh fejemis-aux&lt;br /&gt;
&lt;br /&gt;
=== Launch===&lt;br /&gt;
&lt;br /&gt;
Launching the bridge (from anywhere):&lt;br /&gt;
 ros2 launch fejemis_bridge bridge.launch.py&lt;br /&gt;
&lt;br /&gt;
Launching the mixer + gamepad control (from anywhere):&lt;br /&gt;
 ros2 launch fejemis_bridge mixer.launch.py&lt;br /&gt;
&lt;br /&gt;
You need to press the &amp;quot;BACK&amp;quot; button on the gamepad to actually start the control from the gamepad.&lt;br /&gt;
&lt;br /&gt;
You can launch both at once with the following command: ros2 launch fejemis_bridge control.launch.py&lt;br /&gt;
&lt;br /&gt;
This launch file runs the latest version of the autonomous cleaning software:&lt;br /&gt;
&lt;br /&gt;
 ros2 launch fejemis robot.launch.py &lt;br /&gt;
&lt;br /&gt;
It must be launched on both Raspberry Pis, since each device handles different parts of the system.&lt;br /&gt;
&lt;br /&gt;
Arguments:&lt;br /&gt;
 localization:=true/false, map_location:=asta/lab&lt;br /&gt;
&lt;br /&gt;
Default: localization true, map loc asta&lt;br /&gt;
&lt;br /&gt;
If the argument &amp;quot;localization:=false&amp;quot; is provided, the robot will automatically start a new mapping process and overwrite the current map.&lt;br /&gt;
&lt;br /&gt;
=== Other utilities ===&lt;br /&gt;
&lt;br /&gt;
If you want to generate a square signal, you can use the node I made:&lt;br /&gt;
&lt;br /&gt;
ros2 run arcana_tools signal_generator --ros-args -p frequency:=&amp;lt;signal_freq&amp;gt; -p out_type:=&amp;lt;output ROS2 type&amp;gt; -r /sig_out:=&amp;lt;output topic&amp;gt; -p bias:=&amp;lt;signal bias&amp;gt; -p range:=&amp;lt;vmax-vmin&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Typically you wight want to send it as if it was a gamepad input:&lt;br /&gt;
&lt;br /&gt;
ros2 run arcana_tools signal_generator--ros-args -p frequency:=0.5 -p out_type:=geometry_msgs.msg.Twist.linear.x -r /sig_out:=/joy_control/cmd_vel -p range:=0.5&lt;br /&gt;
&lt;br /&gt;
You can display graphs using the rqt tool (type rqt in a terminal). There&#039;s a plugin &amp;quot;Vizualization&amp;gt;Plot&amp;quot; that integrate the python 3 matplotlib package.&lt;br /&gt;
&lt;br /&gt;
To enable the fetching of the wheels velocities from the bridge, you may need to edit the file &amp;quot;~/.config/fejemis_bridge/bridge.yaml&amp;quot; and set enable: true instead of false in the vel section.&lt;br /&gt;
&lt;br /&gt;
If Fejemis crash (one of the battery display will turn off), you need to plug it in before turning it on again.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Mechanics ===&lt;br /&gt;
&lt;br /&gt;
You can access the technical description of the [[Mechanics]] in this page. &lt;br /&gt;
&lt;br /&gt;
=== Electronics ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can access the technical description of the [[Electronics]] in this page.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
You can access the detailed description of the github repository through this link [[Fejemis ROS2 Software]].&lt;br /&gt;
&lt;br /&gt;
==== Old repository ====&lt;br /&gt;
You can access the description of the legacy [[Repository]] through this link.&lt;br /&gt;
&lt;br /&gt;
== Mission Statement ==&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8825</id>
		<title>Fejemis 2026</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8825"/>
		<updated>2026-05-27T10:28:21Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Fejemis is an autonomous cleaning robot developed to clean the Asta building. The building is divided into different cleaning areas, where the robot navigates autonomously to a selected point, plans a cleaning path, and performs the cleaning task using its brushing system while following the generated route.&lt;br /&gt;
&lt;br /&gt;
[[File:Fejemis.jpeg | 600px]]&lt;br /&gt;
&lt;br /&gt;
== Start up guide ==&lt;br /&gt;
&lt;br /&gt;
To turn on Fejemis, you need to press the turn on button for more than 2 seconds. If not, both Raspberry Pis wont boot. To turn it off you need to press it for more than 7 seconds.&lt;br /&gt;
&lt;br /&gt;
To work with Fejemis, you can connect directly using a monitor and keyboard. The monitor can be connected to one of the Raspberry Pis, while the keyboard connects through USB. After booting, log into the Ubuntu system using the provided credentials.&lt;br /&gt;
&lt;br /&gt;
Fejemis uses two Raspberry Pis:&lt;br /&gt;
&lt;br /&gt;
Main Raspberry Pi and Auxiliary Raspberry Pi&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pis can be also accessed through SSH.(The IP some time changes, check it by connecting directly with the monitor)&lt;br /&gt;
 Main lab&lt;br /&gt;
 local@10.197.213.227&lt;br /&gt;
 Aux lab&lt;br /&gt;
 local@10.197.213.226&lt;br /&gt;
 Main asta&lt;br /&gt;
 local@10.197.219.238&lt;br /&gt;
 Aux lab&lt;br /&gt;
 local@10.197.219.237&lt;br /&gt;
&lt;br /&gt;
The last way of connecting is through Ethernet. &lt;br /&gt;
 Main&lt;br /&gt;
 197.168.1.1 &lt;br /&gt;
 Aux&lt;br /&gt;
 197.168.1.2&lt;br /&gt;
&lt;br /&gt;
If you are connected to the main Raspberry Pi,the auxiliary Raspberry Pi can also be accessed using:&lt;br /&gt;
 &lt;br /&gt;
 ssh fejemis-aux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Both devices must run the same launch file:&lt;br /&gt;
&lt;br /&gt;
 ros2 launch fejemis robot.launch.py localization:=true map_location:=asta&lt;br /&gt;
&lt;br /&gt;
This launch file runs the latest version of the autonomous cleaning software. It must be launched on both Raspberry Pis, since each device handles different parts of the system.&lt;br /&gt;
&lt;br /&gt;
If the argument &amp;quot;localization:=true&amp;quot; is not provided, the robot will automatically start a new mapping process and overwrite the current map.&lt;br /&gt;
&lt;br /&gt;
If Fejemis crash (one of the battery display will turn off), you need to plug it in before turning it on again.&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Mechanics ===&lt;br /&gt;
&lt;br /&gt;
You can access the technical description of the [[Mechanics]] in this page. &lt;br /&gt;
&lt;br /&gt;
=== Electronics ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can access the technical description of the [[Electronics]] in this page.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
You can access the detailed description of the [[Repository]] through this link.&lt;br /&gt;
&lt;br /&gt;
== Mission Statement ==&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8819</id>
		<title>Fejemis 2026</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8819"/>
		<updated>2026-05-27T10:08:18Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Fejemis is an autonomous cleaning robot developed to clean the Asta building. The building is divided into different cleaning areas, where the robot navigates autonomously to a selected point, plans a cleaning path, and performs the cleaning task using its brushing system while following the generated route.&lt;br /&gt;
&lt;br /&gt;
[[File:Fejemis.jpeg | 600px]]&lt;br /&gt;
&lt;br /&gt;
== Start up guide ==&lt;br /&gt;
&lt;br /&gt;
To work with Fejemis, you can connect directly using a monitor and keyboard. The monitor can be connected to one of the Raspberry Pis, while the keyboard connects through USB. After booting, log into the Ubuntu system using the provided credentials.&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pis can be also accessed through SSH.&lt;br /&gt;
&lt;br /&gt;
 local@10.197.218. (The IP some time changes, check it by connecting directly with the monitor)&lt;br /&gt;
&lt;br /&gt;
If you are connected to the main Raspberry Pi,the auxiliary Raspberry Pi can be accessed using:&lt;br /&gt;
 &lt;br /&gt;
 ssh fejemis-aux&lt;br /&gt;
&lt;br /&gt;
Fejemis uses two Raspberry Pis:&lt;br /&gt;
&lt;br /&gt;
Main Raspberry Pi&lt;br /&gt;
Auxiliary Raspberry Pi&lt;br /&gt;
&lt;br /&gt;
Both devices must run the same launch file:&lt;br /&gt;
&lt;br /&gt;
 ros2 launch fejemis_maploc slam_test.launch.py localization:=true map_location:=asta&lt;br /&gt;
&lt;br /&gt;
This launch file runs the latest version of the autonomous cleaning software. It must be launched on both Raspberry Pis, since each device handles different parts of the system.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Mechanics ===&lt;br /&gt;
&lt;br /&gt;
You can access the technical description of the [[Mechanics]] in this page. &lt;br /&gt;
&lt;br /&gt;
=== Electronics ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can access the technical description of the [[Electronics]] in this page.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
You can access the detailed description of the [[Repository]] through this link.&lt;br /&gt;
&lt;br /&gt;
== Mission Statement ==&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8818</id>
		<title>Fejemis 2026</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8818"/>
		<updated>2026-05-27T09:49:14Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Fejemis is an autonomous cleaning robot developed to clean the Asta building. The building is divided into different cleaning areas, where the robot navigates autonomously to a selected point, plans a cleaning path, and performs the cleaning task using its brushing system while following the generated route.&lt;br /&gt;
&lt;br /&gt;
[[File:Fejemis.jpeg | 600px]]&lt;br /&gt;
&lt;br /&gt;
== Start up guide ==&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Mechanics ===&lt;br /&gt;
&lt;br /&gt;
You can access the technical description of the [[Mechanics]] in this page. &lt;br /&gt;
&lt;br /&gt;
=== Electronics ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can access the technical description of the [[Electronics]] in this page.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
You can access the detailed description of the [[Repository]] through this link.&lt;br /&gt;
&lt;br /&gt;
== Mission Statement ==&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8817</id>
		<title>Fejemis 2026</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8817"/>
		<updated>2026-05-27T09:48:55Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Fejemis is an autonomous cleaning robot developed to clean the Asta building. The building is divided into different cleaning areas, where the robot navigates autonomously to a selected point, plans a cleaning path, and performs the cleaning task using its brushing system while following the generated route.&lt;br /&gt;
&lt;br /&gt;
     [[File:Fejemis.jpeg | 600px]]&lt;br /&gt;
&lt;br /&gt;
== Start up guide ==&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Mechanics ===&lt;br /&gt;
&lt;br /&gt;
You can access the technical description of the [[Mechanics]] in this page. &lt;br /&gt;
&lt;br /&gt;
=== Electronics ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can access the technical description of the [[Electronics]] in this page.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
You can access the detailed description of the [[Repository]] through this link.&lt;br /&gt;
&lt;br /&gt;
== Mission Statement ==&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8816</id>
		<title>Fejemis 2026</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8816"/>
		<updated>2026-05-27T09:48:39Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Fejemis is an autonomous cleaning robot developed to clean the Asta building. The building is divided into different cleaning areas, where the robot navigates autonomously to a selected point, plans a cleaning path, and performs the cleaning task using its brushing system while following the generated route.&lt;br /&gt;
&lt;br /&gt;
[[File:Fejemis.jpeg | 600px]]&lt;br /&gt;
&lt;br /&gt;
== Start up guide ==&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Mechanics ===&lt;br /&gt;
&lt;br /&gt;
You can access the technical description of the [[Mechanics]] in this page. &lt;br /&gt;
&lt;br /&gt;
=== Electronics ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can access the technical description of the [[Electronics]] in this page.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
You can access the detailed description of the [[Repository]] through this link.&lt;br /&gt;
&lt;br /&gt;
== Mission Statement ==&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8815</id>
		<title>Fejemis 2026</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8815"/>
		<updated>2026-05-27T09:48:24Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Fejemis is an autonomous cleaning robot developed to clean the Asta building. The building is divided into different cleaning areas, where the robot navigates autonomously to a selected point, plans a cleaning path, and performs the cleaning task using its brushing system while following the generated route.&lt;br /&gt;
[[File:Fejemis.jpeg | 600px]]&lt;br /&gt;
&lt;br /&gt;
== Start up guide ==&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Mechanics ===&lt;br /&gt;
&lt;br /&gt;
You can access the technical description of the [[Mechanics]] in this page. &lt;br /&gt;
&lt;br /&gt;
=== Electronics ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can access the technical description of the [[Electronics]] in this page.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
You can access the detailed description of the [[Repository]] through this link.&lt;br /&gt;
&lt;br /&gt;
== Mission Statement ==&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8814</id>
		<title>Fejemis 2026</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8814"/>
		<updated>2026-05-27T09:48:04Z</updated>

		<summary type="html">&lt;p&gt;S253745: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Fejemis.jpeg | 600px]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Fejemis is an autonomous cleaning robot developed to clean the Asta building. The building is divided into different cleaning areas, where the robot navigates autonomously to a selected point, plans a cleaning path, and performs the cleaning task using its brushing system while following the generated route.&lt;br /&gt;
&lt;br /&gt;
== Start up guide ==&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Mechanics ===&lt;br /&gt;
&lt;br /&gt;
You can access the technical description of the [[Mechanics]] in this page. &lt;br /&gt;
&lt;br /&gt;
=== Electronics ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can access the technical description of the [[Electronics]] in this page.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
You can access the detailed description of the [[Repository]] through this link.&lt;br /&gt;
&lt;br /&gt;
== Mission Statement ==&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8813</id>
		<title>Fejemis 2026</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8813"/>
		<updated>2026-05-27T09:30:29Z</updated>

		<summary type="html">&lt;p&gt;S253745: /* Repository */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Fejemis.jpeg | 600px]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
== Start up guide ==&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Mechanics ===&lt;br /&gt;
&lt;br /&gt;
You can access the technical description of the [[Mechanics]] in this page. &lt;br /&gt;
&lt;br /&gt;
=== Electronics ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can access the technical description of the [[Electronics]] in this page.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
You can access the detailed description of the [[Repository]] through this link.&lt;br /&gt;
&lt;br /&gt;
== Mission Statement ==&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8809</id>
		<title>Fejemis 2026</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8809"/>
		<updated>2026-05-27T09:26:53Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Fejemis.jpeg | 600px]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
== Start up guide ==&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Mechanics ===&lt;br /&gt;
&lt;br /&gt;
You can access the technical description of the [[Mechanics]] in this page. &lt;br /&gt;
&lt;br /&gt;
=== Electronics ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can access the technical description of the [[Electronics]] in this page.&lt;br /&gt;
&lt;br /&gt;
=== Ethernet Router ===&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
== Mission Statement ==&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8805</id>
		<title>Fejemis 2026</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8805"/>
		<updated>2026-05-27T09:25:00Z</updated>

		<summary type="html">&lt;p&gt;S253745: /* Raspberry Pi */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Fejemis.jpeg | 600px]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
== Start up guide ==&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Mechanics ===&lt;br /&gt;
&lt;br /&gt;
=== Electronics ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can access the technical description of the [[Electronics]] in this page.&lt;br /&gt;
&lt;br /&gt;
===== Raspberry Pi =====&lt;br /&gt;
The two raspi are, bad 15 GB memory, 60GB storage, sd card memory slower.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
good 8GB, flash storage ram both wit Ram and one with an 512GB storage Memorry also faster becaus&lt;br /&gt;
&lt;br /&gt;
=== Ethernet Router ===&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
== Mission Statement ==&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8804</id>
		<title>Fejemis 2026</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8804"/>
		<updated>2026-05-27T09:19:53Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Fejemis.jpeg | 600px]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
== Start up guide ==&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Mechanics ===&lt;br /&gt;
&lt;br /&gt;
=== Electronics ===&lt;br /&gt;
&lt;br /&gt;
===== Raspberry Pi =====&lt;br /&gt;
The two raspi are, bad 15 GB memory, 60GB storage, sd card memory slower.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
good 8GB, flash storage ram both wit Ram and one with an 512GB storage Memorry also faster becaus&lt;br /&gt;
&lt;br /&gt;
=== Ethernet Router ===&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
== Mission Statement ==&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8803</id>
		<title>Fejemis 2026</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8803"/>
		<updated>2026-05-27T09:19:33Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Fejemis.jpeg | 600px]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
== Start up guide ==&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Mechanics ===&lt;br /&gt;
&lt;br /&gt;
=== Electronics ===&lt;br /&gt;
&lt;br /&gt;
   ===== Raspberry Pi =====&lt;br /&gt;
The two raspi are, bad 15 GB memory, 60GB storage, sd card memory slower.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
good 8GB, flash storage ram both wit Ram and one with an 512GB storage Memorry also faster becaus&lt;br /&gt;
&lt;br /&gt;
=== Ethernet Router ===&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
== Mission Statement ==&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8799</id>
		<title>Fejemis 2026</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8799"/>
		<updated>2026-05-27T09:17:11Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Fejemis.jpeg | 600px]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
== Start up guide ==&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Mechanics ===&lt;br /&gt;
&lt;br /&gt;
=== Electronics ===&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
== Mission Statement ==&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8798</id>
		<title>Fejemis 2026</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8798"/>
		<updated>2026-05-27T09:16:16Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Fejemis.jpeg]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
== Start up guide ==&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Mechanics ===&lt;br /&gt;
&lt;br /&gt;
=== Electronics ===&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
== Mission Statement ==&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8797</id>
		<title>Fejemis 2026</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8797"/>
		<updated>2026-05-27T09:14:04Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Fejemis.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
== Start up guide ==&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Mechanics ===&lt;br /&gt;
&lt;br /&gt;
=== Electronics ===&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
== Mission Statement ==&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8796</id>
		<title>Fejemis 2026</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8796"/>
		<updated>2026-05-27T09:13:33Z</updated>

		<summary type="html">&lt;p&gt;S253745: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Fejemis.jpg]]&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
== Start up guide ==&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Mechanics ===&lt;br /&gt;
&lt;br /&gt;
=== Electronics ===&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
== Mission Statement ==&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=File:Fejemis.jpeg&amp;diff=8795</id>
		<title>File:Fejemis.jpeg</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=File:Fejemis.jpeg&amp;diff=8795"/>
		<updated>2026-05-27T09:12:50Z</updated>

		<summary type="html">&lt;p&gt;S253745: Front picture of Fejemis(27/06/2026).&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Front picture of Fejemis(27/06/2026).&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8794</id>
		<title>Fejemis 2026</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Fejemis_2026&amp;diff=8794"/>
		<updated>2026-05-27T09:00:56Z</updated>

		<summary type="html">&lt;p&gt;S253745: Created page with &amp;quot;== Introduction ==  == Start up guide ==  == Hardware ==  === Mechanics ===  === Electronics ===  == Software ==  === Repository ===  == Mission Statement ==&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
== Start up guide ==&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Mechanics ===&lt;br /&gt;
&lt;br /&gt;
=== Electronics ===&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
=== Repository ===&lt;br /&gt;
&lt;br /&gt;
== Mission Statement ==&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
	<entry>
		<id>https://rsewiki.electro.dtu.dk/index.php?title=Main_Page&amp;diff=8793</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://rsewiki.electro.dtu.dk/index.php?title=Main_Page&amp;diff=8793"/>
		<updated>2026-05-27T08:51:27Z</updated>

		<summary type="html">&lt;p&gt;S253745: /* Robots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the wiki pages of the Robot Systems Engineering (RSE) group in Automation and Control at DTU Electrical Engineering.&lt;br /&gt;
&lt;br /&gt;
These pages will contain updated information on RSE projects and other issues related to robotics research.&lt;br /&gt;
&lt;br /&gt;
= Facilities =&lt;br /&gt;
&lt;br /&gt;
* [[ASTA|Autonomous System Testing Arena (ASTA)]]&lt;br /&gt;
* [[ASTA motion capture|Motion capture (Optitrack)]]&lt;br /&gt;
* [[uASTA|μASTA]]&lt;br /&gt;
* [[Lipo Safety | Lipo safety]]&lt;br /&gt;
* [[Workshop]]&lt;br /&gt;
&lt;br /&gt;
= Robots =&lt;br /&gt;
&lt;br /&gt;
* [[SMR]] (Small Mobile Robot)&lt;br /&gt;
* [[UR5]] (Universal Robot UR5 Arm)&lt;br /&gt;
* [[UR10]] (Universal Robot UR10 Arm)&lt;br /&gt;
* [[Fieldrobot]] (Fieldrobot)&lt;br /&gt;
* [[iRobot ATRV-Jr]]&lt;br /&gt;
* [[TerrainHopper]]&lt;br /&gt;
* [[regbot | Regbot]] (small robot intended as control-1 exercise)&lt;br /&gt;
* [[Basebot]] is the base version of Regbot for digital control exercises.&lt;br /&gt;
* [[robobot B | Robobot]] A small 4-wheel robot for DTU Robocup.&lt;br /&gt;
* [[SimServer]] Stage-based multi-robot simulator&lt;br /&gt;
* [[Fejemis]] autonomous cleaning&lt;br /&gt;
* [[Fejemis_2026]] autonomous cleaning&lt;br /&gt;
* [[Capra]] P5&lt;br /&gt;
* [[Scorpi]] crane robot.&lt;br /&gt;
* [[Lanciers]] demo robots.&lt;br /&gt;
* [[Ricbot]] Wheeled sensor platform for weed detection.&lt;br /&gt;
&lt;br /&gt;
=== Other projects===&lt;br /&gt;
&lt;br /&gt;
* [[Robot dashboard]] - igangværende projekt.&lt;br /&gt;
* [[Weather monitor]], also including the GNSS &#039;weather&#039;.&lt;br /&gt;
* [[Claas axion]] (Semi-autonomous heavy tractor)&lt;br /&gt;
* [[Mini40 force/torque sensor]]&lt;br /&gt;
* [[Robotiq gripper]]&lt;br /&gt;
* [[Visual Tracking on Pixhawk]] (Position estimation of Pixhawk flight controller with external camera)&lt;br /&gt;
* [[3D localization]] based on sensor network&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Magnetic Navigation]] sensor --&amp;gt;&lt;br /&gt;
&amp;lt;!-- [[robocup]] --&amp;gt;&lt;br /&gt;
[[inspection robot]] (4/6-legged robot)&lt;br /&gt;
&amp;lt;!-- [[3D printer]] Zortrax M300 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Mobotware =&lt;br /&gt;
&lt;br /&gt;
(Mobile Robot software)&lt;br /&gt;
&lt;br /&gt;
* [[AU Robot Servers]] (AURS) includes servers for soft real-time processing, e.g.: camera and laser scanner processing.&lt;br /&gt;
&lt;br /&gt;
* [[RHD]] (Robot Hardware Daemon) is the hardware abstraction layer, with interface to real-time sensors and actuators.&lt;br /&gt;
&lt;br /&gt;
* MRC - see SMR below - is the real-time movement control (and mission control using the SMR-CL language)&lt;br /&gt;
&lt;br /&gt;
[[Version and download]]&lt;br /&gt;
&lt;br /&gt;
[[Automated test setup]]&lt;br /&gt;
&lt;br /&gt;
= Linux system considerations =&lt;br /&gt;
&lt;br /&gt;
[[Switchtool]] - Shift Mobotware version - earlier, newer or the one locally on the robots&lt;br /&gt;
&lt;br /&gt;
[[Rules for udev on RTAI]] (How to use udev rules to get correct modes for RTAI fifos and Comedi devices)&lt;br /&gt;
&lt;br /&gt;
[[Naming networkinterfaces using udev]]&lt;br /&gt;
&lt;br /&gt;
[[Setting permissions for various devices using udev]]&lt;br /&gt;
&lt;br /&gt;
[[Authenticating Linux clients against MS Active Directory]]&lt;br /&gt;
&lt;br /&gt;
[[Using GDB for coredump]]&lt;br /&gt;
&lt;br /&gt;
====Older pages====&lt;br /&gt;
&lt;br /&gt;
These pages are no longer relevant.&lt;br /&gt;
&lt;br /&gt;
[[Labyrinth]] (Labyrinth game)&lt;br /&gt;
&lt;br /&gt;
[[Drone control]] drone base control &lt;br /&gt;
&lt;br /&gt;
[[DTU running path dataset]]&lt;br /&gt;
&lt;br /&gt;
[[flexbot]] design work to get a flexible stair climbing robot&lt;br /&gt;
&lt;br /&gt;
[[Ubuntu 32-bit or 64-bit]]&lt;br /&gt;
&lt;br /&gt;
[[Slackware OpenCV package install]]&lt;br /&gt;
&lt;br /&gt;
[[Slackware packages in robot image]]&lt;br /&gt;
&lt;br /&gt;
[[MMR]] (Medium Mobile Robot)&lt;br /&gt;
&lt;br /&gt;
[[HAKO]] (KU Life tractor, now in Hohenheim University Germany)&lt;br /&gt;
&lt;br /&gt;
[[hexakopter]] (notes for six-rotor helicopter including the pixhawk autopilot)&lt;br /&gt;
&lt;br /&gt;
= Controllab =&lt;br /&gt;
&lt;br /&gt;
[[Platform list]] (List of computers used for various control set-ups)&lt;br /&gt;
&lt;br /&gt;
[[Realtime testing]] (Description of small test procedures to verify RTAI realtime operation)&lt;br /&gt;
&lt;br /&gt;
[http://aut.elektro.dtu.dk/staff/sh/rsewiki/matlabrtai_intro.pdf Introduction to Matlab RTW and RTAI] (Guide for usage of RTAILab with Matlab RTW and Simulink)&lt;br /&gt;
&lt;br /&gt;
= How-to documentation =&lt;br /&gt;
&lt;br /&gt;
====installation====&lt;br /&gt;
&lt;br /&gt;
[[NTP howto]] time-sync 2 computers&lt;br /&gt;
&lt;br /&gt;
Using the [[RSE SVN]] repository&lt;br /&gt;
&lt;br /&gt;
[[Flash disk cloning]] - to repair robot boot disk image&lt;br /&gt;
&lt;br /&gt;
[[Install on (K)UBUNTU]] - for test and development on PC or laptop&lt;br /&gt;
&lt;br /&gt;
[[Install on raspberry]] - install Mobotware on raspbian (NOOBS) or a Debian based Linux on Beagle-bone.&lt;br /&gt;
&lt;br /&gt;
[[Install Universal Robots simulator on lab PC]]&lt;br /&gt;
&lt;br /&gt;
[[Remote Development of Mobotware Using Eclipse]]&lt;br /&gt;
&lt;br /&gt;
[[Set hostnames from dhcp-server with dhclient on *buntu systems]]&lt;br /&gt;
&lt;br /&gt;
[[Notes on compiling augclient]] - GUI interface for Mobotware used fx. in AGCO project&lt;br /&gt;
&lt;br /&gt;
====utility pages====&lt;br /&gt;
&lt;br /&gt;
[[Convert a .tex document to openoffice]]&lt;br /&gt;
&lt;br /&gt;
[[Access DTU campus network using VPN from Linux]]&lt;br /&gt;
&lt;br /&gt;
[[disable display manager on boot]] (and thereby the graphic user interface)&lt;br /&gt;
&lt;br /&gt;
[[How to make a animation from separate images]]&lt;br /&gt;
&lt;br /&gt;
[[Citrix access to DTU files and Windows Apps]]  (Using Citrix Receiver, preferred way from 2015+)&lt;br /&gt;
&lt;br /&gt;
[[Latex]] where to put document class files in ubuntu installation&lt;br /&gt;
&lt;br /&gt;
[[file export]] testpage for export of files&lt;br /&gt;
&lt;br /&gt;
====older pages====&lt;br /&gt;
&lt;br /&gt;
[[RoboCup]] - bl.a. scoreboard - not maintained&lt;br /&gt;
&lt;br /&gt;
[[AU software license considerations]]&lt;br /&gt;
&lt;br /&gt;
[[Robot GUI (MARG)]] - (no longer maintained)&lt;br /&gt;
&lt;br /&gt;
[[Install GUI-less UBUNTU]] - new boot disk image for robots&lt;br /&gt;
&lt;br /&gt;
= Demonstrations =&lt;br /&gt;
&lt;br /&gt;
[[PLC controlled traffic light]]&lt;br /&gt;
&lt;br /&gt;
[[Machine shop in 326]]&lt;br /&gt;
&lt;br /&gt;
[[Inverted pendulum]]&lt;/div&gt;</summary>
		<author><name>S253745</name></author>
	</entry>
</feed>