Autonomous Rover for Row Crop Navigation

Hello all, I am working on a project to build an autonomous rover that will navigate through a field of row crops. The goal is to use sensors to detect the row line and keep the rover centered in order to minimize the damage on the plants. I have been looking into this for a while and I have seen several people working on rovers for mowing, but non of them used a companion computer for the precision I am looking for.

I am using a Pixhawk2.1 with a Here2 GNSS GPS module and a NVIDIA Jetson Nano as a companion computer. The rover is a skid steer style using 2 wheelchair motors.

My question is how should I go about sending these corrections to the FC from the companion computer. I have looked into mavproxy and dronekit but did not see what I am needing. I have also been looking into ROS but it seems to be a little more than what I need. Plus the distributions of ROS2 for Ubuntu 18.04 are all at EOL.

Thanks for any advice!

Sounds like an interesting project. What made you think that Dronekit wasn’t helpful in achieving your goals?

I haven’t looked into Dronekit much because I have been told it has issues with the pixhawk2.1 adsb. Is this incorrect or has the issue been resolved?

Sorry I am not sure if there are issues or if they have been resolved. I have not used Dronekit myself but have plenty of experience using both Mavlink and ROS (C++). From the Dronekit blurb it seems it should be useful for exactly what you want to do. We have a number of large rovers that do lane following based on a combination of lidar and camera data. The lane following is an independent controller based on a neural network trained for the job and we use a form of way point following to get from row to row.

Thanks for the help. I will look at dronekit a little more and see if I can get it working.

What version of ROS are you using and on what system? I have been slowly trying to learn it but it seems to a have a little bit of a learning curve.

ROS Melodic works fine on Ubuntu 18.04.4 LTS. I advise you to use that.

We started out with Melodic + Dashing on Ubuntu 18.04 but have migrated to Foxy only on 20.04. The ROS2 bridge proved to be problematic (or at least our implementation of it was). However we are now finding that Foxy does not have the best performance…

1 Like

I looked into Dronekit and it does have a way to accomplish what I am trying to do, but it seems overly complicated. It would be nice to just send a correction signal versus completely rewriting the mission each time. Is there another way that I did not see or am I misunderstanding the documentation?

I am currently thinking about building a circuit to mix signals and send corrections from my free servo outputs. Does anyone see a problem with this method?

Thanks for the advice.