Giter Site home page Giter Site logo

rfvermut / open_mower_ros Goto Github PK

View Code? Open in Web Editor NEW

This project forked from clemenselflein/open_mower_ros

0.0 0.0 0.0 7.59 MB

License: Other

Shell 0.17% JavaScript 88.73% C++ 8.41% Python 0.17% C 0.16% HTML 0.08% CMake 2.09% Dockerfile 0.19%

open_mower_ros's Introduction

ROS Workspace

Build

This folder is the ROS workspace, which should be used to build the OpenMower ROS software. This repository contains the ROS package for controlling the OpenMower.

There are references to other repositories (libraries) needed to build the software. This way, we can track the exact version of the packages used in each release to ensure package compatibility. Currently, the following repositories are included:

  • slic3r_coverage_planner: A coverage planner based on the Slic3r software for 3d printers. This is used to plan the mowing path.
  • teb_local_planner: The local planner which allows the robot to avoid obstacles and follow the global path using kinematic constraints.
  • xesc_ros: The ROS interface for the xESC motor controllers.

Getting started

Running on your machine

OpenMower requires ROS Noetic. (installation instruction) There is no distributed release package yet, for development and test purpose it's best to build the workspace on your own.

By default, OpenMower is supposed to run on an ARM-based Raspberry boards: https://x-tech.online/2022/01/installing-ros-noetic-on-a-headless-raspberry-pi-4-with-ubuntu-20-04/

Fetch Dependencies

Before building, you need to fetch this project's dependencies. The best way to do this is by using rosdep:

sudo apt install python3-rosdep
sudo rosdep init

Run in the repository's root:

rosdep update
rosdep install --from-paths src --ignore-src --default-yes

Build workspace

Just build as any other ROS workspace: catkin_make Once it's done, another step is to source workspace env vars:

source devel/setup.bash

Launch OpenMower

OpenMower ROS package is distributed with roslaunch launch files. There are few in: src/open_mower/open_mower/launch, however the open_mower.launch runs everything needed to mow.

roslaunch open_mower open_mower.launch

Before you launch open_mower package, env vars with configuration have to be set.

cp src/open_mower/open_mower/config/mower_config.sh.example mower_config.sh
source mower_config.sh # it's expected to adjust the file

Running in a container

TBD (no automated image build yet)

Contribution

How to Build Using CLion IDE

First, launch CLion in a sourced environment. For this I use the following bash file:

#!/bin/zsh

source <your_absolute_path_to_repository>/devel/setup.zsh

# You can find this path in the Jetbrains Toolbox
nohup <your_absolute_path_to_clion>/clion.sh >/dev/null 2>&1 &

Then, open the src directory. CLion will prompt with the following screen:

CLion CMake Settings

Copy the settings for Build directory and CMake options. Everything else can stay the same. This is all you need!

Notes / ToDos

  • For local navigation, I have tried to use the teb_local_planner. Unfortunately, it seems that (at least for me) the noetic version is VERY broken. Therefore I added the current melodic dev version as git submodule to this repo. It seems to work fine with ROS noetic and this setup here.
  • If the map has no docking point set, planning crashes as soon as we try to approach the docking point. TODO: check, before even starting to mow.

License

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Feel free to use the design in your private/educational projects, but don't try to sell the design or products based on it without getting my consent first. The idea here is to share knowledge, not to enable others to simply sell my work. Thank you for understanding.

open_mower_ros's People

Contributors

clemenselflein avatar cloudn1ne avatar jkaflik avatar mnh-jansson avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.