Skip to content

This package contains the code used by Kamaro Engineering e.V. for navigating within a crop row at the Field Robot Event (FRE). The version published herein is a polished version of the code that won Task 1 of the virtual FRE 2021.

License

Notifications You must be signed in to change notification settings

Kamaro-Engineering/fre21_row_crawl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FRE Row Navigation

Code style: clang-format --style=Google License: GPL v3

This package contains the code used by Kamaro Engineering e.V. for navigating within a crop row at the Field Robot Event (FRE). The version published herein is a polished version of the code that won Task 1 of the virtual FRE 2021.

This package assumes you are working on ROS Noetic.

Working principle

The only sensor used for traversing the row is the laser scanner. For driving through the rows we search the filtered point cloud for an obstacle-free cone of configurable length, usually 1 - 2 m, in the filtered laser scan, beginning from the center (driving direction of robot). This gives us a line in the direction of the row. We shift this line to the left/right by an amount calculated from the ratio of the distances to the plants on the left/right. We clamp the distances to a maximum value to not be too confused by missing plants. The distances are calculated by growing a rectangle on the side of the robot until more than three points are inside it. This helps to avoid taking shortcuts through the plants in curves. We then use a PID controller to steer onto the point on this line that is 1m in front of the robot.

Image of the visualization of this node in rviz

This algorithm steers the robot reactively and requires no concept of a field map. Notably, it controls the robot based on two different measures and controlled variables:

  • the angular offset (controlling the robot orientation)
  • the offset to the crop rows on both sides

Our main robot (Beteigeuze) for which this algorithm was originally designed, has two steerable axes and can therefore control both variables independently. For the simulated Jackal robot (and for our other Robot "Dschubba", which took part in FRE2019), which both use differential driving, we use an adapted version of the algorithm that compensates the side offset by adding an additional angle to the direction computed by the angular offset.

Note: The above description was originally published in the proceedings document for 2021's Field Robot Event.

How to use

This package contains one node, crawl_row_node, that implements the algorithm described above.

Needed inputs:

  • a front-mounted LIDAR, available at
    • /lidar_front (as a sensor_msgs/LaserScan message)
    • /lidar_front_cloud_filtered (as a sensor_msgs/PointCloud2 message, please see the http://wiki.ros.org/laser_geometry and http://wiki.ros.org/laser_filters packages for converting the data)
    • /odometry/filtered containing an nav_msgs/Odometry message
    • /tf (for visualization, a base_link frame should be present)
    • a /crawl_row action (type definition in this package)
      • publishing a goal on this action will start the row navigation
      • the action will complete when the end of the row is detected, and this node will become inactive again

Outputs

  • /row_navigation/cmd_vel (geometry_msgs/Twist message for controlling a robot with differential drive)
  • /crawl_row/viz (visualization_msgs/Marker for RViz, showing the inner workings of the algorithm)

License License: GPL v3

The code in this repository is (c) by Kamaro Engineering e.V., subject to the file LICENSE.

About

This package contains the code used by Kamaro Engineering e.V. for navigating within a crop row at the Field Robot Event (FRE). The version published herein is a polished version of the code that won Task 1 of the virtual FRE 2021.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published