KevinG's Autonomous zero-point turn Lawn Mower

Steve( @SJohnson) I would be interested in what you are using for a separate charging system for the 2nd battery. Soon I hope to connect a sprayer to my mower. The pump draws several amps (10 I think). I have a little concern about running that plus what I have added already from the alternator on the mower, but I’m going to try it. But would like to know what you are using.

Kenny I don’t think anything I am doing will help you get the additional amperage but I am glad to share what I am doing so you and other members can tell me if it what I am doing will run the electronics for the Pixhawk mower. This is the least thought out aspect of my mower build and my description of what I am doing will reflect that. I am intending to charge my 12V 5Ah SLA battery using a 12V charge controller connected to the mower charging system. Maybe I don’t even need the charge controller if I just hook the two batteries in parallel. The second battery is tied to a Yunsanda 12V/20A DC power filter (some sort of low pass LC filter) which gives clean 12V power to a stepdown voltage module. I will use a SUPERNIGHT® 50W 12V to 5Vdc 10A Step Down Voltage Module to feed all 5 volt devices on the mower. The 5 volts is then hooked on a terminal bus with fuses that can go to each 5 volt device. I also plan on using a ProTek RC Servo Power Bus to deliver the power to the servos separately to keep the servo spikes away from the sensitive electronics. The servos will not be fed from the main 5V terminal strip.
This may be a different approach but I guess until I know more I will stay on this path. It does present several questions:

  • Will the mower charging circuit keep up with charging 2 batteries. To even have chance the current draw from the mower electronics has to be low.
  • Will the 12V DC power filter, charger, and 2nd battery eliminate enough of the engine electronics noise
  • Will the servos have enough torque with only 5V or could they run off of 12V (the way I am doing this those are my only 2 current options)
  • Do I need to buy another voltage converter to give up to 8.4V just for the servo power? 8.4V is listed as the top end of the operating voltage for the servo.
  • Do I need to isolate the two 12 volt batteries from each other?

Interesting that the discussion has turned to increased current draw…it’s a problem I just tackled for what I hope is the last time!

My mower runs a Kawasaki FR651V which comes stock with a 13 amp charging system. After I added a beefy servo for throttle control (it works against a heavy governer spring), I started frying voltage regulators. I found a couple of aftermarket 15A voltage regulators, but they weren’t a sole solution.

The FR series engines have an option for a 20A stator, which was step 1 in increasing the charging system capacity. However, I could not find a plug-and-play voltage regulator in the 20A range.

So, I bought a 100A half bridge rectifier, smoothed the output with a 3300uF capacitor, and tied that to a 40A 24V to 13.8V buck converter made for golf carts.

So far, so good! I realize I’ve now made the stator the weak link, which is perhaps poor design, but I have everything fused and hopefully reasonably protected.

After a few more mowing sessions with it, I’ll try and upload a video about that particular upgrade.

After several discussions on the topic of GPS yaw, direct UART communication between the uBlox boards seems to be one of the biggest stumbling blocks I’ve seen so far.

It is imperative that the rover and moving base communicate directly with one another, with the moving base providing RTK injects directly to the rover using the boards’ built in UART 2 ports. The flight controllers do not provide enough bandwidth/processing time for those injects to be passed through the controller successfully and at a high enough rate to support GPS yaw.

My ugly solution is pictured here. I wasn’t sure if it was going to be permanent (or even if it would work), so I soldered some female headers onto the UART 2 (TX2/RX2) pins of each board, and then secured jumper wires with some hot snot. They are the green and white wires pictured.

You simply connect TX2 from one board to RX2 of the other, and vice versa. ArduPilot’s GPS autoconfiguration should take care of the rest, so there should be no need to use uCenter to configure the ports directly.

If you’re using ArduSimple boards, also take note of the red jumper from IOREF to 3v3. The CubeOrange that I’m using and many other flight controller variants use 3.3V logic for serial communication, and that jumper is what provides the UART voltage reference on the ArduSimple board.

Yuri,
This is very helpful. I am going to run into a similar problem I believe when I add a sprayer pump. I have not looked into what my mower’s charging system is rated at. It is a Kawasaki FS730V. I will be looking to it soon!
Kenny

Kenny, it looks like your engine uses the same stator arrangement as mine. The one linked below has more wound posts than the stock 13A one that I had, providing 20A output with no other changes to the system.

Stator: https://www.amazon.com/gp/product/B00DVPELKG/

Rectifier: https://www.amazon.com/gp/product/B0827NFQLM

Buck converter: https://www.amazon.com/gp/product/B01LY8D7U0/

Smoothing capacitor not strictly necessary, but it made me feel like I’d helped the solution a bit!

I have GPS Yaw working now but not installed fully on the mower yet. I am doing this with all RTCM3 external to the flight controller. My connections are similar to Yuri’s except that I have the receive line on UART2 (Which is labeled TX2 on the SimpleRTK2B!) on the moving base connected to an incoming RTCM3 stream from a dedicated telemetry radio from the fixed base GPS.

To do this I had to make a few changes in Ucenter. I think that a small change in Ardurover will eliminate that need.

Some things I discovered:

  1. When Ardurover configures the GPSes, it sets the baud rate for both UARTS on both GPSs to 460800. Note that the settings of SERIALx_BAUD for the GPS ports is ignored. In my case, I a splitting the transmit and receive on the moving base. I want the receive to come from my fixed base RTCM3. My device that was feeding it could not run at 460800. I changed it to 115200, which I believe is plenty fast for the RTCM3.

  2. As long as GPS_AUTO_CONFIG is set to 1, the flight controller seems to reset the settings int the GPSes continually. If you try to change the baud, for instance, in Ucenter, it goes right back to 460800. You can turn off GPS_AUTO_CONFIG and change the baud rate and it will hold.

  3. Ardurover does not configure the incoming protocol for UART2 on the moving base GPS or maybe it configures it to NONE. Anyway, for my setup to work, I needed this to be configured to RTCM3, which I was able to do in Ucenter.

So, I believe that if the following changes were made to Ardurover, the system would have the flexibility of being connected as Yuri has done using MAVLink injection for Fixed Base to Moving Base or as I am doing, direct connection of RTCM3 from a dedicated telemetry system from Fixed Base to Moving Base:

A. Set the CFG-UART2INPROT-RTCM3X parameter in both the Rover GPS (already done) and the Moving Base GPS to 1.

B. Create 2 new parameters in Ardurover that allow the user to specify the baud rate Ardurover will configure both GPSes’ UART2 ports to.

C. OPTIONAL: I would think it best to let the SERIALx_BAUD parameters still set the baud rate for the GPS ports and thus the baud rate that Ardurover sets the UART1 ports on the GPSes. Perhaps a comment for the parameter would strongly suggest a high baud rate such as 460800.

If A and B were done, I would not have had to make any changes in Ucenter.

1 Like

I had created some connection diagrams for an upcoming video I am planning to make where I am playing around with various GPS configurations. So, I am posting these to show how a connection similar to Yuri’s would look versus mine so that it might help somebody. By the way, the documentation at GPS for Yaw (aka Moving Baseline) — Rover documentation (ardupilot.org) has been slightly updated to reflect a change in the parameters from version 4.0.0 to 4.1.0.

A Connection Similar to Yuri’s where RTCM3 from Fixed Base to Moving Base is via MAVLink injection from Mission Planner:

My setup where RTCM3 from Fixed Base to Moving Base is directly into the Moving Base UART2:

Kenny, unless I misunderstand something (in which case, I’d love to know more), I think your second diagram has the TX/RX connections backwards.

RTCM3 from the fixed base should be connected to RX2 on the moving base, and then moving base TX2 to rover RX2.

As you show, I used a full duplex crossover on mine even though I really just needed moving base TX2 to rover RX2. That way I could play around a little by flip-flopping which board was designated moving base vs rover.

I confuse myself on this at times, but I am 99% sure I am correct right now in saying that the Ardusimple SimpleRTK2B labels the receive signal for UART2 as TX2 and the transmit as RX2, so the connections I have are right. (IF I AM RIGHT… always something to doubt, but I physically have it connected as shown and it is working, so…).

In your setup, I believe you could disconnect the wire you have from your Moving Base TX2 to Rover RX2 and I bet you a nickel you will still be working. (Nickel to be sent via Cash App or something!)

Well that’s confusing for sure and valuable information. I’ll have to try it out and see if we can prove that the labels are misleading!

2 Likes

I am using a trusty (or should I say crusty) old Pixhawk 2.4.8 right now for testing. I’m not sure what I will use on the mower eventually, but here is my test set up. Just because I wanted to be sure, I just tested it. Note, that I have not connection to the RX2 line on the rover at all.

3 Likes

My Kakute F7 only has 1 MB or Flash and so cannot use the off-the-shelf Ardurover builds that have GPS Yaw, so I guess I will be ditching that soon, sadly…

1 Like

That seems pretty conclusive, and I stand corrected!

After an upgrade to the 4.1.0-beta release, my mower is busy mowing about an acre in the backyard as I type this.

I definitely owe an update post in the 4.1.0 section as well as an update video after this. There are some fantastic updates to the parameter list, and I was finally able to completely disable the compass completely!

I’m using a Cube Orange and have been very happy with it. It’s also a welcome upgrade over the old PX2 boards.

EDIT: Here’s a screen capture of how things are going so far. Nice straight lines, few to no error messages, and now that the compass is completely out of the mix, I think I can tune the overshoots even tighter. Note the 13.25V from the battery with the new charging system, too!

4 Likes

Hey Yuri! You are my hero!

3 Likes

Thanks for the efforts on getting GPS-for-yaw working. I’m very surprised to hear that with ArduSimple it must be setup so that the two GPSs are connected together.

I’ll add @ktrussell’s 3 suggestions to our “requires investigation” section of the Rover-4.1 issues list.

2 Likes

but what about using the lite version and the classic version, should we also use wires or we can stack the lite on top of the classic? @ktrussell @Yuri_Rage

1 Like

It appears those boards are designed to be stacked “piggyback” style, specifically to support GPS heading applications like this. I have no experience with them, personally.

I am talking with someone from ardusimple and quotting them

"Your setup will not work, since the flight controller is connected only to the rover, so corrections forwarded by rtk injection tool will collide with the corrections from the moving base.
If you want to use corrections from a fixed base, we suggest you use an alternative radio link, only for the corrections (we have radio links for this purpose ranging from 1km to 50km in ideal conditions).
"

Seemed weird that the lite board would not be connected to the flight controller since it has a header for that

Without more context, it’s very difficult to help. As far as I know, both boards should be connected to the flight controller via their serial port headers, with the standard (bigger) board designated as the (EDIT) rover.

Recommend you get Josep’s attention in this thread:

https://discuss.ardupilot.org/t/rover-4-0-ardusimple-gps-yaw-debugging/

1 Like