Ego Z6 Autonomous Mower Conversion

I’m happy to share the STL files, it’s probably the best way to make sure they don’t get lost :slightly_smiling_face:

I’ve attached a zip containing all the files I haven’t already posted.

The main Hall sensor box might need a bit of explanation as I squeezed the PSU in as a bit of an afterthought. It sits on a little ledge held in place by one of the case screws. I could do this because some of the PSUs I received had a bit of extra fibreglass attached so I could drill a hole in this.

Unfortunately I didn’t take any photos of the completed box and I don’t really want to take it to pieces again.

The USBbracket and USBbracketCover files are for a port I added to make programming the ESP32 easier. This isn’t strictly necessary but was useful during development…

It’s designed for this cable.

The screws for the USB C breakout boards are 2.5mm, all the others are 3mm.

I second your recommendation of using an electric mower if starting from scratch. Another advantage is that it’s much more responsive without the lag of servos and hydraulics.

EgoSTLfiles.zip (124.4 KB)

2 Likes

Thanks again Martin for more and more information.

Your mower project is so sanitary and clean. Congrats on really great execution and for leaving your expensive warranted mower so un-molested. It really satisfies my type-A personality. I hope to get something done on this project over this long American Independence Day weekend coming up.

My ESP32 is likely a bit newer. It has USB-C not micro USB for the programming port, so I’ll need a different jumper cable. It’ll be handy to be able to plug into the laptop directly.

Thanks Bob. I’m actually really pleased that you and Max are able to make use of this stuff, it makes all those hours probing with a logic analyser seem more worthwhile.

If you are using a different ESP32 board just make sure it doesn’t use an S2 or C3 version of the ESP32 as these variants only have 2 UARTs and you need 3 for this project.

Have fun with the build at the weekend…

1 Like

Totally agree… no cut wires, just plug & play; love it. Also, the reuse of existing fasteners. Simply great.

It still puzzles me how you have cracked this protocol… and I cannot imagine how many hours of your life you spent on this. I am not a CRC bit-shifter guy, hence, I truly appreciate your work even more.

How did you go with the fine-tuning of the steering?
I said elsewhere I am selling the Cub Cadet ZT2; it sold within two days… it was the better mower, but no fuel, as in being electric beats the other short-comings. The ZT2 was also smoother and more predictable to operate.
What I noticed on the EGO Z6, when going levers full forward, retracting (say) the left a bit, still runs the mower straight. The mower only turns significantly when one lever is pulled back beyond neutral. With the ZT2, forwards and backwards motion over lever movement was equal.
I can imagine this will be difficult to control.

I don’t recognise your description of the Z6 steering at all Max. On my mower if I pull one lever slightly back from full forward the mower starts turning straight away. If one lever is fully forward and the other is at neutral the mower almost does a zero turn. I’d say it’s very sensitive and easy to place accurately. Maybe there’s something wrong with your mower?

There is a difference in wheel speed between forward and reverse but this can be compensated for with the MOT_THST_ASYM Ardupilot parameter.

Determining the CRC polynomial was actually quite easy. I fed a few messages into this excellent program and it gave me the polynomial immediately.

1 Like

I also have never noted needing to pull back much from full stick to begin steering. My mower seems to behave closer to what Martin is experiencing. Left wheel neutral and right wheel full or any amount will pivot about the left rear wheel.

What a great shortcut for the Cyclic Redundancy Check. Nice software.

I began trying to setup the main ardupilot box this weekend. My CubePilot Orange fits perfectly in the housing right where your Pixhawk sits. However, my ArduSimple sourced GPS boards, which includes one big and one piggyback small board don’t fit in the box. Additionally, Yuri mentions that configuring those boards to work with Ardupilot is possible, but a real fiddly pain in the neck. I’m considering purchasing GPS boards which match the pair that you used @MartinRob.

  • Can you share the make and model of those red GPS boards pictured or a link?
  • Second, what is the module on top which is labeled FS-1A10B. Is that an RC radio receiver? Do you only need it for RC control?
  • Third, do you have STL files for the white support shelves that those two modules sit on?

Good to hear you are making progress Bob.

The GPS boards I used were SparkFun GPS-RTK-SMA Breakout - ZED-F9P (Qwiic)

Yes, the FS-1A10B is the RC receiver. You need it for manual control, arming, mode switching, waypoint entry etc.

I’ve attached the STL files for the two support shelves

ModuleSupportSTLfiles.zip (5.0 KB)

Thanks for that. Do you have a recommendation on an RC controller? There is a sea of choices and I have zero experience with Radio Control stuff, other than PWM signals that we use for servos and motor controllers for our bigger robots.

I just went for a cheap one that would do the job, the Flysky FS-i6X with the 10-channel receiver option.

It seems to work just fine but I did make a couple of modifications. It uses AA batteries, and gets through them quite quickly, so I modified it to use rechargeable lithium cells. Also, the throttle joystick was not “return to centre” so I replaced that with one from eBay. I think there might be a kit to do this.

You might be better off finding a transmitter that already has these features.

My daily question for Martin…
Can you tell me about what path you followed to create your RTK base station, or do you have some RTK correction services available locally already?

There aren’t any free useable RTK correction services near me so I went for another UBLOX ZED-F9P as a base station. This time a Holybro H-RTK F9P Base connected to Mission Planner via USB.

I did dabble with connecting both the base station and the telemetry radio via Wi-Fi but I had some reliability issues so I went back to USB. It’s something I want to revisit though as it’s nice to be able to run Mission Planner remotely from the base.

Edited to say: presumably you could use your ArduSimple GPS as a base station.

I’m digging my Radiomaster TX16. Running OpenTX and Yaapu telemetry scripts …

Hopefully you meant EdgeTX, or you aren’t getting the most out of that radio.

Ha yes - EdgeTx…thx for spellcheck!

@MartinRob It appears that you’ve connected one of the gps modules to the pixhawk GPS port, and the other possibly to Telem1 or Telem2. Can you give details on these connections? The tiny ports on the sparkfun GPS boards appear to be four conductor connectors like i2c at 1mm pitch. Are the ports on each side of the GPS board the same? Did you make your own jumpers with a micro crimp tool? If you recall where you dug up the pinout diagrams, that would work as well.

Yes, the left GPS is connected to the Pixhawk GPS port and the right one is connected to Telem2. Both are used as serial ports and are connected to the Rx,Tx,5V and GND pins of the Sparkfun modules. This setup is described in detail here.

The connections to the GPS boards are via the serial ports on the 0.1" headers not the I2C Qwiic connectors. I soldered right-angled headers onto the boards and crimped standard Dupont headers onto preassembled leads that I think came with the Pixhawk.

The pinout details for the GPS modules are in the documentation in the Sparkfun link I gave in a previous post and the Pixhawk pinouts are on the Ardupilot page here

Sorry guys; I didn’t mean to drop out like that… I did not get any updates on this thread, hence, my non-participation. Having a closer look and I noticed this bell icon on the time line, and set the notification to watching.

A quick update: I sourced most parts (back then) but did not pursue this project any further… I am into land management ATM (out of necessity; trees to close to buildings, fire management, and Lantana removal)… and in the evenings built a controller for the electric 2.5t digger that has no “display” of anything, where I added SoC, hydraulic pressure and temperature, pump rpm, and most importantly an hour meter… adding LoRa to ‘phone home’ the data.

The house I am building and my wife is pushing for completion, has a few electronics build in, including electric sliding doors, where I prototype the sensors and algorythms for opening these, while ignoring passing by… yes, buys, and the mower (again) went on the back burner.

I will see if I can test drive another mower, to figure if mine is ‘faulty’. I think I said it before, the Cub Cadet ZT2 was the better performing and handling mower, but when it comes to smell and running cost it cannot compare to the Z6. Driving the Z6 backwards is really fiddly; as in keeping a straight line, as the left lever influences the motion of the right wheel; e.g., if left goes faster, right picks up as well — which is wrong in my books. And if it is not wrong it is nevertheless awful. I manage, but it’s not nice.

The Z6 seems to differ from what is available in the US; e.g., we have no firmware updates, and maybe it needs one. EGO is also not very responsive (maybe a tad arrogant) when it comes to support (here in AU).

Wow, this is amazing work.

I’m also considering upgrading my existing mower (Building a rover/mower, UM982 GPS RTK inaccuracy - #4 by leichen) to an EGO zero turn based.

Thank you so much for the decoded sensor protocol, as well as the code.

same here, I had been using rtk2go for about a year but found there were connection issues from time to time. Eventually, I stopped using rtk2go and directly connect to my PC running MissionPlanner.