Tractobots, my attempts at field robots

Only the using the heading from the IMU or complimentary filtering with GPS heading?

Actually, I misspoke. I forgot that I’m using the IMU for turn rate also.

But mostly I’m using the IMU heading so that I can “Turn 10 degrees left (of where you are now)” and it’ll do it. The IMU heading drifts but I use the GPS heading to determine how much I need to turn, so it’s not a big issue.

Since you have RTK and cm level accuracy of fix, why not just use the GPS to determine your heading? Promise, that’s the last question lol.

I need an accurate heading and a high refresh rate. RTK doesn’t give me either. (If I were smarter, I’d use kinematic models, but…)

The Tinkerforge IMU 2 looks interesting. What ROS package are you using for it? So far I’ve only seen tinkerforge_laser_transform and another package from the same author.
But I’m not happy with the nodes covariance matrix (all 3x3 values 0.1).

I’m not an export on covariance, but having all three 3x3 matrices with the same value looks a bit arbitrary to me. Also I don’t see any dependency on one axis to the other.

Humpelstilzchen,
The Tinkerforge ROS package is now much more complete:

I ended up just connecting directly to brickd, though.

I like boring robots. Tractobot03 is approaching that stage. Here is a boring video of it planting:

Tractobot03 has planted 122A this week. I have not driven it locally for any planting. It was painfully slow and tedious for a couple days. I had to enter each line into my code, ensuring that it went the correct way, start following the line, drop the planter, and start the fertilizer. Then I had to raise the planter, stop the fertilizer, turn, then load a new line.

Today felt much better. It’s running pretty much on its own. I even ran home once while it traveled from the far end of the field. The main problem now is that I lose GPS periodically. At least I have it programmed to stop when that happens. Then I back up and resume.

Because of the pressure to plant, I fell back on my old navigation code. My lines are not at all straight. I’m calling them “heritage lines” - like my grandfather planted. I look forward to improving them.

1 Like

How goes the progress?

We’ve been working on neural net fuzzy logic steering to make autosteer machine independent.

I slogged through planting all of the corn (535A), planted the soybeans manually, and then barely prepped for the AgBot Challenge. It was today. I won!

Now I’m catching up on sleeping and eating…

7 Likes

Congratulations!!! A great accomplishment to win with the competition and even more so given the competition.

Very cool I like seeing how you build and sort through all the issues. All while keeping the farm running. But soon you will just have to push the buttons and Watch the monitors

Kyler, i think you may find this interesting from the Canadian Defense Technical Information Center

http://www.dtic.mil/docs/citations/ADA599492

1 Like

Thank you. Yes, Pure Pursuit came up a lot in my research. I decided that I could do without it for the trivially simple (straight line) situations that I handle now, but I do want to try it for more complex handling. I recall that the FroboMind field robot code uses Pure Pursuit or similar. (The target point is shown in the simulation.) I intend to try implementing that code on my machines.

I have Tractobot00 running again. I hope to start using it as a testbed soon.

I’m so glad the PID package I worked on has been useful to you. This is why I do it. I’m sure others feel the same way.

1 Like

Hey Kyler, just wanted to mention i’ve incorporated pure pursuit into AgOpenGPS. It is far superior to any other guidance technique by a very long way. It just works and is very simple to set up for the vehicle.

i’m by far not an expert (that’s the reason i am here… wanted to learn more since i’m sitting home doing nothing but searching for drug reviews because of health issues and learning about these because that’s what i like) but those really look amazing. would you mind if i’m gonna have some questions for you to ask??

Fire away with questions. Please understand that these are really simple machines and not good ROS examples, though.

@kylerlaird Hi! Good job with the tractors! Are you aware of some other builders of autonomous tractors? There is Matthew Reimer

and maybe others. He is using Pixhawk controller + RTK.

Also the Open Source Ecology project is just starting Open Source Robotic Tractor
http://opensourceecology.org/wiki/Open_Source_Robotic_Tractor

We are also going for a robotic mower at
https://robotika.cz/robots/osgar/en
I’d be cool if we all could somehow pool resources, share experience. Or are you already in contact with some other groups?

1 Like

I’m going through your code on GitHub and trying to understand the physical connection of your GPS and IMU. I’m coming from a Pixhawk, RTK, motor controlled steering using Python and Dronekit on my JD5055, but new to ROS. I’ve been unhappy with my attempt using PurePursuit and wanted to try and replicate what you have done. I was thinking step one for me was getting a simple publisher, subscriber working with the GPS and IMU. In trying to reverse engineer the physical connections I have found “gps_nmea = GPS_NMEA(port=’/dev/gps_nmea’)” in NV08C_node.py. I also found “imu_pub = rospy.Publisher(‘imu’, Imu, queue_size=10)” in imu_publisher.py. Q1: Where is “gps_nmea” set and/or where is the GPS connected to your companion computer? Q2: I see in your code where the imu is published, but I can’t work backwards to see where it is connected. Can you help? I’ll have more, but that would be enough to get me started on replicating your very impressive success. Al in Texas

Hi, Al. I strongly recommend that you forget all about that code; it’s really bad and very specific to the hardware I was using at the time.

Do you know about AgOpenGPS (https://agopengps.jimdosite.com/)? It’s a good place to start for a ready-to-run (but non-ROS) solution.

For a ROS solution, please join us on ROS Agriculture (http://rosagriculture.org/).

However…to answer your questions…

Q1: /dev/gps_nmea is the NMEA port of my GPS. There’s also a port for RTCM. Each one is a separate(!) USB interface. I use udev to assign the NMEA port to /dev/gps_nmea. It’s usually /dev/ttyS0, I think.

Q2: I used a Tinkerforge IMU Brick V2.0 as the IMU. I don’t think I uploaded the code for its publisher.

I’m now using an Advanced Navigation Spatial Dual (http://www.advancednavigation.com.au/product/spatial-dual). It’s ridiculously expensive but awesome. Also, I’m trying to move everything to be more ROS-like. I’m in the midst of developing the code again.

I suggest that you keep trying with Pure Pursuit. Brian at OpenAgGPS has had good results with it. At this moment, I am mapping the steering for my MT765 so that I can switch to Pure Pursuit.