Skip to content

Commit

Permalink
docs: update overview and getting started pages (#34)
Browse files Browse the repository at this point in the history
- Restructured the overview page to reflect project maturity and community contributions.
- Emphasized the supported mower models and active community work on new models.
- Updated the smart home integration section to highlight detailed monitoring and real-time data visualization.
- Revised the getting started page to sound more mature and assertive.
  • Loading branch information
vermut committed Jun 1, 2024
1 parent 90ac1c6 commit 3aadc92
Show file tree
Hide file tree
Showing 8 changed files with 255 additions and 79 deletions.
42 changes: 20 additions & 22 deletions content/en/docs/Getting started/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,40 +8,38 @@ description: >

## Important Info
{{% alert title="Read Before Starting" color="warning" %}}
- **This project is still in an early stage**: You will need time to get the robot running! You will encounter bugs! You might break stuff! You might spend the money and don't get it to work! No guarantees for anything!
- **Ongoing Development**: The OpenMower project is under continuous development. Be prepared to invest time and effort to get the robot fully operational. While the project is robust, you may encounter bugs or potential issues along the way.
- **DO NOT** use the stock charger with the OpenMower mainboard!
- **Lithium Batteries can be dangerous:** You will be building your own charger. Make sure you are comfortable doing that and understand the dangers of working with Lithium batteries.
- **Read** the whole documentation and **get a high-level overview**: Understand every step involved in the build before actually doing anything.
- **You are responsible for your own actions**: Be sure that you know what you are doing!
- **This documentation is work in progress**: There might be errors and missing steps. If you have questions **ask on Discord**.
{{% /alert %}}
- **Lithium Batteries can be dangerous:** You will be building your own charger. Ensure you are comfortable with this process and understand the associated risks.
- **Read** the entire documentation and **gain a high-level overview**: Understand each step involved in the build before starting.
- **You are responsible for your own actions**: Make sure you know what you're doing!
- **Evolving Documentation**: This documentation is continuously being improved. There may be errors or missing steps. If you have questions, **ask on Discord**.
{{% /alert %}}

## Prerequisites

Read this paragraph thoroughly in order to understand _which_ components you will need for the Open Mower project and _why_ you will need them. This prevents you from buying expensive stuff and later noticing that you will need even more expensive stuff in order to finish the project.

Read this section thoroughly to understand _which_ components you will need for the Open Mower project and _why_ you need them. This will prevent unnecessary expenses and ensure you are well-prepared.

### Required Knowledge
- **Linux**: You should be comfortable using a Linux PC, and you should know how to install a Raspberry Pi. Although there is the Open Mower app available, you will need to change some settings and probably do some debugging to get it working.
- **Electronics**: You should be comfortable handling PCBs and have some soldering skills. You should be capable of understanding each step you are about to perform.
- **Linux**: You should be comfortable using a Linux PC and know how to set up a Raspberry Pi. While the Open Mower app is available, you may need to adjust settings and debug issues.
- **Electronics**: You should have experience handling PCBs and soldering. Ensure you understand each step you will perform.

### Required Parts
The Open Mower project consists of multiple parts:
- **The Robot**: The robot is a modified lawn-mowing robot. The robot is built by using the case and motors of an off-the-shelf lawn mowing robot and replacing the electronics with custom electronics. You will either need to buy the custom electronics or get the parts and solder it yourself.
- **RTK GPS**: The robot needs to know where _exactly_ it is inside your property in order to mow with high precision. This is achieved by a technology called RTK GPS. This type of GPS uses two receivers: one on the robot and one fixed base station. The base station sends error correction data to the robot via some radio link. This way, the robot is able to position with centimeter accuracy. This can be done using Wi-Fi or some other long range radio. _Hint: There are also cloud services available for RTK error corrections. Some are free and some are paid_
- **Docking Station**: The robot needs to recharge in a docking station. Unfortunately the battery-charging electronics is not part of the original docking station. That's why we will replace the electronics inside the original docking station as well. **Do not use the stock docking station with the modified robot**
The Open Mower project involves several key components:
- **The Robot**: A modified lawn-mowing robot. You will use the case and motors from an off-the-shelf robot and replace the electronics with custom components. You can either purchase the custom electronics or solder the parts yourself.
- **RTK GPS**: Precision is achieved with RTK GPS, which uses two receivers: one on the robot and one fixed base station. The base station sends error correction data to the robot, enabling centimeter accuracy. This can be done using Wi-Fi or another long-range radio. Note: Some cloud services offer RTK error corrections, both free and paid.
- **Docking Station**: The robot needs a docking station to recharge. Since the original docking station lacks the necessary charging electronics, you will replace the internal electronics. **Do not use the stock docking station with the modified robot.**

If you are ready and want to get shopping, check out the [Shopping List](/docs/knowledge-base/shopping-list)
Ready to start? Check out the [Shopping List](/docs/knowledge-base/shopping-list).

## Build Steps

![Open Mower Build Overview](flow_chart.jpg)

It's important to build the components in the correct order:
- The first step is to modify the robot by following the [Robot Assembly](/docs/robot-assembly) steps. Don't let the mower powered on for too long, because **you cannot charge it using the unmodified docking station**.
- With the modified robot, it's time to modify the docking station by following the [Docking Station Assembly](/docs/docking-station-assembly) section. **Now you are able to charge the battery with the new docking station.**
- The next step is to set up the software. Since this might take some time and therefore drain the battery, it's important that you do this step after finishing the docking station assembly. This step connects the robot to your Wi-Fi, downloads the OpenMower software, and you will do some general configuration.
- Finally, with the software running, you can use the Open Mower App to record your mowing areas and navigation areas and finally mow.

Follow these steps in order to build your OpenMower:
- First, modify the robot following the [Robot Assembly](/docs/robot-assembly) steps. Avoid leaving the mower powered on too long, as **you cannot charge it using the unmodified docking station**.
- Next, modify the docking station using the [Docking Station Assembly](/docs/docking-station-assembly) guide. **You will then be able to charge the battery with the new docking station.**
- Set up the software. This step connects the robot to your Wi-Fi, downloads the OpenMower software, and involves general configuration. Ensure the docking station assembly is complete before starting this step to avoid battery drain.
- Finally, with the software running, use the Open Mower App to record your mowing and navigation areas, and start mowing.

If you have the parts and are ready to assemble the robot, read the [Robot Assembly](/docs/robot-assembly) docs.
If you have the parts and are ready to assemble the robot, read the [Robot Assembly](/docs/robot-assembly) documentation.
84 changes: 28 additions & 56 deletions content/en/docs/Overview/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,78 +2,50 @@
title: "Overview"
linkTitle: "Overview"
weight: 1
description: >
General information about the Open Mower project.
description: General information about the Open Mower project.
carousel:
- image: open_mower_app_1.jpg
- image: open_mower_app_2.jpg
- image: homeassistant_dashboard.png
- image: smarthome_tracker.png
---





## What is Open Mower?
### Introduction and Vision
**OpenMower** is a pioneering project aimed at revolutionizing robotic lawn mowing through open-source collaboration. What started as a modest garage project has grown into a mature, community-driven initiative with robust hardware, advanced features, and a dedicated user base.

If you want to see a quick overview, you can check out this video:

<a href="https://www.youtube.com/watch?v=BSF04i3zNGw" target="_blank"><img src="https://user-images.githubusercontent.com/2864655/161540069-f4263fa7-a47b-49d2-a7bc-d1cdc3a47704.jpg" /></a>

### Key Features and Achievements
**Autonomous Lawn Mowing:** The device efficiently mows the lawn automatically, ensuring a neat and even cut.

**Good Safety:** Equipped with emergency stop features for enhanced safety.

Let's be honest: The current generation of robotic lawn mowers sucks. Basically, all of these bots drive in a random direction until they hit the border of the lawn, rotate for a randomized duration and repeat. **I think we can do better!**


Therefore, we have disassembled the cheapest off-the-shelf robotic mower we could find ([YardForce Classic 500](https://amzn.to/3NWgIxk)) and were surprised that the hardware itself is actually quite decent:
- Geared sensored brushless motors for the wheels
- A sensored brushless motor for the mower motor itself
- The whole construction seems robust, waterproof and all in all thought through
- All components are connected using standard connectors, therefore, upgrading the hardware is easily possible.

The bottom line is: The bot itself is surprisingly high quality and doesn't need to be changed at all. **We just need some better software in there**.

## Important Information

OpenMower is an early stage open source project, **and not a finished product!**

This basically means: I'm just documenting a project of mine here for free, and I don't have the time and resources to check that devices built using this information will be safe to use, legal to use or even work as intended. You will need technical know-how to use this project, and I'm not liable for any direct or indirect damages your actions do to anyone or anything. [More Info](/docs/getting-started/#important-info)


## Project Goals / Current State

The basic mowing function finally works! As you can see in the video, map teaching and mowing work as expected. It even returns to the docking station automatically as soon as the battery gets low and continues once it's recharged. Of course, we don't want to stop there, and we want to provide some more great features.

**Here is a rough overview of what works and what's planned for the future:**

:heavy_check_mark: **Autonomous Lawn Mowing:** Obviously, the device should be able to mow the lawn automatically.

:heavy_check_mark: **Good Safety:** The device must be safe, e.g. emergency stop if lifted or crashed.

:heavy_check_mark: **No Perimeter Wire Needed:** We want to be flexible and support multiple mowing areas.

:heavy_check_mark: **Low Cost:** It should be cheaper than a mid-range off-the-shelf product

:heavy_check_mark: **Open:** I want to share knowledge and enable others to build an OpenMower as well.

:heavy_check_mark: **Nice to Look At:** You should not be ashamed to have an OpenMower mowing your lawn.

:wrench: **Usability:** The mower should be easy to use. For now, the mower is controlled via ssh terminal and has no app or other graphical user interface. Also, the mowing needs to be triggered manually. There is no schedule implemented yet.

:wrench: **Smart Home:** The mower should be connected to your smart home. This way you can see what it is currently doing and also start it automatically, according to your own rules.
**No Perimeter Wire Needed:** Supports flexible operation across multiple mowing areas without the need for perimeter wires.

:wrench: **Avoid Obstacles:** The mower should detect obstacles and avoid them during mowing. For now, if the mower is not able to drive the path successfully, it will skip a part of the path and retry.
**Low Cost:** Designed to be more affordable than mid-range commercial models.

:wrench: **Rain Detection:** The device should be able to detect bad weather conditions and pause mowing until they improve.
**Open Source:** Committed to sharing knowledge and enabling others to build their own OpenMower.

:wrench: **Support More Mowers:** Currently the only mower officially supported is the YardForce Classic 500. This is because the current mainboard revision fits in this mower. The goal is to create modular hardware which can be used in other mower models as well (with an adaptor of course).
**User-Friendly App:** The web app interface allows easy setup, control and management of the mower, from desktop or mobile phone.

**Smart Home Integration:** Seamlessly integrates with HomeAssistant, allowing for advanced automations and detailed monitoring. Users can view real-time data such as battery status, motor temperatures, and power sensors directly from their smart home dashboard. Additionally, the integration supports automations like pausing operations during rain and resuming once conditions improve, ensuring efficient and safe operation.

## Open Mower App
{{< carousel height="500" unit="px" items="4" duration="3000" >}}

![Open Mower App 1](open_mower_app_1.jpg)
![Open Mower App 2](open_mower_app_2.jpg)

### Support More Mowers
Currently, the only mower officially supported is the YardForce Classic 500, as the existing mainboard revision is designed to fit this model. However, we now also support the YardForce 500B and 600 models with slight modifications to the mainboard. The stock mainboard can also be adapted to fit the YardForce SA600ECO and SA900ECO, though this requires some extra work. For a comprehensive list of compatible models, please refer to our compatible models page.

### Community and Development
The OpenMower project thrives on the contributions of a vibrant community of hobbyists and professionals. Active discussions and collaborative efforts on platforms like Discord are continuously working on supporting a variety of other mower models, including the Worx Landroid, Fuxtec Redback, Bosch Indego, Lidl Parkside, and Viking MI 632. While these models are not yet officially supported out of the box, the collaborative efforts and shared knowledge in the community make it worthwhile to try adapting other models or join the discussion.

## Where should I go next?
### Getting Started and Resources
Interested in joining the OpenMower project? Explore the following resources to get started:
- [Getting Started](/docs/getting-started/): Quick start guide to building your own OpenMower.
- [Links](/docs/links): Additional information, repositories, and the shop.
- [Compatible Models Page](/docs/compatible-models): Comprehensive list of supported mower models.

If you are interested in joining the Open Mower project, you can build your own by checking the following pages:
* [Getting Started](/docs/getting-started/): Read this if you want to start building quickly
* [Links](/docs/links): Links to more information, the repositories and the shop.
### Project Goals and Future Plans
The OpenMower project continues to evolve with ambitious goals for the future. Planned features include obstacle detection, enhanced scheduling, and expanded compatibility with new mower models. Join us on this journey to redefine robotic lawn mowing.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added content/en/docs/Overview/smarthome_tracker.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 3 additions & 1 deletion layouts/partials/hooks/head-end.html
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
<script type="text/javascript" src="/js/medium-zoom.min.js"></script>
<script type="text/javascript" src="/js/asciinema-player.min.js"></script>
<script type="text/javascript" src="/js/carousel.js"></script>
<link rel="stylesheet" href="/css/asciinema-player.css">
<link rel="stylesheet" href="/css/carousel.css">

<script>
$(function () {
Expand All @@ -14,4 +16,4 @@
});
});
});
</script>
</script>
23 changes: 23 additions & 0 deletions layouts/shortcodes/carousel.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{{ $height := .Get "height" }}
{{ $unit := .Get "unit" }}
{{ $ordinal := $.Ordinal }}
{{ $items := .Get "items" }}
{{ $duration := .Get "duration" }}
{{ $carousel := .Page.Params.carousel }}

<div id="carousel{{ $ordinal }}" class="carousel" duration="{{ $duration }}">
<ul>
{{ range $index, $slide := $carousel }}
<li id="c{{ $ordinal }}_slide{{ add $index 1 }}">
<img src="{{ $slide.image }}" style="max-height: {{ $height }}{{ $unit }}" alt="" class="nozoom" />
</li>
{{ end }}
</ul>
<ol>
{{ range $index, $slide := $carousel }}
<li><a href="#c{{ $ordinal }}_slide{{ add $index 1 }}"></a></li>
{{ end }}
</ol>
<div class="prev">&lsaquo;</div>
<div class="next">&rsaquo;</div>
</div>
54 changes: 54 additions & 0 deletions static/css/carousel.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@

/* CAROUSEL CSS */
.carousel {position: relative;}
.carousel::after {
content: "";
position: absolute;
left: 0;
top: 0;
box-shadow: inset 0px 0px 120px 30px rgba(0,0,0,0.35);
width: 100%;
height: 100%;
pointer-events: none;
}
.carousel ul {
overflow: auto;
display: flex;
height: 40vw;
max-height: 500px;
scroll-snap-type: x mandatory;
scroll-snap-points-y: repeat(100%);
scroll-behavior: smooth;
background: white;
-ms-overflow-style: none; /* IE and Edge */
scrollbar-width: none; /* Firefox */
width: 100%;
}
.carousel ul::-webkit-scrollbar {display: none; /* Hide scrollbar for Chrome, Safari and Opera */}
.carousel ul li {
width: 100%;
min-width: 100%;
list-style: none;
scroll-snap-align: start;
display: flex;
justify-content: center;
align-items: center;
color: #30638e;
font-weight: bold;
font-size: 30px;
text-align: center;
text-shadow: 0px 0px 10px rgba(0,0,0,0.75);
}
.carousel ul li div {z-index: 9;}
.carousel ul li div a {color: #30638e; display: inline-block; background: white; text-shadow: none; color: black; padding: 5px 15px; font-size: 18px; text-decoration: none; border-radius: 4px; margin-top: 10px;}
.carousel ol {position: absolute; bottom: 15px; display: flex; justify-content: center; left: 50%; transform: translateX(-50%); z-index: 9;}
.carousel ol li {list-style: none; padding: 0 5px;}
.carousel ol li a {display: block; height: 10px; width: 10px; border: 2px solid #30638e; background: transparent; border-radius: 100%;}
.carousel ol li.selected a {background: black;}
.carousel .prev, .carousel .next {user-select:none; cursor: pointer; font-size: 50px; color: #30638e; position: absolute; left: 0; padding: 15px; top: 50%; transform: translateY(-50%); z-index: 9;}
.carousel .next {left: auto; right: 0;}

/* RESPONSIVE CSS */
@media only screen and (max-width: 600px) {
.carousel ul li div {display: none;}
}
Loading

0 comments on commit 3aadc92

Please sign in to comment.