<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>OpenMower — Open Source RTK GPS Robotic Mower – Documentation</title><link>https://openmower.de/archive/v1.2.0/docs/</link><description>Recent content in Documentation on OpenMower — Open Source RTK GPS Robotic Mower</description><generator>Hugo -- gohugo.io</generator><atom:link href="https://openmower.de/archive/v1.2.0/docs/index.xml" rel="self" type="application/rss+xml"/><item><title>Docs: Compatible Mowers</title><link>https://openmower.de/archive/v1.2.0/docs/knowledge-base/compatible-mowers/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/knowledge-base/compatible-mowers/</guid><description>
&lt;h2 id="yard-force">Yard Force&lt;/h2>
&lt;p>&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/compatible-mowers//images/yf-mainboard.jpg" alt="OpenMower-V2 YardForce Carrierboard">&lt;/p>
&lt;p>&lt;strong>Check out the Git Repo Here:&lt;/strong> &lt;a href="https://github.com/xtech/hw-openmower-yardforce" target="_blank" rel="noopener">https://github.com/xtech/hw-openmower-yardforce&lt;/a>
&lt;/p>
&lt;p>The project got started on a YardForce Classic 500(B), and there are photo guides in this documentation on how to disassemble and reassemble it. From a user&amp;rsquo;s perspective, the YardForce Classic 500(B) is the &amp;ldquo;best supported&amp;rdquo; mower.&lt;/p>
&lt;p>&lt;strong>However, there are more mowers from the YardForce brand that are compatible:&lt;/strong>&lt;/p>
&lt;p>In theory, every YardForce model with the Core + Outer Frame Chassis (SA, SC, LUV, N and NX Line) that has a production year of 2019+ has compatible electronics to replace the stock mainboard with an OpenMower one.&lt;/p>
&lt;div class="alert alert-warning" role="alert">
As of today the YardForce Amiro, Compact, EasyMow, MowBest, XPower and MB series models are not (yet) compatible.&lt;br>
The main reason is that the OpenMower mainboard does not fit in their chassis.
&lt;/div>
&lt;h2 id="sabo--john-deere">SABO / John Deere&lt;/h2>
&lt;p>There is a dedicated mainboard for &lt;strong>SABO MOWit 500F&lt;/strong> (Series-I &amp;amp; II) and &lt;strong>John Deere Tango E5&lt;/strong> (Series-I &amp;amp; II) mowers.&lt;/p>
&lt;p>&lt;strong>Check out the Git Repo Here:&lt;/strong> &lt;a href="https://github.com/xtech/hw-openmower-sabo" target="_blank" rel="noopener">https://github.com/xtech/hw-openmower-sabo&lt;/a>
&lt;/p>
&lt;p>This Carrierboard is compatible with the following mower models:&lt;/p>
&lt;ul>
&lt;li>SABO MOWit 500F (Series-I &amp;amp; II)&lt;/li>
&lt;li>John Deere Tango E5 (Series-I &amp;amp; II)&lt;/li>
&lt;/ul>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:center">Series-I Carrierboard (v0.2)&lt;/th>
&lt;th style="text-align:center">Series-II Carrierboard (v0.2)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:center">&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/compatible-mowers//images/om-sabo-cb-s1-v02.jpg" alt="OpenMower-V2 SABO Carrierboard Series-I v0.2">&lt;/td>
&lt;td style="text-align:center">&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/compatible-mowers//images/om-sabo-cb-s2-v02.jpg" alt="OpenMower-V2 SABO Carrierboard Series-II v0.1">&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:center">&lt;strong>Series-I (v0.1) @ John Deere Tango E5&lt;/strong>&lt;/td>
&lt;td style="text-align:center">&lt;strong>Series-II (v0.1) @ Sabo MOWiT 500F&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:center">&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/compatible-mowers//images/johndeere-s1-v01-assembled.jpg" alt="V0.1 Carrierboard Series-I assembled">&lt;/td>
&lt;td style="text-align:center">&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/compatible-mowers//images/sabo-s2-v01-assembled.jpg" alt="V0.1 Carrierboard Series-II assembled">&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>These mowers are &lt;strong>well supported&lt;/strong>. Even the display controller was replaced by a fully functional, modern user interface!&lt;/p>
&lt;div style="padding-bottom: 2.5rem">
&lt;video width="640" height="360" controls>
&lt;source src="https://www.shbe.net/openmower/sabo/Sabo_LCD_20251212.mp4" type="video/mp4">
Your browser does not support the video tag.
&lt;/video>
&lt;/div>
&lt;h2 id="universal-board">Universal Board&lt;/h2>
&lt;p>The universal board contains all features needed for an Open Mower build (e.g., three BLDC/DC motor controllers, a LiPo charger on board, connectors for GPS, emergency sensors, etc.). It has screw terminals for easy connections and can be broken into smaller modules if it doesn&amp;rsquo;t fit as a whole board.&lt;/p>
&lt;p>&lt;strong>Check out the Git Repo Here:&lt;/strong> &lt;a href="https://github.com/xtech/hw-openmower-universal" target="_blank" rel="noopener">https://github.com/xtech/hw-openmower-universal&lt;/a>
&lt;/p>
&lt;p>&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/compatible-mowers//images/BreakingTheBoard.jpg" alt="V2 Universal Board with Modules">&lt;/p>
&lt;h3 id="other-compatible-brands">Other Compatible Brands&lt;/h3>
&lt;p>The following mower brands are known to have compatible hardware with the Universal mainboard. If you want to check your specific model, ask on Discord. The probability is high that it will work:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Husqvarna&lt;/strong>: Most Husqvarna mowers&lt;/li>
&lt;li>&lt;strong>Gardena&lt;/strong>: Most Gardena mowers&lt;/li>
&lt;li>&lt;strong>Fuxtec / Redback&lt;/strong>: Fuxtec and Redback mowers&lt;/li>
&lt;/ul>
&lt;h3 id="custom-hardware">Custom Hardware&lt;/h3>
&lt;p>If you have a custom chassis, there is a good chance you can get it to work with the Universal board. Ask on Discord for guidance on your specific setup.&lt;/p></description></item><item><title>Docs: Step 2.1: Prepare the GPS</title><link>https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-the-gps/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-the-gps/</guid><description>
&lt;ul class="nav nav-tabs" id="tabs-0" role="tablist">
&lt;li class="nav-item">
&lt;a class="nav-link disabled"
id="tabs-00-00-tab" data-toggle="tab" href="#tabs-00-00" role="tab"
aria-controls="tabs-00-00" aria-selected="false">
&lt;strong>GPS module&lt;/strong>:
&lt;/a>
&lt;/li>&lt;li class="nav-item">
&lt;a class="nav-link active"
id="tabs-00-01-tab" data-toggle="tab" href="#tabs-00-01" role="tab"
aria-controls="tabs-00-01" aria-selected="false">
Ardusimple F9P
&lt;/a>
&lt;/li>&lt;li class="nav-item">
&lt;a class="nav-link"
id="tabs-00-02-tab" data-toggle="tab" href="#tabs-00-02" role="tab"
aria-controls="tabs-00-02" aria-selected="false">
WitMotion Unicore UM9xx
&lt;/a>
&lt;/li>
&lt;/ul>
&lt;div class="tab-content" id="tabs-0-content">
&lt;div class="tab-body tab-pane fade"
id="tabs-00-00" role="tabpanel" aria-labelled-by="tabs-00-00-tab">
&lt;/div>
&lt;div class="tab-body tab-pane fade show active"
id="tabs-00-01" role="tabpanel" aria-labelled-by="tabs-00-01-tab">
&lt;h2 id="update-firmware-and-configure-the-gps-board">Update Firmware and configure the GPS board&lt;/h2>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Info&lt;/h4>
&lt;pre>&lt;code>&amp;lt;p&amp;gt;There is a tutorial video available for this step of the process! &amp;lt;br/&amp;gt;
&lt;/code>&lt;/pre>
&lt;p>Check my YouTube video here: &lt;a href="https://youtu.be/_bImqD-pQSA?t=981" target="_blank" rel="noopener">&lt;i class="fa fa-brands fa-youtube">&lt;/i> Video&lt;/a>&lt;/p>
&lt;p>(time 16:21 - 17:15)&lt;/p>&lt;/p>
&lt;/div>
&lt;h3 id="prerequisites">Prerequisites&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>An Ardusimple F9P GPS board&lt;/strong>&lt;/li>
&lt;li>&lt;strong>A Micro USB Cable&lt;/strong>&lt;/li>
&lt;li>&lt;strong>A Windows PC&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Latest v1 version of the u-center software:&lt;/strong>&lt;br/>
🔗 &lt;a href="https://www.u-blox.com/en/product/u-center" target="_blank" rel="noopener">https://www.u-blox.com/en/product/u-center&lt;/a>
&lt;br/>
Don&amp;rsquo;t get u-center V2, you will need u-center v1 for the F9P.&lt;/li>
&lt;li>&lt;strong>The GPS configuration file&lt;/strong>&lt;br/>
🔗 &lt;a href="https://raw.githubusercontent.com/ClemensElflein/OpenMower/refs/heads/main/configs/GPSConfig/robot-fw-1_51.txt" target="_blank">robot-fw-1_51.txt&lt;/a>&lt;br/>
This will open in a new browser tab. Use &lt;kbd>Ctrl&lt;/kbd>+&lt;kbd>S&lt;/kbd> to download the file.&lt;/li>
&lt;/ul>
&lt;h3 id="step-210-update-firmware">Step 2.1.0: Update Firmware&lt;/h3>
&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Warning&lt;/h4>
&lt;pre>&lt;code>&amp;lt;p&amp;gt;The F9P now exists in multiple variants. The firmware below is for the L1 + L2 version. Make sure that on the u-blox chip, it says one of the following: &amp;lt;strong&amp;gt;ZED-F9P-02B, ZED-F9P-04B or ZED-F9P-05B!&amp;lt;/strong&amp;gt;.&amp;lt;/p&amp;gt;
&lt;/code>&lt;/pre>
&lt;p>If it&amp;rsquo;s a different board, &lt;strong>don&amp;rsquo;t&lt;/strong> use the linked firmware, get it from u-blox.com directly.&lt;/p>
&lt;/div>
&lt;p>Update the firmware of your Ardusimple board to version &lt;a href="https://content.u-blox.com/sites/default/files/2024-11/UBX_F9_100_HPG151_ZED_F9P.6c43b30ccfed539322eccedfb96ad933.bin" target="_blank" rel="noopener">&lt;code>ZED-F9P HPG 1.51&lt;/code> - &lt;em>link here&lt;/em>&lt;/a>
. There&amp;rsquo;s a guide on the &lt;a href="https://www.ardusimple.com/zed-f9p-firmware-update-with-simplertk2b/" target="_blank" rel="nofollow noopener">Ardusimple Website&lt;/a>
.&lt;/p>
&lt;h3 id="step-211-open-u-center-and-connect-to-your-gps">Step 2.1.1: Open u-center and connect to your GPS&lt;/h3>
&lt;p>After installing u-center, connect your Ardusimple board using the &amp;ldquo;Power+GPS&amp;rdquo; USB socket to your Windows computer. You should see the blue LEDs of the board come on and Windows should recognize the device as a COM port.
With the module connected to your PC, open the u-center software.&lt;/p>
&lt;p>In u-center, first connect to your board by selecting the appropriate COM port in the &lt;code>Receiver -&amp;gt; Connection&lt;/code> menu.&lt;/p>
&lt;h3 id="step-212-transfer-the-configuration-to-the-gps">Step 2.1.2: Transfer the configuration to the GPS&lt;/h3>
&lt;p>&lt;img src="transfer-gps-settings.jpg" alt="Transfer Settings to u-center">&lt;/p>
&lt;p>After successfully connecting to the board, you can transfer
the previously downloaded configuration file &lt;code>robot-fw-1_51.txt&lt;/code> by opening the window &lt;code>Tools -&amp;gt; Receiver Configuration ...&lt;/code>. In this window you open the &lt;code>robot-fw-1_51.txt&lt;/code> using the &lt;code>...&lt;/code> button and then transfer the configuration to the GPS by clicking the &lt;code>Transfer File -&amp;gt; GNSS&lt;/code> button.&lt;/p>
&lt;h3 id="step-213-save-configuration-to-flash">Step 2.1.3: Save configuration to Flash&lt;/h3>
&lt;p>&lt;img src="save-settings-to-flash.jpg" alt="Save Settings to Flash">&lt;/p>
&lt;p>In order to keep the GPS configured even after powering it down, you need to save the current configuration to Flash memory. In order to do this, select &lt;code>View -&amp;gt; Configuration View&lt;/code>. In the new window you need to select &lt;code>CFG (Configuration)&lt;/code> in the list on the left side and then enable &lt;code>Save current configuration&lt;/code>. Make sure that &lt;code>0 - BBR&lt;/code> and &lt;code>1 - FLASH&lt;/code> are both selected on the right side of the window. Once that&amp;rsquo;s done, click the &lt;code>Send&lt;/code> button in the lower toolbar of the window.&lt;/p>
&lt;p>Once successful, there will be a timer showing on the upper right side of the window. This is the timer since the last message was sent to your GPS board. It should be &lt;code>0s&lt;/code> directly after clicking &lt;code>Send&lt;/code>.&lt;/p>
&lt;h3 id="step-214-done-">Step 2.1.4: Done 🎉&lt;/h3>
&lt;p>Your GPS is now configured for use with the Open Mower software. You can disconnect it from your Windows PC.&lt;/p>
&lt;/div>
&lt;div class="tab-body tab-pane fade"
id="tabs-00-02" role="tabpanel" aria-labelled-by="tabs-00-02-tab">
&lt;div class="prep-gps-um9xx-tab">
&lt;ol>
&lt;li>
&lt;p>Connect your UM9xx to your PC using the supplied USB-C cable&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Open a serial terminal (minicom, miniterm, CuteCom, etc.) at 115200 baud&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Take attention that your line-end termination has to be CR/LF&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Send &lt;code>CONFIG&lt;/code>&lt;kbd>↵ Enter&lt;/kbd> to verify the connection. You should see readable key/value style output. If not, check cable, port, and permissions.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Reset and switch the baud rate to 921600 by entering the following commands, line by line:&lt;/p>
&lt;blockquote>
&lt;p>FRESET&lt;kbd>↵ Enter&lt;/kbd>&lt;br>
CONFIG COM1 921600&lt;kbd>↵ Enter&lt;/kbd>&lt;/p>
&lt;/blockquote>
&lt;p>(After &lt;code>FRESET&lt;/code> the module may take a few seconds to respond.)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Re-check connection with the simple &lt;code>CONFIG&lt;/code> command. If you don&amp;rsquo;t get similar results than before, change your serial terminal speed to 921600 baud (re-open if necessary) and run &lt;code>CONFIG&lt;/code> again, till your get a reasonable response&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Apply the rover configuration by entering the following commands, line by line:&lt;/p>
&lt;blockquote>
&lt;p>MODE ROVER UAV&lt;kbd>↵ Enter&lt;/kbd>&lt;br>
GPGSV COM1 2&lt;kbd>↵ Enter&lt;/kbd>&lt;br>
GPRMC COM1 1&lt;kbd>↵ Enter&lt;/kbd>&lt;br>
GPGSA COM1 1&lt;kbd>↵ Enter&lt;/kbd>&lt;br>
GPVTG COM1 1&lt;kbd>↵ Enter&lt;/kbd>&lt;br>
GPGST COM1 1&lt;kbd>↵ Enter&lt;/kbd>&lt;br>
GPGGA COM1 0.2&lt;kbd>↵ Enter&lt;/kbd>&lt;br>
SAVECONFIG&lt;kbd>↵ Enter&lt;/kbd>&lt;/p>
&lt;/blockquote>
&lt;p>Take attention to the &lt;code>SAVECONFIG&lt;/code> command, which stores settings so they survive power cycles.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Unplug the USB cable from the UM9x module and mount it to the CarrierBoard (solder required headers first if required).&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>Continue with &lt;a href="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-sd-card/">Step 2.2: Prepare the SD Card&lt;/a>
&lt;/p></description></item><item><title>Docs: Step 1: Check Compatibility</title><link>https://openmower.de/archive/v1.2.0/docs/step-by-step/1-check-compatibility/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/step-by-step/1-check-compatibility/</guid><description>
&lt;p>Before purchasing anything, verify your mower is compatible with the OpenMower project.
Use this flowchart to check compatibility:&lt;/p>
&lt;div class="mermaid">%%{init: {
"flowchart": {
"nodeSpacing": 15,
"diagramPadding": 3
},
"themeVariables": {
"fontSize": "12px"
}
}}%%
flowchart TD
%% Nodes
Start([Start])
CheckList{"Is the mower in the&lt;br/>Compatible Mowers List?"}
Compatible(["&lt;b>Compatible&lt;/b>&lt;br/>Proceed with standard install"])
CheckEncoders{"Does the mower have&lt;br/>Wheel Encoders?"}
Incompatible(["&lt;b>Incompatible&lt;/b>&lt;br/>Ask on Discord for confirmation"])
CheckBattery{"Check Battery Voltage&lt;br/>(Series count 5S - 8S)"}
CheckSpace{"Enough space for&lt;br/>Universal Mainboard?"}
UniversalMainboard(["&lt;b>Universal Mainboard&lt;/b>&lt;br/>Hardware looks good"])
AskDiscord(["&lt;b>Unknown Compatibility&lt;/b>&lt;br/>Ask on Discord"])
%% Classes
classDef decision fill:#FFF,stroke:#666,stroke-width:2px,color:#333;
%% Assign class to decision nodes
class CheckList,CheckEncoders,CheckBattery,CheckSpace decision;
%% Styles
style Start fill:#93c0f0,stroke:#333,stroke-width:2px,color:#333
style Compatible fill:#256d33,stroke:#333,stroke-width:2px,color:#fcfcfc
style UniversalMainboard fill:#256d33,stroke:#333,stroke-width:2px,color:#fcfcfc
style Incompatible fill:#a63a41,stroke:#333,stroke-width:2px,color:#fcfcfc
style AskDiscord fill:#e19e20,stroke:#333,stroke-width:2px,color:#fcfcfc
%% Logic Connections
Start --> CheckList
CheckList -- Yes --> Compatible
CheckList -- No --> CheckEncoders
CheckEncoders -- No --> Incompatible
CheckEncoders -- Yes --> CheckBattery
%% Voltage Calculation:
%% 5S (5 * 3.6V = 18V) to 8S (8 * 4.2V = 33.6V)
CheckBattery -- "Yes: 18.5V - 29.6V" --> CheckSpace
CheckBattery -- "No: &lt; 18.5V or > 29.6V" --> AskDiscord
CheckSpace -- Yes --> UniversalMainboard
CheckSpace -- No --> AskDiscord
&lt;/div>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Battery Voltage Explained&lt;/h4>
&lt;p>The voltage range &lt;strong>18.5V - 29.6V&lt;/strong> corresponds to &lt;strong>5S-8S lithium battery packs&lt;/strong> based on nominal cell voltage (3.7V per cell):&lt;/p>
&lt;ul>
&lt;li>5S: 5 × 3.7V = 18.5V nominal&lt;/li>
&lt;li>8S: 8 × 3.7V = 29.6V nominal&lt;/li>
&lt;/ul>
&lt;p>Check your mower&amp;rsquo;s battery label or manual to determine the series count.&lt;/p>
&lt;/div>
&lt;h1 id="officially-supported-mowers">Officially Supported Mowers&lt;/h1>
&lt;h2 id="yard-force">Yard Force&lt;/h2>
&lt;p>&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/compatible-mowers//images/yf-mainboard.jpg" alt="OpenMower-V2 YardForce Carrierboard">&lt;/p>
&lt;p>&lt;strong>Check out the Git Repo Here:&lt;/strong> &lt;a href="https://github.com/xtech/hw-openmower-yardforce" target="_blank" rel="noopener">https://github.com/xtech/hw-openmower-yardforce&lt;/a>
&lt;/p>
&lt;p>The project got started on a YardForce Classic 500(B), and there are photo guides in this documentation on how to disassemble and reassemble it. From a user&amp;rsquo;s perspective, the YardForce Classic 500(B) is the &amp;ldquo;best supported&amp;rdquo; mower.&lt;/p>
&lt;p>&lt;strong>However, there are more mowers from the YardForce brand that are compatible:&lt;/strong>&lt;/p>
&lt;p>In theory, every YardForce model with the Core + Outer Frame Chassis (SA, SC, LUV, N and NX Line) that has a production year of 2019+ has compatible electronics to replace the stock mainboard with an OpenMower one.&lt;/p>
&lt;div class="alert alert-warning" role="alert">
As of today the YardForce Amiro, Compact, EasyMow, MowBest, XPower and MB series models are not (yet) compatible.&lt;br>
The main reason is that the OpenMower mainboard does not fit in their chassis.
&lt;/div>
&lt;h2 id="sabo--john-deere">SABO / John Deere&lt;/h2>
&lt;p>There is a dedicated mainboard for &lt;strong>SABO MOWit 500F&lt;/strong> (Series-I &amp;amp; II) and &lt;strong>John Deere Tango E5&lt;/strong> (Series-I &amp;amp; II) mowers.&lt;/p>
&lt;p>&lt;strong>Check out the Git Repo Here:&lt;/strong> &lt;a href="https://github.com/xtech/hw-openmower-sabo" target="_blank" rel="noopener">https://github.com/xtech/hw-openmower-sabo&lt;/a>
&lt;/p>
&lt;p>This Carrierboard is compatible with the following mower models:&lt;/p>
&lt;ul>
&lt;li>SABO MOWit 500F (Series-I &amp;amp; II)&lt;/li>
&lt;li>John Deere Tango E5 (Series-I &amp;amp; II)&lt;/li>
&lt;/ul>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:center">Series-I Carrierboard (v0.2)&lt;/th>
&lt;th style="text-align:center">Series-II Carrierboard (v0.2)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:center">&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/compatible-mowers//images/om-sabo-cb-s1-v02.jpg" alt="OpenMower-V2 SABO Carrierboard Series-I v0.2">&lt;/td>
&lt;td style="text-align:center">&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/compatible-mowers//images/om-sabo-cb-s2-v02.jpg" alt="OpenMower-V2 SABO Carrierboard Series-II v0.1">&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:center">&lt;strong>Series-I (v0.1) @ John Deere Tango E5&lt;/strong>&lt;/td>
&lt;td style="text-align:center">&lt;strong>Series-II (v0.1) @ Sabo MOWiT 500F&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:center">&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/compatible-mowers//images/johndeere-s1-v01-assembled.jpg" alt="V0.1 Carrierboard Series-I assembled">&lt;/td>
&lt;td style="text-align:center">&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/compatible-mowers//images/sabo-s2-v01-assembled.jpg" alt="V0.1 Carrierboard Series-II assembled">&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>These mowers are &lt;strong>well supported&lt;/strong>. Even the display controller was replaced by a fully functional, modern user interface!&lt;/p>
&lt;div style="padding-bottom: 2.5rem">
&lt;video width="640" height="360" controls>
&lt;source src="https://www.shbe.net/openmower/sabo/Sabo_LCD_20251212.mp4" type="video/mp4">
Your browser does not support the video tag.
&lt;/video>
&lt;/div>
&lt;h2 id="universal-board">Universal Board&lt;/h2>
&lt;p>The universal board contains all features needed for an Open Mower build (e.g., three BLDC/DC motor controllers, a LiPo charger on board, connectors for GPS, emergency sensors, etc.). It has screw terminals for easy connections and can be broken into smaller modules if it doesn&amp;rsquo;t fit as a whole board.&lt;/p>
&lt;p>&lt;strong>Check out the Git Repo Here:&lt;/strong> &lt;a href="https://github.com/xtech/hw-openmower-universal" target="_blank" rel="noopener">https://github.com/xtech/hw-openmower-universal&lt;/a>
&lt;/p>
&lt;p>&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/compatible-mowers//images/BreakingTheBoard.jpg" alt="V2 Universal Board with Modules">&lt;/p>
&lt;h3 id="other-compatible-brands">Other Compatible Brands&lt;/h3>
&lt;p>The following mower brands are known to have compatible hardware with the Universal mainboard. If you want to check your specific model, ask on Discord. The probability is high that it will work:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Husqvarna&lt;/strong>: Most Husqvarna mowers&lt;/li>
&lt;li>&lt;strong>Gardena&lt;/strong>: Most Gardena mowers&lt;/li>
&lt;li>&lt;strong>Fuxtec / Redback&lt;/strong>: Fuxtec and Redback mowers&lt;/li>
&lt;/ul>
&lt;h3 id="custom-hardware">Custom Hardware&lt;/h3>
&lt;p>If you have a custom chassis, there is a good chance you can get it to work with the Universal board. Ask on Discord for guidance on your specific setup.&lt;/p></description></item><item><title>Docs: Step 3.1: Connect WiFi</title><link>https://openmower.de/archive/v1.2.0/docs/step-by-step/3-software-setup/connect-wifi/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/step-by-step/3-software-setup/connect-wifi/</guid><description>
&lt;h2 id="step-30-ensure-the-robot-has-power">Step 3.0: Ensure the Robot has Power&lt;/h2>
&lt;p>Make sure that the Robot does not drain the battery, it probably will be empty until your setup is finished.
Usually this can be done by putting it into the docking station (except for the Universal board).&lt;/p>
&lt;h2 id="step-31-search-the-hotspot">Step 3.1: Search the Hotspot&lt;/h2>
&lt;div class="container-fluid m-0 p-0">
&lt;div class="row">
&lt;div class="col">
With the mower turned on, use your mobile device and scan for WiFi networks.
OpenMowerOS will automatically create a hotspot with the name `OpenMower-&lt;Some Number>`. Connect to this hotspot.
&lt;p>If your mobile device complains that the network does not have internet connectivity, tell it to use it anyway.&lt;/p>
&lt;/div>
&lt;div class="col-3">
&lt;p>&lt;img src="images/connect_wifi_screen_1.png" alt="connect_wifi_screen_1.png">&lt;/p>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="step-32-open-a-browser-to-the-configuration-page">Step 3.2: Open a browser to the configuration page.&lt;/h2>
&lt;div class="container-fluid m-0 p-0">
&lt;div class="row">
&lt;div class="col">
Some devices will detect that the hotspot does not provide internet connectivity and will send you to a configuration page.
&lt;p>If your device does not do this, open the browser on your phone and navigate to: &lt;a href="http://10.41.0.1/" target="_blank" rel="noopener">http://10.41.0.1/&lt;/a>
.&lt;/p>
&lt;/div>
&lt;div class="col-3">
&lt;p>&lt;img src="images/connect_wifi_screen_1.png" alt="connect_wifi_screen_1.png">&lt;/p>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;h3 id="step-33-enter-your-wifi-credentials">Step 3.3: Enter your WiFi Credentials&lt;/h3>
&lt;p>Once on the configuration page, select your home Wi-Fi connection and enter your password. Then click connect.&lt;/p>
&lt;p>The OpenMower WiFi should disappear and the robot will connect to your home network.&lt;/p>
&lt;h3 id="step-34-check-connection">Step 3.4: Check Connection&lt;/h3>
&lt;p>Let&amp;rsquo;s do some sanity checks, if the mower has powered on successfully.&lt;/p>
&lt;ul>
&lt;li>Check the connection by using any other PC in your network and &lt;code>ping openmower.local&lt;/code>. This should be working. Alternatively, you can check if the device is connected by logging into your router.&lt;/li>
&lt;li>Check, if you can reach the mower via SSH (&lt;code>ssh openmower@openmower.local&lt;/code>, password &lt;code>openmower&lt;/code>).&lt;/li>
&lt;li>Check, if you can reach the mower&amp;rsquo;s terminal in a browser. Navigate to &lt;a href="http://openmower.local:7681/" target="_blank" rel="noopener">http://openmower.local:7681/&lt;/a>
&lt;/li>
&lt;/ul></description></item><item><title>Docs: Getting Started</title><link>https://openmower.de/archive/v1.2.0/docs/getting-started/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/getting-started/</guid><description>
&lt;div class="toc">
&lt;h2>Table of Contents&lt;/h2>
&lt;ul>
&lt;nav id="TableOfContents">
&lt;ul>
&lt;li>&lt;a href="#quick-facts">Quick Facts&lt;/a>&lt;/li>
&lt;li>&lt;a href="#important-warnings">Important Warnings&lt;/a>&lt;/li>
&lt;li>&lt;a href="#is-your-mower-compatible">Is Your Mower Compatible?&lt;/a>
&lt;ul>
&lt;li>&lt;a href="#officially-supported-mowers">Officially Supported Mowers&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="#what-you-need-to-know">What You Need to Know&lt;/a>
&lt;ul>
&lt;li>&lt;a href="#required-skills">Required Skills&lt;/a>&lt;/li>
&lt;li>&lt;a href="#what-parts-youll-need">What Parts You&amp;rsquo;ll Need&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="#build-overview">Build Overview&lt;/a>&lt;/li>
&lt;li>&lt;a href="#ready-to-shop">Ready to shop?&lt;/a>&lt;/li>
&lt;li>&lt;a href="#get-support">Get Support&lt;/a>
&lt;ul>
&lt;li>&lt;a href="#discord-community">Discord Community&lt;/a>&lt;/li>
&lt;li>&lt;a href="#documentation--resources">Documentation &amp;amp; Resources&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="#next-steps">Next Steps&lt;/a>&lt;/li>
&lt;/ul>
&lt;/nav>
&lt;/ul>
&lt;/div>
&lt;h2 id="quick-facts">Quick Facts&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Build time:&lt;/strong> A weekend for a YardForce-class mower; longer for custom chassis&lt;/li>
&lt;li>&lt;strong>Estimated cost:&lt;/strong> ~€700 (excluding the mower and RTK base station)&lt;/li>
&lt;li>&lt;strong>Skill level:&lt;/strong> Intermediate electronics, Linux, and mechanical skills&lt;/li>
&lt;li>&lt;strong>Community:&lt;/strong> 2k+ members on Discord ready to help with reviews and troubleshooting&lt;/li>
&lt;/ul>
&lt;p>New to the project? Start with the &lt;a href="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/overview/">Overview page&lt;/a>
.&lt;/p>
&lt;h2 id="important-warnings">Important Warnings&lt;/h2>
&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Read Before Starting&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>Ongoing Development&lt;/strong>: OpenMower is continuously evolving. Be prepared to troubleshoot and update software.&lt;/li>
&lt;li>&lt;strong>Lithium Battery Safety&lt;/strong>: You will build your own charger. Understand the risks of working with lithium batteries.&lt;/li>
&lt;li>&lt;strong>Your Responsibility&lt;/strong>: Ensure you understand each modification step before proceeding.&lt;/li>
&lt;li>&lt;strong>Read&lt;/strong> the entire documentation and &lt;strong>gain a high-level overview&lt;/strong>: Understand each step involved in the build before starting.&lt;/li>
&lt;li>&lt;strong>Evolving Documentation&lt;/strong>: This documentation is continuously improved. If you find errors or have questions, &lt;strong>ask on Discord&lt;/strong>.&lt;/li>
&lt;/ul>
&lt;/div>
&lt;h2 id="is-your-mower-compatible">Is Your Mower Compatible?&lt;/h2>
&lt;p>Before purchasing anything, verify your mower is compatible with the OpenMower project.&lt;/p>
&lt;h3 id="officially-supported-mowers">Officially Supported Mowers&lt;/h3>
&lt;p>The following mowers are fully supported with dedicated carrier boards:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>YardForce Classic 500(B)&lt;/strong> - Most common, well-documented&lt;/li>
&lt;li>&lt;strong>Other YardForce Models (SA Series)&lt;/strong>&lt;/li>
&lt;li>&lt;strong>SABO MOWit 500F&lt;/strong> (Series-I &amp;amp; II)&lt;/li>
&lt;li>&lt;strong>John Deere Tango E5&lt;/strong> (Series-I &amp;amp; II)&lt;/li>
&lt;li>Many other models using the universal carrier board&lt;/li>
&lt;li>If you want to build a mower from scratch, that&amp;rsquo;s also possible&lt;/li>
&lt;/ul>
&lt;p>See the full &lt;a href="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/compatible-mowers/">Compatible Mowers List&lt;/a>
for additional models and community builds.&lt;/p>
&lt;h2 id="what-you-need-to-know">What You Need to Know&lt;/h2>
&lt;h3 id="required-skills">Required Skills&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Linux Basics&lt;/strong>: Comfortable with terminal commands, basic file system navigation, and text editing&lt;/li>
&lt;li>&lt;strong>Raspberry Pi Experience&lt;/strong>: Ability to set up and configure a Raspberry Pi&lt;/li>
&lt;li>&lt;strong>Electronics Knowledge&lt;/strong>: Experience with PCBs, connectors, and basic electrical safety&lt;/li>
&lt;li>&lt;strong>Mechanical Skills&lt;/strong>: Ability to disassemble and reassemble your mower&lt;/li>
&lt;/ul>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>
While the OpenMower app simplifies configuration, you may need to debug issues via SSH or adjust settings manually.
&lt;/div>
&lt;h3 id="what-parts-youll-need">What Parts You&amp;rsquo;ll Need&lt;/h3>
&lt;p>The OpenMower project requires these main components:&lt;/p>
&lt;h4 id="1-the-robot">1. The Robot&lt;/h4>
&lt;p>A compatible lawn-mowing robot with its case and motors. You&amp;rsquo;ll replace the electronics with OpenMower hardware.
Some people are building a custom mower chassis from scratch.&lt;/p>
&lt;h4 id="2-openmower-hardware">2. OpenMower Hardware&lt;/h4>
&lt;div class="alert alert-success" role="alert">
&lt;h4 class="alert-heading">Hardware Version 2&lt;/h4>
&lt;p>OpenMower v2 hardware is now available and recommended for all new builds. v1 hardware is deprecated. See the &lt;a href="">v2 Announcement&lt;/a>
for details.&lt;/p>
&lt;p>&lt;strong>To purchase v2 hardware:&lt;/strong> Contact @Apehaenger on Discord.&lt;/p>
&lt;/div>
&lt;p>Custom electronics consisting of:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Core Board&lt;/strong>: Universal computing module with Raspberry Pi CM4, STM32 controller, IMU&lt;/li>
&lt;li>&lt;strong>Carrier Board&lt;/strong>: Model-specific board (YardForce, SABO/John Deere, or Universal)&lt;/li>
&lt;li>&lt;strong>3x xESC Board&lt;/strong>: Advanced motor controllers which can drive BLDC or DC motors and provide position feedback as well as closed-loop speed control&lt;/li>
&lt;/ul>
&lt;h4 id="3-rtk-gps-system">3. RTK GPS System&lt;/h4>
&lt;p>RTK GPS enables centimeter-level accuracy by sending error corrections to the robot via Wi-Fi or radio.
Therefore, you will need one or two RTK GPS receivers:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Rover (required)&lt;/strong>: GPS module mounted on the robot&lt;/li>
&lt;li>&lt;strong>Base Station (optional)&lt;/strong>: Fixed GPS module providing correction data &lt;strong>OR&lt;/strong> access to an external NTRIP service which provides the corrections via the internet. Some countries have free RTK services available.&lt;/li>
&lt;/ul>
&lt;h2 id="build-overview">Build Overview&lt;/h2>
&lt;p>&lt;img src="flow_chart.jpg" alt="Open Mower Build Overview">&lt;/p>
&lt;p>Follow these steps in sequence:&lt;/p>
&lt;h2 id="ready-to-shop">Ready to shop?&lt;/h2>
&lt;p>&lt;strong>Check the detailed &lt;a href="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/shopping-list/">Shopping List&lt;/a>
.&lt;/strong>&lt;/p>
&lt;h2 id="get-support">Get Support&lt;/h2>
&lt;h3 id="discord-community">Discord Community&lt;/h3>
&lt;p>Join our active Discord community for:&lt;/p>
&lt;ul>
&lt;li>Build guidance and troubleshooting&lt;/li>
&lt;li>Hardware availability updates&lt;/li>
&lt;li>Software tips and tricks&lt;/li>
&lt;li>Feature discussions&lt;/li>
&lt;/ul>
&lt;p>🔗 &lt;a href="https://discord.gg/jE7QNaSxW7" target="_blank" rel="noopener">Join OpenMower Discord&lt;/a>
&lt;/p>
&lt;h3 id="documentation--resources">Documentation &amp;amp; Resources&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>This Documentation&lt;/strong>: Reviewed, official information&lt;/li>
&lt;li>&lt;strong>YouTube Channel&lt;/strong>: Video tutorials and project updates&lt;/li>
&lt;/ul>
&lt;p>See the &lt;a href="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/links/">Links&lt;/a>
page for all resources.&lt;/p>
&lt;h2 id="next-steps">Next Steps&lt;/h2>
&lt;p>If you are ready to start building:&lt;/p>
&lt;p>➡️ &lt;a href="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/shopping-list/">Review the Shopping List&lt;/a>
&lt;/p>
&lt;p>➡️ &lt;a href="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/step-by-step/">Check the Step by Step Guide&lt;/a>
&lt;/p></description></item><item><title>Docs: YardForce Classic 500(B)</title><link>https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/</guid><description>
&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">v2 Hardware Only!&lt;/h4>
&lt;p>This guide here is for OpenMower v2.x Hardware!
If you have v1 Hardware, follow the legacy docs &lt;a href="https://openmower.de/archive/v1.0.2/docs/" target="_blank" rel="noopener">here&lt;/a>
, because for v1 hardware you will also need to modify the docking station!&lt;/p>
&lt;p>You have &lt;strong>v1 hardware&lt;/strong>, if:&lt;/p>
&lt;ul>
&lt;li>You are using a full-size Raspberry Pi&lt;/li>
&lt;li>Your mainboard shows version &lt;strong>v0.xx&lt;/strong>&lt;/li>
&lt;/ul>
&lt;/div>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;h3 id="things-you-will-need">Things you will need:&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>YardForce Classic 500(B)&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Open Mower Mainboard&lt;/strong> with all modules installed (xCore, CM4, GPS, 3x ESCs)&lt;/li>
&lt;li>&lt;strong>Cover UI Board&lt;/strong> (optional)&lt;/li>
&lt;li>&lt;strong>GPS Holder (3d printed part)&lt;/strong>, &lt;strong>GPS Antenna&lt;/strong>, 2x M2,5x20 screws, 2x M4x16 screws for the GPS holder&lt;/li>
&lt;/ul>
&lt;h3 id="tools-you-will-need">Tools you will need:&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>XH connector set and some wires&lt;/strong> to crimp connectors for the emergency stops and the Cover UI board&lt;/li>
&lt;li>&lt;strong>Some basic screwdrivers&lt;/strong> for disassembly and assembly.&lt;/li>
&lt;/ul>
&lt;h2 id="step-241-disassemble-the-robot">Step 2.4.1: Disassemble the Robot&lt;/h2>
&lt;p>The first step is to disassemble up the robot.
This is a bit tricky in some parts, so I recommend you checking my YouTube video here: &lt;a href="https://youtu.be/_bImqD-pQSA?t=148" target="_blank" rel="noopener">&lt;i class="fa fa-brands fa-youtube">&lt;/i> YouTube Video&lt;/a>
. The relevant time is: 2:25 - 5:08.
&lt;strong>Do not&lt;/strong> follow the video further than that, because it is outdated.&lt;/p>
&lt;p>Alternatively, here is a picture guide of the disassembly process:&lt;/p>
&lt;h3 id="unscrew-top-cover">Unscrew top cover&lt;/h3>
&lt;style>
.image-gallery {overflow: auto; margin-left: -1%!important;}
.image-gallery li {float: left; display: block; margin: 0 0 1% 1%; width: 24%;}
.image-gallery li a {text-align: center; text-decoration: none!important; color: #777;}
.image-gallery li a span {display: block; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; padding: 3px 0;}
.image-gallery li a img {width: 100%; display: block;}
&lt;/style>&lt;ul class="image-gallery">&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/unscrew-the-cover/1%20Get%20the%20robot_hu4510349c65d5f1b1081363edb107e31d_1585902_1600x1600_fit_q99_catmullrom.jpg" title="1 Get the robot" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/unscrew-the-cover/1%20Get%20the%20robot_hu4510349c65d5f1b1081363edb107e31d_1585902_400x400_fill_q95_catmullrom_smart1.jpg"
alt="1 Get the robot"
title="1 Get the robot">
&lt;span title="1 Get the robot">1 Get the robot&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/unscrew-the-cover/2%20Unscrew%207%20main%20screws_hu2b584f1b6f883938e32c10178d8c0f9a_1783769_1600x1600_fit_q99_catmullrom.jpg" title="2 Unscrew 7 main screws" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/unscrew-the-cover/2%20Unscrew%207%20main%20screws_hu2b584f1b6f883938e32c10178d8c0f9a_1783769_400x400_fill_q95_catmullrom_smart1.jpg"
alt="2 Unscrew 7 main screws"
title="2 Unscrew 7 main screws">
&lt;span title="2 Unscrew 7 main screws">2 Unscrew 7 main screws&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/unscrew-the-cover/3%20Unscrew%203%20more_hu00443b47d164e086a71a3f8a7ce79b14_1228150_1600x1600_fit_q99_catmullrom.jpg" title="3 Unscrew 3 more" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/unscrew-the-cover/3%20Unscrew%203%20more_hu00443b47d164e086a71a3f8a7ce79b14_1228150_400x400_fill_q95_catmullrom_smart1.jpg"
alt="3 Unscrew 3 more"
title="3 Unscrew 3 more">
&lt;span title="3 Unscrew 3 more">3 Unscrew 3 more&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/unscrew-the-cover/4%20Save%20the%20screws_hucf7ddfef5d0ec1d511b55a6238cecbdb_1714295_1600x1600_fit_q99_catmullrom.jpg" title="4 Save the screws" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/unscrew-the-cover/4%20Save%20the%20screws_hucf7ddfef5d0ec1d511b55a6238cecbdb_1714295_400x400_fill_q95_catmullrom_smart1.jpg"
alt="4 Save the screws"
title="4 Save the screws">
&lt;span title="4 Save the screws">4 Save the screws&lt;/span>
&lt;/a>
&lt;/li>
&lt;/ul>
&lt;h3 id="pry-the-cover">Pry the cover&lt;/h3>
&lt;p>This is a bit tricky in some parts, so I recommend you checking YouTube video
here: &lt;a href="https://youtu.be/_bImqD-pQSA?t=148" target="_blank" rel="noopener">&lt;i class="fa fa-brands fa-youtube">&lt;/i> YouTube Video&lt;/a>
. The relevant time is:
2:25 - 5:08.&lt;/p>
&lt;style>
.image-gallery {overflow: auto; margin-left: -1%!important;}
.image-gallery li {float: left; display: block; margin: 0 0 1% 1%; width: 24%;}
.image-gallery li a {text-align: center; text-decoration: none!important; color: #777;}
.image-gallery li a span {display: block; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; padding: 3px 0;}
.image-gallery li a img {width: 100%; display: block;}
&lt;/style>&lt;ul class="image-gallery">&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/pry-the-cover/1%20Set%20cutting%20height%20to%20minimum%20%2820mm%29_hucfd372325bfe43408bf5c01b78535ccb_1560114_1600x1600_fit_q99_catmullrom.jpg" title="1 Set cutting height to minimum (20mm)" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/pry-the-cover/1%20Set%20cutting%20height%20to%20minimum%20%2820mm%29_hucfd372325bfe43408bf5c01b78535ccb_1560114_400x400_fill_q95_catmullrom_smart1.jpg"
alt="1 Set cutting height to minimum (20mm)"
title="1 Set cutting height to minimum (20mm)">
&lt;span title="1 Set cutting height to minimum (20mm)">1 Set cutting height to minimum (20mm)&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/pry-the-cover/2%20Unscrew%20small%20screws%20next%20to%20the%20latch_hucfd372325bfe43408bf5c01b78535ccb_1322391_1600x1600_fit_q99_catmullrom.jpg" title="2 Unscrew small screws next to the latch" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/pry-the-cover/2%20Unscrew%20small%20screws%20next%20to%20the%20latch_hucfd372325bfe43408bf5c01b78535ccb_1322391_400x400_fill_q95_catmullrom_smart1.jpg"
alt="2 Unscrew small screws next to the latch"
title="2 Unscrew small screws next to the latch">
&lt;span title="2 Unscrew small screws next to the latch">2 Unscrew small screws next to the latch&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/pry-the-cover/_hu817002810ec78e91a59b1be4d2780f6f_1323762_9a0d3ad5cac1d81fb6584b8a931bd5a1.jpg" title="3 Maybe it&amp;#39;s optional, you see that I&amp;#39;ve managed to unlatch it with screw in place" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/pry-the-cover/_hu817002810ec78e91a59b1be4d2780f6f_1323762_506586811df47044cbf026e542dc6024.jpg"
alt="3 Maybe it&amp;#39;s optional, you see that I&amp;#39;ve managed to unlatch it with screw in place"
title="3 Maybe it&amp;#39;s optional, you see that I&amp;#39;ve managed to unlatch it with screw in place">
&lt;span title="3 Maybe it&amp;#39;s optional, you see that I&amp;#39;ve managed to unlatch it with screw in place">3 Maybe it&amp;#39;s optional, you see that I&amp;#39;ve managed to unlatch it with screw in place&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/pry-the-cover/4%20Save%20the%20screws_hu4510349c65d5f1b1081363edb107e31d_1440866_1600x1600_fit_q99_catmullrom.jpg" title="4 Save the screws" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/pry-the-cover/4%20Save%20the%20screws_hu4510349c65d5f1b1081363edb107e31d_1440866_400x400_fill_q95_catmullrom_smart1.jpg"
alt="4 Save the screws"
title="4 Save the screws">
&lt;span title="4 Save the screws">4 Save the screws&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/pry-the-cover/5%20Press%20the%20black%20part%20to%20unlock%20side%20latch_hu817002810ec78e91a59b1be4d2780f6f_1676552_1600x1600_fit_q99_catmullrom.jpg" title="5 Press the black part to unlock side latch" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/pry-the-cover/5%20Press%20the%20black%20part%20to%20unlock%20side%20latch_hu817002810ec78e91a59b1be4d2780f6f_1676552_400x400_fill_q95_catmullrom_smart1.jpg"
alt="5 Press the black part to unlock side latch"
title="5 Press the black part to unlock side latch">
&lt;span title="5 Press the black part to unlock side latch">5 Press the black part to unlock side latch&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/pry-the-cover/_huf88699778faf3199b25afc7b6fcf1ad1_1373907_3c39fdc4bf56cde655afefdd831951f1.jpg" title="6 Push the bottom latch with a finger (not visible here) while lifting the cover" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/pry-the-cover/_huf88699778faf3199b25afc7b6fcf1ad1_1373907_b4a1e21df16d3694130a0acf6025029b.jpg"
alt="6 Push the bottom latch with a finger (not visible here) while lifting the cover"
title="6 Push the bottom latch with a finger (not visible here) while lifting the cover">
&lt;span title="6 Push the bottom latch with a finger (not visible here) while lifting the cover">6 Push the bottom latch with a finger (not visible here) while lifting the cover&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/pry-the-cover/7%20Bottom%20latch%20came%20out_huf7fc6d94d011a847b9fad1a477a41032_1325402_1600x1600_fit_q99_catmullrom.jpg" title="7 Bottom latch came out" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/pry-the-cover/7%20Bottom%20latch%20came%20out_huf7fc6d94d011a847b9fad1a477a41032_1325402_400x400_fill_q95_catmullrom_smart1.jpg"
alt="7 Bottom latch came out"
title="7 Bottom latch came out">
&lt;span title="7 Bottom latch came out">7 Bottom latch came out&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/pry-the-cover/_hu87a0c4e07f11ca9904c61939cfceebdc_1312908_ab4566f8bf205a11df632ee5ea598c63.jpg" title="8 Opposite bottom latch came out, cover can be carefully lifted" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/pry-the-cover/_hu87a0c4e07f11ca9904c61939cfceebdc_1312908_045b04da85302cb73501bcbda3e94dd5.jpg"
alt="8 Opposite bottom latch came out, cover can be carefully lifted"
title="8 Opposite bottom latch came out, cover can be carefully lifted">
&lt;span title="8 Opposite bottom latch came out, cover can be carefully lifted">8 Opposite bottom latch came out, cover can be carefully lifted&lt;/span>
&lt;/a>
&lt;/li>
&lt;/ul>
&lt;h3 id="unplug-the-cover">Unplug the cover&lt;/h3>
&lt;p>2 small wires on the front going to wheel sensors, and 1 wide wire from mainboard to cover UI board.
Screwdriver is in the pictures for illustrative purposes, you can simply hold it with your hand.&lt;/p>
&lt;style>
.image-gallery {overflow: auto; margin-left: -1%!important;}
.image-gallery li {float: left; display: block; margin: 0 0 1% 1%; width: 24%;}
.image-gallery li a {text-align: center; text-decoration: none!important; color: #777;}
.image-gallery li a span {display: block; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; padding: 3px 0;}
.image-gallery li a img {width: 100%; display: block;}
&lt;/style>&lt;ul class="image-gallery">&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/unplug-the-cover/1%20Back%20view,%20unplug%20wide%20cable%20from%20mainboard_hucf7ddfef5d0ec1d511b55a6238cecbdb_1496930_1600x1600_fit_q99_catmullrom.jpg" title="1 Back view, unplug wide cable from mainboard" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/unplug-the-cover/1%20Back%20view,%20unplug%20wide%20cable%20from%20mainboard_hucf7ddfef5d0ec1d511b55a6238cecbdb_1496930_400x400_fill_q95_catmullrom_smart1.jpg"
alt="1 Back view, unplug wide cable from mainboard"
title="1 Back view, unplug wide cable from mainboard">
&lt;span title="1 Back view, unplug wide cable from mainboard">1 Back view, unplug wide cable from mainboard&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/unplug-the-cover/2%20Front%20top%20view_hu00443b47d164e086a71a3f8a7ce79b14_1107491_1600x1600_fit_q99_catmullrom.jpg" title="2 Front top view" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/unplug-the-cover/2%20Front%20top%20view_hu00443b47d164e086a71a3f8a7ce79b14_1107491_400x400_fill_q95_catmullrom_smart1.jpg"
alt="2 Front top view"
title="2 Front top view">
&lt;span title="2 Front top view">2 Front top view&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/unplug-the-cover/3%20Front%20bottom%20view,%20unplug%20wheel%20sensor%20cables_hucf7ddfef5d0ec1d511b55a6238cecbdb_1055691_1600x1600_fit_q99_catmullrom.jpg" title="3 Front bottom view, unplug wheel sensor cables" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/unplug-the-cover/3%20Front%20bottom%20view,%20unplug%20wheel%20sensor%20cables_hucf7ddfef5d0ec1d511b55a6238cecbdb_1055691_400x400_fill_q95_catmullrom_smart1.jpg"
alt="3 Front bottom view, unplug wheel sensor cables"
title="3 Front bottom view, unplug wheel sensor cables">
&lt;span title="3 Front bottom view, unplug wheel sensor cables">3 Front bottom view, unplug wheel sensor cables&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/unplug-the-cover/_hucf7ddfef5d0ec1d511b55a6238cecbdb_1135475_95ebf757a5c41d9052e1a9ad6b8014d8.jpg" title="4 Wheel sensor cables unplugged and removed from wire organizers" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/unplug-the-cover/_hucf7ddfef5d0ec1d511b55a6238cecbdb_1135475_1dbb31300adc5d78be5228b518a4e640.jpg"
alt="4 Wheel sensor cables unplugged and removed from wire organizers"
title="4 Wheel sensor cables unplugged and removed from wire organizers">
&lt;span title="4 Wheel sensor cables unplugged and removed from wire organizers">4 Wheel sensor cables unplugged and removed from wire organizers&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/unplug-the-cover/5%20Cover%20removed_hu00443b47d164e086a71a3f8a7ce79b14_1464597_1600x1600_fit_q99_catmullrom.jpg" title="5 Cover removed" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/unplug-the-cover/5%20Cover%20removed_hu00443b47d164e086a71a3f8a7ce79b14_1464597_400x400_fill_q95_catmullrom_smart1.jpg"
alt="5 Cover removed"
title="5 Cover removed">
&lt;span title="5 Cover removed">5 Cover removed&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/unplug-the-cover/6%20Mower%20with%20cover%20removed_hucf7ddfef5d0ec1d511b55a6238cecbdb_1783019_1600x1600_fit_q99_catmullrom.jpg" title="6 Mower with cover removed" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/unplug-the-cover/6%20Mower%20with%20cover%20removed_hucf7ddfef5d0ec1d511b55a6238cecbdb_1783019_400x400_fill_q95_catmullrom_smart1.jpg"
alt="6 Mower with cover removed"
title="6 Mower with cover removed">
&lt;span title="6 Mower with cover removed">6 Mower with cover removed&lt;/span>
&lt;/a>
&lt;/li>
&lt;/ul>
&lt;h3 id="unplug-the-mainboard">Unplug the mainboard&lt;/h3>
&lt;style>
.image-gallery {overflow: auto; margin-left: -1%!important;}
.image-gallery li {float: left; display: block; margin: 0 0 1% 1%; width: 24%;}
.image-gallery li a {text-align: center; text-decoration: none!important; color: #777;}
.image-gallery li a span {display: block; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; padding: 3px 0;}
.image-gallery li a img {width: 100%; display: block;}
&lt;/style>&lt;ul class="image-gallery">&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/unplug-the-mainboard/1%20Remove%20all%20cables%20from%20mainboard_hu4510349c65d5f1b1081363edb107e31d_2090812_1600x1600_fit_q99_catmullrom.jpg" title="1 Remove all cables from mainboard" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/unplug-the-mainboard/1%20Remove%20all%20cables%20from%20mainboard_hu4510349c65d5f1b1081363edb107e31d_2090812_400x400_fill_q95_catmullrom_smart1.jpg"
alt="1 Remove all cables from mainboard"
title="1 Remove all cables from mainboard">
&lt;span title="1 Remove all cables from mainboard">1 Remove all cables from mainboard&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/unplug-the-mainboard/2%20Cables%20removed_hu00443b47d164e086a71a3f8a7ce79b14_1624759_1600x1600_fit_q99_catmullrom.jpg" title="2 Cables removed" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/unplug-the-mainboard/2%20Cables%20removed_hu00443b47d164e086a71a3f8a7ce79b14_1624759_400x400_fill_q95_catmullrom_smart1.jpg"
alt="2 Cables removed"
title="2 Cables removed">
&lt;span title="2 Cables removed">2 Cables removed&lt;/span>
&lt;/a>
&lt;/li>
&lt;/ul>
&lt;h3 id="remove-front-pcb">Remove front PCB&lt;/h3>
&lt;style>
.image-gallery {overflow: auto; margin-left: -1%!important;}
.image-gallery li {float: left; display: block; margin: 0 0 1% 1%; width: 24%;}
.image-gallery li a {text-align: center; text-decoration: none!important; color: #777;}
.image-gallery li a span {display: block; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; padding: 3px 0;}
.image-gallery li a img {width: 100%; display: block;}
&lt;/style>&lt;ul class="image-gallery">&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/remove-front-pcb/1%20Unscrew%203%20screws_hucfd372325bfe43408bf5c01b78535ccb_1550191_1600x1600_fit_q99_catmullrom.jpg" title="1 Unscrew 3 screws" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/remove-front-pcb/1%20Unscrew%203%20screws_hucfd372325bfe43408bf5c01b78535ccb_1550191_400x400_fill_q95_catmullrom_smart1.jpg"
alt="1 Unscrew 3 screws"
title="1 Unscrew 3 screws">
&lt;span title="1 Unscrew 3 screws">1 Unscrew 3 screws&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/remove-front-pcb/_hu817002810ec78e91a59b1be4d2780f6f_2193382_6314ff8ff0e82a76648e9a551432834c.jpg" title="2 Throw the board away, save the screws for mounting GPS" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/remove-front-pcb/_hu817002810ec78e91a59b1be4d2780f6f_2193382_6a1439537b070ed72f7e5c217298a364.jpg"
alt="2 Throw the board away, save the screws for mounting GPS"
title="2 Throw the board away, save the screws for mounting GPS">
&lt;span title="2 Throw the board away, save the screws for mounting GPS">2 Throw the board away, save the screws for mounting GPS&lt;/span>
&lt;/a>
&lt;/li>
&lt;/ul>
&lt;h3 id="remove-cover-ui-board">Remove cover UI board&lt;/h3>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Info&lt;/h4>
&lt;p>This section assumes that you are completely replacing the stock UI board with a custom one. There is an option to reuse stock board by flashing it with custom firmware.
If you are going to go this path - leave it in place. You can find more information &lt;a href="https://github.com/ClemensElflein/CoverUI/blob/main/Firmware/CoverUI/YardForce/README.md" target="_blank">in the Cover UI Repo *&lt;/a>.&lt;/p>
&lt;p>* Would be nice if someone could transfer this to the Knowledge Base on this website though.&lt;/p>
&lt;/div>
&lt;style>
.image-gallery {overflow: auto; margin-left: -1%!important;}
.image-gallery li {float: left; display: block; margin: 0 0 1% 1%; width: 24%;}
.image-gallery li a {text-align: center; text-decoration: none!important; color: #777;}
.image-gallery li a span {display: block; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; padding: 3px 0;}
.image-gallery li a img {width: 100%; display: block;}
&lt;/style>&lt;ul class="image-gallery">&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/remove-cover-ui-board/1%20Unplug%20stop%20button%20sensor%20wires_hu817002810ec78e91a59b1be4d2780f6f_1894478_1600x1600_fit_q99_catmullrom.jpg" title="1 Unplug stop button sensor wires" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/remove-cover-ui-board/1%20Unplug%20stop%20button%20sensor%20wires_hu817002810ec78e91a59b1be4d2780f6f_1894478_400x400_fill_q95_catmullrom_smart1.jpg"
alt="1 Unplug stop button sensor wires"
title="1 Unplug stop button sensor wires">
&lt;span title="1 Unplug stop button sensor wires">1 Unplug stop button sensor wires&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/remove-cover-ui-board/_huf7fc6d94d011a847b9fad1a477a41032_1576379_652cfdd96c7547419e54392b547bfa21.jpg" title="2 Unplug mainboard cable, emergency sensor cable and rain sensor" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/remove-cover-ui-board/_huf7fc6d94d011a847b9fad1a477a41032_1576379_e9475707254dfad4a36174b9f38962c1.jpg"
alt="2 Unplug mainboard cable, emergency sensor cable and rain sensor"
title="2 Unplug mainboard cable, emergency sensor cable and rain sensor">
&lt;span title="2 Unplug mainboard cable, emergency sensor cable and rain sensor">2 Unplug mainboard cable, emergency sensor cable and rain sensor&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/remove-cover-ui-board/3%20Unscrew%20the%20board,%20save%20the%20screws_hu817002810ec78e91a59b1be4d2780f6f_1729451_1600x1600_fit_q99_catmullrom.jpg" title="3 Unscrew the board, save the screws" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/remove-cover-ui-board/3%20Unscrew%20the%20board,%20save%20the%20screws_hu817002810ec78e91a59b1be4d2780f6f_1729451_400x400_fill_q95_catmullrom_smart1.jpg"
alt="3 Unscrew the board, save the screws"
title="3 Unscrew the board, save the screws">
&lt;span title="3 Unscrew the board, save the screws">3 Unscrew the board, save the screws&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/remove-cover-ui-board/4%20Remove%20rubber%20protector%20from%20the%20board_hu00443b47d164e086a71a3f8a7ce79b14_1251968_1600x1600_fit_q99_catmullrom.jpg" title="4 Remove rubber protector from the board" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/remove-cover-ui-board/4%20Remove%20rubber%20protector%20from%20the%20board_hu00443b47d164e086a71a3f8a7ce79b14_1251968_400x400_fill_q95_catmullrom_smart1.jpg"
alt="4 Remove rubber protector from the board"
title="4 Remove rubber protector from the board">
&lt;span title="4 Remove rubber protector from the board">4 Remove rubber protector from the board&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/remove-cover-ui-board/5%20Save%20the%20protector,%20throw%20everything%20else%20away_hu00443b47d164e086a71a3f8a7ce79b14_1683596_1600x1600_fit_q99_catmullrom.jpg" title="5 Save the protector, throw everything else away" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500/images/disassemble-mower/remove-cover-ui-board/5%20Save%20the%20protector,%20throw%20everything%20else%20away_hu00443b47d164e086a71a3f8a7ce79b14_1683596_400x400_fill_q95_catmullrom_smart1.jpg"
alt="5 Save the protector, throw everything else away"
title="5 Save the protector, throw everything else away">
&lt;span title="5 Save the protector, throw everything else away">5 Save the protector, throw everything else away&lt;/span>
&lt;/a>
&lt;/li>
&lt;/ul>
&lt;h2 id="step-242-remove-stock-electronics">Step 2.4.2: Remove Stock Electronics&lt;/h2>
&lt;p>You will need to remove these stock electronics:&lt;/p>
&lt;ul>
&lt;li>Mainboard&lt;/li>
&lt;li>Perimeter Sensor (slim PCB in the front of the robot).&lt;/li>
&lt;li>All cables in the orange cover (emergency stop).&lt;/li>
&lt;/ul>
&lt;p>Keep the battery in place.&lt;/p>
&lt;h2 id="step-243-small-preparations">Step 2.4.3: Small Preparations&lt;/h2>
&lt;h3 id="31-cutting-plastic-tabs-in-the-lid">3.1 Cutting Plastic Tabs in the Lid&lt;/h3>
&lt;p>On some YardForce Classic 500 models, in the lid there are plastic tabs which are in the way when installing the OpenMower mainboard.
We need to clip these tabs off. I have used a large side cutter, but you can also use a Dremel or whatever you have handy.
&lt;img src="images/CuttingTheTabs.jpg" alt="CuttingTheTabs.jpg">&lt;/p>
&lt;p>If your cover does not have tabs, you don&amp;rsquo;t need to do anything here.&lt;/p>
&lt;h3 id="32-assemble-gps-antenna-holder">3.2 Assemble GPS Antenna Holder&lt;/h3>
&lt;p>&lt;img src="images/GPSHolder.jpg" alt="GPSHolder.jpg">
Take the GPS antenna holder and assemble it as shown in the picture.&lt;/p>
&lt;h3 id="33-add-new-connectors-to-the-emergency-stop-cables">3.3 Add new connectors to the Emergency Stop Cables&lt;/h3>
&lt;p>The Open Mower mainboard uses one JST XH connectors for each of the emergency stop sensors, whereas the original YardForce Classic 500 uses one large connector with all emergency stop buttons connected to it.
In the following picture you can see the original connector cable.
&lt;img src="images/EmergencyCables1.jpg" alt="EmergencyCables1.jpg">&lt;/p>
&lt;p>We will now create &lt;strong>four&lt;/strong> cables, one for each emergency stop sensor. To do this:&lt;/p>
&lt;ul>
&lt;li>First, Cut the cable &lt;strong>very close to the large connector&lt;/strong> as shown in the picture. You will need the whole length of the emergency stop cables.&lt;/li>
&lt;li>Then, crimp XH connectors to the other end of the cable as shown in the picture below. &lt;strong>Make sure to check the pinout! There is a twist in the connector!&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Repeat this step for all four emergency stop sensors&lt;/strong>, so that each one has an XH connector at the end. The pinout is the same for all of them.
&lt;img src="images/EmergencyCables2.jpg" alt="EmergencyCables2.jpg">&lt;/li>
&lt;/ul>
&lt;p>In the end you will have four cables with &lt;strong>different lengths, but the same pinout&lt;/strong>.&lt;/p>
&lt;h3 id="34-create-a-cable-for-the-coverui">3.4 Create a cable for the CoverUI&lt;/h3>
&lt;p>If you are going to use a custom CoverUI board, you will need to create a cable to connect it to the mainboard.&lt;/p>
&lt;ul>
&lt;li>Take four wires with around 20 cm length.&lt;/li>
&lt;li>Crimp XH connectors on both sides of the cables as shown in the picture. The connections are &amp;ldquo;straight through&amp;rdquo;, so pin 1 connectos to pin 1 on the other side and so on.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="images/CoverUICable.jpg" alt="CoverUICable.jpg">&lt;/p>
&lt;h2 id="step-244-install-openmower-electronics">Step 2.4.4: Install OpenMower Electronics&lt;/h2>
&lt;p>Now you can install the OpenMower mainboard and the GPS antenna holder we prepared earlier.&lt;/p>
&lt;ul>
&lt;li>Put the mainboard into the mower just as the original board was installed &lt;br/>(in the rear it sits between plastic tabs, on the front there are two screws holding it in place).&lt;/li>
&lt;li>To fit the GPS holder into the mower, you need need to remove two of the white plastic cable ties by just pulling them upwards. Then plug it into the corresponding holes and fix it with one screw you saved earlier.&lt;/li>
&lt;li>Connect all cables as shown in the picture and the list below.&lt;/li>
&lt;/ul>
&lt;p>When finished, it should look like this:
&lt;img src="images/Connections.jpg" alt="Connections.jpg">&lt;/p>
&lt;p>&lt;strong>The connections are as follows:&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>Mower Motor Sensor&lt;/li>
&lt;li>Main Motor Connector (Drive motors, mower motors, sensors)&lt;/li>
&lt;li>Power Connector&lt;/li>
&lt;li>Charging Contacts&lt;/li>
&lt;li>Emergency Stop Button in the Lid (left / right side doesn&amp;rsquo;t matter)&lt;/li>
&lt;li>Emergency Stop Button in the Lid (left / right side doesn&amp;rsquo;t matter)&lt;/li>
&lt;li>USB Connector on the Rear of the Robot&lt;/li>
&lt;li>Cover UI Board in the Lid (optional)&lt;/li>
&lt;li>GPS Antenna&lt;/li>
&lt;li>Lift Sensor (left / right side doesn&amp;rsquo;t matter)&lt;/li>
&lt;li>Lift Sensor (left / right side doesn&amp;rsquo;t matter)&lt;/li>
&lt;/ol>
&lt;h2 id="step-245-install-external-wifi-antenna-optional">Step 2.4.5: Install external WiFi Antenna (optional)&lt;/h2>
&lt;p>If you want to use an external WiFi antenna for better reception, installation is simple.&lt;/p>
&lt;p>&lt;img src="images/ExternalAntenna.jpg" alt="ExternalAntenna.jpg">&lt;/p>
&lt;h2 id="prerequisites-1">Prerequisites&lt;/h2>
&lt;h3 id="things-you-will-need-1">Things you will need:&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>WiFi Antenna Mount:&lt;/strong> 3D printed part available on &lt;a href="https://www.printables.com/model/1504184-openmower-yardforce-classic-500-wifi-antenna-mount" target="_blank" rel="noopener">Printables&lt;/a>
&lt;/li>
&lt;li>&lt;strong>Two Screws&lt;/strong> you can use the screws from the front sensor we removed earlier&lt;/li>
&lt;li>&lt;strong>WiFi Antenna with Cable&lt;/strong> You can get it from &lt;a href="https://amzn.to/48iknlw" target="_blank" rel="nofollow noopener">Amazon&lt;/a>
&lt;/li>
&lt;/ul>
&lt;h3 id="steps">Steps:&lt;/h3>
&lt;ol>
&lt;li>Mount the antenna to the holder&lt;/li>
&lt;li>Mount the holder to the mower using the two screws&lt;/li>
&lt;li>Connect the antenna to the CM4 board&lt;/li>
&lt;li>Zip tie the cable to the corner of the PCB&lt;/li>
&lt;/ol>
&lt;h2 id="step-246-first-startup">Step 2.4.6: First Startup&lt;/h2>
&lt;p>It&amp;rsquo;s time to power the robot up by hitting the switch at the back of the robot.&lt;/p>
&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Warning&lt;/h4>
&lt;p>If you see / smell anything unexpected, turn the switch off &lt;strong>immediately!&lt;/strong>&lt;/p>
&lt;p>This includes but is not limited to:&lt;/p>
&lt;ul>
&lt;li>Smoke / Fire&lt;/li>
&lt;li>Smell of hot electronics&lt;/li>
&lt;li>Blown Fuses&lt;/li>
&lt;/ul>
&lt;/div>
&lt;p>Some battery packs don&amp;rsquo;t like the inrush current and will turn off immediately. If this happens, you can try to turn the switch off and on again and it should work.&lt;/p>
&lt;p>Once turned on, LEDs should start blinking on the ESCs, the GPS, the xCore board and the mainboard.
&lt;strong>Keep the robot turned on for at least five minutes to maker sure the CM4 boots up properly. It does setup during the first boot.&lt;/strong>&lt;/p>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Info&lt;/h4>
&lt;p>It&amp;rsquo;s a good idea to place the mower into the docking station, so that the battery doesn&amp;rsquo;t drain.&lt;/p>
&lt;p>In this state, the battery does not charge, because the core board does not have the correct firmware installed, but the docking voltage will still be used to power the electronics, so the battery will not drain.&lt;/p>
&lt;/div>
&lt;p>If everything seems healthy, proceed to the &lt;a href="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/step-by-step/3-software-setup/">Software Setup&lt;/a>
.&lt;/p>
&lt;p>Otherwise, &lt;strong>stop here and ask for help on the Discord server&lt;/strong>.&lt;/p></description></item><item><title>Docs: Step 3.2: Basic Configuration (Environment, Firmware Installation, xESC configuration)</title><link>https://openmower.de/archive/v1.2.0/docs/step-by-step/3-software-setup/basic-configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/step-by-step/3-software-setup/basic-configuration/</guid><description>
&lt;div class="toc">
&lt;h2>Table of Contents&lt;/h2>
&lt;ul>
&lt;nav id="TableOfContents">
&lt;ul>
&lt;li>&lt;a href="#overview">Overview:&lt;/a>
&lt;ul>
&lt;li>&lt;a href="#types-of-settings">Types of settings&lt;/a>&lt;/li>
&lt;li>&lt;a href="#the-openmower-command-line-tool">The &lt;code>openmower&lt;/code> command line tool&lt;/a>&lt;/li>
&lt;li>&lt;a href="#accessing-the-terminal">Accessing the terminal&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="#step-320-basic-checks">Step 3.2.0: Basic Checks&lt;/a>
&lt;ul>
&lt;li>&lt;a href="#check-if-filesystem-expanded-correctly">Check, if filesystem expanded correctly&lt;/a>&lt;/li>
&lt;li>&lt;a href="#update-the-openmower-tool-to-the-latest-version">Update the &lt;code>openmower&lt;/code> tool to the latest version&lt;/a>&lt;/li>
&lt;li>&lt;a href="#rename-your-host-optional">Rename your host (optional)&lt;/a>&lt;/li>
&lt;li>&lt;a href="#enable-external-wifi-antenna-optional">Enable External WiFi Antenna (optional)&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="#step-321-setup-environment-variables">Step 3.2.1: Setup Environment Variables&lt;/a>&lt;/li>
&lt;li>&lt;a href="#step-331-install-firmware">Step 3.3.1: Install Firmware&lt;/a>&lt;/li>
&lt;li>&lt;a href="#step-332-configure-xesc-motor-controllers">Step 3.3.2: Configure xESC Motor Controllers&lt;/a>&lt;/li>
&lt;li>&lt;a href="#continue-with-step-34-configure-ros-parametershahahugoshortcodes6hbhb">Continue with Step 3.4: &lt;a href="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/step-by-step/3-software-setup/setup-ros/">Configure ROS Parameters&lt;/a>&lt;/a>&lt;/li>
&lt;/ul>
&lt;/nav>
&lt;/ul>
&lt;/div>
&lt;h2 id="overview">Overview:&lt;/h2>
&lt;h3 id="types-of-settings">Types of settings&lt;/h3>
&lt;p>There are two parts to the robot configuration:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Environment Variables:&lt;/strong> tell the system which mower model and hardware version you are using as well as which version of the ROS to use. &lt;strong>We will need to configure these first.&lt;/strong>&lt;/li>
&lt;li>&lt;strong>ROS Parameters:&lt;/strong> Configure the ROS runtime behavior. This includes GPS settings, mowing behavior, MQTT configuration for smart-home, etc.&lt;/li>
&lt;/ul>
&lt;h3 id="the-openmower-command-line-tool">The &lt;code>openmower&lt;/code> command line tool&lt;/h3>
&lt;p>We have created the &lt;code>openmower&lt;/code> command line tool which helps you with all tasks related to running, configuring and debugging the OpenMower software stack.&lt;/p>
&lt;p>The &lt;code>openmower&lt;/code> tool is preinstalled on the OpenMowerOS and has the following features (and more):&lt;/p>
&lt;ul>
&lt;li>Edit ROS and Environment configuration files&lt;/li>
&lt;li>Install / Update Firmware on the xCore board&lt;/li>
&lt;li>Start / Stop the ROS software&lt;/li>
&lt;li>Show ROS logs&lt;/li>
&lt;li>Enter a ROS shell for debugging&lt;/li>
&lt;/ul>
&lt;h3 id="accessing-the-terminal">Accessing the terminal&lt;/h3>
&lt;p>You will need access to the terminal for all of the following steps.
You can either use SSH or the browser-based terminal.&lt;/p>
&lt;p>SSH can be reached using the following credentials:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>username: openmower
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>hostname: openmower
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>password: openmower
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The browser based terminal does not need any credentials and can be reached at: &lt;a href="http://openmower:7681" target="_blank" rel="noopener">http://openmower:7681&lt;/a>
&lt;/p>
&lt;h2 id="step-320-basic-checks">Step 3.2.0: Basic Checks&lt;/h2>
&lt;h3 id="check-if-filesystem-expanded-correctly">Check, if filesystem expanded correctly&lt;/h3>
&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Warning&lt;/h4>
&lt;p>OpenMowerOS currently has an issue where sometimes the file system doesn&amp;rsquo;t expand correctly.
You can see, if you have the problem by running &lt;code>df -h /&lt;/code> and checking, if the &lt;code>Use %&lt;/code> column is almost 100%.&lt;/p>
&lt;p>&lt;img src="images/full-file-system.png" alt="full-file-system.png">&lt;/p>
&lt;/div>
&lt;p>&lt;strong>If your filesystem is almost full&lt;/strong>, do the following steps to properly expand the filesystem:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Run&lt;/strong> &lt;code>sudo raspi-config&lt;/code>&lt;/li>
&lt;li>&lt;strong>Select&lt;/strong> Advanced Options -&amp;gt; Expand Filesystem&lt;/li>
&lt;li>&lt;strong>Finish and Reboot&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Run&lt;/strong> &lt;code>df -h /&lt;/code> again, you should see the &lt;code>Use %&lt;/code> column is now down to a low percentage (depending on your SD card size)&lt;/li>
&lt;/ul>
&lt;h3 id="update-the-openmower-tool-to-the-latest-version">Update the &lt;code>openmower&lt;/code> tool to the latest version&lt;/h3>
&lt;p>To make sure you have the latest version of the &lt;code>openmower&lt;/code> tool, you need to update it to the latest version.
The tool has an integrated update mechanism, so to update, you need to run:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>sudo openmower update-self
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Here is the expected output:&lt;/p>
&lt;div class="container pb-3">
&lt;div class="row justify-content-md-center">
&lt;div id="step-3-2-0-player" class="">&lt;/div>
&lt;/div>
&lt;div class="row justify-content-md-center">
&lt;div>Example output for a successful update.&lt;/div>
&lt;/div>
&lt;/div>
&lt;script>
AsciinemaPlayer.create(
'cast/openmower-update-self.cast',
document.getElementById('step-3-2-0-player'),
{ cols: 110, rows: 24, autoplay: false, loop: true }
);
&lt;/script>
&lt;h3 id="rename-your-host-optional">Rename your host (optional)&lt;/h3>
&lt;p>If you are running multiple robots, it&amp;rsquo;s a good idea to rename your host to distinguish between them.&lt;/p>
&lt;p>You can do this by following the steps in the Knowledge Base: &lt;a href="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/change-hostname/">Change Hostname&lt;/a>
&lt;/p>
&lt;h3 id="enable-external-wifi-antenna-optional">Enable External WiFi Antenna (optional)&lt;/h3>
&lt;p>If you have added an external WiFi antenna, you need to enable it.
You can do this by following the steps in the Knowledge Base: &lt;a href="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/external-wifi-antenna/">Enable External Antenna&lt;/a>
&lt;/p>
&lt;h2 id="step-321-setup-environment-variables">Step 3.2.1: Setup Environment Variables&lt;/h2>
&lt;p>Now we can start the configuration by setting the environment variables.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Start the configuration&lt;/strong> by running &lt;code>openmower configure env&lt;/code>&lt;/li>
&lt;li>&lt;strong>Select&lt;/strong> your favorite editor (e.g. &lt;code>nano&lt;/code>)&lt;/li>
&lt;li>&lt;strong>Edit the environment variables&lt;/strong>, the comments tell you what to do&lt;/li>
&lt;li>&lt;strong>Save the file&lt;/strong> (&lt;kbd>Ctrl&lt;/kbd> + &lt;kbd>O&lt;/kbd>, &lt;kbd>Enter&lt;/kbd> to save followed by &lt;kbd>Ctrl&lt;/kbd> + &lt;kbd>X&lt;/kbd>, &lt;kbd>Enter&lt;/kbd> to exit nano)&lt;/li>
&lt;/ul>
&lt;p>Here is a screncast showing the whole process:&lt;/p>
&lt;div class="container pb-3 pt-3">
&lt;div class="row justify-content-md-center">
&lt;div id="step-3-2-1-player" class="">&lt;/div>
&lt;/div>
&lt;div class="row justify-content-md-center">
&lt;div>In the example a YardForce Classic 500 with v2 Hardware was used.&lt;/div>
&lt;/div>
&lt;/div>
&lt;script>
AsciinemaPlayer.create(
'cast/openmower-configure-env.cast',
document.getElementById('step-3-2-1-player'),
{ cols: 110, rows: 24, autoplay: false, loop: true }
);
&lt;/script>
&lt;p>After this is done, the system will know which ROS version to use and which mower model is used.&lt;/p>
&lt;p>The &lt;code>openmower&lt;/code> tool will now fetch the selected ROS version. &lt;strong>This will take some time (~30 minutes)&lt;/strong>. Time to get some ☕.&lt;/p>
&lt;h2 id="step-331-install-firmware">Step 3.3.1: Install Firmware&lt;/h2>
&lt;p>Now that the system knows which hardware you are using, we are ready to install the firmware to the xCore board.
&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Warning&lt;/h4>
&lt;p>Early versions of the xCore board have a bug in the bootloader which sometimes prevents the board from being detected by the &lt;code>openmower&lt;/code> tool.&lt;/p>
&lt;p>If you encounter Timeout errors during the firmware installation process, update the bootloader by running: &lt;code>openmower update-bootloader&lt;/code> and try again.&lt;/p>
&lt;/div>
&lt;p>To install the firmware to the xCore board, simply run: &lt;code>openmower update-firmware&lt;/code>. The &lt;code>openmower&lt;/code> tool will read your environment variables, download the appropriate firmware binary and upload it to the xCore board via Ethernet.&lt;/p>
&lt;p>The expected output is shown below:&lt;/p>
&lt;div class="container pb-3 pt-3">
&lt;div class="row justify-content-md-center">
&lt;div id="step-3-2-2-player" class="">&lt;/div>
&lt;/div>
&lt;div class="row justify-content-md-center">
&lt;div>Example output for &lt;code>openmower update-firmware&lt;/code> command.&lt;/div>
&lt;/div>
&lt;/div>
&lt;script>
AsciinemaPlayer.create(
'/archive/v1.2.0/docs/knowledge-base/firmware-update//cast/openmower-update-firmware.cast',
document.getElementById('step-3-2-2-player'),
{ cols: 110, rows: 24, autoplay: false, loop: true }
);
&lt;/script>
&lt;/p>
&lt;h2 id="step-332-configure-xesc-motor-controllers">Step 3.3.2: Configure xESC Motor Controllers&lt;/h2>
&lt;p>The xESC motor controllers can be configured to work with many BLDC and DC motors.
The firmware for the controllers is based on the open source VESC project and therefore, the controllers can be configured using the VESC Configuration Tool.&lt;/p>
&lt;h3 id="prerequisites">Prerequisites&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Windows or Linux computer&lt;/strong> to run the VESC Configuration Tool&lt;/li>
&lt;li>&lt;strong>VESC Tool (&lt;a href="https://vesc-project.com/vesc_tool" target="_blank" rel="noopener">https://vesc-project.com/vesc_tool&lt;/a>
)&lt;/strong> You can download the tool for free by adding the &amp;ldquo;free&amp;rdquo; version in your cart and proceeding to checkout.&lt;/li>
&lt;li>&lt;strong>OpenMower Firmware&lt;/strong> needs to be successfully installed in the xCore board. This is needed because the xCore bridges the connection between your computer and the xESC. If you haven&amp;rsquo;t done it, follow the &lt;a href="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/firmware-update/">Firmware Update&lt;/a>
guide.&lt;/li>
&lt;li>&lt;strong>Optional (but makes your life easier):&lt;/strong>&lt;br/>Configuration files for the mower you are using.&lt;br/>Look in the &lt;a href="https://github.com/ClemensElflein/OpenMower/tree/main/configs/xESC" target="_blank" rel="noopener">OpenMower repository&lt;/a>
for the files suited for your mower. &lt;br/>You will need three files:
&lt;ul>
&lt;li>App configuration XML (sets the baud rate, etc. Same for all three xESC controllers)&lt;/li>
&lt;li>Mower Motor configuration XML (motor parameters for the mower motor)&lt;/li>
&lt;li>Drive Motor configuration XML (motor parameters for the wheel motors)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h3 id="configuration-process">Configuration Process&lt;/h3>
&lt;h4 id="stop-ros-from-interfering-with-the-controllers">Stop ROS from interfering with the controllers&lt;/h4>
&lt;p>&lt;code>openmower stop&lt;/code> to stop ROS from interfering with the controllers during configuration.&lt;/p>
&lt;h4 id="expose-the-esc-to-the-network">Expose the ESC to the network&lt;/h4>
&lt;p>&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/configure-xesc//images/openmower-expose-xesc.png" alt="Expose ESC to the network">
Run &lt;code>openmower expose-xesc [left|right|mower]&lt;/code> to expose the xESC controller (choose &lt;code>left&lt;/code>, &lt;code>mower&lt;/code> or &lt;code>right&lt;/code>).&lt;br/>The controller is then reachable in your local network on &lt;code>openmower:65102&lt;/code> until you hit &lt;kbd>Ctrl&lt;/kbd> + &lt;kbd>C&lt;/kbd>.&lt;/p>
&lt;h4 id="connect-to-the-xesc">Connect to the xESC&lt;/h4>
&lt;p>&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/configure-xesc//images/ConnectToTheESC.png" alt="Connect VESC tool to ESC">
Open the VESC Configuration Tool and connect to the xESC controllers by clicking:&lt;/p>
&lt;ul>
&lt;li>&lt;code>Connection -&amp;gt; TCP&lt;/code> &lt;strong>[1]&lt;/strong>&lt;/li>
&lt;li>Insert the IP address of your mower or &lt;code>openmower&lt;/code> into the Address field &lt;strong>[2]&lt;/strong>.&lt;/li>
&lt;li>Set the port to &lt;code>65102&lt;/code> &lt;strong>[3]&lt;/strong>&lt;/li>
&lt;li>Click &lt;code>Connect&lt;/code> &lt;strong>[4]&lt;/strong>&lt;/li>
&lt;/ul>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Information&lt;/h4>
&lt;p>If you encounter this warning message:&lt;/p>
&lt;p>&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/configure-xesc//images/Firmware_Version_Warning_Message.png" alt="Warning message">&lt;/p>
&lt;p>you can safely ignore it. The VESC tool is backward compatible with the firmware version used on the xESC controller.&lt;/p>
&lt;/div>
&lt;h4 id="configure-xesc">Configure xESC&lt;/h4>
&lt;ul class="nav nav-tabs" id="tabs-4" role="tablist">
&lt;li class="nav-item">
&lt;a class="nav-link disabled"
id="tabs-04-00-tab" data-toggle="tab" href="#tabs-04-00" role="tab"
aria-controls="tabs-04-00" aria-selected="false">
&lt;strong>Choose your configuration path&lt;/strong>:
&lt;/a>
&lt;/li>&lt;li class="nav-item">
&lt;a class="nav-link active"
id="tabs-04-01-tab" data-toggle="tab" href="#tabs-04-01" role="tab"
aria-controls="tabs-04-01" aria-selected="false">
Preset configs (Yard Force)
&lt;/a>
&lt;/li>&lt;li class="nav-item">
&lt;a class="nav-link"
id="tabs-04-02-tab" data-toggle="tab" href="#tabs-04-02" role="tab"
aria-controls="tabs-04-02" aria-selected="false">
SABO/John Deere (tuning)
&lt;/a>
&lt;/li>&lt;li class="nav-item">
&lt;a class="nav-link"
id="tabs-04-03-tab" data-toggle="tab" href="#tabs-04-03" role="tab"
aria-controls="tabs-04-03" aria-selected="false">
New model? Let’s dial it in
&lt;/a>
&lt;/li>
&lt;/ul>
&lt;div class="tab-content" id="tabs-4-content">
&lt;div class="tab-body tab-pane fade"
id="tabs-04-00" role="tabpanel" aria-labelled-by="tabs-04-00-tab">
&lt;/div>
&lt;div class="tab-body tab-pane fade show active"
id="tabs-04-01" role="tabpanel" aria-labelled-by="tabs-04-01-tab">
&lt;h4 id="upload-the-configurations">Upload the configurations&lt;/h4>
&lt;div class="tab-gallery">&lt;style>
.image-gallery {overflow: auto; margin-left: -1%!important;}
.image-gallery li {float: left; display: block; margin: 0 0 1% 1%; width: 24%;}
.image-gallery li a {text-align: center; text-decoration: none!important; color: #777;}
.image-gallery li a span {display: block; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; padding: 3px 0;}
.image-gallery li a img {width: 100%; display: block;}
&lt;/style>&lt;ul class="image-gallery">&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/knowledge-base/configure-xesc/images/upload-configurations/1%20-%20Load%20Motor%20Configuration%20XML_hu0eb09337d9fc523d6b24212fe2fcb3d8_166698_1600x1600_fit_q99_catmullrom_3.png" title="1 - Load Motor Configuration XML" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/knowledge-base/configure-xesc/images/upload-configurations/1%20-%20Load%20Motor%20Configuration%20XML_hu0eb09337d9fc523d6b24212fe2fcb3d8_166698_400x400_fill_q95_catmullrom_smart1_3.png"
alt="1 - Load Motor Configuration XML"
title="1 - Load Motor Configuration XML">
&lt;span title="1 - Load Motor Configuration XML">1 - Load Motor Configuration XML&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/knowledge-base/configure-xesc/images/upload-configurations/2%20-%20Select%20Motor%20XML%20Config_hu2b2ce675b08900813ce00c64727145e1_214179_1600x1600_fit_q99_catmullrom_3.png" title="2 - Select Motor XML Config" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/knowledge-base/configure-xesc/images/upload-configurations/2%20-%20Select%20Motor%20XML%20Config_hu2b2ce675b08900813ce00c64727145e1_214179_400x400_fill_q95_catmullrom_smart1_3.png"
alt="2 - Select Motor XML Config"
title="2 - Select Motor XML Config">
&lt;span title="2 - Select Motor XML Config">2 - Select Motor XML Config&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/knowledge-base/configure-xesc/images/upload-configurations/3%20-%20Ignore%20Configuration%20Version%20Warning%20Message_huf0970ccf74f2234a8e533e5627fa8d04_188960_1600x1600_fit_q99_catmullrom_3.png" title="3 - Ignore Configuration Version Warning Message" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/knowledge-base/configure-xesc/images/upload-configurations/3%20-%20Ignore%20Configuration%20Version%20Warning%20Message_huf0970ccf74f2234a8e533e5627fa8d04_188960_400x400_fill_q95_catmullrom_smart1_3.png"
alt="3 - Ignore Configuration Version Warning Message"
title="3 - Ignore Configuration Version Warning Message">
&lt;span title="3 - Ignore Configuration Version Warning Message">3 - Ignore Configuration Version Warning Message&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/knowledge-base/configure-xesc/images/upload-configurations/4%20-%20Write%20Motor%20Configuration_hu81be6b3f54ede5385c5d307c4ffd1418_165908_1600x1600_fit_q99_catmullrom_3.png" title="4 - Write Motor Configuration" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/knowledge-base/configure-xesc/images/upload-configurations/4%20-%20Write%20Motor%20Configuration_hu81be6b3f54ede5385c5d307c4ffd1418_165908_400x400_fill_q95_catmullrom_smart1_3.png"
alt="4 - Write Motor Configuration"
title="4 - Write Motor Configuration">
&lt;span title="4 - Write Motor Configuration">4 - Write Motor Configuration&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/knowledge-base/configure-xesc/images/upload-configurations/5%20-%20Load%20App%20Config_hu958e648c383bac8982d55fff917b9920_171326_1600x1600_fit_q99_catmullrom_3.png" title="5 - Load App Config" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/knowledge-base/configure-xesc/images/upload-configurations/5%20-%20Load%20App%20Config_hu958e648c383bac8982d55fff917b9920_171326_400x400_fill_q95_catmullrom_smart1_3.png"
alt="5 - Load App Config"
title="5 - Load App Config">
&lt;span title="5 - Load App Config">5 - Load App Config&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/knowledge-base/configure-xesc/images/upload-configurations/6%20-%20Write%20App%20Config_huc9635877522a0f61a37b4ccc6225d372_161627_1600x1600_fit_q99_catmullrom_3.png" title="6 - Write App Config" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/knowledge-base/configure-xesc/images/upload-configurations/6%20-%20Write%20App%20Config_huc9635877522a0f61a37b4ccc6225d372_161627_400x400_fill_q95_catmullrom_smart1_3.png"
alt="6 - Write App Config"
title="6 - Write App Config">
&lt;span title="6 - Write App Config">6 - Write App Config&lt;/span>
&lt;/a>
&lt;/li>
&lt;/ul>
&lt;/div>
&lt;p>With the VESC Configuration Tool connected, you can now upload the configuration to your xESC controllers:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>[Image 1]&lt;/strong>: Click &lt;code>File -&amp;gt; Load Motor Configuration XML&lt;/code>&lt;/li>
&lt;li>&lt;strong>[Image 2]&lt;/strong>: Select the motor configuration XML file for your motor (different for mowing motor and the drive motors)&lt;/li>
&lt;li>&lt;strong>[Image 3]&lt;/strong>: Ignore the version message, if it appears&lt;/li>
&lt;li>&lt;strong>[Image 4]&lt;/strong>: Click &lt;code>Write Motor configuration&lt;/code>. The green banner will appear on success.&lt;/li>
&lt;li>&lt;strong>[Image 5]&lt;/strong>: Click &lt;code>File -&amp;gt; Load App Configuration XML&lt;/code>. Ignore the version message, if it appears&lt;/li>
&lt;li>&lt;strong>[Image 6]&lt;/strong>: Click &lt;code>Write App configuration&lt;/code>. The green banner will appear on success.&lt;/li>
&lt;li>&lt;strong>Hit &lt;kbd>Ctrl&lt;/kbd> + &lt;kbd>C&lt;/kbd>&lt;/strong> in the openmower terminal to stop exposing the xESC controller.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Repeat these steps for all three of the three xESC controllers.&lt;/strong>&lt;/p>
&lt;/div>
&lt;div class="tab-body tab-pane fade"
id="tabs-04-02" role="tabpanel" aria-labelled-by="tabs-04-02-tab">
&lt;h4 id="required-preparations">Required preparations&lt;/h4>
&lt;ol>
&lt;li>Remove the mower blade.&lt;/li>
&lt;li>Really, remove the blade! This is a huge mower with a strong motor and large blade! 💀&lt;/li>
&lt;li>Lift the mower&amp;rsquo;s rear so wheels can spin freely (use a carton, block or stand).&lt;/li>
&lt;li>Unmount the mower blade!&lt;/li>
&lt;li>Use battery power for calibration (not dock power), and ensure the battery has sufficient charge.&lt;/li>
&lt;li>Check if you disassembled the mower blade!&lt;/li>
&lt;/ol>
&lt;h4 id="drive-motor-calibration-left-then-right">Drive motor calibration (left then right)&lt;/h4>
&lt;p>Perform calibration for left drive first, then repeat the procedure for the right drive.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Enable realtime data:&lt;/strong> Later on, we wanna validate our calibration with a known reference value, but also during calibration it&amp;rsquo;s interesting to see the displayed values in the marked 2 window. That&amp;rsquo;s why we enable real-time data first:&lt;br>
&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/configure-xesc//images/sabo/vesc_3_realtime_data.jpg" alt="RT Data">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Start the &lt;strong>FOC Calibration Wizard&lt;/strong>:&lt;br>
&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/configure-xesc//images/sabo/vesc_4_voc_1.jpg" alt="Start FOC Calibration">&lt;br>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Now we need to provide some specs of our motor. &lt;strong>These are the specs for the left and right drive motors&lt;/strong>, for the mow motor, we need to use other specs:&lt;br>
&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/configure-xesc//images/sabo/vesc_4_voc_2.jpg" style="vertical-align: middle; width:31%"> 🡆 &lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/configure-xesc//images/sabo/vesc_4_voc_3.jpg" style="vertical-align: middle; width:31%"> 🡆 &lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/configure-xesc//images/sabo/vesc_4_voc_4.jpg" style="vertical-align: middle; width:31%">&lt;br>&lt;/p>
&lt;p>&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/configure-xesc//images/sabo/vesc_4_voc_5.jpg" style="vertical-align: middle; width:31%"> 🡆 &lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/configure-xesc//images/sabo/vesc_4_voc_6.jpg" style="vertical-align: middle; width:31%"> 🡆 &lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/configure-xesc//images/sabo/vesc_4_voc_7.jpg" style="vertical-align: middle; width:31%">&lt;br>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Once calibration has been done, &lt;strong>do not change the direction&lt;/strong> (even though the left wheel turns forward during calibration, whereas the right one backwards):&lt;/p>
&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/configure-xesc//images/sabo/vesc_4_voc_8.jpg" style="vertical-align: middle; width:31%">
&lt;/li>
&lt;li>
&lt;p>Now that the calibration succeed, lets test the result:
&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/configure-xesc//images/sabo/vesc_5_test.jpg" alt="Run Test">&lt;br>&lt;/p>
&lt;p>Test with &amp;ldquo;&lt;strong>D 0,4&lt;/strong>&amp;rdquo; (1) and press the &amp;ldquo;Duty cycle&amp;rdquo; play button (2). If it draw &lt;strong>&amp;lt;= 0.15A&lt;/strong> (3) and sound healty, it is calibrated well.&lt;br>
Test with some higher duty settings. It will become more loud for sure, but should always spin smooth and sound healty. If not, press the STOP sign (4).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>As a last important step, load the correct ESC-App config via: &lt;em>File → Load App Configuration XML&lt;/em>, choose &lt;code>SABO_Drive-App.xml&lt;/code> (see &lt;a href="https://github.com/xtech/hw-openmower-sabo/tree/main/Configs/xESC" target="_blank" rel="noopener">SABO ESCs configs&lt;/a>
) and finally press the &lt;code>↧A&lt;/code> icon (Write app configuration) on the right side.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>Done 😆&lt;br>
&amp;hellip; &lt;strong>but not finished&lt;/strong> ✌️ &amp;hellip; you need to do the whole procedure again, but with the right drive side.&lt;/p>
&lt;p>So, &lt;kbd>Ctrl&lt;/kbd>+&lt;kbd>c&lt;/kbd> your &lt;code>openmower expose-xesc left&lt;/code>, and do it again but with &lt;code>openmower expose-xesc right&lt;/code>.&lt;/p>
&lt;h4 id="mow-motor-calibration">Mow Motor Calibration&lt;/h4>
&lt;p>For the mow motor ESC calibration, you do the same workflow, but with adapted values:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;code>openmower expose-xesc mower&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>During FOC Calibration Wizard use the following values:&lt;/p>
&lt;ul>
&lt;li>Tab &amp;ldquo;Motor&amp;rdquo; = Medium Inrunner ~750g
&lt;ul>
&lt;li>Advanced: Max Power Loss = 200, Motor Poles = 8&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Tab &amp;ldquo;Battery&amp;rdquo;
&lt;ul>
&lt;li>Battery Capacity = 3.9Ah (same as before)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Tab &amp;ldquo;Setup&amp;rdquo;
&lt;ul>
&lt;li>Gear Ratio = Check Direct Drive&lt;/li>
&lt;li>Motor Poles = 8&lt;/li>
&lt;li>Motor Temp. Sensor = disabled&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Test with &amp;ldquo;&lt;strong>D 0,08&lt;/strong>&amp;rdquo; which should draw &lt;strong>&amp;lt;= 0.52A&lt;/strong> (without assembled blade)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Check/Adjust blade rotation direction:&lt;br>
We need to ensure that the blade rotate CCW (when watching from downside onto the axis). Do this with a slow rotation speed like &amp;ldquo;D 0,08&amp;rdquo;.&lt;/p>
&lt;p>If it rotates CW, change direction via: &lt;em>Motor Settings → General → Tab General → Invert Motor Direction&lt;/em>. &lt;strong>Do not forget to do: &amp;ldquo;Write motor configuration&amp;rdquo; via &lt;code>↧M&lt;/code>&lt;/strong>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Load the correct ESC-App config via: &lt;em>File → Load App Configuration XML&lt;/em>, choose &lt;code>SABO_Mower-App.xml&lt;/code> (see &lt;a href="https://github.com/xtech/hw-openmower-sabo/tree/main/Configs/xESC" target="_blank" rel="noopener">SABO ESCs configs&lt;/a>
) and finally press the &lt;code>↧A&lt;/code> icon (Write app configuration) on the right side.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Limit blade RPM:&lt;br>
It&amp;rsquo;s important to limit the max. RPM to the one like OEM is running it! Otherwise you risk your motor bearings or more dangerous: Your blade might fly away 💀
&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/configure-xesc//images/sabo/vesc_7_mow_settings2.jpg" alt="Limit RPM">&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div>
&lt;div class="tab-body tab-pane fade"
id="tabs-04-03" role="tabpanel" aria-labelled-by="tabs-04-03-tab">
&lt;p>Choose your adventure. Your build, your rules.&lt;/p>
&lt;/div>
&lt;/div>
&lt;h2 id="continue-with-step-34-configure-ros-parametershahahugoshortcodes6hbhb">Continue with Step 3.4: &lt;a href="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/step-by-step/3-software-setup/setup-ros/">Configure ROS Parameters&lt;/a>
&lt;/h2></description></item><item><title>Docs: SABO / John Deere</title><link>https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/sabo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/sabo/</guid><description>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;h3 id="things-you-will-need">Things you will need:&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>SABO MOWiT 500F or John Deere Tango E5&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Open Mower V2 Carrier Board for SABO&lt;/strong> with all modules installed (xCore, CM4, GPS, 3x ESCs)&lt;/li>
&lt;/ul>
&lt;style>
.image-gallery {overflow: auto; margin-left: -1%!important;}
.image-gallery li {float: left; display: block; margin: 0 0 1% 1%; width: 24%;}
.image-gallery li a {text-align: center; text-decoration: none!important; color: #777;}
.image-gallery li a span {display: block; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; padding: 3px 0;}
.image-gallery li a img {width: 100%; display: block;}
&lt;/style>&lt;ul class="image-gallery">&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/sabo/images/prerequisites/John%20Deere%20Tango%20E5_hu0ce3284194a3d660b12015accd1cf5dc_10238_1600x1600_fit_q99_h2_catmullrom_2.webp" title="John Deere Tango E5" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/sabo/images/prerequisites/John%20Deere%20Tango%20E5_hu0ce3284194a3d660b12015accd1cf5dc_10238_400x400_fill_q95_h2_catmullrom_smart1_2.webp"
alt="John Deere Tango E5"
title="John Deere Tango E5">
&lt;span title="John Deere Tango E5">John Deere Tango E5&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/sabo/images/prerequisites/SABO%20MOWiT%20500F%20Series-II_hu401adb45839156b6fac0568423735efc_207365_1600x1600_fit_q99_catmullrom_3.png" title="SABO MOWiT 500F Series-II" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/sabo/images/prerequisites/SABO%20MOWiT%20500F%20Series-II_hu401adb45839156b6fac0568423735efc_207365_400x400_fill_q95_catmullrom_smart1_3.png"
alt="SABO MOWiT 500F Series-II"
title="SABO MOWiT 500F Series-II">
&lt;span title="SABO MOWiT 500F Series-II">SABO MOWiT 500F Series-II&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/sabo/images/prerequisites/SABO%20MOWit%20500F%20Series-I_hubcfecabd2cdcbc54bfdeeb88adc2704b_9700_1600x1600_fit_q99_h2_catmullrom_2.webp" title="SABO MOWit 500F Series-I" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/sabo/images/prerequisites/SABO%20MOWit%20500F%20Series-I_hubcfecabd2cdcbc54bfdeeb88adc2704b_9700_400x400_fill_q95_h2_catmullrom_smart1_2.webp"
alt="SABO MOWit 500F Series-I"
title="SABO MOWit 500F Series-I">
&lt;span title="SABO MOWit 500F Series-I">SABO MOWit 500F Series-I&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/sabo/images/prerequisites/SABO%20carrier%20board%20assembled_hud446efde19cd3a84311ff58fe6b7b8fe_1346261_1600x1600_fit_q99_catmullrom.jpg" title="SABO carrier board assembled" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/sabo/images/prerequisites/SABO%20carrier%20board%20assembled_hud446efde19cd3a84311ff58fe6b7b8fe_1346261_400x400_fill_q95_catmullrom_smart1.jpg"
alt="SABO carrier board assembled"
title="SABO carrier board assembled">
&lt;span title="SABO carrier board assembled">SABO carrier board assembled&lt;/span>
&lt;/a>
&lt;/li>
&lt;/ul>
&lt;h3 id="tools-you-will-need">Tools you will need:&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>M10 ratchet&lt;/strong> for the cover&lt;/li>
&lt;li>&lt;strong>5mm Allen key&lt;/strong> for the blade&lt;/li>
&lt;li>&lt;strong>Torx T30&lt;/strong> for the mainboard mount/holder&lt;/li>
&lt;li>&lt;strong>Torx T20&lt;/strong> for the mainboard&lt;/li>
&lt;/ul>
&lt;h2 id="step-241-open-the-mower-and-remove-the-oem-mainboard-">Step 2.4.1: Open the mower and remove the OEM mainboard 🔓&lt;/h2>
&lt;ol>
&lt;li>Place the mower on its back and remove the six 10 mm screws from the housing.&lt;/li>
&lt;li>Remove the blade with the 5mm Allen key (right‑hand thread). Use gloves and secure the blade while loosening.&lt;/li>
&lt;li>Hold the housing together with both hands and place the mower back on its wheels.&lt;/li>
&lt;li>Slightly open the cover on the handle (rear) side by a few centimeters.&lt;/li>
&lt;li>Using a flashlight, disconnect the display ribbon cable(s):
&lt;ul>
&lt;li>Series‑I: two ribbon cables going to the CoverUI. Each plug has small side locks; press to release, then unplug from the mainboard.&lt;/li>
&lt;li>Series‑II: one ribbon cable; pull it straight out from the mainboard (no release locks).&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>You can now open the cover further. A single cable from the cover’s charging contacts goes toward the mainboard. Before the mainboard there is a 2‑pin Molex plug; press to unlock and disconnect it. Put the cover aside for later modification and reassembly.&lt;/li>
&lt;li>Disconnect all remaining cables from the OEM mainboard. Many plugs have a latch; press to release before pulling.&lt;/li>
&lt;li>The OEM mainboard is mounted on a black plastic mainboard holder. On its back side are two larger Torx T30 screws. Remove them to lift out the mainboard together with the holder.&lt;/li>
&lt;li>Remove the OEM mainboard from the holder by unscrewing the Torx T20 screws.&lt;/li>
&lt;/ol>
&lt;style>
.image-gallery {overflow: auto; margin-left: -1%!important;}
.image-gallery li {float: left; display: block; margin: 0 0 1% 1%; width: 24%;}
.image-gallery li a {text-align: center; text-decoration: none!important; color: #777;}
.image-gallery li a span {display: block; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; padding: 3px 0;}
.image-gallery li a img {width: 100%; display: block;}
&lt;/style>&lt;ul class="image-gallery">&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/sabo/images/disassemble-mower/1-2%20Release%20the%20cover%20and%20remove%20the%20mower%20blade_hu0fc2ab289d94344d5844c617919b6d71_371754_1600x1600_fit_q99_catmullrom.jpg" title="1-2 Release the cover and remove the mower blade" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/sabo/images/disassemble-mower/1-2%20Release%20the%20cover%20and%20remove%20the%20mower%20blade_hu0fc2ab289d94344d5844c617919b6d71_371754_400x400_fill_q95_catmullrom_smart1.jpg"
alt="1-2 Release the cover and remove the mower blade"
title="1-2 Release the cover and remove the mower blade">
&lt;span title="1-2 Release the cover and remove the mower blade">1-2 Release the cover and remove the mower blade&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/sabo/images/disassemble-mower/4-7%20Slightly%20open%20the%20cover%20and%20disconnect%20cables_hu0e712b4557157b65fcbd2e3ed270d0a1_226389_1600x1600_fit_q99_catmullrom.jpg" title="4-7 Slightly open the cover and disconnect cables" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/sabo/images/disassemble-mower/4-7%20Slightly%20open%20the%20cover%20and%20disconnect%20cables_hu0e712b4557157b65fcbd2e3ed270d0a1_226389_400x400_fill_q95_catmullrom_smart1.jpg"
alt="4-7 Slightly open the cover and disconnect cables"
title="4-7 Slightly open the cover and disconnect cables">
&lt;span title="4-7 Slightly open the cover and disconnect cables">4-7 Slightly open the cover and disconnect cables&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/sabo/images/disassemble-mower/8%20Release%20mainboard%20holder_huf6a8b7466ce4bab395f7e80fe18ff6ed_294522_1600x1600_fit_q99_catmullrom.jpg" title="8 Release mainboard holder" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/sabo/images/disassemble-mower/8%20Release%20mainboard%20holder_huf6a8b7466ce4bab395f7e80fe18ff6ed_294522_400x400_fill_q95_catmullrom_smart1.jpg"
alt="8 Release mainboard holder"
title="8 Release mainboard holder">
&lt;span title="8 Release mainboard holder">8 Release mainboard holder&lt;/span>
&lt;/a>
&lt;/li>
&lt;/ul>
&lt;h2 id="step-242-mount-prepared-parts">Step 2.4.2: Mount prepared parts&lt;/h2>
&lt;p>Assemble the previously &lt;a href="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/">prepared parts&lt;/a>
:&lt;/p>
&lt;ol>
&lt;li>Mount your prepared UM9x GPS module to the carrier board and attach the IPEX/SMA cable (usually included with the UM9x) as shown:&lt;br>
&lt;img src="images/UM9x-IPEX-SMA-Cable.jpg" alt="UM9x IPEX/SMA cable">&lt;/li>
&lt;li>Mount your xCore + CM4 (+ optional heatsink) combo to the carrier board (if not already mounted)&lt;/li>
&lt;/ol>
&lt;h2 id="step-243-optional-install-wifi-adhesive-antenna-">Step 2.4.3 (optional): Install Wi‑Fi adhesive antenna 📶&lt;/h2>
&lt;p>The Wi‑Fi adhesive antenna can be placed as shown:&lt;/p>
&lt;style>
.image-gallery {overflow: auto; margin-left: -1%!important;}
.image-gallery li {float: left; display: block; margin: 0 0 1% 1%; width: 24%;}
.image-gallery li a {text-align: center; text-decoration: none!important; color: #777;}
.image-gallery li a span {display: block; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; padding: 3px 0;}
.image-gallery li a img {width: 100%; display: block;}
&lt;/style>&lt;ul class="image-gallery">&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/sabo/images/wifi-adhesive-antenna/1%20Fix%20it%20to%20the%20mainboard%20holder_hud055a1f3368372fa623422641d791dd2_25431_1600x1600_fit_q99_catmullrom.jpg" title="1 Fix it to the mainboard holder" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/sabo/images/wifi-adhesive-antenna/1%20Fix%20it%20to%20the%20mainboard%20holder_hud055a1f3368372fa623422641d791dd2_25431_400x400_fill_q95_catmullrom_smart1.jpg"
alt="1 Fix it to the mainboard holder"
title="1 Fix it to the mainboard holder">
&lt;span title="1 Fix it to the mainboard holder">1 Fix it to the mainboard holder&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/sabo/images/wifi-adhesive-antenna/2%20Route%20cable%20and%20connect%20it_hud1046dc7cbc5098d684b17f4df80587b_39166_1600x1600_fit_q99_catmullrom.jpg" title="2 Route cable and connect it" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/sabo/images/wifi-adhesive-antenna/2%20Route%20cable%20and%20connect%20it_hud1046dc7cbc5098d684b17f4df80587b_39166_400x400_fill_q95_catmullrom_smart1.jpg"
alt="2 Route cable and connect it"
title="2 Route cable and connect it">
&lt;span title="2 Route cable and connect it">2 Route cable and connect it&lt;/span>
&lt;/a>
&lt;/li>
&lt;/ul>
&lt;h2 id="step-244-assemble-carrier-board-with-mainboard-">Step 2.4.4: Assemble carrier board with mainboard 🔩&lt;/h2>
&lt;ol>
&lt;li>
&lt;p>Now that all modules are prepared and mounted, fasten the carrier board to the mainboard holder.&lt;br>
&lt;strong>If you have fewer screws than holes, prioritize holes close to the larger connectors!&lt;/strong>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Mount the carrier board + mainboard-holder back into the mower and fasten it with the two T30 screws.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Carefully connect all plugs. Some plugs fit into multiple counterparts, verify the labels or use this plug overview:&lt;br>&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:center">Series-I Plugs&lt;/th>
&lt;th style="text-align:center">Series-II Plugs&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:center">&lt;img src="images/om-sabo-cb-s1-v02-plugs.jpg" alt="Series-I Plugs">&lt;/td>
&lt;td style="text-align:center">&lt;img src="images/om-sabo-cb-s2-v02-plugs.jpg" alt="Series-II Plugs">&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Note: some plugs are rotated — do not force any connector!&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h2 id="step-245-install-gps-antenna-eg-hahx901-on-the-cover-">Step 2.4.5: Install GPS antenna (e.g. HA/HX‑901) on the cover 🛰️&lt;/h2>
&lt;p>An alternative non-destructive internal holder was &lt;a href="https://discord.com/channels/958476543846412329/1355300774523174922/1426287736356077808" target="_blank" rel="noopener">designed by STS&lt;/a>
. Check the Discord discussion for more details and STL files if available.&lt;/p>
&lt;ol>
&lt;li>Drill a 6.5–7 mm hole in the cover approximately at the position as shown in the images.&lt;/li>
&lt;li>Install the (included) 30-40cm SMA extension cable. Ensure the SMA bulkhead protrudes far enough so the HA/HX‑901 can fully engage and make good contact; if in doubt, omit one washer/spacer on the inside to gain thread length.&lt;br>
Seal it from the top with silicone or a similar sealant. Don’t use too much sealant, so the HA/HX‑901 can still be screwed on later.&lt;/li>
&lt;li>Also seal the inside thoroughly to prevent any water ingress. On the inside use sealant rule: &lt;em>More is better&lt;/em>&lt;/li>
&lt;li>Allow sufficient time for the sealant to cure before proceeding.&lt;/li>
&lt;/ol>
&lt;style>
.image-gallery {overflow: auto; margin-left: -1%!important;}
.image-gallery li {float: left; display: block; margin: 0 0 1% 1%; width: 24%;}
.image-gallery li a {text-align: center; text-decoration: none!important; color: #777;}
.image-gallery li a span {display: block; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; padding: 3px 0;}
.image-gallery li a img {width: 100%; display: block;}
&lt;/style>&lt;ul class="image-gallery">&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/sabo/images/gps-antenna/1%20Drill%20hole%20location_hu8069cf3c520d3e276c280f433e42eb95_35320_1600x1600_fit_q99_catmullrom.jpg" title="1 Drill hole location" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/sabo/images/gps-antenna/1%20Drill%20hole%20location_hu8069cf3c520d3e276c280f433e42eb95_35320_400x400_fill_q95_catmullrom_smart1.jpg"
alt="1 Drill hole location"
title="1 Drill hole location">
&lt;span title="1 Drill hole location">1 Drill hole location&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/sabo/images/gps-antenna/2%20Seal%20rule%20more%20is%20better%20at%20inside_hu6baefd0d29b5c0ce65240988872bb88e_28437_1600x1600_fit_q99_catmullrom.jpg" title="2 Seal rule more is better at inside" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/sabo/images/gps-antenna/2%20Seal%20rule%20more%20is%20better%20at%20inside_hu6baefd0d29b5c0ce65240988872bb88e_28437_400x400_fill_q95_catmullrom_smart1.jpg"
alt="2 Seal rule more is better at inside"
title="2 Seal rule more is better at inside">
&lt;span title="2 Seal rule more is better at inside">2 Seal rule more is better at inside&lt;/span>
&lt;/a>
&lt;/li>
&lt;/ul>
&lt;h2 id="step-246-close-the-housing-">Step 2.4.6: Close the housing ✅&lt;/h2>
&lt;ol>
&lt;li>Place the cover back onto the mower. Let the front engage slightly, but keep the rear open enough to:
&lt;ol>
&lt;li>Connect the GPS antenna cable to the carrier board&lt;/li>
&lt;li>Reconnect the docking‑contact cable&lt;/li>
&lt;li>Finally, reconnect the CoverUI ribbon cable(s)&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>Close the cover completely so it fits and latches evenly all around&lt;/li>
&lt;li>Hold the housing together with both hands and turn the mower back onto its back&lt;/li>
&lt;li>Reinstall and fasten the six 10 mm hex‑head screws&lt;/li>
&lt;li>&lt;strong>Do not install the blade yet&lt;/strong>&lt;/li>
&lt;li>Put the mower back on its wheels&lt;/li>
&lt;li>Finally, screw the HA/HX‑901 antenna onto the cover&lt;/li>
&lt;/ol>
&lt;h2 id="step-247-first-startup">Step 2.4.7: First Startup&lt;/h2>
&lt;p>It&amp;rsquo;s time to power the robot up by hitting the switch at the back of the robot.&lt;/p>
&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Warning&lt;/h4>
&lt;p>If you see / smell anything unexpected, turn the switch off &lt;strong>immediately!&lt;/strong>&lt;/p>
&lt;p>This includes but is not limited to:&lt;/p>
&lt;ul>
&lt;li>Smoke / Fire&lt;/li>
&lt;li>Smell of hot electronics&lt;/li>
&lt;li>Blown Fuses&lt;/li>
&lt;/ul>
&lt;/div>
&lt;p>Once turned on, it will take approximately 10 seconds before the LEDs and LCD start to show signs of life.
&lt;strong>Keep the robot turned on for at least five minutes to make sure the CM4 boots up properly. It performs setup during the first boot.&lt;/strong>&lt;/p>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Info&lt;/h4>
It&amp;rsquo;s a good idea to place the mower into the docking station, so that the battery doesn&amp;rsquo;t drain and can charge.
&lt;/div>
&lt;p>If everything seems healthy, proceed to the &lt;a href="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/step-by-step/3-software-setup/">Software Setup&lt;/a>
.&lt;/p>
&lt;p>Otherwise, &lt;strong>stop here and ask for help on the Discord server&lt;/strong>.&lt;/p></description></item><item><title>Docs: Step 2.2: Prepare the SD Card</title><link>https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-sd-card/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-sd-card/</guid><description>
&lt;p>We have created a Raspberry Pi image which is modified specifically for Open Mower use.
The modifications include:&lt;/p>
&lt;ul>
&lt;li>Networking setup for the robot&amp;rsquo;s internal network&lt;/li>
&lt;li>A hotspot to make it easy to connect the robot to your home network&lt;/li>
&lt;li>Docker installation for easy container management&lt;/li>
&lt;li>Browser based terminal access to the robot&lt;/li>
&lt;li>&amp;hellip; and more!&lt;/li>
&lt;/ul>
&lt;p>In this step, we flash the image and do some basic setup for your mower.&lt;/p>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Info&lt;/h4>
&lt;p>This guide is for the &lt;strong>Lite&lt;/strong> version of the Raspberry Pi Compute module (the version &lt;strong>without&lt;/strong> eMMC storage).&lt;/p>
&lt;p>If you have a compute module &lt;strong>with eMMC&lt;/strong>, you can safely skip this step for now and continue with &lt;a href="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-mainboard/">preparing the mainboard.&lt;/a>
&lt;/p>
&lt;p>You can flash the CM4, once your mower is powered up. &lt;a href="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/flash-cm4-emmc/">Here is the guide on how to do it&lt;/a>
&lt;/p>
&lt;/div>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;p>In order to follow this guide, you will need:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Raspberry Pi CM4 Lite (no on-board memory)&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Micro SD card with at least 16 GB&lt;/strong>&lt;/li>
&lt;li>&lt;strong>A PC with the Raspberry Pi Imager Software installed:&lt;/strong>&lt;br/>
🔗 &lt;a href="https://www.raspberrypi.com/software/" target="_blank" rel="noopener">https://www.raspberrypi.com/software/&lt;/a>
&lt;/li>
&lt;li>&lt;strong>The latest OpenMowerOS Image:&lt;/strong>&lt;br/>
🔗 &lt;a href="https://github.com/ClemensElflein/OpenMowerOS/releases" target="_blank" rel="noopener">https://github.com/ClemensElflein/OpenMowerOS/releases&lt;/a>
&lt;br/>
You can download it in the &lt;code>Assets&lt;/code> section. You don&amp;rsquo;t need to unpack the image.&lt;/li>
&lt;li>&lt;strong>An SD card reader&lt;/strong>&lt;/li>
&lt;/ul>
&lt;h2 id="flash-the-image-to-your-sd-card">Flash the Image to your SD Card&lt;/h2>
&lt;style>
.image-gallery {overflow: auto; margin-left: -1%!important;}
.image-gallery li {float: left; display: block; margin: 0 0 1% 1%; width: 24%;}
.image-gallery li a {text-align: center; text-decoration: none!important; color: #777;}
.image-gallery li a span {display: block; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; padding: 3px 0;}
.image-gallery li a img {width: 100%; display: block;}
&lt;/style>&lt;ul class="image-gallery">&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-sd-card/images/imager/Pi%20Imager%20Step%201_hu1de76bd80b40549393acca8d29bd6f6b_110416_1600x1600_fit_q99_catmullrom_3.png" title="Pi Imager Step 1" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-sd-card/images/imager/Pi%20Imager%20Step%201_hu1de76bd80b40549393acca8d29bd6f6b_110416_400x400_fill_q95_catmullrom_smart1_3.png"
alt="Pi Imager Step 1"
title="Pi Imager Step 1">
&lt;span title="Pi Imager Step 1">Pi Imager Step 1&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-sd-card/images/imager/Pi%20Imager%20Step%202_hub42f6dcdbe2d1fcfc36de647d7f7e668_87995_1600x1600_fit_q99_catmullrom_3.png" title="Pi Imager Step 2" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-sd-card/images/imager/Pi%20Imager%20Step%202_hub42f6dcdbe2d1fcfc36de647d7f7e668_87995_400x400_fill_q95_catmullrom_smart1_3.png"
alt="Pi Imager Step 2"
title="Pi Imager Step 2">
&lt;span title="Pi Imager Step 2">Pi Imager Step 2&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-sd-card/images/imager/Pi%20Imager%20Step%203_hud3ac4c7e0311dd22127e1e605dad4733_56769_1600x1600_fit_q99_catmullrom_3.png" title="Pi Imager Step 3" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-sd-card/images/imager/Pi%20Imager%20Step%203_hud3ac4c7e0311dd22127e1e605dad4733_56769_400x400_fill_q95_catmullrom_smart1_3.png"
alt="Pi Imager Step 3"
title="Pi Imager Step 3">
&lt;span title="Pi Imager Step 3">Pi Imager Step 3&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-sd-card/images/imager/Pi%20Imager%20Step%204_hu1ce7c76f2f94c52961fa743c0746d11a_70164_1600x1600_fit_q99_catmullrom_3.png" title="Pi Imager Step 4" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-sd-card/images/imager/Pi%20Imager%20Step%204_hu1ce7c76f2f94c52961fa743c0746d11a_70164_400x400_fill_q95_catmullrom_smart1_3.png"
alt="Pi Imager Step 4"
title="Pi Imager Step 4">
&lt;span title="Pi Imager Step 4">Pi Imager Step 4&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-sd-card/images/imager/Pi%20Imager%20Step%205_hu5bf4049654f7e2755e71076874386743_77276_1600x1600_fit_q99_catmullrom_3.png" title="Pi Imager Step 5" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-sd-card/images/imager/Pi%20Imager%20Step%205_hu5bf4049654f7e2755e71076874386743_77276_400x400_fill_q95_catmullrom_smart1_3.png"
alt="Pi Imager Step 5"
title="Pi Imager Step 5">
&lt;span title="Pi Imager Step 5">Pi Imager Step 5&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-sd-card/images/imager/Pi%20Imager%20Step%206_hu8855d455d7e7d85636d5e38993b2b2e0_49906_1600x1600_fit_q99_catmullrom_3.png" title="Pi Imager Step 6" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-sd-card/images/imager/Pi%20Imager%20Step%206_hu8855d455d7e7d85636d5e38993b2b2e0_49906_400x400_fill_q95_catmullrom_smart1_3.png"
alt="Pi Imager Step 6"
title="Pi Imager Step 6">
&lt;span title="Pi Imager Step 6">Pi Imager Step 6&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-sd-card/images/imager/Pi%20Imager%20Step%207_hu06f43e6f1db1c1c4dcc7d09aca1d6254_76444_1600x1600_fit_q99_catmullrom_3.png" title="Pi Imager Step 7" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-sd-card/images/imager/Pi%20Imager%20Step%207_hu06f43e6f1db1c1c4dcc7d09aca1d6254_76444_400x400_fill_q95_catmullrom_smart1_3.png"
alt="Pi Imager Step 7"
title="Pi Imager Step 7">
&lt;span title="Pi Imager Step 7">Pi Imager Step 7&lt;/span>
&lt;/a>
&lt;/li>
&lt;/ul>
&lt;ul>
&lt;li>Start the Raspberry Pi Imager Software.&lt;/li>
&lt;li>Select &lt;code>Raspberry Pi 4&lt;/code>. Click Next to continue.&lt;/li>
&lt;li>Then click &lt;code>Use Custom&lt;/code> to open the image file you downloaded earlier. Click Next to continue.&lt;/li>
&lt;li>Select your SD card from the Window. &lt;strong>Make sure that you are really selecting the correct SD card, all data on the selected device will be erased!&lt;/strong>. Click Next to continue.&lt;/li>
&lt;li>Check that everything is correct and click &lt;code>WRITE&lt;/code>. You will be prompted to confirm once again, you might be prompted to enter your admin password.&lt;/li>
&lt;li>Wait for the process to finish.&lt;/li>
&lt;/ul>
&lt;h3 id="configuring-the-image">Configuring the Image&lt;/h3>
&lt;p>Older versions of the Raspberry Pi Imager software allowed the image to be configured directly in the software. In the current version, this is no longer possible.&lt;/p>
&lt;p>When using an older version of the Raspberry Pi Imager, you can still configure the image as usual, but &lt;strong>renaming the user is not possible&lt;/strong>. The user will always be named &lt;code>openmower&lt;/code>.&lt;/p>
&lt;h2 id="done-">Done 🎉&lt;/h2>
&lt;p>You can now remove the SD card from your PC, it is ready to be used with the Open Mower software. Set it aside and continue with &lt;a href="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-mainboard/">preparing the mainboard.&lt;/a>
.&lt;/p></description></item><item><title>Docs: Step 3.3: Configure ROS</title><link>https://openmower.de/archive/v1.2.0/docs/step-by-step/3-software-setup/setup-ros/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/step-by-step/3-software-setup/setup-ros/</guid><description>
&lt;h2 id="step-331-configure-ros-parameters">Step 3.3.1: Configure ROS Parameters&lt;/h2>
&lt;p>The ROS parameters can be configured using similar to the environment above.
Simply run the &lt;code>openmower configure ros&lt;/code> command and set the parameters as needed.&lt;/p>
&lt;p>For a first setup, you can leave the default values for most parameters.&lt;/p>
&lt;p>&lt;strong>You need to set the following parameters:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>gps/baud_rate&lt;/strong>: The baud rate of the GPS module. If you are using the Ardusimple GPS with the provided configuration file, leave it at 921600.&lt;/li>
&lt;li>&lt;strong>gps/protocol&lt;/strong>: The GPS protocol used. If you are using the Ardusimple GPS with the provided configuration file, leave it at &amp;ldquo;UBX&amp;rdquo;.&lt;/li>
&lt;li>&lt;strong>gps/datum_lat, gps/datum_long&lt;/strong>: Use coordinates close to where you will setup your docking station. &lt;strong>Tip:&lt;/strong> Open &lt;a href="https://maps.google.com/" target="_blank" rel="noopener">Google Maps&lt;/a>
and right-click on any location to get the coordinates. It should be within a few meters of the dock, no need to be ultra precise here.&lt;/li>
&lt;li>&lt;strong>ntrip_client/*&lt;/strong>: Set the NTRIP parameters for your GPS base station.&lt;/li>
&lt;/ul>
&lt;div class="container pb-3 pt-3">
&lt;div class="row justify-content-md-center">
&lt;div id="step-3-2-3-player" class="">&lt;/div>
&lt;/div>
&lt;div class="row justify-content-md-center">
&lt;div>Example ROS configuration.&lt;/div>
&lt;/div>
&lt;/div>
&lt;script>
AsciinemaPlayer.create(
'cast/openmower-configure-ros.cast',
document.getElementById('step-3-2-3-player'),
{ cols: 130, rows: 30, autoplay: false, loop: true }
);
&lt;/script></description></item><item><title>Docs: Change Hostname</title><link>https://openmower.de/archive/v1.2.0/docs/knowledge-base/change-hostname/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/knowledge-base/change-hostname/</guid><description>
&lt;p>Changing the hostname is simple, thanks to the &lt;code>raspi-config&lt;/code> tool:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Run&lt;/strong> &lt;code>sudo raspi-config&lt;/code>&lt;/li>
&lt;li>&lt;strong>Select&lt;/strong> System Options -&amp;gt; Hostname&lt;/li>
&lt;li>&lt;strong>Enter&lt;/strong> a new hostname and press &lt;kbd>Enter&lt;/kbd>`&lt;/li>
&lt;li>&lt;strong>Finish and Reboot&lt;/strong>&lt;/li>
&lt;/ul></description></item><item><title>Docs: External Wifi Antenna</title><link>https://openmower.de/archive/v1.2.0/docs/knowledge-base/external-wifi-antenna/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/knowledge-base/external-wifi-antenna/</guid><description>
&lt;p>After adding the external antenna, you need to tell the Raspberry Pi CM4 to use the external antenna instead of the built-in one.&lt;/p>
&lt;h3 id="terminal-cast">Terminal Cast&lt;/h3>
&lt;div class="container pb-3 pt-3">
&lt;div class="row justify-content-md-center">
&lt;div id="external-wifi-player" class="">&lt;/div>
&lt;/div>
&lt;div class="row justify-content-md-center">
&lt;div>How to edit the antenna configuration&lt;/div>
&lt;/div>
&lt;/div>
&lt;script>
AsciinemaPlayer.create(
'/archive/v1.2.0/docs/knowledge-base/external-wifi-antenna//cast/change-antenna.cast',
document.getElementById('external-wifi-player'),
{ cols: 110, rows: 24, autoplay: false, loop: true }
);
&lt;/script>
&lt;h3 id="instructions">Instructions&lt;/h3>
&lt;p>You can do this by:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Run&lt;/strong> &lt;code>sudo nano /boot/firmware/config.txt&lt;/code>&lt;/li>
&lt;li>&lt;strong>Scroll Down&lt;/strong> to the &lt;code>[cm4]&lt;/code> section and:
&lt;ul>
&lt;li>Comment &lt;code># dtparam=ant1&lt;/code>&lt;/li>
&lt;li>Uncomment &lt;code>dtparam=ant2&lt;/code>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Save&lt;/strong> &lt;kbd>CTRL&lt;/kbd> + &lt;kbd>O&lt;/kbd> and &lt;strong>Exit Nano&lt;/strong> &lt;kbd>CTRL&lt;/kbd> + &lt;kbd>X&lt;/kbd>&lt;/li>
&lt;li>&lt;strong>Reboot&lt;/strong> the OS by running &lt;code>sudo reboot&lt;/code>&lt;/li>
&lt;/ul></description></item><item><title>Docs: Step 2.3: Prepare the Mainboard</title><link>https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-mainboard/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-mainboard/</guid><description>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;p>In order to follow this guide, you will need:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>An OpenMower v2 Mainboard&lt;/strong>&lt;/li>
&lt;li>&lt;strong>1x xCore Board&lt;/strong>&lt;/li>
&lt;li>&lt;strong>1x Raspberry Pi 4 CM4&lt;/strong>&lt;/li>
&lt;li>&lt;strong>3x xESC Motor Controllers&lt;/strong>&lt;/li>
&lt;li>&lt;strong>1x GPS Module&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Mounting Brackets for the xCore&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Optional: CM4 Heat Sink&lt;/strong>&lt;/li>
&lt;/ul>
&lt;h2 id="step-231-mount-the-cm4-onto-the-xcore">Step 2.3.1: Mount the CM4 onto the xCore&lt;/h2>
&lt;h3 id="if-you-are-using-a-cm4-heat-sink">If you are using a CM4 heat sink&lt;/h3>
&lt;p>Place the spacer on the lower two mounting holes of the CM4 as shown in the picture. &lt;strong>Do not&lt;/strong> place spacers on the upper two holes:
&lt;img src="images/CM4-spacer.jpg" alt="CM4-spacer.jpg">&lt;/p>
&lt;p>The spacers I used are 1.7 mm thick and were provided with the heat sink.&lt;/p>
&lt;p>If you are not using a CM4 heat sink, you can skip this step.&lt;/p>
&lt;h3 id="mount-the-cm4-onto-the-xcore">Mount the CM4 onto the xCore&lt;/h3>
&lt;style>
.image-gallery {overflow: auto; margin-left: -1%!important;}
.image-gallery li {float: left; display: block; margin: 0 0 1% 1%; width: 24%;}
.image-gallery li a {text-align: center; text-decoration: none!important; color: #777;}
.image-gallery li a span {display: block; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; padding: 3px 0;}
.image-gallery li a img {width: 100%; display: block;}
&lt;/style>&lt;ul class="image-gallery">&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-mainboard/images/mount-cm4/Step%201%20-%20Align%20CM4_hub634c694023f2eb4baae5bb7e214b74b_1627011_1600x1600_fit_q99_catmullrom.jpg" title="Step 1 - Align CM4" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-mainboard/images/mount-cm4/Step%201%20-%20Align%20CM4_hub634c694023f2eb4baae5bb7e214b74b_1627011_400x400_fill_q95_catmullrom_smart1.jpg"
alt="Step 1 - Align CM4"
title="Step 1 - Align CM4">
&lt;span title="Step 1 - Align CM4">Step 1 - Align CM4&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-mainboard/images/mount-cm4/Step%202%20-%20Grab%20the%20CM4%20at%20the%20connectors_huaf49570b7772666ea7f9b331e735ebc6_1500070_1600x1600_fit_q99_catmullrom.jpg" title="Step 2 - Grab the CM4 at the connectors" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-mainboard/images/mount-cm4/Step%202%20-%20Grab%20the%20CM4%20at%20the%20connectors_huaf49570b7772666ea7f9b331e735ebc6_1500070_400x400_fill_q95_catmullrom_smart1.jpg"
alt="Step 2 - Grab the CM4 at the connectors"
title="Step 2 - Grab the CM4 at the connectors">
&lt;span title="Step 2 - Grab the CM4 at the connectors">Step 2 - Grab the CM4 at the connectors&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-mainboard/images/mount-cm4/Step%203%20-%20Press%20until%20you%20hear%20it%20click_hu30438f3efe2ce1ab54a632fefe1d1810_1352974_1600x1600_fit_q99_catmullrom.jpg" title="Step 3 - Press until you hear it click" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-mainboard/images/mount-cm4/Step%203%20-%20Press%20until%20you%20hear%20it%20click_hu30438f3efe2ce1ab54a632fefe1d1810_1352974_400x400_fill_q95_catmullrom_smart1.jpg"
alt="Step 3 - Press until you hear it click"
title="Step 3 - Press until you hear it click">
&lt;span title="Step 3 - Press until you hear it click">Step 3 - Press until you hear it click&lt;/span>
&lt;/a>
&lt;/li>
&lt;/ul>
&lt;p>The next step is to mount the CM4 onto the xCore. To do so:&lt;/p>
&lt;ol>
&lt;li>Align the CM4 with the xCore board as shown in the picture.&lt;/li>
&lt;li>Place two fingers over the connectors of the xCore and the CM4.&lt;/li>
&lt;li>Gently press down until you hear and feel both connectors click.&lt;/li>
&lt;/ol>
&lt;h2 id="step-232-mount-cm4-heat-sink">Step 2.3.2: Mount CM4 Heat Sink&lt;/h2>
&lt;p>&lt;strong>&lt;strong>(optional - except for the spacers in the end)&lt;/strong>&lt;/strong>&lt;/p>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Info&lt;/h4>
&lt;p>This step is different, depending on which heat sink you are using. The images here show the Berry Base heat sink, but the process is similar for other heat sink models as well.&lt;/p>
&lt;p>Make sure to use spacers between the PCBs, otherwise the screws will put excessive pressure onto the connectors.&lt;/p>
&lt;/div>
&lt;style>
.image-gallery {overflow: auto; margin-left: -1%!important;}
.image-gallery li {float: left; display: block; margin: 0 0 1% 1%; width: 24%;}
.image-gallery li a {text-align: center; text-decoration: none!important; color: #777;}
.image-gallery li a span {display: block; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; padding: 3px 0;}
.image-gallery li a img {width: 100%; display: block;}
&lt;/style>&lt;ul class="image-gallery">&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-mainboard/images/mount-heat-sink/Step%201%20-%20Mount%20spacers%20to%20heat%20sink_hu68361f3eb43b139baeb93fd43e157ca7_1267618_1600x1600_fit_q99_catmullrom.jpg" title="Step 1 - Mount spacers to heat sink" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-mainboard/images/mount-heat-sink/Step%201%20-%20Mount%20spacers%20to%20heat%20sink_hu68361f3eb43b139baeb93fd43e157ca7_1267618_400x400_fill_q95_catmullrom_smart1.jpg"
alt="Step 1 - Mount spacers to heat sink"
title="Step 1 - Mount spacers to heat sink">
&lt;span title="Step 1 - Mount spacers to heat sink">Step 1 - Mount spacers to heat sink&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-mainboard/images/mount-heat-sink/Step%202%20-%20Stick%20thermal%20pads%20onto%20the%20chips_hu3c3738134403feecf6e3bfa44ec9f8b1_1663938_1600x1600_fit_q99_catmullrom.jpg" title="Step 2 - Stick thermal pads onto the chips" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-mainboard/images/mount-heat-sink/Step%202%20-%20Stick%20thermal%20pads%20onto%20the%20chips_hu3c3738134403feecf6e3bfa44ec9f8b1_1663938_400x400_fill_q95_catmullrom_smart1.jpg"
alt="Step 2 - Stick thermal pads onto the chips"
title="Step 2 - Stick thermal pads onto the chips">
&lt;span title="Step 2 - Stick thermal pads onto the chips">Step 2 - Stick thermal pads onto the chips&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-mainboard/images/mount-heat-sink/Step%203%20-%20Align%20heat%20sink%20with%20mounting%20holes_hu45fbcf3baf4dbe2e50fd5aef786cd1b7_1425740_1600x1600_fit_q99_catmullrom.jpg" title="Step 3 - Align heat sink with mounting holes" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-mainboard/images/mount-heat-sink/Step%203%20-%20Align%20heat%20sink%20with%20mounting%20holes_hu45fbcf3baf4dbe2e50fd5aef786cd1b7_1425740_400x400_fill_q95_catmullrom_smart1.jpg"
alt="Step 3 - Align heat sink with mounting holes"
title="Step 3 - Align heat sink with mounting holes">
&lt;span title="Step 3 - Align heat sink with mounting holes">Step 3 - Align heat sink with mounting holes&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-mainboard/images/mount-heat-sink/Step%204%20-%20Fix%20the%20heat%20sink%20using%20the%20lower%20two%20screws_hu4798fe58a1add070814da39e4db3a257_1371078_1600x1600_fit_q99_catmullrom.jpg" title="Step 4 - Fix the heat sink using the lower two screws" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-mainboard/images/mount-heat-sink/Step%204%20-%20Fix%20the%20heat%20sink%20using%20the%20lower%20two%20screws_hu4798fe58a1add070814da39e4db3a257_1371078_400x400_fill_q95_catmullrom_smart1.jpg"
alt="Step 4 - Fix the heat sink using the lower two screws"
title="Step 4 - Fix the heat sink using the lower two screws">
&lt;span title="Step 4 - Fix the heat sink using the lower two screws">Step 4 - Fix the heat sink using the lower two screws&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-mainboard/images/mount-heat-sink/Step%205%20-%20Insert%20spacers%20on%20the%20upper%20holes_hu615571c45aff6795800f6160f8fe02f1_1329070_1600x1600_fit_q99_catmullrom.jpg" title="Step 5 - Insert spacers on the upper holes" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-mainboard/images/mount-heat-sink/Step%205%20-%20Insert%20spacers%20on%20the%20upper%20holes_hu615571c45aff6795800f6160f8fe02f1_1329070_400x400_fill_q95_catmullrom_smart1.jpg"
alt="Step 5 - Insert spacers on the upper holes"
title="Step 5 - Insert spacers on the upper holes">
&lt;span title="Step 5 - Insert spacers on the upper holes">Step 5 - Insert spacers on the upper holes&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-mainboard/images/mount-heat-sink/Step%206%20-%20Insert%20SD%20Card_hu8d9a3531e802627df05d3b46dfcdcd98_1821889_1600x1600_fit_q99_catmullrom.jpg" title="Step 6 - Insert SD Card" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-mainboard/images/mount-heat-sink/Step%206%20-%20Insert%20SD%20Card_hu8d9a3531e802627df05d3b46dfcdcd98_1821889_400x400_fill_q95_catmullrom_smart1.jpg"
alt="Step 6 - Insert SD Card"
title="Step 6 - Insert SD Card">
&lt;span title="Step 6 - Insert SD Card">Step 6 - Insert SD Card&lt;/span>
&lt;/a>
&lt;/li>
&lt;/ul>
&lt;p>The next step is to mount the heat sink onto the CM4. To do so:&lt;/p>
&lt;ol>
&lt;li>Mount the spacers to the heat sink as shown in the picture.&lt;/li>
&lt;li>Place all thermal pads onto the corresponding chips.&lt;br />&lt;strong>Important:&lt;/strong> The pads have &lt;strong>clear plastic cover on the top&lt;/strong> and glue on the bottom.&lt;br />&lt;strong>Do not forget to remove the top plastic cover as well!&lt;/strong>&lt;/li>
&lt;li>Align the heat sink with the CM4 as shown in the picture.&lt;/li>
&lt;li>Fix the heat sink with the &lt;strong>two screws&lt;/strong> on the bottom. &lt;strong>Do not&lt;/strong> fix the upper two holes.&lt;/li>
&lt;li>Press the 3d printed spacer between the CM4 and the xCore board as shown in the picture.&lt;/li>
&lt;li>It is now a good time to insert the SD card into the CM4 (except for the version with eMMC).&lt;/li>
&lt;/ol>
&lt;h2 id="step-233-insert-the-xcore-into-the-mainboard">Step 2.3.3: Insert the xCore into the Mainboard&lt;/h2>
&lt;p>Now that the xCore board is assembled, it is time to insert it into the mainboard.&lt;/p>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Info&lt;/h4>
Before finishing this step, make sure that your SD card is inserted into the CM4 (if using the version with eMMC, skip this step).
Depending on the mainboard layout, you won&amp;rsquo;t have easy access to the SD card slot later.
&lt;/div>
&lt;style>
.image-gallery {overflow: auto; margin-left: -1%!important;}
.image-gallery li {float: left; display: block; margin: 0 0 1% 1%; width: 24%;}
.image-gallery li a {text-align: center; text-decoration: none!important; color: #777;}
.image-gallery li a span {display: block; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; padding: 3px 0;}
.image-gallery li a img {width: 100%; display: block;}
&lt;/style>&lt;ul class="image-gallery">&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-mainboard/images/insert-xcore-into-mainboard/Step%201%20-%20Insert%20xCore%20in%2045%20degree%20angle_hu1e929e22648a795cb4c68ba225f09fc6_1425091_1600x1600_fit_q99_catmullrom.jpg" title="Step 1 - Insert xCore in 45 degree angle" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-mainboard/images/insert-xcore-into-mainboard/Step%201%20-%20Insert%20xCore%20in%2045%20degree%20angle_hu1e929e22648a795cb4c68ba225f09fc6_1425091_400x400_fill_q95_catmullrom_smart1.jpg"
alt="Step 1 - Insert xCore in 45 degree angle"
title="Step 1 - Insert xCore in 45 degree angle">
&lt;span title="Step 1 - Insert xCore in 45 degree angle">Step 1 - Insert xCore in 45 degree angle&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-mainboard/images/insert-xcore-into-mainboard/_huca419582850eab59ed3cc66a984d4873_2579551_da7d9e9cfded513aa83a07719a215660.jpg" title="Step 2 - Lock the tabs on the left and right of the board" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-mainboard/images/insert-xcore-into-mainboard/_huca419582850eab59ed3cc66a984d4873_2579551_88f371cde38e0342b596ed3d1b7a6269.jpg"
alt="Step 2 - Lock the tabs on the left and right of the board"
title="Step 2 - Lock the tabs on the left and right of the board">
&lt;span title="Step 2 - Lock the tabs on the left and right of the board">Step 2 - Lock the tabs on the left and right of the board&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-mainboard/images/insert-xcore-into-mainboard/Step%203%20-%20fix%20the%20core%20using%20screws_hu9b5852c29b80039105f3fad5bfdfcc42_1601654_1600x1600_fit_q99_catmullrom.jpg" title="Step 3 - fix the core using screws" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-mainboard/images/insert-xcore-into-mainboard/Step%203%20-%20fix%20the%20core%20using%20screws_hu9b5852c29b80039105f3fad5bfdfcc42_1601654_400x400_fill_q95_catmullrom_smart1.jpg"
alt="Step 3 - fix the core using screws"
title="Step 3 - fix the core using screws">
&lt;span title="Step 3 - fix the core using screws">Step 3 - fix the core using screws&lt;/span>
&lt;/a>
&lt;/li>
&lt;/ul>
&lt;p>Follow these steps to insert the xCore into the mainboard:&lt;/p>
&lt;ol>
&lt;li>Insert the xCore board into the slot on the mainboard. It is approximately a 45 degree angle.&lt;/li>
&lt;li>Push the board down until it is flat with the mainboard. Make sure the arms on the side engage with the xCore.&lt;/li>
&lt;li>Use two screws to secure the xCore board to the mainboard. &lt;strong>Don&amp;rsquo;t put spacers or anything, otherwise the mainboard will not fit into the mower (at least for the YardForce Classic 500).&lt;/strong>&lt;/li>
&lt;/ol>
&lt;h2 id="step-234-insert-xescs-and-gps-into-the-mainboard">Step 2.3.4: Insert xESCs and GPS into the Mainboard&lt;/h2>
&lt;p>Finally, we can insert the remaining modules into the mainboard.&lt;/p>
&lt;p>Match the pins of the xESCs as well as the GPS board to the corresponding pins on the mainboard. Don&amp;rsquo;t worry if some of the ESC pins don&amp;rsquo;t have mating connectors, they are only used for initial firmware upload after the boards are manufactured.&lt;/p>
&lt;p>The resulting board will look similar to this (example shows a YardForce mainboard):
&lt;img src="images/finished-mainboard.jpg" alt="Finished Mainboard">&lt;/p>
&lt;h2 id="step-235-done-">Step 2.3.5: Done 🎉&lt;/h2>
&lt;p>You have now finished the preparation of the mainboard. You can now proceed with the &lt;a href="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/">mower-specific guide&lt;/a>
.&lt;/p></description></item><item><title>Docs: Record Areas</title><link>https://openmower.de/archive/v1.2.0/docs/knowledge-base/record-areas/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/knowledge-base/record-areas/</guid><description>
&lt;p>In this section, we finally drive the robot around and test if everything works as expected. Then we will record a map, and you can see the magic happen.&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;ul>
&lt;li>A smartphone or PC (or a &lt;a href="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/using-a-gamepad/">USB gamepad&lt;/a>
)&lt;/li>
&lt;li>Modified robot connected to your network&lt;/li>
&lt;li>OpenMower software running on the robot&lt;/li>
&lt;li>Docking station powered up&lt;/li>
&lt;li>Mower fully charged&lt;/li>
&lt;/ul>
&lt;h2 id="step-41-check-the-gps">Step 4.1: Check the GPS&lt;/h2>
&lt;p>&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/record-areas//images/gps_quality_indicator.jpg" alt="GPS Quality Indicator">&lt;/p>
&lt;p>For this step, put the mower into the docking station and turn it on. It should boot up and get to a solid green status LED.&lt;/p>
&lt;p>It is important that the mower is out in the open for the RTK GPS to work. Don&amp;rsquo;t try this indoors and don&amp;rsquo;t cover the mower.&lt;/p>
&lt;p>Open the OpenMower web app with any device by opening a browser and going to the following URL: &lt;a href="http://openmower.local:8080/" target="_blank" rel="noopener">&lt;code>http://openmower.local:8080&lt;/code>&lt;/a>
or &lt;code>http://&amp;lt;your-openmower-IP&amp;gt;:8080&lt;/code>.&lt;/p>
&lt;p>Wait for the GPS to find a position. This might take some time (up to 30 minutes).&lt;/p>
&lt;p>You can see the current GPS quality in the Open Mower app as shown in the graphic above.&lt;/p>
&lt;p>&lt;strong>You need to have RTK Fixed&lt;/strong> for the following to work. If you don&amp;rsquo;t get a good GPS fix, you will need to check your RTK setup and configuration.&lt;/p>
&lt;h2 id="step-42-initialize-the-orientation">Step 4.2: Initialize the Orientation&lt;/h2>
&lt;p>In addition to the position, the robot also needs to know its orientation. Since we are not using a compass, the robot&amp;rsquo;s orientation is derived from its movement.
In order to initialize the orientation, you need to drive the robot.&lt;/p>
&lt;p>You can either use the on-screen joystick in the Open Mower App or a &lt;a href="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/using-a-gamepad/">gamepad connected via USB&lt;/a>
(hold the A button) to drive the robot.&lt;/p>
&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Warning&lt;/h4>
Don&amp;rsquo;t pick up the mower or the orientation will be lost again!
&lt;/div>
&lt;p>Now drive the mower for at least 50m, do some straight lines and some figure eight patterns. Currently, the robot does not know the quality of its orientation estimate, but you can judge by driving and looking at the app.&lt;/p>
&lt;p>The orientation is initialized correctly if:&lt;/p>
&lt;ul>
&lt;li>When driving a straight line, the visualization also drives a straight line (no jumps)&lt;/li>
&lt;li>When rotating in place, the visualization stays in place and doesn&amp;rsquo;t jump&lt;/li>
&lt;/ul>
&lt;h2 id="step-43-record-a-simple-map">Step 4.3: Record a Simple Map&lt;/h2>
&lt;p>In this step, we will record a simple map. Keep it simple for the first tests and record your map as soon as you&amp;rsquo;re confident that everything works as expected.&lt;/p>
&lt;p>The map for the mower consists of three parts: the &lt;strong>docking position&lt;/strong>, at least one &lt;strong>mowing area&lt;/strong> and optionally &lt;strong>navigation areas&lt;/strong>.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Mowing Areas&lt;/strong> are the areas which will be mowed. Each mowing area has a single outline and optional areas to exclude (e.g. static obstacles).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Docking Position&lt;/strong> is the position and orientation of your docking station. It needs to be close to a mowing area or navigation area. This is needed for the robot to find its way to the docking station.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Navigation Areas&lt;/strong> are areas similar to mowing areas (they consist of an outline and optionally exclusions). The mower is allowed to drive in these areas, but &lt;strong>won&amp;rsquo;t mow&lt;/strong>. Use these areas to connect mowing areas. Also, if your docking station is not close to a mowing area, you can use a navigation area to allow the robot to drive to the docking station.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>Now that the robot knows where it is located, and you know which areas we need to record, start recording your first map. In the following picture, you can see an example.&lt;/p>
&lt;h3 id="record-outline">Record Outline&lt;/h3>
&lt;p>&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/record-areas//images/record_outline.jpg" alt="Record Outline">&lt;/p>
&lt;ul>
&lt;li>Drive the robot to the outline. Make sure that the robot is facing in &lt;strong>counterclockwise direction&lt;/strong>.&lt;/li>
&lt;li>Start the recording by pressing &lt;strong>Start Recording&lt;/strong>.&lt;/li>
&lt;li>Drive around the mowing area. Make sure that the GPS position stays fixed at all times.&lt;/li>
&lt;li>Stop the recording using &lt;strong>Stop Recording&lt;/strong>.&lt;/li>
&lt;li>The outline should now turn green. This means it&amp;rsquo;s done recording, and you can move on to recording exclusions.&lt;/li>
&lt;/ul>
&lt;h3 id="optional-record-exclusions">Optional: Record Exclusions&lt;/h3>
&lt;p>&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/record-areas//images/record_obstacle.jpg" alt="Record Obstacle">&lt;/p>
&lt;p>If your area has zones you want to exclude (e.g. static obstacles), you can record them like this:&lt;/p>
&lt;ul>
&lt;li>Drive the robot to the edge of the exclusion zone. Make sure that the robot is facing in &lt;strong>clockwise direction&lt;/strong>.&lt;/li>
&lt;li>Start the recording by pressing &lt;strong>Start Recording&lt;/strong>.&lt;/li>
&lt;li>Drive around the area to exclude. Make sure that the GPS position stays fixed at all times.&lt;/li>
&lt;li>Stop the recording using &lt;strong>Stop Recording&lt;/strong>.&lt;/li>
&lt;li>The outline should now turn red. This means it&amp;rsquo;s done recording, and you can move on to recording more exclusions.&lt;/li>
&lt;/ul>
&lt;h3 id="save-area">Save Area&lt;/h3>
&lt;p>&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/record-areas//images/save_mowing_area.jpg" alt="Save Area">&lt;/p>
&lt;p>If you are happy with your recording, you can save the area. In order to do this, click the &lt;strong>Finish Area&lt;/strong> button. A dialog will appear asking if you want to save the area as mowing or navigation area. Alternatively, you can also discard the recording.&lt;/p>
&lt;p>As soon as the area is saved, the area will turn solid. Mowing areas will be displayed in green, navigation areas will be shown in white.&lt;/p>
&lt;h3 id="record-docking-position">Record Docking Position&lt;/h3>
&lt;p>&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/record-areas//images/record_docking_position.jpg" alt="Record Docking Position">&lt;/p>
&lt;p>In order to record the docking position, do the following:&lt;/p>
&lt;ul>
&lt;li>Drive to a location about 2 m in front of your docking station.&lt;/li>
&lt;li>Make sure you have a GPS fix and press the &lt;strong>Record Docking&lt;/strong> button.&lt;/li>
&lt;li>Now drive close to the docking station. The front wheels of the robot should be at the edge of the docking station. &lt;strong>Don&amp;rsquo;t fully drive into the docking station!&lt;/strong>.&lt;/li>
&lt;li>Make sure you have a GPS fix and press the &lt;strong>Record Docking&lt;/strong> button.&lt;/li>
&lt;li>The app should move the &lt;strong>home&lt;/strong> icon to your current location. Now you can fully drive into the docking station.&lt;/li>
&lt;/ul>
&lt;h3 id="finish-recording">Finish Recording&lt;/h3>
&lt;p>&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/record-areas//images/start_mowing.jpg" alt="Start Mowing">&lt;/p>
&lt;p>Finish the process by pressing &lt;strong>Exit Recording&lt;/strong>. Now the mower should go to &lt;strong>IDLE&lt;/strong> mode. You should be able to start mowing by pressing the &lt;strong>Start&lt;/strong> button. The mower will undock, wait for GPS and mow the area.&lt;/p></description></item><item><title>Docs: Step 4: Record Areas &amp; Use it</title><link>https://openmower.de/archive/v1.2.0/docs/step-by-step/4-record-areas-and-use-it/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/step-by-step/4-record-areas-and-use-it/</guid><description>
&lt;p>In this section, we finally drive the robot around and test if everything works as expected. Then we will record a map, and you can see the magic happen.&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;ul>
&lt;li>A smartphone or PC (or a &lt;a href="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/using-a-gamepad/">USB gamepad&lt;/a>
)&lt;/li>
&lt;li>Modified robot connected to your network&lt;/li>
&lt;li>OpenMower software running on the robot&lt;/li>
&lt;li>Docking station powered up&lt;/li>
&lt;li>Mower fully charged&lt;/li>
&lt;/ul>
&lt;h2 id="step-41-check-the-gps">Step 4.1: Check the GPS&lt;/h2>
&lt;p>&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/record-areas//images/gps_quality_indicator.jpg" alt="GPS Quality Indicator">&lt;/p>
&lt;p>For this step, put the mower into the docking station and turn it on. It should boot up and get to a solid green status LED.&lt;/p>
&lt;p>It is important that the mower is out in the open for the RTK GPS to work. Don&amp;rsquo;t try this indoors and don&amp;rsquo;t cover the mower.&lt;/p>
&lt;p>Open the OpenMower web app with any device by opening a browser and going to the following URL: &lt;a href="http://openmower.local:8080/" target="_blank" rel="noopener">&lt;code>http://openmower.local:8080&lt;/code>&lt;/a>
or &lt;code>http://&amp;lt;your-openmower-IP&amp;gt;:8080&lt;/code>.&lt;/p>
&lt;p>Wait for the GPS to find a position. This might take some time (up to 30 minutes).&lt;/p>
&lt;p>You can see the current GPS quality in the Open Mower app as shown in the graphic above.&lt;/p>
&lt;p>&lt;strong>You need to have RTK Fixed&lt;/strong> for the following to work. If you don&amp;rsquo;t get a good GPS fix, you will need to check your RTK setup and configuration.&lt;/p>
&lt;h2 id="step-42-initialize-the-orientation">Step 4.2: Initialize the Orientation&lt;/h2>
&lt;p>In addition to the position, the robot also needs to know its orientation. Since we are not using a compass, the robot&amp;rsquo;s orientation is derived from its movement.
In order to initialize the orientation, you need to drive the robot.&lt;/p>
&lt;p>You can either use the on-screen joystick in the Open Mower App or a &lt;a href="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/using-a-gamepad/">gamepad connected via USB&lt;/a>
(hold the A button) to drive the robot.&lt;/p>
&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Warning&lt;/h4>
Don&amp;rsquo;t pick up the mower or the orientation will be lost again!
&lt;/div>
&lt;p>Now drive the mower for at least 50m, do some straight lines and some figure eight patterns. Currently, the robot does not know the quality of its orientation estimate, but you can judge by driving and looking at the app.&lt;/p>
&lt;p>The orientation is initialized correctly if:&lt;/p>
&lt;ul>
&lt;li>When driving a straight line, the visualization also drives a straight line (no jumps)&lt;/li>
&lt;li>When rotating in place, the visualization stays in place and doesn&amp;rsquo;t jump&lt;/li>
&lt;/ul>
&lt;h2 id="step-43-record-a-simple-map">Step 4.3: Record a Simple Map&lt;/h2>
&lt;p>In this step, we will record a simple map. Keep it simple for the first tests and record your map as soon as you&amp;rsquo;re confident that everything works as expected.&lt;/p>
&lt;p>The map for the mower consists of three parts: the &lt;strong>docking position&lt;/strong>, at least one &lt;strong>mowing area&lt;/strong> and optionally &lt;strong>navigation areas&lt;/strong>.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Mowing Areas&lt;/strong> are the areas which will be mowed. Each mowing area has a single outline and optional areas to exclude (e.g. static obstacles).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Docking Position&lt;/strong> is the position and orientation of your docking station. It needs to be close to a mowing area or navigation area. This is needed for the robot to find its way to the docking station.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Navigation Areas&lt;/strong> are areas similar to mowing areas (they consist of an outline and optionally exclusions). The mower is allowed to drive in these areas, but &lt;strong>won&amp;rsquo;t mow&lt;/strong>. Use these areas to connect mowing areas. Also, if your docking station is not close to a mowing area, you can use a navigation area to allow the robot to drive to the docking station.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>Now that the robot knows where it is located, and you know which areas we need to record, start recording your first map. In the following picture, you can see an example.&lt;/p>
&lt;h3 id="record-outline">Record Outline&lt;/h3>
&lt;p>&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/record-areas//images/record_outline.jpg" alt="Record Outline">&lt;/p>
&lt;ul>
&lt;li>Drive the robot to the outline. Make sure that the robot is facing in &lt;strong>counterclockwise direction&lt;/strong>.&lt;/li>
&lt;li>Start the recording by pressing &lt;strong>Start Recording&lt;/strong>.&lt;/li>
&lt;li>Drive around the mowing area. Make sure that the GPS position stays fixed at all times.&lt;/li>
&lt;li>Stop the recording using &lt;strong>Stop Recording&lt;/strong>.&lt;/li>
&lt;li>The outline should now turn green. This means it&amp;rsquo;s done recording, and you can move on to recording exclusions.&lt;/li>
&lt;/ul>
&lt;h3 id="optional-record-exclusions">Optional: Record Exclusions&lt;/h3>
&lt;p>&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/record-areas//images/record_obstacle.jpg" alt="Record Obstacle">&lt;/p>
&lt;p>If your area has zones you want to exclude (e.g. static obstacles), you can record them like this:&lt;/p>
&lt;ul>
&lt;li>Drive the robot to the edge of the exclusion zone. Make sure that the robot is facing in &lt;strong>clockwise direction&lt;/strong>.&lt;/li>
&lt;li>Start the recording by pressing &lt;strong>Start Recording&lt;/strong>.&lt;/li>
&lt;li>Drive around the area to exclude. Make sure that the GPS position stays fixed at all times.&lt;/li>
&lt;li>Stop the recording using &lt;strong>Stop Recording&lt;/strong>.&lt;/li>
&lt;li>The outline should now turn red. This means it&amp;rsquo;s done recording, and you can move on to recording more exclusions.&lt;/li>
&lt;/ul>
&lt;h3 id="save-area">Save Area&lt;/h3>
&lt;p>&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/record-areas//images/save_mowing_area.jpg" alt="Save Area">&lt;/p>
&lt;p>If you are happy with your recording, you can save the area. In order to do this, click the &lt;strong>Finish Area&lt;/strong> button. A dialog will appear asking if you want to save the area as mowing or navigation area. Alternatively, you can also discard the recording.&lt;/p>
&lt;p>As soon as the area is saved, the area will turn solid. Mowing areas will be displayed in green, navigation areas will be shown in white.&lt;/p>
&lt;h3 id="record-docking-position">Record Docking Position&lt;/h3>
&lt;p>&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/record-areas//images/record_docking_position.jpg" alt="Record Docking Position">&lt;/p>
&lt;p>In order to record the docking position, do the following:&lt;/p>
&lt;ul>
&lt;li>Drive to a location about 2 m in front of your docking station.&lt;/li>
&lt;li>Make sure you have a GPS fix and press the &lt;strong>Record Docking&lt;/strong> button.&lt;/li>
&lt;li>Now drive close to the docking station. The front wheels of the robot should be at the edge of the docking station. &lt;strong>Don&amp;rsquo;t fully drive into the docking station!&lt;/strong>.&lt;/li>
&lt;li>Make sure you have a GPS fix and press the &lt;strong>Record Docking&lt;/strong> button.&lt;/li>
&lt;li>The app should move the &lt;strong>home&lt;/strong> icon to your current location. Now you can fully drive into the docking station.&lt;/li>
&lt;/ul>
&lt;h3 id="finish-recording">Finish Recording&lt;/h3>
&lt;p>&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/record-areas//images/start_mowing.jpg" alt="Start Mowing">&lt;/p>
&lt;p>Finish the process by pressing &lt;strong>Exit Recording&lt;/strong>. Now the mower should go to &lt;strong>IDLE&lt;/strong> mode. You should be able to start mowing by pressing the &lt;strong>Start&lt;/strong> button. The mower will undock, wait for GPS and mow the area.&lt;/p></description></item><item><title>Docs: v1 Hardware Guide (Legacy)</title><link>https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500-b-v1-hardware/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/step-by-step/2-robot-modification/robot-specific-guides/yardforce-classic-500-b-v1-hardware/</guid><description>
&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">v1 Hardware Only!&lt;/h4>
&lt;p>Only follow the Docking and Robot Modification Guide from the old docs, you can use the current OpenMower OS!
You have &lt;strong>v1 hardware&lt;/strong>, if:&lt;/p>
&lt;ul>
&lt;li>You are using a full-size Raspberry Pi&lt;/li>
&lt;li>Your mainboard shows version &lt;strong>v0.xx&lt;/strong>&lt;/li>
&lt;/ul>
&lt;/div>
&lt;h3 id="the-v1-guide-is-herehttpsopenmowerdearchivev102docs">The v1 guide is &lt;a href="https://openmower.de/archive/v1.0.2/docs" target="_blank" rel="noopener">here&lt;/a>
.&lt;/h3></description></item><item><title>Docs: Managing ROS Parameters</title><link>https://openmower.de/archive/v1.2.0/docs/knowledge-base/configure-ros-parameters/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/knowledge-base/configure-ros-parameters/</guid><description>
&lt;h2 id="viewing-and-configuring-ros-parameters">Viewing and Configuring ROS Parameters&lt;/h2>
&lt;p>OpenMower is built on ROS, which means much of its behavior is controlled through parameters. Understanding how to inspect and modify these parameters gives you fine-grained control over your mower’s operation.&lt;/p>
&lt;h3 id="listing-all-parameters">Listing All Parameters&lt;/h3>
&lt;p>To see all currently active ROS parameters, open the OpenMower shell:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>openmower shell
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Then run:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>rosparam list
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This will display a full list of parameters currently loaded in the system. It’s a useful first step when debugging or trying to understand how your mower is configured.&lt;/p>
&lt;h3 id="overwriting-parameters">Overwriting Parameters&lt;/h3>
&lt;p>All parameters can be customized using the &lt;code>mower_params.yaml&lt;/code> configuration file. This file acts as the central place to override default values.&lt;/p>
&lt;p>The easiest way to edit it is with:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>openmower configure ros
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="example">Example&lt;/h3>
&lt;p>In this example we will be overwriting the speed parameter.&lt;/p>
&lt;h4 id="1-fetch-the-parameters-current-value">1. Fetch the Parameter&amp;rsquo;s current value&lt;/h4>
&lt;p>After discovering a parameter you want to edit using &lt;code>rosparam list&lt;/code>, you can get the value using &lt;code>rosparam get &amp;lt;parameter&amp;gt;&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>🚜 openmower@openmower-v2:~$ rosparam get /move_base_flex/FTCPlanner/speed_fast
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>0.4
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>In this case, our speed is currently at 0.4 m/sec for mowing&lt;/p>
&lt;h4 id="2-change-the-value-for-your-config">2. Change the value for your config&lt;/h4>
&lt;p>On the host system call &lt;code>openmower configure ros&lt;/code> and translate the parameter name to YAML.
This is done by replacing each &lt;code>/&lt;/code> into indentations (2x space).&lt;/p>
&lt;p>For our example it looks like this:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">move_base_flex&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">FTCPlanner&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">speed_fast&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.5&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="3-save-the-file-and-check-the-updated-value">3. Save the file and check the updated value&lt;/h4>
&lt;p>After saving the file, ROS is automatically restarted and you can check, if the value is now updated:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>🚜 openmower@openmower-v2:~$ rosparam get /move_base_flex/FTCPlanner/speed_fast
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>0.5
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>🎉 Done!&lt;/p>
&lt;h3 id="if-you-have-issues">If you have issues&lt;/h3>
&lt;p>If some parameter isn&amp;rsquo;t overriding correctly, make sure you are on the latest version of OpenMower. If it still doesn&amp;rsquo;t work ask on Discord.&lt;/p></description></item><item><title>Docs: Configuring GPIO Inputs</title><link>https://openmower.de/archive/v1.2.0/docs/knowledge-base/configure-gpio-inputs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/knowledge-base/configure-gpio-inputs/</guid><description>
&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>OpenMower supports configuring GPIO pins as digital inputs that can trigger emergency stops or other events. Common use cases include:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Wheel lift sensors&lt;/strong> — detect when the mower is lifted&lt;/li>
&lt;li>&lt;strong>Stop buttons&lt;/strong> — physical emergency stop buttons on top of the mower&lt;/li>
&lt;/ul>
&lt;h2 id="step-1-create-the-inputs-configuration-file">Step 1: Create the inputs configuration file&lt;/h2>
&lt;p>Create &lt;code>/home/openmower/params/inputs.yaml&lt;/code> with your GPIO input definitions:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">gpio&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>- &lt;span style="color:#204a87;font-weight:bold">name&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">Front left wheel lift&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">line&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">GPIO10&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">active&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">low&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">emergency&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">reason&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">lift&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">delay&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">2500&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>- &lt;span style="color:#204a87;font-weight:bold">name&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">Front right wheel lift&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">line&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">GPIO11&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">active&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">low&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">emergency&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">reason&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">lift&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">delay&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">2500&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>- &lt;span style="color:#204a87;font-weight:bold">name&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">Top stop button 1&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">line&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">GPIO12&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">active&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">low&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">emergency&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">reason&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">stop&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">delay&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">10&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>- &lt;span style="color:#204a87;font-weight:bold">name&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">Top stop button 2&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">line&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">GPIO13&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">active&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">low&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">emergency&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">reason&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">stop&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">delay&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">10&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="configuration-fields">Configuration fields&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Field&lt;/th>
&lt;th>Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>name&lt;/code>&lt;/td>
&lt;td>Human-readable label for the input&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>line&lt;/code>&lt;/td>
&lt;td>GPIO pin name (e.g. &lt;code>GPIO10&lt;/code>)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>active&lt;/code>&lt;/td>
&lt;td>Logic level that triggers the event — &lt;code>low&lt;/code> or &lt;code>high&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>emergency.reason&lt;/code>&lt;/td>
&lt;td>Emergency type — &lt;code>lift&lt;/code> for wheel lift, &lt;code>stop&lt;/code> for stop button&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>emergency.delay&lt;/code>&lt;/td>
&lt;td>Debounce/delay in milliseconds before the emergency is triggered&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="gpio-pin-mapping">GPIO Pin Mapping&lt;/h2>
&lt;p>The example config above uses GPIO10–GPIO13. Here is how those map to physical connectors on each board.&lt;/p>
&lt;h3 id="openmower-universal-board">OpenMower Universal Board&lt;/h3>
&lt;p>Orientation: looking at the board with the ethernet ports facing you.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Position&lt;/th>
&lt;th>GPIO&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Top left&lt;/td>
&lt;td>GPIO13&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Top right&lt;/td>
&lt;td>GPIO12&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Bottom right&lt;/td>
&lt;td>GPIO11&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Bottom left&lt;/td>
&lt;td>GPIO10&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="openmower-yardforce-board">OpenMower Yardforce Board&lt;/h3>
&lt;p>Orientation: looking at the board with the ethernet ports at the bottom left, pins sorted top to bottom.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Position&lt;/th>
&lt;th>GPIO&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>1st (topmost)&lt;/td>
&lt;td>GPIO10&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2nd&lt;/td>
&lt;td>GPIO11&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>3rd&lt;/td>
&lt;td>GPIO12&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>4th&lt;/td>
&lt;td>GPIO13&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="step-2-enable-the-input-service">Step 2: Enable the input service&lt;/h2>
&lt;p>Add the following to your &lt;code>mower_params.yaml&lt;/code> (or &lt;code>custom_params.yaml&lt;/code> for Universal board builds):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">ll&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">services&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">input&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">config_file&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">/data/params/inputs.yaml&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>To open the file for editing:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>openmower configure ros
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Path mapping on OSv2&lt;/h4>
On OSv2, &lt;code>/home/openmower/params&lt;/code> is mapped to &lt;code>/data/params&lt;/code> inside the container. If you are on a different setup, adjust the &lt;code>config_file&lt;/code> path accordingly.
&lt;/div>
&lt;h2 id="step-3-restart-openmower">Step 3: Restart OpenMower&lt;/h2>
&lt;p>After saving both files, restart the service to apply the changes:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>openmower restart
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Your GPIO inputs are now active and will trigger the configured emergency events when the specified logic level is detected.&lt;/p></description></item><item><title>Docs: Flashing the CM4 eMMC</title><link>https://openmower.de/archive/v1.2.0/docs/knowledge-base/flash-cm4-emmc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/knowledge-base/flash-cm4-emmc/</guid><description>
&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">CM4 with eMMC only&lt;/h4>
&lt;p>This guide applies &lt;strong>only to CM4 variants with onboard eMMC storage&lt;/strong>. The CM4 Lite variant has no eMMC — it uses a microSD card instead and does not require this process.&lt;/p>
&lt;p>Check your CM4 model number: variants with eMMC have the storage size in the name (e.g. CM4008032 = 32 GB eMMC). Lite variants are explicitly labelled &amp;ldquo;Lite&amp;rdquo; (e.g. CM4008000).&lt;/p>
&lt;/div>
&lt;p>The CM4 with eMMC has onboard flash storage instead of a microSD slot. To flash a new image, you need to put it into USB boot mode so it appears as a mass storage device on your computer.&lt;/p>
&lt;p>This guide covers the OpenMower-specific steps. For full reference, see the &lt;a href="https://www.raspberrypi.com/documentation/computers/compute-module.html#flash-compute-module-emmc" target="_blank" rel="noopener">official Raspberry Pi documentation&lt;/a>
.&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;ul>
&lt;li>A host computer (Linux, Windows, or macOS)&lt;/li>
&lt;li>A micro USB cable (connected to the USB port on the xCore board)&lt;/li>
&lt;li>The OS image you want to flash (e.g. OpenMower OS)&lt;/li>
&lt;/ul>
&lt;h2 id="step-1-enter-usb-boot-mode">Step 1: Enter USB boot mode&lt;/h2>
&lt;p>The xCore board has an &lt;strong>Rpi Boot&lt;/strong> button (left of the two buttons, label printed below the CM4 slot).&lt;/p>
&lt;p>&lt;img src="images/rpi-boot-button.png" alt="xCore board showing the Rpi Boot button location">&lt;/p>
&lt;ol>
&lt;li>Hold the &lt;strong>Rpi Boot&lt;/strong> button.&lt;/li>
&lt;li>While holding it, connect power to the xCore board (or plug in the micro USB cable to your host computer).&lt;/li>
&lt;li>Release the button once powered.&lt;/li>
&lt;/ol>
&lt;p>The CM4 is now in USB boot mode.&lt;/p>
&lt;h2 id="step-2-install-rpiboot-on-your-host-computer">Step 2: Install rpiboot on your host computer&lt;/h2>
&lt;ul class="nav nav-tabs" id="tabs-1" role="tablist">
&lt;li class="nav-item">
&lt;a class="nav-link active"
id="tabs-01-00-tab" data-toggle="tab" href="#tabs-01-00" role="tab"
aria-controls="tabs-01-00" aria-selected="false">
Linux
&lt;/a>
&lt;/li>&lt;li class="nav-item">
&lt;a class="nav-link"
id="tabs-01-01-tab" data-toggle="tab" href="#tabs-01-01" role="tab"
aria-controls="tabs-01-01" aria-selected="false">
Windows
&lt;/a>
&lt;/li>&lt;li class="nav-item">
&lt;a class="nav-link"
id="tabs-01-02-tab" data-toggle="tab" href="#tabs-01-02" role="tab"
aria-controls="tabs-01-02" aria-selected="false">
macOS
&lt;/a>
&lt;/li>
&lt;/ul>
&lt;div class="tab-content" id="tabs-1-content">
&lt;div class="tab-body tab-pane fade show active"
id="tabs-01-00" role="tabpanel" aria-labelled-by="tabs-01-00-tab">
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>sudo apt install rpiboot
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo rpiboot
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;div class="tab-body tab-pane fade"
id="tabs-01-01" role="tabpanel" aria-labelled-by="tabs-01-01-tab">
&lt;ol>
&lt;li>Download and run the installer from the &lt;a href="https://github.com/raspberrypi/usbboot/releases" target="_blank" rel="noopener">usbboot releases page&lt;/a>
.&lt;/li>
&lt;li>Reboot your computer after installation.&lt;/li>
&lt;li>With the CM4 in USB boot mode, open &lt;strong>Start → rpiboot - Mass Storage Gadget&lt;/strong>.&lt;/li>
&lt;/ol>
&lt;/div>
&lt;div class="tab-body tab-pane fade"
id="tabs-01-02" role="tabpanel" aria-labelled-by="tabs-01-02-tab">
&lt;p>Build rpiboot from source, then run:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>rpiboot -d mass-storage-gadget64
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>See the &lt;a href="https://github.com/raspberrypi/usbboot" target="_blank" rel="noopener">usbboot repository&lt;/a>
for build instructions.&lt;/p>
&lt;/div>
&lt;/div>
&lt;p>Within a few seconds the CM4&amp;rsquo;s eMMC will appear as a USB mass storage device on your computer.&lt;/p>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Tip&lt;/h4>
If the device is not recognised, avoid USB hubs — connect the micro USB cable directly to your computer.
&lt;/div>
&lt;h2 id="step-3-flash-the-image">Step 3: Flash the image&lt;/h2>
&lt;p>Use &lt;strong>Raspberry Pi Imager&lt;/strong> to write your OS image to the eMMC device. Select the eMMC as the target storage — it will appear like any other USB drive.&lt;/p>
&lt;p>Alternatively, use &lt;code>dd&lt;/code> on Linux/macOS:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>sudo dd &lt;span style="color:#204a87;font-weight:bold">if&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>your-image.img &lt;span style="color:#000">of&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>/dev/sdX &lt;span style="color:#000">bs&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>4MiB &lt;span style="color:#000">status&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>progress &lt;span style="color:#000">oflag&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>sync
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Replace &lt;code>/dev/sdX&lt;/code> with the actual device path of the eMMC. Double-check this before running.&lt;/p>
&lt;h2 id="step-4-boot-from-emmc">Step 4: Boot from eMMC&lt;/h2>
&lt;p>Once flashing is complete, disconnect the micro USB cable and power-cycle the board. The CM4 will boot from the newly flashed image.&lt;/p></description></item><item><title>Docs: Creating a Debug Recording</title><link>https://openmower.de/archive/v1.2.0/docs/knowledge-base/debug-recording/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/knowledge-base/debug-recording/</guid><description>
&lt;p>When investigating issues — especially positioning problems — a rosbag recording gives developers a full snapshot of sensor data to analyse. This guide walks you through recording one and retrieving it from your mower.&lt;/p>
&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Privacy notice&lt;/h4>
A rosbag records raw sensor data, which includes the &lt;strong>GPS position of your mower&lt;/strong>. By sharing the file you disclose the physical location of your garden. Only share it with people you trust.
&lt;/div>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;ul>
&lt;li>OpenMower is running and the mower has a GPS fix (green GPS icon in the app)&lt;/li>
&lt;li>You can access the mower via SSH or the web terminal&lt;/li>
&lt;/ul>
&lt;h2 id="step-1-start-the-recording">Step 1: Start the recording&lt;/h2>
&lt;p>Connect to your mower via SSH or the web terminal, then enter the ROS shell:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>openmower shell
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Once inside, navigate to the recordings directory and start recording all topics:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87">cd&lt;/span> /data/recordings
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>rosbag record -a
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This records &lt;strong>all&lt;/strong> active ROS topics. Leave the terminal open — the recording runs until you stop it with &lt;kbd>Ctrl&lt;/kbd>+&lt;kbd>C&lt;/kbd>.&lt;/p>
&lt;h2 id="step-2-enter-area-recording-mode">Step 2: Enter area recording mode&lt;/h2>
&lt;p>Open the OpenMower app and activate &lt;strong>area recording mode&lt;/strong> — the same mode you use when recording mowing areas. This ensures all relevant topics (GPS, IMU, wheel odometry) are actively publishing at full rate.&lt;/p>
&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">GPS fix required&lt;/h4>
Make sure the GPS icon in the app is &lt;strong>green&lt;/strong> before driving. Recording without a fix produces data that cannot be used for analysis.
&lt;/div>
&lt;h2 id="step-3-drive-the-test-patterns">Step 3: Drive the test patterns&lt;/h2>
&lt;p>Drive the mower through the following patterns. Each one exercises a different aspect of positioning:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Pattern&lt;/th>
&lt;th>Purpose&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Straight lines&lt;/td>
&lt;td>Linear odometry and GPS consistency&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Figure-8&lt;/td>
&lt;td>Combined turning and straight-line tracking&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Rotate on the spot (clockwise)&lt;/td>
&lt;td>Yaw estimation, IMU vs. GPS heading&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Rotate on the spot (counter-clockwise)&lt;/td>
&lt;td>Same, opposite direction&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>A minute or two of each pattern is sufficient. You don&amp;rsquo;t need a large area — a small open patch of lawn works fine.&lt;/p>
&lt;h2 id="step-4-stop-the-recording">Step 4: Stop the recording&lt;/h2>
&lt;p>Once done, go back to the terminal and press &lt;kbd>Ctrl&lt;/kbd>+&lt;kbd>C&lt;/kbd>, then type &lt;code>exit&lt;/code> to leave the ROS shell.&lt;/p>
&lt;p>The &lt;code>.bag&lt;/code> file is now in &lt;code>~/recordings/&lt;/code> on the mower. List the directory to find your filename:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>ls -lh ~/recordings/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The filename includes a timestamp, e.g. &lt;code>2024-06-01-12-34-56.bag&lt;/code>.&lt;/p>
&lt;h2 id="step-5-retrieve-the-file">Step 5: Retrieve the file&lt;/h2>
&lt;p>Copy the &lt;code>.bag&lt;/code> file from &lt;code>~/recordings/&lt;/code> on the mower to your computer.&lt;/p>
&lt;ul class="nav nav-tabs" id="tabs-2" role="tablist">
&lt;li class="nav-item">
&lt;a class="nav-link active"
id="tabs-02-00-tab" data-toggle="tab" href="#tabs-02-00" role="tab"
aria-controls="tabs-02-00" aria-selected="false">
Linux / macOS
&lt;/a>
&lt;/li>&lt;li class="nav-item">
&lt;a class="nav-link"
id="tabs-02-01-tab" data-toggle="tab" href="#tabs-02-01" role="tab"
aria-controls="tabs-02-01" aria-selected="false">
Windows
&lt;/a>
&lt;/li>
&lt;/ul>
&lt;div class="tab-content" id="tabs-2-content">
&lt;div class="tab-body tab-pane fade show active"
id="tabs-02-00" role="tabpanel" aria-labelled-by="tabs-02-00-tab">
&lt;p>Use &lt;code>scp&lt;/code> from your local terminal:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>scp openmower@&amp;lt;mower-ip&amp;gt;:recordings/&amp;lt;filename&amp;gt;.bag .
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Replace &lt;code>&amp;lt;mower-ip&amp;gt;&lt;/code> with your mower&amp;rsquo;s IP address and &lt;code>&amp;lt;filename&amp;gt;&lt;/code> with the actual filename. The file downloads to your current directory.&lt;/p>
&lt;/div>
&lt;div class="tab-body tab-pane fade"
id="tabs-02-01" role="tabpanel" aria-labelled-by="tabs-02-01-tab">
&lt;p>&lt;strong>Windows 10 (build 1809 or later) and Windows 11&lt;/strong> include an OpenSSH client. Open &lt;strong>Command Prompt&lt;/strong> or &lt;strong>PowerShell&lt;/strong> and run:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bat" data-lang="bat">&lt;span style="display:flex;">&lt;span>scp openmower@&lt;span style="color:#000;font-weight:bold">&amp;lt;&lt;/span>mower-ip&lt;span style="color:#000;font-weight:bold">&amp;gt;&lt;/span>:recordings/&lt;span style="color:#000;font-weight:bold">&amp;lt;&lt;/span>filename&lt;span style="color:#000;font-weight:bold">&amp;gt;&lt;/span>.bag .
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>On &lt;strong>older Windows versions&lt;/strong>, use a graphical SFTP client instead:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://winscp.net" target="_blank" rel="noopener">WinSCP&lt;/a>
&lt;/strong> — free, open source&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://cyberduck.io" target="_blank" rel="noopener">Cyberduck&lt;/a>
&lt;/strong> — free, cross-platform&lt;/li>
&lt;/ul>
&lt;p>Connect with protocol &lt;strong>SFTP&lt;/strong>, host &lt;code>&amp;lt;mower-ip&amp;gt;&lt;/code>, user &lt;code>openmower&lt;/code>, and navigate to &lt;code>/home/openmower/recordings/&lt;/code> to download the file.&lt;/p>
&lt;/div>
&lt;/div>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Tip&lt;/h4>
&lt;code>.bag&lt;/code> files compress very well. Zipping before sharing can reduce the file size significantly:
&lt;/div>
&lt;p>Once you have the file, share it with whoever is helping you debug — via Discord, a file sharing service, or any other method that works in context.&lt;/p>
&lt;h2 id="step-6-clean-up">Step 6: Clean up&lt;/h2>
&lt;p>Once debugging is done, delete the recordings from the mower to free up disk space:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"># delete a specific file&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>rm ~/recordings/&amp;lt;filename&amp;gt;.bag
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"># delete all recordings&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>rm ~/recordings/*.bag
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Docs: Hardware Versions / Known Issues</title><link>https://openmower.de/archive/v1.2.0/docs/knowledge-base/hardware-versions/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/knowledge-base/hardware-versions/</guid><description>
&lt;div class="toc">
&lt;h2>Table of Contents&lt;/h2>
&lt;ul>
&lt;nav id="TableOfContents">
&lt;ul>
&lt;li>&lt;a href="#0130---red">0.13.0 - Red&lt;/a>
&lt;ul>
&lt;li>&lt;a href="#notable-changes">Notable changes&lt;/a>&lt;/li>
&lt;li>&lt;a href="#known-issues">Known issues&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;ul>
&lt;li>&lt;a href="#0130---red-1">0.13.0 - Red&lt;/a>
&lt;ul>
&lt;li>&lt;a href="#notable-changes-1">Notable changes&lt;/a>&lt;/li>
&lt;li>&lt;a href="#known-issues-1">Known issues&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="#0120---black">0.12.0 - Black&lt;/a>
&lt;ul>
&lt;li>&lt;a href="#notable-changes-2">Notable changes&lt;/a>&lt;/li>
&lt;li>&lt;a href="#known-issues-2">Known issues&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="#0110---purple">0.11.0 - Purple&lt;/a>
&lt;ul>
&lt;li>&lt;a href="#notable-changes-3">Notable changes&lt;/a>&lt;/li>
&lt;li>&lt;a href="#known-issues-3">Known issues&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="#0100---green">0.10.0 - Green&lt;/a>
&lt;ul>
&lt;li>&lt;a href="#notable-changes-4">Notable changes&lt;/a>&lt;/li>
&lt;li>&lt;a href="#known-issues-4">Known issues&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="#093---also-green">0.9.3 - Also Green&lt;/a>&lt;/li>
&lt;/ul>
&lt;/nav>
&lt;/ul>
&lt;/div>
&lt;h1 id="current-hardware-v2-hardware-platform">Current Hardware (v2 Hardware Platform)&lt;/h1>
&lt;p>For v2 Hardware Platform, please check the corresponding repository for changes and known issues:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>YardForce:&lt;/strong> &lt;a href="https://github.com/xtech/hw-openmower-yardforce" target="_blank" rel="noopener">https://github.com/xtech/hw-openmower-yardforce&lt;/a>
&lt;/li>
&lt;li>&lt;strong>SABO / John Deere:&lt;/strong> &lt;a href="https://github.com/xtech/hw-openmower-sabo" target="_blank" rel="noopener">https://github.com/xtech/hw-openmower-sabo&lt;/a>
&lt;/li>
&lt;li>&lt;strong>Universal:&lt;/strong> &lt;a href="https://github.com/xtech/hw-openmower-universal" target="_blank" rel="noopener">https://github.com/xtech/hw-openmower-universal&lt;/a>
&lt;/li>
&lt;/ul>
&lt;h2 id="0130---red">0.13.0 - Red&lt;/h2>
&lt;p>
&lt;figure class="card rounded p-2 td-post-card mb-4 mt-4" style="max-width: 410px">
&lt;img class="card-img-top" src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/hardware-versions/0_13_b_hud8caa6e944d50688b274f3b562da2ed7_107995_400x400_fill_q99_catmullrom_smart1.jpg" width="400" height="400">
&lt;/figure>
&lt;figure class="card rounded p-2 td-post-card mb-4 mt-4" style="max-width: 410px">
&lt;img class="card-img-top" src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/hardware-versions/0_13_a_hucf7ddfef5d0ec1d511b55a6238cecbdb_1194312_400x400_fill_q99_catmullrom_smart1.jpg" width="400" height="400">
&lt;/figure>
&lt;/p>
&lt;h3 id="notable-changes">Notable changes&lt;/h3>
&lt;ul>
&lt;li>Custom CoverUI added to the kit&lt;/li>
&lt;li>Dropped support for dfPlayer sound module&lt;/li>
&lt;/ul>
&lt;h3 id="known-issues">Known issues&lt;/h3>
&lt;ul>
&lt;li>2.5mm screws were missing (used to fasten RPi4). Affect kits shipped before June'23.&lt;/li>
&lt;li>The first batch of 0.13 boards was mistakenly labeled &amp;ldquo;latest&amp;rdquo;. No action needed.&lt;/li>
&lt;li>&lt;a href="https://openmower.de/archive/v1.0.2/docs/versions/errata/outdated-firmware/" target="_blank" rel="noopener">Outdated Firmware&lt;/a>
. Affect kits shipped before May'23.&lt;/li>
&lt;li>&lt;a href="https://openmower.de/archive/v1.0.2/docs/versions/errata/ic2-is-wrong/" target="_blank" rel="noopener">IC2 chip is wrong&lt;/a>
. Affect kits shipped before May'23.&lt;/li>
&lt;li>&lt;a href="https://openmower.de/archive/v1.0.2/docs/versions/errata/wrong-rain-sensor-cable/" target="_blank" rel="noopener">rain sensor cable is female, but needs to be male&lt;/a>
. Affect kits shipped before May'23.&lt;/li>
&lt;/ul>
&lt;h1 id="legacy-hardware-v1-hardware-platform">Legacy Hardware (v1 Hardware Platform)&lt;/h1>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Information&lt;/h4>
V1 hardware used a completely different architecture to v2 hardware which makes it hard to port to new mower models.
If you currently own a v1 hardware kit, this is nothing to worry, the kit will continue to work with your mower,
there is no real benefit of upgrading it to a v2 hardware kit. For new builds, the v2 hardware platform is recommended.
&lt;/div>
&lt;h2 id="0130---red-1">0.13.0 - Red&lt;/h2>
&lt;p>
&lt;figure class="card rounded p-2 td-post-card mb-4 mt-4" style="max-width: 410px">
&lt;img class="card-img-top" src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/hardware-versions/0_13_b_hud8caa6e944d50688b274f3b562da2ed7_107995_400x400_fill_q99_catmullrom_smart1.jpg" width="400" height="400">
&lt;/figure>
&lt;figure class="card rounded p-2 td-post-card mb-4 mt-4" style="max-width: 410px">
&lt;img class="card-img-top" src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/hardware-versions/0_13_a_hucf7ddfef5d0ec1d511b55a6238cecbdb_1194312_400x400_fill_q99_catmullrom_smart1.jpg" width="400" height="400">
&lt;/figure>
&lt;/p>
&lt;h3 id="notable-changes-1">Notable changes&lt;/h3>
&lt;ul>
&lt;li>Custom CoverUI added to the kit&lt;/li>
&lt;li>Dropped support for dfPlayer sound module&lt;/li>
&lt;/ul>
&lt;h3 id="known-issues-1">Known issues&lt;/h3>
&lt;ul>
&lt;li>2.5mm screws were missing (used to fasten RPi4). Affect kits shipped before June'23.&lt;/li>
&lt;li>The first batch of 0.13 boards was mistakenly labeled &amp;ldquo;latest&amp;rdquo;. No action needed.&lt;/li>
&lt;li>&lt;a href="https://openmower.de/archive/v1.0.2/docs/versions/errata/outdated-firmware/" target="_blank" rel="noopener">Outdated Firmware&lt;/a>
. Affect kits shipped before May'23.&lt;/li>
&lt;li>&lt;a href="https://openmower.de/archive/v1.0.2/docs/versions/errata/ic2-is-wrong/" target="_blank" rel="noopener">IC2 chip is wrong&lt;/a>
. Affect kits shipped before May'23.&lt;/li>
&lt;li>&lt;a href="https://openmower.de/archive/v1.0.2/docs/versions/errata/wrong-rain-sensor-cable/" target="_blank" rel="noopener">rain sensor cable is female, but needs to be male&lt;/a>
. Affect kits shipped before May'23.&lt;/li>
&lt;/ul>
&lt;h2 id="0120---black">0.12.0 - Black&lt;/h2>
&lt;figure class="card rounded p-2 td-post-card mb-4 mt-4" style="max-width: 410px">
&lt;img class="card-img-top" src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/hardware-versions/0_12_x_hu852cc7bf07bde5f673cb173046f198e3_105342_400x0_resize_q99_catmullrom.jpg" width="400" height="300">
&lt;/figure>
&lt;h3 id="notable-changes-2">Notable changes&lt;/h3>
&lt;ul>
&lt;li>IMU: LSM6DSO instead of WT901&lt;/li>
&lt;/ul>
&lt;h3 id="known-issues-2">Known issues&lt;/h3>
&lt;ul>
&lt;li>SPI tracks from Pico were misplaced, already fixed in firmware. No action needed.&lt;/li>
&lt;li>&lt;a href="https://openmower.de/archive/v1.0.2/docs/versions/errata/outdated-firmware/" target="_blank" rel="noopener">Outdated Firmware&lt;/a>
&lt;/li>
&lt;li>&lt;a href="https://openmower.de/archive/v1.0.2/docs/versions/errata/ic2-is-wrong/" target="_blank" rel="noopener">IC2 chip is wrong&lt;/a>
&lt;/li>
&lt;li>&lt;a href="https://openmower.de/archive/v1.0.2/docs/versions/errata/wrong-rain-sensor-cable/" target="_blank" rel="noopener">rain sensor cable is female, but needs to be male&lt;/a>
&lt;/li>
&lt;/ul>
&lt;h2 id="0110---purple">0.11.0 - Purple&lt;/h2>
&lt;figure class="card rounded p-2 td-post-card mb-4 mt-4" style="max-width: 410px">
&lt;img class="card-img-top" src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/hardware-versions/0_11_x_hud065a97029026eee637f866edb8cab94_105715_400x0_resize_q99_catmullrom.jpg" width="400" height="300">
&lt;/figure>
&lt;h3 id="notable-changes-3">Notable changes&lt;/h3>
&lt;ul>
&lt;li>Connected WT901 via I2C freeing pins for dfPlayer&lt;/li>
&lt;li>Upgraded dock station PCB with extra holes and terminals (red)&lt;/li>
&lt;/ul>
&lt;h3 id="known-issues-3">Known issues&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://openmower.de/archive/v1.0.2/docs/versions/errata/ic2-is-wrong/" target="_blank" rel="noopener">IC2 chip is wrong&lt;/a>
&lt;/li>
&lt;/ul>
&lt;h2 id="0100---green">0.10.0 - Green&lt;/h2>
&lt;figure class="card rounded p-2 td-post-card mb-4 mt-4" style="max-width: 410px">
&lt;img class="card-img-top" src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/hardware-versions/0_10_x_hu24d4ab11dbc115a5038818757321b1b6_201660_400x0_resize_q99_catmullrom.jpg" width="400" height="400">
&lt;/figure>
&lt;h3 id="notable-changes-4">Notable changes&lt;/h3>
&lt;ul>
&lt;li>Added dock station PCB (green)&lt;/li>
&lt;/ul>
&lt;h3 id="known-issues-4">Known issues&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://openmower.de/archive/v1.0.2/docs/versions/errata/ic2-is-wrong/" target="_blank" rel="noopener">IC2 chip is wrong&lt;/a>
&lt;/li>
&lt;/ul>
&lt;h2 id="093---also-green">0.9.3 - Also Green&lt;/h2>
&lt;p>
&lt;figure class="card rounded p-2 td-post-card mb-4 mt-4" style="max-width: 410px">
&lt;img class="card-img-top" src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/hardware-versions/0_9_3_hu06b4bcf8a4cb53a2adcbd38b3d75b4eb_245928_400x0_resize_q99_catmullrom.jpg" width="400" height="300">
&lt;/figure>
&lt;figure class="card rounded p-2 td-post-card mb-4 mt-4" style="max-width: 410px">
&lt;img class="card-img-top" src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/hardware-versions/0_9_3_gps_huacf58bf9d1b8aad2e5aacd6c79ee4fbd_1066416_400x0_resize_q99_catmullrom.jpg" width="400" height="300">
&lt;/figure>
&lt;/p>
&lt;p>First build. Experimental xESC2040 instead of xESC-mini (STM32).&lt;/p></description></item><item><title>Docs: Configuring xESC</title><link>https://openmower.de/archive/v1.2.0/docs/knowledge-base/configure-xesc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/knowledge-base/configure-xesc/</guid><description>
&lt;p>The xESC motor controllers can be configured to work with many BLDC and DC motors.
The firmware for the controllers is based on the open source VESC project and therefore, the controllers can be configured using the VESC Configuration Tool.&lt;/p>
&lt;h3 id="prerequisites">Prerequisites&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Windows or Linux computer&lt;/strong> to run the VESC Configuration Tool&lt;/li>
&lt;li>&lt;strong>VESC Tool (&lt;a href="https://vesc-project.com/vesc_tool" target="_blank" rel="noopener">https://vesc-project.com/vesc_tool&lt;/a>
)&lt;/strong> You can download the tool for free by adding the &amp;ldquo;free&amp;rdquo; version in your cart and proceeding to checkout.&lt;/li>
&lt;li>&lt;strong>OpenMower Firmware&lt;/strong> needs to be successfully installed in the xCore board. This is needed because the xCore bridges the connection between your computer and the xESC. If you haven&amp;rsquo;t done it, follow the &lt;a href="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/firmware-update/">Firmware Update&lt;/a>
guide.&lt;/li>
&lt;li>&lt;strong>Optional (but makes your life easier):&lt;/strong>&lt;br/>Configuration files for the mower you are using.&lt;br/>Look in the &lt;a href="https://github.com/ClemensElflein/OpenMower/tree/main/configs/xESC" target="_blank" rel="noopener">OpenMower repository&lt;/a>
for the files suited for your mower. &lt;br/>You will need three files:
&lt;ul>
&lt;li>App configuration XML (sets the baud rate, etc. Same for all three xESC controllers)&lt;/li>
&lt;li>Mower Motor configuration XML (motor parameters for the mower motor)&lt;/li>
&lt;li>Drive Motor configuration XML (motor parameters for the wheel motors)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h3 id="configuration-process">Configuration Process&lt;/h3>
&lt;h4 id="stop-ros-from-interfering-with-the-controllers">Stop ROS from interfering with the controllers&lt;/h4>
&lt;p>&lt;code>openmower stop&lt;/code> to stop ROS from interfering with the controllers during configuration.&lt;/p>
&lt;h4 id="expose-the-esc-to-the-network">Expose the ESC to the network&lt;/h4>
&lt;p>&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/configure-xesc//images/openmower-expose-xesc.png" alt="Expose ESC to the network">
Run &lt;code>openmower expose-xesc [left|right|mower]&lt;/code> to expose the xESC controller (choose &lt;code>left&lt;/code>, &lt;code>mower&lt;/code> or &lt;code>right&lt;/code>).&lt;br/>The controller is then reachable in your local network on &lt;code>openmower:65102&lt;/code> until you hit &lt;kbd>Ctrl&lt;/kbd> + &lt;kbd>C&lt;/kbd>.&lt;/p>
&lt;h4 id="connect-to-the-xesc">Connect to the xESC&lt;/h4>
&lt;p>&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/configure-xesc//images/ConnectToTheESC.png" alt="Connect VESC tool to ESC">
Open the VESC Configuration Tool and connect to the xESC controllers by clicking:&lt;/p>
&lt;ul>
&lt;li>&lt;code>Connection -&amp;gt; TCP&lt;/code> &lt;strong>[1]&lt;/strong>&lt;/li>
&lt;li>Insert the IP address of your mower or &lt;code>openmower&lt;/code> into the Address field &lt;strong>[2]&lt;/strong>.&lt;/li>
&lt;li>Set the port to &lt;code>65102&lt;/code> &lt;strong>[3]&lt;/strong>&lt;/li>
&lt;li>Click &lt;code>Connect&lt;/code> &lt;strong>[4]&lt;/strong>&lt;/li>
&lt;/ul>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Information&lt;/h4>
&lt;p>If you encounter this warning message:&lt;/p>
&lt;p>&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/configure-xesc//images/Firmware_Version_Warning_Message.png" alt="Warning message">&lt;/p>
&lt;p>you can safely ignore it. The VESC tool is backward compatible with the firmware version used on the xESC controller.&lt;/p>
&lt;/div>
&lt;h4 id="configure-xesc">Configure xESC&lt;/h4>
&lt;ul class="nav nav-tabs" id="tabs-4" role="tablist">
&lt;li class="nav-item">
&lt;a class="nav-link disabled"
id="tabs-04-00-tab" data-toggle="tab" href="#tabs-04-00" role="tab"
aria-controls="tabs-04-00" aria-selected="false">
&lt;strong>Choose your configuration path&lt;/strong>:
&lt;/a>
&lt;/li>&lt;li class="nav-item">
&lt;a class="nav-link active"
id="tabs-04-01-tab" data-toggle="tab" href="#tabs-04-01" role="tab"
aria-controls="tabs-04-01" aria-selected="false">
Preset configs (Yard Force)
&lt;/a>
&lt;/li>&lt;li class="nav-item">
&lt;a class="nav-link"
id="tabs-04-02-tab" data-toggle="tab" href="#tabs-04-02" role="tab"
aria-controls="tabs-04-02" aria-selected="false">
SABO/John Deere (tuning)
&lt;/a>
&lt;/li>&lt;li class="nav-item">
&lt;a class="nav-link"
id="tabs-04-03-tab" data-toggle="tab" href="#tabs-04-03" role="tab"
aria-controls="tabs-04-03" aria-selected="false">
New model? Let’s dial it in
&lt;/a>
&lt;/li>
&lt;/ul>
&lt;div class="tab-content" id="tabs-4-content">
&lt;div class="tab-body tab-pane fade"
id="tabs-04-00" role="tabpanel" aria-labelled-by="tabs-04-00-tab">
&lt;/div>
&lt;div class="tab-body tab-pane fade show active"
id="tabs-04-01" role="tabpanel" aria-labelled-by="tabs-04-01-tab">
&lt;h4 id="upload-the-configurations">Upload the configurations&lt;/h4>
&lt;div class="tab-gallery">&lt;style>
.image-gallery {overflow: auto; margin-left: -1%!important;}
.image-gallery li {float: left; display: block; margin: 0 0 1% 1%; width: 24%;}
.image-gallery li a {text-align: center; text-decoration: none!important; color: #777;}
.image-gallery li a span {display: block; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; padding: 3px 0;}
.image-gallery li a img {width: 100%; display: block;}
&lt;/style>&lt;ul class="image-gallery">&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/knowledge-base/configure-xesc/images/upload-configurations/1%20-%20Load%20Motor%20Configuration%20XML_hu0eb09337d9fc523d6b24212fe2fcb3d8_166698_1600x1600_fit_q99_catmullrom_3.png" title="1 - Load Motor Configuration XML" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/knowledge-base/configure-xesc/images/upload-configurations/1%20-%20Load%20Motor%20Configuration%20XML_hu0eb09337d9fc523d6b24212fe2fcb3d8_166698_400x400_fill_q95_catmullrom_smart1_3.png"
alt="1 - Load Motor Configuration XML"
title="1 - Load Motor Configuration XML">
&lt;span title="1 - Load Motor Configuration XML">1 - Load Motor Configuration XML&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/knowledge-base/configure-xesc/images/upload-configurations/2%20-%20Select%20Motor%20XML%20Config_hu2b2ce675b08900813ce00c64727145e1_214179_1600x1600_fit_q99_catmullrom_3.png" title="2 - Select Motor XML Config" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/knowledge-base/configure-xesc/images/upload-configurations/2%20-%20Select%20Motor%20XML%20Config_hu2b2ce675b08900813ce00c64727145e1_214179_400x400_fill_q95_catmullrom_smart1_3.png"
alt="2 - Select Motor XML Config"
title="2 - Select Motor XML Config">
&lt;span title="2 - Select Motor XML Config">2 - Select Motor XML Config&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/knowledge-base/configure-xesc/images/upload-configurations/3%20-%20Ignore%20Configuration%20Version%20Warning%20Message_huf0970ccf74f2234a8e533e5627fa8d04_188960_1600x1600_fit_q99_catmullrom_3.png" title="3 - Ignore Configuration Version Warning Message" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/knowledge-base/configure-xesc/images/upload-configurations/3%20-%20Ignore%20Configuration%20Version%20Warning%20Message_huf0970ccf74f2234a8e533e5627fa8d04_188960_400x400_fill_q95_catmullrom_smart1_3.png"
alt="3 - Ignore Configuration Version Warning Message"
title="3 - Ignore Configuration Version Warning Message">
&lt;span title="3 - Ignore Configuration Version Warning Message">3 - Ignore Configuration Version Warning Message&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/knowledge-base/configure-xesc/images/upload-configurations/4%20-%20Write%20Motor%20Configuration_hu81be6b3f54ede5385c5d307c4ffd1418_165908_1600x1600_fit_q99_catmullrom_3.png" title="4 - Write Motor Configuration" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/knowledge-base/configure-xesc/images/upload-configurations/4%20-%20Write%20Motor%20Configuration_hu81be6b3f54ede5385c5d307c4ffd1418_165908_400x400_fill_q95_catmullrom_smart1_3.png"
alt="4 - Write Motor Configuration"
title="4 - Write Motor Configuration">
&lt;span title="4 - Write Motor Configuration">4 - Write Motor Configuration&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/knowledge-base/configure-xesc/images/upload-configurations/5%20-%20Load%20App%20Config_hu958e648c383bac8982d55fff917b9920_171326_1600x1600_fit_q99_catmullrom_3.png" title="5 - Load App Config" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/knowledge-base/configure-xesc/images/upload-configurations/5%20-%20Load%20App%20Config_hu958e648c383bac8982d55fff917b9920_171326_400x400_fill_q95_catmullrom_smart1_3.png"
alt="5 - Load App Config"
title="5 - Load App Config">
&lt;span title="5 - Load App Config">5 - Load App Config&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/knowledge-base/configure-xesc/images/upload-configurations/6%20-%20Write%20App%20Config_huc9635877522a0f61a37b4ccc6225d372_161627_1600x1600_fit_q99_catmullrom_3.png" title="6 - Write App Config" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/knowledge-base/configure-xesc/images/upload-configurations/6%20-%20Write%20App%20Config_huc9635877522a0f61a37b4ccc6225d372_161627_400x400_fill_q95_catmullrom_smart1_3.png"
alt="6 - Write App Config"
title="6 - Write App Config">
&lt;span title="6 - Write App Config">6 - Write App Config&lt;/span>
&lt;/a>
&lt;/li>
&lt;/ul>
&lt;/div>
&lt;p>With the VESC Configuration Tool connected, you can now upload the configuration to your xESC controllers:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>[Image 1]&lt;/strong>: Click &lt;code>File -&amp;gt; Load Motor Configuration XML&lt;/code>&lt;/li>
&lt;li>&lt;strong>[Image 2]&lt;/strong>: Select the motor configuration XML file for your motor (different for mowing motor and the drive motors)&lt;/li>
&lt;li>&lt;strong>[Image 3]&lt;/strong>: Ignore the version message, if it appears&lt;/li>
&lt;li>&lt;strong>[Image 4]&lt;/strong>: Click &lt;code>Write Motor configuration&lt;/code>. The green banner will appear on success.&lt;/li>
&lt;li>&lt;strong>[Image 5]&lt;/strong>: Click &lt;code>File -&amp;gt; Load App Configuration XML&lt;/code>. Ignore the version message, if it appears&lt;/li>
&lt;li>&lt;strong>[Image 6]&lt;/strong>: Click &lt;code>Write App configuration&lt;/code>. The green banner will appear on success.&lt;/li>
&lt;li>&lt;strong>Hit &lt;kbd>Ctrl&lt;/kbd> + &lt;kbd>C&lt;/kbd>&lt;/strong> in the openmower terminal to stop exposing the xESC controller.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Repeat these steps for all three of the three xESC controllers.&lt;/strong>&lt;/p>
&lt;/div>
&lt;div class="tab-body tab-pane fade"
id="tabs-04-02" role="tabpanel" aria-labelled-by="tabs-04-02-tab">
&lt;h4 id="required-preparations">Required preparations&lt;/h4>
&lt;ol>
&lt;li>Remove the mower blade.&lt;/li>
&lt;li>Really, remove the blade! This is a huge mower with a strong motor and large blade! 💀&lt;/li>
&lt;li>Lift the mower&amp;rsquo;s rear so wheels can spin freely (use a carton, block or stand).&lt;/li>
&lt;li>Unmount the mower blade!&lt;/li>
&lt;li>Use battery power for calibration (not dock power), and ensure the battery has sufficient charge.&lt;/li>
&lt;li>Check if you disassembled the mower blade!&lt;/li>
&lt;/ol>
&lt;h4 id="drive-motor-calibration-left-then-right">Drive motor calibration (left then right)&lt;/h4>
&lt;p>Perform calibration for left drive first, then repeat the procedure for the right drive.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Enable realtime data:&lt;/strong> Later on, we wanna validate our calibration with a known reference value, but also during calibration it&amp;rsquo;s interesting to see the displayed values in the marked 2 window. That&amp;rsquo;s why we enable real-time data first:&lt;br>
&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/configure-xesc//images/sabo/vesc_3_realtime_data.jpg" alt="RT Data">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Start the &lt;strong>FOC Calibration Wizard&lt;/strong>:&lt;br>
&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/configure-xesc//images/sabo/vesc_4_voc_1.jpg" alt="Start FOC Calibration">&lt;br>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Now we need to provide some specs of our motor. &lt;strong>These are the specs for the left and right drive motors&lt;/strong>, for the mow motor, we need to use other specs:&lt;br>
&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/configure-xesc//images/sabo/vesc_4_voc_2.jpg" style="vertical-align: middle; width:31%"> 🡆 &lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/configure-xesc//images/sabo/vesc_4_voc_3.jpg" style="vertical-align: middle; width:31%"> 🡆 &lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/configure-xesc//images/sabo/vesc_4_voc_4.jpg" style="vertical-align: middle; width:31%">&lt;br>&lt;/p>
&lt;p>&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/configure-xesc//images/sabo/vesc_4_voc_5.jpg" style="vertical-align: middle; width:31%"> 🡆 &lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/configure-xesc//images/sabo/vesc_4_voc_6.jpg" style="vertical-align: middle; width:31%"> 🡆 &lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/configure-xesc//images/sabo/vesc_4_voc_7.jpg" style="vertical-align: middle; width:31%">&lt;br>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Once calibration has been done, &lt;strong>do not change the direction&lt;/strong> (even though the left wheel turns forward during calibration, whereas the right one backwards):&lt;/p>
&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/configure-xesc//images/sabo/vesc_4_voc_8.jpg" style="vertical-align: middle; width:31%">
&lt;/li>
&lt;li>
&lt;p>Now that the calibration succeed, lets test the result:
&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/configure-xesc//images/sabo/vesc_5_test.jpg" alt="Run Test">&lt;br>&lt;/p>
&lt;p>Test with &amp;ldquo;&lt;strong>D 0,4&lt;/strong>&amp;rdquo; (1) and press the &amp;ldquo;Duty cycle&amp;rdquo; play button (2). If it draw &lt;strong>&amp;lt;= 0.15A&lt;/strong> (3) and sound healty, it is calibrated well.&lt;br>
Test with some higher duty settings. It will become more loud for sure, but should always spin smooth and sound healty. If not, press the STOP sign (4).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>As a last important step, load the correct ESC-App config via: &lt;em>File → Load App Configuration XML&lt;/em>, choose &lt;code>SABO_Drive-App.xml&lt;/code> (see &lt;a href="https://github.com/xtech/hw-openmower-sabo/tree/main/Configs/xESC" target="_blank" rel="noopener">SABO ESCs configs&lt;/a>
) and finally press the &lt;code>↧A&lt;/code> icon (Write app configuration) on the right side.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>Done 😆&lt;br>
&amp;hellip; &lt;strong>but not finished&lt;/strong> ✌️ &amp;hellip; you need to do the whole procedure again, but with the right drive side.&lt;/p>
&lt;p>So, &lt;kbd>Ctrl&lt;/kbd>+&lt;kbd>c&lt;/kbd> your &lt;code>openmower expose-xesc left&lt;/code>, and do it again but with &lt;code>openmower expose-xesc right&lt;/code>.&lt;/p>
&lt;h4 id="mow-motor-calibration">Mow Motor Calibration&lt;/h4>
&lt;p>For the mow motor ESC calibration, you do the same workflow, but with adapted values:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;code>openmower expose-xesc mower&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>During FOC Calibration Wizard use the following values:&lt;/p>
&lt;ul>
&lt;li>Tab &amp;ldquo;Motor&amp;rdquo; = Medium Inrunner ~750g
&lt;ul>
&lt;li>Advanced: Max Power Loss = 200, Motor Poles = 8&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Tab &amp;ldquo;Battery&amp;rdquo;
&lt;ul>
&lt;li>Battery Capacity = 3.9Ah (same as before)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Tab &amp;ldquo;Setup&amp;rdquo;
&lt;ul>
&lt;li>Gear Ratio = Check Direct Drive&lt;/li>
&lt;li>Motor Poles = 8&lt;/li>
&lt;li>Motor Temp. Sensor = disabled&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Test with &amp;ldquo;&lt;strong>D 0,08&lt;/strong>&amp;rdquo; which should draw &lt;strong>&amp;lt;= 0.52A&lt;/strong> (without assembled blade)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Check/Adjust blade rotation direction:&lt;br>
We need to ensure that the blade rotate CCW (when watching from downside onto the axis). Do this with a slow rotation speed like &amp;ldquo;D 0,08&amp;rdquo;.&lt;/p>
&lt;p>If it rotates CW, change direction via: &lt;em>Motor Settings → General → Tab General → Invert Motor Direction&lt;/em>. &lt;strong>Do not forget to do: &amp;ldquo;Write motor configuration&amp;rdquo; via &lt;code>↧M&lt;/code>&lt;/strong>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Load the correct ESC-App config via: &lt;em>File → Load App Configuration XML&lt;/em>, choose &lt;code>SABO_Mower-App.xml&lt;/code> (see &lt;a href="https://github.com/xtech/hw-openmower-sabo/tree/main/Configs/xESC" target="_blank" rel="noopener">SABO ESCs configs&lt;/a>
) and finally press the &lt;code>↧A&lt;/code> icon (Write app configuration) on the right side.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Limit blade RPM:&lt;br>
It&amp;rsquo;s important to limit the max. RPM to the one like OEM is running it! Otherwise you risk your motor bearings or more dangerous: Your blade might fly away 💀
&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/configure-xesc//images/sabo/vesc_7_mow_settings2.jpg" alt="Limit RPM">&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div>
&lt;div class="tab-body tab-pane fade"
id="tabs-04-03" role="tabpanel" aria-labelled-by="tabs-04-03-tab">
&lt;p>Choose your adventure. Your build, your rules.&lt;/p>
&lt;/div>
&lt;/div></description></item><item><title>Docs: Firmware Update</title><link>https://openmower.de/archive/v1.2.0/docs/knowledge-base/firmware-update/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/knowledge-base/firmware-update/</guid><description>
&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Warning&lt;/h4>
&lt;p>Early versions of the xCore board have a bug in the bootloader which sometimes prevents the board from being detected by the &lt;code>openmower&lt;/code> tool.&lt;/p>
&lt;p>If you encounter Timeout errors during the firmware installation process, update the bootloader by running: &lt;code>openmower update-bootloader&lt;/code> and try again.&lt;/p>
&lt;/div>
&lt;p>To install the firmware to the xCore board, simply run: &lt;code>openmower update-firmware&lt;/code>. The &lt;code>openmower&lt;/code> tool will read your environment variables, download the appropriate firmware binary and upload it to the xCore board via Ethernet.&lt;/p>
&lt;p>The expected output is shown below:&lt;/p>
&lt;div class="container pb-3 pt-3">
&lt;div class="row justify-content-md-center">
&lt;div id="step-3-2-2-player" class="">&lt;/div>
&lt;/div>
&lt;div class="row justify-content-md-center">
&lt;div>Example output for &lt;code>openmower update-firmware&lt;/code> command.&lt;/div>
&lt;/div>
&lt;/div>
&lt;script>
AsciinemaPlayer.create(
'/archive/v1.2.0/docs/knowledge-base/firmware-update//cast/openmower-update-firmware.cast',
document.getElementById('step-3-2-2-player'),
{ cols: 110, rows: 24, autoplay: false, loop: true }
);
&lt;/script></description></item><item><title>Docs: GPS / Coordinate System</title><link>https://openmower.de/archive/v1.2.0/docs/knowledge-base/rtk-gps/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/knowledge-base/rtk-gps/</guid><description>
&lt;h2 id="positioning--coordinate-system">Positioning / Coordinate System&lt;/h2>
&lt;p>Positioning in the Open Mower project is done in a local 2D coordinate system. This means that the robot&amp;rsquo;s current position can be described by the coordinates (X / Y) of the VRP and the current orientation.&lt;/p>
&lt;p>The origin of the coordinate system can either be chosen freely by the user or can be set to the base station. If an external correction service is used, the origin has to be specified manually.&lt;/p>
&lt;p>Open Mower uses a right-handed ENU coordinate system.&lt;/p></description></item><item><title>Docs: GPS Base Setup</title><link>https://openmower.de/archive/v1.2.0/docs/knowledge-base/rtk-base-setup/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/knowledge-base/rtk-base-setup/</guid><description>
&lt;p>This part of the documentation is work in progress. There are many ways of setting up the RTK base, here is one using RPi 0W, ZED-F9P and a web based software RTKBase. On discord you may ask karl.ranseier for support.&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://amzn.to/48sGCVP" target="_blank" rel="nofollow noopener">Raspberry Pi 0W&lt;/a>
&lt;/li>
&lt;li>µSD card&lt;/li>
&lt;li>Power supply for RPi&lt;/li>
&lt;li>&lt;a href="https://www.ardusimple.com/product/simplertk2b-basic-starter-kit-ip65/" target="_blank" rel="nofollow noopener">Ardusimple ZED-F9P&lt;/a>
&lt;/li>
&lt;li>A cable or combinatin of cables to connect micro usb male to micro usb male:
&lt;ul>
&lt;li>A) Direct like &lt;a href="https://amzn.to/3K7kfMs" target="_blank" rel="nofollow noopener">this&lt;/a>
&lt;/li>
&lt;li>B) Adapter (&lt;a href="https://amzn.to/4ifLYqG" target="_blank" rel="nofollow noopener">like this&lt;/a>
) + micro usb to usb-a cable&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>A windows PC&lt;/li>
&lt;li>Stable internet connection (no disconnection within one hour)&lt;/li>
&lt;/ul>
&lt;h2 id="installation">Installation&lt;/h2>
&lt;p>If you know about RPi and have already a functional OS, you may head on to &amp;ldquo;Software&amp;rdquo;, but in my case it did not work using an older image.&lt;/p>
&lt;h3 id="preparing-sd-card">Preparing sd card&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>Download &lt;a href="https://www.raspberrypi.com/software/" target="_blank" rel="noopener">RPi Imager&lt;/a>
for windows&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Start Imager:&lt;/p>
&lt;p>&lt;img src="" alt=""> &lt;img src="Imager1.png" width="120">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Choose your RPI (in my case RPi 0W, choosing wrong RPi will most probably result in many problems)&lt;/p>
&lt;p>&lt;img src="" alt=""> &lt;img src="./Imager2.png" width="120">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Choose Operating system &amp;ldquo;Raspberry Pi OS lite (legacy, 32bit)&lt;/p>
&lt;p>&lt;img src="" alt=""> &lt;img src="./Imager3.png" width="120">&lt;/p>
&lt;p>&lt;img src="" alt=""> &lt;img src="./Imager4.png" width="120">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select your sd card:&lt;/p>
&lt;p>&lt;img src="" alt=""> &lt;img src="./Imager5.png" width="120">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Press next so this will appear:&lt;/p>
&lt;p>&lt;img src="" alt=""> &lt;img src="./Imager6.png" width="120">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Edit settings like the following (and use your personal WiFi settings and country), where you set a good password for your Pi account. Username and password are case sensitive!&lt;/p>
&lt;p>&lt;img src="" alt=""> &lt;img src="./OSCustom1.png" width="120">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>activate SSH:&lt;/p>
&lt;p>&lt;img src="" alt=""> &lt;img src="./OSCustom.png" width="120">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Press save to see this:&lt;/p>
&lt;p>&lt;img src="" alt=""> &lt;img src="./OSCustom2.png" width="120">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Click on YES and allow to overwrite the data on your sd card (if you are sure, that you will not miss them). It will start downloading and writing the data:&lt;/p>
&lt;p>&lt;img src="" alt=""> &lt;img src="./Imager7.png" width="120">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Wait until it is finished, it may take half an hour, depending on your internet connection ;-)&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="start-your-rtkbase-rpi">Start your RTKBase RPi&lt;/h3>
&lt;ul>
&lt;li>Put your sd card into your RPi&lt;/li>
&lt;li>Connect ZED-F9P via usb to your RPi (NOT after the installation, it will be configured during installation).&lt;/li>
&lt;li>Power your RPi&lt;/li>
&lt;/ul>
&lt;h3 id="connect-to-rpi">Connect to RPi&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>Get from your router the IP of your RPi&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Start &lt;a href="https://putty.org" target="_blank" rel="noopener">PuTTY&lt;/a>
and connect to RPi, where you enter the local IP of your RPi&lt;/p>
&lt;p>&lt;img src="" alt=""> &lt;img src="./Putty1.png" width="120">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Enter your Username Pi, press enter and than enter your password:&lt;/p>
&lt;p>&lt;img src="" alt=""> &lt;img src="./Putty2.png" width="120">&lt;/p>
&lt;p>&lt;img src="" alt=""> &lt;img src="./Putty3.png" width="120">&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="software">Software&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>Is your ZED-F9P connected? Do it!&lt;/p>
&lt;/li>
&lt;li>
&lt;p>We will use &lt;a href="https://github.com/Stefal/rtkbase" target="_blank" rel="noopener">RTKBase&lt;/a>
&lt;/p>
&lt;/li>
&lt;li>
&lt;p>To install it, you can use the following lines, which you can copy and paste at once. The original recommendation is no sudo in front of chmod. That did not work for me.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87">cd&lt;/span> ~
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>wget https://raw.githubusercontent.com/Stefal/rtkbase/master/tools/install.sh -O install.sh
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo chmod +x install.sh
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo ./install.sh --all release
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>A very long output should follow. It ends with:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>GNSS Configuration: &lt;span style="color:#204a87;font-weight:bold">done&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">################################&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>STARTING SERVICES
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">################################&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Created symlink /etc/systemd/system/multi-user.target.wants/str2str_tcp.service → /etc/systemd/system/str2str_tcp.service.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Job &lt;span style="color:#204a87;font-weight:bold">for&lt;/span> gpsd.service failed because the control process exited with error code.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>See &lt;span style="color:#4e9a06">&amp;#34;systemctl status gpsd.service&amp;#34;&lt;/span> and &lt;span style="color:#4e9a06">&amp;#34;journalctl -xe&amp;#34;&lt;/span> &lt;span style="color:#204a87;font-weight:bold">for&lt;/span> details.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">################################&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>END OF INSTALLATION
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>You can open your browser to http://192.168.178.34 &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span>here the editor deleted IPV6&lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">################################&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Pi@RTKBase:~ $
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>Installation finished, go on and configure your RTKBase&lt;/p>
&lt;/li>
&lt;/ul>
&lt;br>
&lt;h2 id="configuring-your-rtkbase">Configuring your RTKBase&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>Start a browser and enter the IP address of your RTKBase. You will get this:&lt;/p>
&lt;p>&lt;img src="" alt="">&lt;img src="./RTKBase01.png" width="120">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Enter as password admin. On the following site press the copy symbol right to PPP.&lt;/p>
&lt;p>&lt;img src="" alt="">&lt;img src="./RTKBase02.png" width="120">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Go to settings and press &amp;ldquo;options&amp;rdquo; right to &amp;ldquo;Main Service&amp;rdquo;, than paste your coordinates to &amp;ldquo;Base coordinates&amp;rdquo;:&lt;/p>
&lt;p>&lt;img src="" alt="">&lt;img src="./RTKBase03.png" width="120">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Press on options again, than on options right to &amp;ldquo;Caster Service&amp;rdquo;&lt;/p>
&lt;p>&lt;img src="" alt="">&lt;img src="./RTKBase04.png" width="120">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Here you have to enter the setting set up in your mower, standard is: username gps and password gps. Select the right mount point. I have named it like my city, in mower config and here.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Save the config&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Switch on &amp;ldquo;Caster Service&amp;rdquo; and &amp;ldquo;File Service&amp;rdquo;, it should look like this:&lt;/p>
&lt;p>&lt;img src="" alt="">&lt;img src="./RTKBase05.png" width="120">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Eventually change your password below these options.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>At logs you should find at least two files:&lt;/p>
&lt;p>&lt;img src="" alt="">&lt;img src="./RTKBase06.png" width="120">&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="find-the-position-of-your-rtkbase">Find the position of your RTKBase&lt;/h3>
&lt;p>There are several ways to find your position. To use openmower you do not need the perfect position. Therefore the first option should be your choice, if you want a fast and good result for openmower.&lt;/p>
&lt;h4 id="easy-and-good-way">Easy and good way&lt;/h4>
&lt;ul>
&lt;li>
&lt;p>Click on the symbol right to PPP to copy the values to the clipboard:&lt;/p>
&lt;p>&lt;img src="" alt="">&lt;img src="./RTKBase02.png" width="120">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Enter these values to your options at MainService.&lt;/p>
&lt;p>&lt;img src="" alt="">&lt;img src="./RTKBase03.png" width="120">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Save&lt;/p>
&lt;/li>
&lt;li>
&lt;p>ReActivate Ntrip Service&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Finished!&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h4 id="more-complicated-and-more-exact-way">More complicated and more exact way&lt;/h4>
&lt;ul>
&lt;li>
&lt;p>You have to set up the logging of your position as mentioned above by activating &amp;ldquo;file service&amp;rdquo;. You should wait for a day to average all the values to get a high precision position.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>After midnight you find a zip-file at logs. This you can convert to a Rinex file. To understand this file you may check &lt;a href="http://walter.bislins.ch/bloge/index.asp?page=Understanding&amp;#43;GPS%2FGNSS&amp;#43;RINEX&amp;#43;Files&amp;#43;and&amp;#43;Relevant&amp;#43;Parameters" target="_blank" rel="noopener">RINEX-File&lt;/a>
, but you don&amp;rsquo;t need it.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Press on the pencil right to the zip-file:&lt;/p>
&lt;p>&lt;img src="" alt="">&lt;img src="./RTKBase07.png" width="120">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&amp;ldquo;Create Rinex file&amp;rdquo;:&lt;/p>
&lt;p>&lt;img src="" alt="">&lt;img src="./RTKBase08.png" width="120">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Download it when finished (may take a while, some minutes or longer)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Go to &lt;a href="https://rgp.ign.fr/SERVICES/calcul_online.php" target="_blank" rel="noopener">Calculator&lt;/a>
, upload your Rinex file and enter your email address. Don&amp;rsquo;t forget to enter the &amp;ldquo;no robot&amp;rdquo;-verification.&lt;/p>
&lt;p>&lt;img src="" alt="">&lt;img src="./ignfr.png" width="120">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>When you received the email, look at &amp;ldquo;ITRF2014&amp;rdquo; (or search for &amp;ldquo;longitude&amp;rdquo;) and see your values like LONGITUDE 6.XXXXXXXXX° LATITUDE 51.XXXXXXXXX° HELL 79.9041&lt;/p>
&lt;p>&lt;img src="" alt="">&lt;img src="./averaged.png" width="120">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>You enter these values to your options at MainService. Be aware that the order of LONGITUDE and LATITUDE is switched!&lt;/p>
&lt;p>&lt;img src="" alt="">&lt;img src="./RTKBase03.png" width="120">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Save&lt;/p>
&lt;/li>
&lt;li>
&lt;p>ReActivate Ntrip Service&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Finished!&lt;/p>
&lt;/li>
&lt;/ul>
&lt;br>
&lt;p>Thanks to Stefal and all the contributors of RTKBase and the used resources.&lt;/p></description></item><item><title>Docs: Troubleshooting GPS-RTK</title><link>https://openmower.de/archive/v1.2.0/docs/troubleshooting/gps-rtk/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/troubleshooting/gps-rtk/</guid><description>
&lt;p>We assume that you at least followed &lt;a href="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/step-by-step/2-robot-modification/prepare-the-parts/prepare-the-gps/">documentation of GPS setup&lt;/a>
. If mower is already assembled - open the top cover.&lt;/p>
&lt;p>Get your Windows PC and connect to GPS module directly with microUSB cable (as if you were uploading the configuration).&lt;/p>
&lt;p>Make sure that &lt;code>Protocol of received messages&lt;/code> in bottom status bar right shows &lt;code>UBX&lt;/code>, not &lt;code>NMEA&lt;/code>. If not - upload configuration again. Then disconnect/connect power of GPS and make sure it stayed &lt;code>UBX&lt;/code>.&lt;/p>
&lt;p>Connect the antenna to the board and go outside to check if general GPS is working. If the mower is already assembled and an antenna is plugged in - just take it outside with the mower.
Even indoors next to the windows with antenna connected, you should see satellites and other info start appearing in u-center. In few minutes &lt;code>GPS Fix&lt;/code> led will start blinking on GPS board.&lt;/p>
&lt;p>Deviation map (&lt;code>View -&amp;gt; Deviation Map, F12&lt;/code>) should stay in a ~1m, that what you expect from average GPS. If you got some existing garbage there already, clean it via &lt;code>File -&amp;gt; Database clean&lt;/code>.&lt;/p>
&lt;p>Now let&amp;rsquo;s connect NTRIP. We assume that you either found a suitable &lt;a href="https://discord.com/channels/958476543846412329/980099128879108137/980100319700742145" target="_blank" rel="noopener">NTRIP node somewhere nearby&lt;/a>
(&amp;lt;30km) or running your own &lt;a href="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/rtk-base-setup/">base station&lt;/a>
.&lt;/p>
&lt;p>Go to &lt;code>Receiver -&amp;gt; NTRIP Client...&lt;/code> and configure your NTRIP settings. This will be the same settings that you will use in the ROS configuration file later.
&lt;figure class="card rounded p-2 td-post-card mb-4 mt-4" style="max-width: 510px">
&lt;img class="card-img-top" src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/troubleshooting/gps-rtk/ntrip-client_hu093974d0b20218b173b54badb71bcd6b_31055_500x0_resize_catmullrom_3.png" width="500" height="460">
&lt;/figure>
&lt;/p>
&lt;p>NTRIP client should display green connection in the status bar. Deviation map (&lt;code>View -&amp;gt; Deviation Map, F12&lt;/code>) should stay dead center. &lt;code>No RTK&lt;/code> led will start blinking or go away completely.
&lt;figure class="card rounded p-2 td-post-card mb-4 mt-4" style="max-width: 810px">
&lt;img class="card-img-top" src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/troubleshooting/gps-rtk/gps-fix-and-deviation_hu6cbd1643a4df8dcd346344c082d9a5e1_47047_800x0_resize_catmullrom_3.png" width="800" height="484">
&lt;/figure>
&lt;/p>
&lt;h2 id="test-gps-on-mainboard">Test GPS on Mainboard&lt;/h2>
&lt;p>We have checked that GPS works alone, let&amp;rsquo;s see if it would together with the mainboard. Plug the GPS into the mainboard. Everything should light up and start flashing.&lt;br>
Wait until the LED lights up GREEN or GREEN/RED.&lt;/p>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">🔋 Powering the mainboard&lt;/h4>
If you don&amp;rsquo;t have dock station assembled and want to save the power in the main mower battery, you can power it from the Pico Dev board MicroUSB port, right below the GPS board. Use a 1A+ power bank, because computer USB port&amp;rsquo;s 500mA might be not enough.
&lt;/div>
&lt;ul class="nav nav-tabs" id="tabs-5" role="tablist">
&lt;li class="nav-item">
&lt;a class="nav-link disabled"
id="tabs-05-00-tab" data-toggle="tab" href="#tabs-05-00" role="tab"
aria-controls="tabs-05-00" aria-selected="false">
&lt;strong>OpenMowerOS version&lt;/strong>:
&lt;/a>
&lt;/li>&lt;li class="nav-item">
&lt;a class="nav-link active"
id="tabs-05-01-tab" data-toggle="tab" href="#tabs-05-01" role="tab"
aria-controls="tabs-05-01" aria-selected="false">
0.1.0
&lt;/a>
&lt;/li>
&lt;/ul>
&lt;div class="tab-content" id="tabs-5-content">
&lt;div class="tab-body tab-pane fade"
id="tabs-05-00" role="tabpanel" aria-labelled-by="tabs-05-00-tab">
&lt;/div>
&lt;div class="tab-body tab-pane fade show active"
id="tabs-05-01" role="tabpanel" aria-labelled-by="tabs-05-01-tab">
&lt;p>Then SSH into your OpenMower.&lt;br>
In the home directory (&lt;code>~/&lt;/code>) there is a scripts called &lt;code>start_ros_bash.sh&lt;/code>.&lt;br>
Run the &lt;code>start_ros_bash.sh&lt;/code> script by executing &lt;code>~/start_ros_bash.sh&lt;/code> which should take you to a bash inside the container.&lt;/p>
&lt;/div>
&lt;/div>
&lt;p>There you can run &lt;code>rostopic list&lt;/code> to list all topics and &lt;code>rostopic echo --clear -w 5 /ll/position/gps&lt;/code> to look at the GPS data.&lt;br>
You will get some lines of data:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">header&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">seq&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">44&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">stamp&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">secs&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">1708328554&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">nsecs&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">51810942&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">frame_id&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;gps&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">sensor_stamp&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">114172000&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">received_stamp&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">1711341013&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">source&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">1&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">flags&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">3&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">orientation_valid&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">motion_vector_valid&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">1&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">position_accuracy&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.024&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">orientation_accuracy&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">3.141&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">pose&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">pose&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">position&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">x&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">1.975&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">y&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">4.819&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">z&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">114.9&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">orientation&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">x&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">y&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">z&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.201&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">w&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.979&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">covariance&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#0000cf;font-weight:bold">88.21&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">88.21&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">88.21&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">10000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">10000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.000&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">9.869&lt;/span>&lt;span style="color:#000;font-weight:bold">]&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">motion_vector&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">x&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.045&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">y&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>-&lt;span style="color:#0000cf;font-weight:bold">0.05&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">z&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>-&lt;span style="color:#0000cf;font-weight:bold">0.01&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">vehicle_heading&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">1.570&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">motion_heading&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0.405&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#000">---&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The important lines here are:&lt;/p>
&lt;ul>
&lt;li>&lt;code>flags: 3&lt;/code>&lt;br>
you want a &lt;code>3&lt;/code> here since that means your rtk state is &amp;ldquo;fixed&amp;rdquo;&lt;br>
&lt;code>3&lt;/code> is &amp;ldquo;fix&amp;rdquo;, &lt;code>5&lt;/code> is &amp;ldquo;float&amp;rdquo; and &lt;code>0&lt;/code> is &amp;ldquo;single&amp;rdquo; (classic non-rtk GNSS gps only)&lt;/li>
&lt;/ul>
&lt;br>
&lt;ul>
&lt;li>&lt;code>position_accuracy: 0.024&lt;/code>&lt;br>
this value is in meters so the example has a accuracy of ~2,5cm and that is great.&lt;br>
It can be the case that this value is ok but the rtk state is not yet &amp;ldquo;fixed&amp;rdquo;&lt;/li>
&lt;/ul></description></item><item><title>Docs: Troubleshoot mapping/recording areas</title><link>https://openmower.de/archive/v1.2.0/docs/troubleshooting/map/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/troubleshooting/map/</guid><description>
&lt;p>We assume that you at least followed &lt;a href="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/record-areas/">Record a map&lt;/a>
.&lt;/p>
&lt;br>
&lt;h1 id="making-a-backup-andor-removing-a-map">Making a backup and/or removing a map.&lt;/h1>
&lt;p>The default location of the map can be found under&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>/home/openmower/ros_home/map.json
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>You can always back up your current map by logging in via SSH and copying the .json file.&lt;/p>
&lt;p>If you want to retrieve the file, you can use an SFTP client like WinSCP or Cyberduck.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>sudo cp /home/openmower/ros_home/map.json /home/openmower/ros_home/map.json.backup
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>To delete the map&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"># stop the openmower service so that it doesnt access the map anymore&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>openmower stop
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"># check, if the map file is indeed there.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ls /home/openmower/ros_home
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"># delete maps (both .bag and .json)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>rm /home/openmower/ros_home/map.bag
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>rm /home/openmower/ros_home/map.json
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"># restart OM&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>openmower stop
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Docs: Shopping List</title><link>https://openmower.de/archive/v1.2.0/docs/knowledge-base/shopping-list/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/knowledge-base/shopping-list/</guid><description>
&lt;p>&lt;em>If you make a purchase through the links marked with an Asterisk (*), I may earn a small commission at no extra cost to you. Thank you for supporting this project!&lt;/em>&lt;/p>
&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Warning&lt;/h4>
Read this first: &lt;a href="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/getting-started/#important-info">Important Info&lt;/a>
&lt;/div>
&lt;h2 id="parts-for-the-robot-and-the-charging-station">Parts for the Robot and the Charging Station&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Name&lt;/th>
&lt;th>Description&lt;/th>
&lt;th>Quantity Required&lt;/th>
&lt;th>Source Link&lt;/th>
&lt;th>Notes&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Mower&lt;br>(YardForce Classic 500(B))&lt;/td>
&lt;td>The mower to modify.&lt;/td>
&lt;td>1&lt;/td>
&lt;td>&lt;a href="https://amzn.to/3NWgIxk" target="_blank" rel="nofollow noopener">Amazon*&lt;/a>
&lt;/td>
&lt;td>Check the &lt;a href="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/compatible-mowers/">Compatible Mowers&lt;/a>
&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Open Mower Hardware Kit&lt;/td>
&lt;td>The electronics we will mount inside the robot and the charging station. Also includes goodies to make stuff easier to mount.&lt;/td>
&lt;td>1&lt;/td>
&lt;td>&lt;b>Version 2 Hardware:&lt;/b>&lt;br/> (see &lt;a href="">Announcement&lt;/a>
)&lt;br/>Contact @Apehaenger on Discord, he has Hardware available&lt;br/>&lt;br/>&lt;b>Version 1 Hardware:&lt;/b>&lt;br/>&lt;a href="https://shop.devops.care/10-openmower" target="_blank" rel="nofollow noopener">Vermut&amp;rsquo;s shop&lt;/a>
&lt;/td>
&lt;td>Alternatively you can source and solder most of these parts yourself. Check the repositories in the Links section for PCB designs and BOMs.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ardusimple RTK2B GPS + Antenna&lt;/td>
&lt;td>Positioning system for the robot&lt;/td>
&lt;td>1&lt;/td>
&lt;td>&lt;a href="https://www.ardusimple.com/product/simplertk2b-basic-starter-kit-ip65/" target="_blank" rel="nofollow noopener">ArduSimple&lt;/a>
&lt;/td>
&lt;td>Some users use &lt;a href="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/unicore-gps/">UM9XX chips&lt;/a>
(available from &lt;a href="https://witmotion-sensor.com/products/rtk-gps-gnss-modules-centimeter-level-um982-um980-um960" target="_blank" rel="nofollow noopener">WitMotion&lt;/a>
and &lt;a href="https://aliexpress.com/item/1005007177629130.html" target="_blank" rel="nofollow noopener">AliExpress&lt;/a>
) as alternative. Compared to ArduSimple, they&amp;rsquo;re a bit cheaper and support triple-band frequencies.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Raspberry Pi Compute Module 4 with WiFi&lt;/td>
&lt;td>The brain of the robot.&lt;br>&lt;br>RAM: 2GB+ for running the software&lt;br>4GB+ for development&lt;br>&lt;br> 16GB+ storage (eMMC or µSD Card)&lt;/td>
&lt;td>1&lt;/td>
&lt;td>&lt;a href="https://rpilocator.com/?cat=CM4&amp;amp;instock" target="_blank" rel="noopener">RPi Locator&lt;/a>
&lt;/td>
&lt;td>Yes, it has to be the Raspberry Pi CM4, because we need all the UARTs and it goes into the xCore board.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>µSD Card&lt;/td>
&lt;td>Only for RPi CM4 Lite. The absolute minimum capacity you should buy is 16GB. But better buy a 32GB one&lt;/td>
&lt;td>1&lt;/td>
&lt;td>&lt;a href="https://amzn.to/3EeWBXj" target="_blank" rel="nofollow noopener">Amazon*&lt;/a>
or your local hardware store&lt;/td>
&lt;td>A Gucci option would be a &lt;a href="https://www.uugear.com/product/raspikey-plug-and-play-emmc-module-for-raspberry-pi/" target="_blank" rel="nofollow noopener">RasPiKey&lt;/a>
&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Optional:&lt;/strong>&lt;/td>
&lt;td>&lt;strong>Optional:&lt;/strong>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>USB Wi-Fi Dongle&lt;/td>
&lt;td>For better Wi-Fi reception&lt;/td>
&lt;td>0&lt;/td>
&lt;td>&lt;/td>
&lt;td>Check for Linux Support&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Left-Angle USB adapter&lt;/td>
&lt;td>If you want to keep Wi-Fi dongle inside the mower. RPi USB is really close to the mower side wall&lt;/td>
&lt;td>0&lt;/td>
&lt;td>&lt;a href="https://amzn.to/3ukNAIj" target="_blank" rel="nofollow noopener">Amazon*&lt;/a>
or your local hardware store&lt;/td>
&lt;td>The kit contains the wire to connect external USB port. That may be enough if Wi-Fi dongle is waterproof.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="parts-for-the-gps-base-station">Parts for the GPS Base Station&lt;/h2>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Info&lt;/h4>
You only need a GPS base station if you don&amp;rsquo;t have access to an external NTRIP service. There are multiple free services available, so check before buying this.
&lt;/div>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Name&lt;/th>
&lt;th>Description&lt;/th>
&lt;th>Quantity Required&lt;/th>
&lt;th>Source Link&lt;/th>
&lt;th>Notes&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Raspberry Pi&lt;br>+ SD Card&lt;br>+ Power Supply&lt;/td>
&lt;td>You can basically use any Raspberry Pi for this. No special requirements.&lt;/td>
&lt;td>1&lt;/td>
&lt;td>&lt;a href="https://amzn.to/4a904YP" target="_blank" rel="nofollow noopener">e.g. Raspberry Pi 4&lt;/a>
&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ardusimple RTK2B GPS + Antenna&lt;/td>
&lt;td>Positioning system for the base station&lt;/td>
&lt;td>1&lt;/td>
&lt;td>&lt;a href="https://www.ardusimple.com/product/simplertk2b-basic-starter-kit-ip65/" target="_blank" rel="nofollow noopener">ArduSimple&lt;/a>
&lt;/td>
&lt;td>See above&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>For the setup check the &lt;a href="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/rtk-base-setup/">GPS Base Setup Guide&lt;/a>
&lt;/p></description></item><item><title>Docs: The Map</title><link>https://openmower.de/archive/v1.2.0/docs/knowledge-base/the-map/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/knowledge-base/the-map/</guid><description>
&lt;h2 id="the-map">The Map&lt;/h2>
&lt;p>The most important information for the Open Mower is its map. The map tells the robot in which areas the robot is allowed to drive &lt;strong>(= Navigation Area)&lt;/strong>, which areas need to be mowed &lt;strong>(= Mowing Area)&lt;/strong> and where the docking station is located. Using this information, the robot is able to do its work automatically.&lt;/p>
&lt;p>Each area consists of &lt;strong>one outline&lt;/strong> and &lt;strong>multiple obstacles&lt;/strong>. The mower is allowed to drive inside the outline of all areas, except for the obstacles. This way you can exclude some parts of your lawn and prevent the mower from entering them.&lt;/p>
&lt;p>The map is stored in the &lt;code>map.json&lt;/code> file that is located on the mower at &lt;code>/home/openmower/ros_home&lt;/code>&lt;/p></description></item><item><title>Docs: Unicore GPS Modules</title><link>https://openmower.de/archive/v1.2.0/docs/knowledge-base/unicore-gps/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/knowledge-base/unicore-gps/</guid><description>
&lt;p>Several users have chosen alternative GPS RTK modules with chips by &lt;strong>Unicore&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>UM960&lt;/li>
&lt;li>UM980&lt;/li>
&lt;li>UM982&lt;/li>
&lt;/ul>
&lt;p>These chips are sold in different variants. Some come with a USB-C socket (so they can be connected directly to the Raspberry Pi). Some have a different antenna socket, which requires an &lt;em>SMA F&lt;/em> to &lt;em>MMCX M90&lt;/em> cable.&lt;/p>
&lt;p>Compared to the &lt;em>ArduSimple simpleRTK2B&lt;/em>, they are a bit cheaper and support triple-band frequencies.&lt;/p>
&lt;h2 id="connection-options">Connection options&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Connection&lt;/th>
&lt;th>Notes&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Module USB-C → RPi USB&lt;/td>
&lt;td>e.g. with angle connector&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Module UART → MainBoard UART&lt;/td>
&lt;td>requires header connectivity&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="configuration-options">Configuration options&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Method&lt;/th>
&lt;th>When to use&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Vendor software (UPrecise) on Windows&lt;/td>
&lt;td>Before installing module into mower&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Over UART bus (terminal only)&lt;/td>
&lt;td>When RPi is installed and operational&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="software">Software&lt;/h2>
&lt;p>The vendor offers &lt;a href="https://en.unicore.com/products/uprecise.html" target="_blank" rel="noopener">UPrecise&lt;/a>
to check all status details and configure the receiver. The UI is pleasing and has many features, but also quite some bugs. The download requires creating a free account.&lt;/p>
&lt;h2 id="configuration-via-uprecise-usb">Configuration via UPrecise (USB)&lt;/h2>
&lt;h3 id="receiver">Receiver&lt;/h3>
&lt;p>Connect to the receiver via UPrecise. COM3 is used when connected via USB. Paste the following commands into UPrecise:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>FRESET
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>CONFIG COM3 460800
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>MODE ROVER UAV
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>GPGGA 0.1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>GPGSV 1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>GPRMC 1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>GPGSA 1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>GPVTG 1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>GPGST 1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>SAVECONFIG
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>You can also connect directly to the receiver&amp;rsquo;s TTY, but make sure to send CR+LF (&lt;code>\r\n&lt;/code>) line endings — otherwise commands won&amp;rsquo;t be recognized.&lt;/p>
&lt;h3 id="openmower-mower_configtxt">OpenMower (&lt;code>mower_config.txt&lt;/code>)&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87">export&lt;/span> &lt;span style="color:#000">OM_GPS_PROTOCOL&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;NMEA&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87">export&lt;/span> &lt;span style="color:#000">OM_GPS_PORT&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;/dev/ttyUSB0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87">export&lt;/span> &lt;span style="color:#000">OM_GPS_BAUDRATE&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;460800&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="configuration-via-uart-mainboard">Configuration via UART (mainboard)&lt;/h2>
&lt;p>Use this method when the RPi is already installed and you want to wire the module directly to the mainboard UART header.&lt;/p>
&lt;h3 id="prerequisites">Prerequisites&lt;/h3>
&lt;ul>
&lt;li>Modified mower with replaced mainboard&lt;/li>
&lt;li>RPi with &lt;code>openmower&lt;/code> service running&lt;/li>
&lt;/ul>
&lt;h3 id="step-1--solder-headers-on-the-um9xx">Step 1 — Solder headers on the UM9XX&lt;/h3>
&lt;p>&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/unicore-gps//images/wm9xx.png" alt="UM9XX module with header pins">&lt;/p>
&lt;p>You only need the 4 middle pins from the 6 available: &lt;strong>GND&lt;/strong>, &lt;strong>VCC&lt;/strong>, &lt;strong>TX&lt;/strong>, &lt;strong>RX&lt;/strong>.&lt;/p>
&lt;p>The remaining 2 pins are not needed:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>EN&lt;/strong> — can be used to temporarily shut down the module&lt;/li>
&lt;li>&lt;strong>PPS&lt;/strong> — pulse-per-second signal, useful only if you need precise timing&lt;/li>
&lt;/ul>
&lt;h3 id="step-2--wire-um9xx-to-the-mainboard">Step 2 — Wire UM9XX to the mainboard&lt;/h3>
&lt;p>An &lt;a href="https://github.com/xtech/hw-openmower-utils/tree/main/hw-openmower-utils-v1-arduino-uno-um9x" target="_blank" rel="noopener">adapter board&lt;/a>
is available as an alternative to manual wiring.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>MainBoard&lt;/th>
&lt;th>UM9XX&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>TXD&lt;/td>
&lt;td>TXD&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>RXD&lt;/td>
&lt;td>RXD&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>5V_IN&lt;/td>
&lt;td>VCC&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GND&lt;/td>
&lt;td>GND&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/unicore-gps//images/um9xx-wiring-pinout.jpg" alt="UM9XX wiring pinout sample">
&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/unicore-gps//images/mainboard-wiring.jpg" alt="Mainboard wiring sample">&lt;/p>
&lt;h3 id="step-3--configure-um9xx-over-uart">Step 3 — Configure UM9XX over UART&lt;/h3>
&lt;p>Install miniterm (part of &lt;code>python3-serial&lt;/code>):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>sudo apt-get install python3-serial
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Stop the openmower service so it does not occupy the UART bus:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>sudo systemctl stop openmower
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Connect to the UART bus at the default baud rate (115200):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>python -m serial.tools.miniterm /dev/ttyAMA1 &lt;span style="color:#0000cf;font-weight:bold">115200&lt;/span> -e
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;div class="alert alert-info" role="alert">
Press &lt;kbd>Enter&lt;/kbd> after each command to send it to the receiver.
&lt;/div>
&lt;blockquote>
&lt;p>&lt;strong>Note:&lt;/strong> The following commands assume you wired to the bottom lane (COM1). If you used a different lane, replace &lt;code>COM1&lt;/code> with &lt;code>COM2&lt;/code>.&lt;/p>
&lt;/blockquote>
&lt;p>Factory-reset the module and note the response:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>FRESET
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Expected output:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$command,FRESET,response: OK*4D
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>system is rebooting
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>..........
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$devicename,COM1*67
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Set the baud rate to 460800:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>CONFIG COM1 460800
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Exit miniterm with &lt;strong>Ctrl+]&lt;/strong>, then reconnect at the new baud rate:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>python -m serial.tools.miniterm /dev/ttyAMA1 &lt;span style="color:#0000cf;font-weight:bold">460800&lt;/span> -e
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;blockquote>
&lt;p>&lt;strong>Note:&lt;/strong> If commands get no response, the baud rate or COM port is wrong. Reconnect at 115200, run &lt;code>FRESET&lt;/code>, and try again.&lt;/p>
&lt;/blockquote>
&lt;p>Configure NMEA output. Each &lt;code>GP*&lt;/code> command produces extra output — make sure &lt;code>SAVECONFIG&lt;/code> completes successfully at the end:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>MODE ROVER UAV
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>GPGSV COM1 2
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>GPRMC COM1 1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>GPGSA COM1 1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>GPVTG COM1 1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>GPGGA COM1 0.5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>SAVECONFIG
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Expected output after &lt;code>SAVECONFIG&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$GNGGA,192705.50,,,,,0,00,9999.0,,,,,,*45
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$command,SAVECONFIG,response: OK*55
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$GNGGA,192706.00,,,,,0,00,9999.0,,,,,,*43
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$GPGSA,,1,,,,,,,,,,,,,,,,*73
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$GNRMC,192706.00,V,,,,,,,030625,0.0,E,N,V*7B
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Exit miniterm with &lt;strong>Ctrl+]&lt;/strong>.&lt;/p>
&lt;h3 id="step-4--configure-openmower">Step 4 — Configure OpenMower&lt;/h3>
&lt;p>Run &lt;code>openmower configure ros&lt;/code> and set the GPS protocol to &lt;code>NMEA&lt;/code> and the baud rate to &lt;code>460800&lt;/code>.&lt;/p>
&lt;p>With your RTK base configured, take the mower outside and verify you get a GPS fix.&lt;/p>
&lt;h2 id="troubleshooting--receiver-resets">Troubleshooting — receiver resets&lt;/h2>
&lt;p>If the receiver cannot get a fix, a reboot may help. UPrecise provides three reset buttons. Unlike &lt;code>FRESET&lt;/code>, these &lt;strong>do not wipe the configuration&lt;/strong>:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Button&lt;/th>
&lt;th>Command&lt;/th>
&lt;th>Effect&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Hot Start&lt;/td>
&lt;td>&lt;code>RESET&lt;/code>&lt;/td>
&lt;td>Quick restart&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Warm Start&lt;/td>
&lt;td>&lt;code>RESET EPHEM&lt;/code>&lt;/td>
&lt;td>Clears ephemeris data&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Cold Start&lt;/td>
&lt;td>&lt;code>RESET EPHEM ALMANAC IONUTC POSITION&lt;/code>&lt;/td>
&lt;td>Full data reset&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>See section 8.3 (&amp;ldquo;Reset&amp;rdquo;) in the &lt;a href="https://core-electronics.com.au/attachments/localcontent/Unicore_Reference_Commands_Manual_For_N4_High_Precision_Products_V2_EN_R1_1_189543505cb.pdf" target="_blank" rel="nofollow noopener">Unicore command reference&lt;/a>
for details.&lt;/p></description></item><item><title>Docs: Using a Gamepad</title><link>https://openmower.de/archive/v1.2.0/docs/knowledge-base/using-a-gamepad/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/knowledge-base/using-a-gamepad/</guid><description>
&lt;p>Using a USB gamepad is the most intuitive way to control your OpenMower during the area recording process. Instead of relying on the on-screen joystick in the web app, a physical controller gives you precise control over the mower&amp;rsquo;s movement — making it much easier to drive clean outlines around your mowing areas.&lt;/p>
&lt;p>Any Xbox-compatible USB gamepad works out of the box. Simply plug it into one of the USB ports on your Raspberry Pi and OpenMower will detect it automatically. No additional configuration is needed.&lt;/p>
&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Recording Mode Required&lt;/h4>
&lt;p>Gamepad control only works while OpenMower is in &lt;strong>recording mode&lt;/strong>. Enter recording mode using the OpenMower app before using any of the buttons below.&lt;/p>
&lt;p>If no map has been recorded yet, OpenMower will automatically start in recording mode — no action needed.&lt;/p>
&lt;/div>
&lt;h2 id="video-tutorial">Video Tutorial&lt;/h2>
&lt;p>The video below walks through the entire area recording process, including how to use the gamepad to drive the mower and save mowing areas.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/j7qkwuoHJpI" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;h2 id="button-reference">Button Reference&lt;/h2>
&lt;figure>
&lt;img src="https://openmower.de/archive/v1.2.0/archive/v1.2.0/docs/knowledge-base/using-a-gamepad/images/gamepad_controls.png"
alt="OpenMower Gamepad Controls (image licensed from shutterstock.com)"/> &lt;figcaption>
&lt;p>OpenMower Gamepad Controls (image licensed from shutterstock.com)&lt;/p>
&lt;/figcaption>
&lt;/figure>
&lt;p>The table below covers every button used during normal operation and area recording. Most of your time will be spent holding &lt;strong>A&lt;/strong> to drive and using &lt;strong>B&lt;/strong> to start and stop recordings.&lt;/p>
&lt;h3 id="driving">Driving&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Input&lt;/th>
&lt;th>Action&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Hold &lt;strong>A&lt;/strong> + left analog stick&lt;/td>
&lt;td>Drive the mower&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>RB&lt;/strong>&lt;/td>
&lt;td>Turbo mode (faster driving)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="recording-areas">Recording Areas&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Input&lt;/th>
&lt;th>Action&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>B&lt;/strong>&lt;/td>
&lt;td>Start / stop recording the current polygon&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Y&lt;/strong> + &lt;strong>D-PAD UP&lt;/strong>&lt;/td>
&lt;td>Finish and save current area as a &lt;strong>navigation area&lt;/strong> — the mower can drive here but will not mow&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Y&lt;/strong> + &lt;strong>D-PAD DOWN&lt;/strong>&lt;/td>
&lt;td>Finish and save current area as a &lt;strong>mowing area&lt;/strong> — at least one is required&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="docking-station">Docking Station&lt;/h3>
&lt;p>Recording the docking station requires two separate position fixes that define the approach direction. The line between these two points tells the mower which way to face when returning to dock.&lt;/p>
&lt;ol>
&lt;li>Drive the mower to a point roughly &lt;strong>1.5 m in front of the docking station&lt;/strong>, facing toward it. Press &lt;strong>X&lt;/strong> to record the first point.&lt;/li>
&lt;li>Drive the mower forward until the &lt;strong>front wheels are just at the edge of the docking station&lt;/strong> — do not fully drive in. Press &lt;strong>X&lt;/strong> again to record the second point.&lt;/li>
&lt;/ol>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Input&lt;/th>
&lt;th>Action&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>X&lt;/strong> (first press)&lt;/td>
&lt;td>Record approach point ~1.5 m in front of the dock&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>X&lt;/strong> (second press)&lt;/td>
&lt;td>Record dock entry point at the edge of the station&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table></description></item><item><title>Docs: Mounting RoboClaws wheel spikes</title><link>https://openmower.de/archive/v1.2.0/docs/contributions/mount-wheel-spikes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openmower.de/archive/v1.2.0/docs/contributions/mount-wheel-spikes/</guid><description>
&lt;p>Author: prigor@discord, Vermut@discord&lt;/p>
&lt;p>There are YardForce spikes on Amazon and other sites like Etsy. This photo guide is about RoboClaws.&lt;/p>
&lt;p>In short:&lt;/p>
&lt;ul>
&lt;li>remove wheels&lt;/li>
&lt;li>(optionally) pre-drill holes, but people reported success even without that&lt;/li>
&lt;li>attach spikes from inside&lt;/li>
&lt;li>assemble back&lt;/li>
&lt;/ul>
&lt;p>Results:&lt;/p>
&lt;ul>
&lt;li>much better traction on grass&lt;/li>
&lt;li>noise on paving&lt;/li>
&lt;li>probable damage to tiles&lt;/li>
&lt;/ul>
&lt;style>
.image-gallery {overflow: auto; margin-left: -1%!important;}
.image-gallery li {float: left; display: block; margin: 0 0 1% 1%; width: 24%;}
.image-gallery li a {text-align: center; text-decoration: none!important; color: #777;}
.image-gallery li a span {display: block; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; padding: 3px 0;}
.image-gallery li a img {width: 100%; display: block;}
&lt;/style>&lt;ul class="image-gallery">&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/contributions/mount-wheel-spikes/images/1%20Remove%20the%20cover_hue53a9d4ee58724b03ef68b50029c80ff_2979120_1600x1600_fit_q99_catmullrom.jpg" title="1 Remove the cover" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/contributions/mount-wheel-spikes/images/1%20Remove%20the%20cover_hue53a9d4ee58724b03ef68b50029c80ff_2979120_400x400_fill_q95_catmullrom_smart1.jpg"
alt="1 Remove the cover"
title="1 Remove the cover">
&lt;span title="1 Remove the cover">1 Remove the cover&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/contributions/mount-wheel-spikes/images/2%20Pry%20the%20wheel%20covers_hu1c42841d2e1e62251d8e576f03379ee4_3309384_1600x1600_fit_q99_catmullrom.jpg" title="2 Pry the wheel covers" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/contributions/mount-wheel-spikes/images/2%20Pry%20the%20wheel%20covers_hu1c42841d2e1e62251d8e576f03379ee4_3309384_400x400_fill_q95_catmullrom_smart1.jpg"
alt="2 Pry the wheel covers"
title="2 Pry the wheel covers">
&lt;span title="2 Pry the wheel covers">2 Pry the wheel covers&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/contributions/mount-wheel-spikes/images/3%20Unscrew%20the%20nut_hue53a9d4ee58724b03ef68b50029c80ff_3036209_1600x1600_fit_q99_catmullrom.jpg" title="3 Unscrew the nut" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/contributions/mount-wheel-spikes/images/3%20Unscrew%20the%20nut_hue53a9d4ee58724b03ef68b50029c80ff_3036209_400x400_fill_q95_catmullrom_smart1.jpg"
alt="3 Unscrew the nut"
title="3 Unscrew the nut">
&lt;span title="3 Unscrew the nut">3 Unscrew the nut&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/contributions/mount-wheel-spikes/images/4%20Pull%20the%20wheel%20to%20remove%20it_hue53a9d4ee58724b03ef68b50029c80ff_1987685_1600x1600_fit_q99_catmullrom.jpg" title="4 Pull the wheel to remove it" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/contributions/mount-wheel-spikes/images/4%20Pull%20the%20wheel%20to%20remove%20it_hue53a9d4ee58724b03ef68b50029c80ff_1987685_400x400_fill_q95_catmullrom_smart1.jpg"
alt="4 Pull the wheel to remove it"
title="4 Pull the wheel to remove it">
&lt;span title="4 Pull the wheel to remove it">4 Pull the wheel to remove it&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/contributions/mount-wheel-spikes/images/_hue53a9d4ee58724b03ef68b50029c80ff_4259951_c6a59a6ed6aac85518adb3cb5b191747.jpg" title="5 Align the spikes from inside so platic is seen in all holes" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/contributions/mount-wheel-spikes/images/_hue53a9d4ee58724b03ef68b50029c80ff_4259951_225e4db38a082ecb14b107d64ff7b388.jpg"
alt="5 Align the spikes from inside so platic is seen in all holes"
title="5 Align the spikes from inside so platic is seen in all holes">
&lt;span title="5 Align the spikes from inside so platic is seen in all holes">5 Align the spikes from inside so platic is seen in all holes&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/contributions/mount-wheel-spikes/images/6%20Plastic%20will%20cover%20approximately%20half%20of%20the%20hole_hu1c42841d2e1e62251d8e576f03379ee4_3323691_1600x1600_fit_q99_catmullrom.jpg" title="6 Plastic will cover approximately half of the hole" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/contributions/mount-wheel-spikes/images/6%20Plastic%20will%20cover%20approximately%20half%20of%20the%20hole_hu1c42841d2e1e62251d8e576f03379ee4_3323691_400x400_fill_q95_catmullrom_smart1.jpg"
alt="6 Plastic will cover approximately half of the hole"
title="6 Plastic will cover approximately half of the hole">
&lt;span title="6 Plastic will cover approximately half of the hole">6 Plastic will cover approximately half of the hole&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/contributions/mount-wheel-spikes/images/_hu1c42841d2e1e62251d8e576f03379ee4_3595863_491de1abb23a47659ca288767b94d2a0.jpg" title="7 Optionally pre-drill 2mm holes, try to stay within plastic" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/contributions/mount-wheel-spikes/images/_hu1c42841d2e1e62251d8e576f03379ee4_3595863_745a41cc1dc9b5f55d180796e57ff396.jpg"
alt="7 Optionally pre-drill 2mm holes, try to stay within plastic"
title="7 Optionally pre-drill 2mm holes, try to stay within plastic">
&lt;span title="7 Optionally pre-drill 2mm holes, try to stay within plastic">7 Optionally pre-drill 2mm holes, try to stay within plastic&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/contributions/mount-wheel-spikes/images/8%20Screw%20the%20screws,%20don%27t%20overtight_hu1c42841d2e1e62251d8e576f03379ee4_3974105_1600x1600_fit_q99_catmullrom.jpg" title="8 Screw the screws, don&amp;#39;t overtight" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/contributions/mount-wheel-spikes/images/8%20Screw%20the%20screws,%20don%27t%20overtight_hu1c42841d2e1e62251d8e576f03379ee4_3974105_400x400_fill_q95_catmullrom_smart1.jpg"
alt="8 Screw the screws, don&amp;#39;t overtight"
title="8 Screw the screws, don&amp;#39;t overtight">
&lt;span title="8 Screw the screws, don&amp;#39;t overtight">8 Screw the screws, don&amp;#39;t overtight&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/contributions/mount-wheel-spikes/images/9%20Assemble%20them%20back_hu1c42841d2e1e62251d8e576f03379ee4_3757518_1600x1600_fit_q99_catmullrom.jpg" title="9 Assemble them back" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/contributions/mount-wheel-spikes/images/9%20Assemble%20them%20back_hu1c42841d2e1e62251d8e576f03379ee4_3757518_400x400_fill_q95_catmullrom_smart1.jpg"
alt="9 Assemble them back"
title="9 Assemble them back">
&lt;span title="9 Assemble them back">9 Assemble them back&lt;/span>
&lt;/a>
&lt;/li>&lt;li>
&lt;a href="https://openmower.de/archive/v1.2.0/docs/contributions/mount-wheel-spikes/images/A%20Close%20the%20cover_hue53a9d4ee58724b03ef68b50029c80ff_1997649_1600x1600_fit_q99_catmullrom.jpg" title="A Close the cover" class="lightbox-image">
&lt;img class="nozoom"
src="https://openmower.de/archive/v1.2.0/docs/contributions/mount-wheel-spikes/images/A%20Close%20the%20cover_hue53a9d4ee58724b03ef68b50029c80ff_1997649_400x400_fill_q95_catmullrom_smart1.jpg"
alt="A Close the cover"
title="A Close the cover">
&lt;span title="A Close the cover">A Close the cover&lt;/span>
&lt;/a>
&lt;/li>
&lt;/ul></description></item></channel></rss>