Giter VIP home page Giter VIP logo

visual-crop-row-navigation's Introduction

Visual Crop Row Navigation

visual_servoing_husky

Update

A python based implementation for Multi-crop-row navigation can be found here visual-multi-crop-row-navigation

IMAGE ALT TEXT HERE

This is a visual-servoing based robot navigation framework tailored for navigating in row-crop fields. It uses the images from two on-board cameras and exploits the regular crop-row structure present in the fields for navigation, without performing explicit localization or mapping. It allows the robot to follow the crop-rows accurately and handles the switch to the next row seamlessly within the same framework.

This implementation uses C++ and ROS and has been tested in different environments both in simulation and in real world and on diverse robotic platforms.

This work has been developed @ IPB, University of Bonn.

Check out the video1, video2 of our robot following this approach to navigate on a test row-crop field.

husky_navigationhusky_navigation

Features

  • No maps or localization required.
  • Running on embedded controllers with limit processing power (Odroid, Raspberry Pi).
  • Simulation environment in Gazebo.
  • Robot and cameras agnostic.

Robotic setup

This navigation framework is designed for mobile robots equipped with two cameras mounted respectively looking to the front and to the back of the robot as illustrated in the picture below.

agribot_3d camera_img

A complete Gazebo simulation package is provided in agribot_robot repository including simulated row-crop fields and robot for testing the navigation framework.

husky_navigation gazebo_navigation

Dependencies

  • c++11
  • catkin
  • opencv >= 2.4
  • Eigen >= 3.3

How to build and run

  1. Clone the package into your catkin_ws
cd ~/catkin_ws/src
git clone https://github.com/PRBonn/visual_crop_row_navigation.git
  1. Build the package
cd ~/catkin_ws
catkin build visual_crop_row_navigation
  1. Run ROS driver to stream images from the robot's cameras, for example using usb_cam
  1. Run visual servoing navigation
roslaunch visual_crop_row_navigation visualservoing.launch

Successfully tested using:

  • Ubuntu 16.04
  • ROS kinetic

Test data

Download the bagfile used for our experiments here.

Simulation

Simultion and robot packages can be found in Agribot repo


paypal


Citation

if you use this project in your recent works please refernce to it by:

@article{ahmadi2021towards,
  title={Towards Autonomous Crop-Agnostic Visual Navigation in Arable Fields},
  author={Ahmadi, Alireza and Halstead, Michael and McCool, Chris},
  journal={arXiv preprint arXiv:2109.11936},
  year={2021}
}

@inproceedings{ahmadi2020visual,
  title={Visual servoing-based navigation for monitoring row-crop fields},
  author={Ahmadi, Alireza and Nardi, Lorenzo and Chebrolu, Nived and Stachniss, Cyrill},
  booktitle={2020 IEEE International Conference on Robotics and Automation (ICRA)},
  pages={4920--4926},
  year={2020},
  organization={IEEE}
}

Acknowledgments

This work has been supported by the German Research Foundation under Germany’s Excellence Strategy, EXC-2070 - 390732324 (PhenoRob) and Bonn AgRobotics Group

visual-crop-row-navigation's People

Contributors

alirezaahmadi avatar lorenardi 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.