<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://aurorarobotics.sssn.us/index.php?action=history&amp;feed=atom&amp;title=LUNATIC</id>
	<title>LUNATIC - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://aurorarobotics.sssn.us/index.php?action=history&amp;feed=atom&amp;title=LUNATIC"/>
	<link rel="alternate" type="text/html" href="https://aurorarobotics.sssn.us/index.php?title=LUNATIC&amp;action=history"/>
	<updated>2026-04-26T00:18:09Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://aurorarobotics.sssn.us/index.php?title=LUNATIC&amp;diff=806&amp;oldid=prev</id>
		<title>Acmattson3: Added software stack diagram.</title>
		<link rel="alternate" type="text/html" href="https://aurorarobotics.sssn.us/index.php?title=LUNATIC&amp;diff=806&amp;oldid=prev"/>
		<updated>2025-07-07T22:09:04Z</updated>

		<summary type="html">&lt;p&gt;Added software stack diagram.&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:09, 7 July 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== LUNATIC Software Stack ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== LUNATIC Software Stack ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Visit the [https://github.com/auroraRoboticsLab/MiningRobot MiningRobot GitHub repository] for more detailed information.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Visit the [https://github.com/auroraRoboticsLab/MiningRobot MiningRobot GitHub repository] for more detailed information.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[File:Autonomy stack full.png|alt=The full LUNATIC autonomy stack diagram.|thumb|The full LUNATIC autonomy stack diagram.]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;&amp;quot;Logically UNcoupled Architecture Technology for Intra-robot Communication&amp;quot; or LUNATIC&amp;#039;&amp;#039;&amp;#039; (pronounced lun-AT-ic, like automatic) is our robot control system, built as a loosely coupled set of microservices. LUNATIC is currently the software responsible for controlling the [[Excahauler]] robot.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;&amp;quot;Logically UNcoupled Architecture Technology for Intra-robot Communication&amp;quot; or LUNATIC&amp;#039;&amp;#039;&amp;#039; (pronounced lun-AT-ic, like automatic) is our robot control system, built as a loosely coupled set of microservices. LUNATIC is currently the software responsible for controlling the [[Excahauler]] robot.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The &amp;lt;code&amp;gt;autonomy/&amp;lt;/code&amp;gt; directory (in the project [https://github.com/auroraRoboticsLab/MiningRobot Github repository]) contains our robot control stack, written in &amp;#039;&amp;#039;&amp;#039;C++&amp;#039;&amp;#039;&amp;#039; for Linux and running happily on x86 and ARM based robots including the Raspberry Pi or NVIDIA Jetson. See [https://github.com/AuroraRoboticsLab/MiningRobot/blob/master/autonomy/README.txt the README in that directory] for build directions.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The &amp;lt;code&amp;gt;autonomy/&amp;lt;/code&amp;gt; directory (in the project [https://github.com/auroraRoboticsLab/MiningRobot Github repository]) contains our robot control stack, written in &amp;#039;&amp;#039;&amp;#039;C++&amp;#039;&amp;#039;&amp;#039; for Linux and running happily on x86 and ARM based robots including the Raspberry Pi or NVIDIA Jetson. See [https://github.com/AuroraRoboticsLab/MiningRobot/blob/master/autonomy/README.txt the README in that directory] for build directions.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key database:diff:1.41:old-803:rev-806:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Acmattson3</name></author>
	</entry>
	<entry>
		<id>https://aurorarobotics.sssn.us/index.php?title=LUNATIC&amp;diff=803&amp;oldid=prev</id>
		<title>Acmattson3: Created page with &quot;== LUNATIC Software Stack == Visit the [https://github.com/auroraRoboticsLab/MiningRobot MiningRobot GitHub repository] for more detailed information.  The &#039;&#039;&#039;&quot;Logically UNcoupled Architecture Technology for Intra-robot Communication&quot; or LUNATIC&#039;&#039;&#039; (pronounced lun-AT-ic, like automatic) is our robot control system, built as a loosely coupled set of microservices. LUNATIC is currently the software responsible for controlling the Excahauler robot. The &lt;code&gt;autonomy/&lt;/...&quot;</title>
		<link rel="alternate" type="text/html" href="https://aurorarobotics.sssn.us/index.php?title=LUNATIC&amp;diff=803&amp;oldid=prev"/>
		<updated>2025-07-07T22:01:39Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;== LUNATIC Software Stack == Visit the [https://github.com/auroraRoboticsLab/MiningRobot MiningRobot GitHub repository] for more detailed information.  The &amp;#039;&amp;#039;&amp;#039;&amp;quot;Logically UNcoupled Architecture Technology for Intra-robot Communication&amp;quot; or LUNATIC&amp;#039;&amp;#039;&amp;#039; (pronounced lun-AT-ic, like automatic) is our robot control system, built as a loosely coupled set of microservices. LUNATIC is currently the software responsible for controlling the &lt;a href=&quot;/index.php/Excahauler&quot; title=&quot;Excahauler&quot;&gt;Excahauler&lt;/a&gt; robot. The &amp;lt;code&amp;gt;autonomy/&amp;lt;/...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== LUNATIC Software Stack ==&lt;br /&gt;
Visit the [https://github.com/auroraRoboticsLab/MiningRobot MiningRobot GitHub repository] for more detailed information.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;&amp;quot;Logically UNcoupled Architecture Technology for Intra-robot Communication&amp;quot; or LUNATIC&amp;#039;&amp;#039;&amp;#039; (pronounced lun-AT-ic, like automatic) is our robot control system, built as a loosely coupled set of microservices. LUNATIC is currently the software responsible for controlling the [[Excahauler]] robot.&lt;br /&gt;
The &amp;lt;code&amp;gt;autonomy/&amp;lt;/code&amp;gt; directory (in the project [https://github.com/auroraRoboticsLab/MiningRobot Github repository]) contains our robot control stack, written in &amp;#039;&amp;#039;&amp;#039;C++&amp;#039;&amp;#039;&amp;#039; for Linux and running happily on x86 and ARM based robots including the Raspberry Pi or NVIDIA Jetson. See [https://github.com/AuroraRoboticsLab/MiningRobot/blob/master/autonomy/README.txt the README in that directory] for build directions.&lt;br /&gt;
&lt;br /&gt;
Using microservices means you can compile, run, and test a single service independently, unlike our previous single monolithic executable the [https://github.com/AuroraRoboticsLab/MiningRobot/blob/master/autonomy/backend/main.cpp backend].&lt;br /&gt;
&lt;br /&gt;
Due to the nature of a robotics control stack, being able to efficiently exchange quickly changing data between modules is crucial. We do this using the new MMAP-based shared file data exchange system, the details of which can be found in the [https://github.com/AuroraRoboticsLab/MiningRobot/blob/master/autonomy/include/aurora/data_exchange.h data_exchange.h] header.&lt;br /&gt;
&lt;br /&gt;
The data being exchanged is listed in the [https://github.com/AuroraRoboticsLab/MiningRobot/blob/master/autonomy/include/aurora/lunatic.h lunatic.h] header for the microservices, and [https://github.com/AuroraRoboticsLab/MiningRobot/blob/master/autonomy/nanoslot/include/nanoslot/nanoslot_exchange.h nanoslot_exchange.h] for the Arduino data.&lt;br /&gt;
&lt;br /&gt;
== Control Software Stack ==&lt;br /&gt;
A basic manual control setup has autonomy/frontend running on the &amp;quot;pilot&amp;quot; machine, and sending commands to the autonomy/backend running onboard the robot. These commands are sent via UDP broadcast, so they should work anywhere on the same subnet. The backend talks to the Arduinos directly via USB--each Arduino has a &amp;quot;nanoslot ID&amp;quot; that lets nanoboot connect the appropriate slot program to communicate with it. To control the robot, all you need is a backend and the slot programs: put the backend into &amp;quot;backend driver&amp;quot; state, and use WASD to drive the robot.&lt;br /&gt;
For autonomous robot operations, we rely on a huge variety of microservices, such as the localizer (where is the robot?), path planner (how do we get to the target?), andretti (how do we drive along the path?), vision (what obstacles can we see?), and several other debug tools.&lt;br /&gt;
&lt;br /&gt;
This architecture has been incrementally built up since 2013 by a variety of UAF students for the [[Project Archives|NASA Robotic Mining Contest]]. Unless otherwise noted, everything here is public domain.&lt;br /&gt;
&lt;br /&gt;
== Get Involved ==&lt;br /&gt;
For details on how build and run this software, see [https://github.com/AuroraRoboticsLab/MiningRobot/blob/master/autonomy/README.txt autonomy/README]. Send a pull request or [[User:Lawlor|contact me (Dr. Orion Lawlor)]] if you have comments or suggestions!&lt;/div&gt;</summary>
		<author><name>Acmattson3</name></author>
	</entry>
</feed>