Rover - general questions

A bit of an overview- I started a small platform a year or two ago, with the intent of it being an RC weed eater, with the possibility of automating it later. I used a FC, RPI’s and 4G to get a working “Drone Engage” setup. This allowed me to drive it around from a PC, and after a few design iterations, I’ve decided the better direction is automating the mowing for now.

I’m back to using this platform currently to learn and test for converting a mower. I’ve started over with a simple setup, Only a FC+GPS, and RC receiver on board (Using a cheap Flysky radio), and have been fiddling with setting up in Mission Planner to see if I can get autonomous routes to work. I spent yesterday setting things up, and was able to arm and start a mission to a waypoint. I have issues with setup, but, so far so good. Well- aside from yanking the USB port off of my FC and ruining it :smiley: I’m now waiting for a new FC, so I figured now is a good time to ask some Q’s.

  1. I don’t currently have a radio telemetry setup. I don’t fully understand this part. If I run Mission planner on PC, what method is used to connect PC to rover without the need for USB? Can one of the common telemetry radios run off of PC? I used Wifi- and later, 4G for my previous setup, but that was with a RPI on the rover.

  2. How is my RC control intended to work? If I set the drive channels to RCin, I can control via remote, or, when set to throttle L/R, to control via mission planner. It seems I should be able to switch modes in MP to allow RC control via Manual or ACRO mode, but I haven’t got this far yet. I did set a switch that changes manual to auto. Should manual mode just allow whatever channel is mapped to Throttle L/R to switch to the radio input instead? Is there no further setup required for this?

3. How do you start your planned route with a rover? Do you just manually drive the rover close to the start waypoint? I.e., drive your mower out of the garage and into the yard close to where you know the start point is programmed, Is there anything more to starting or stopping a planned route?

Thanks!

I think Ill just start adding all my random Q’s here, and updating with my own answers as I muddle through and find them.

Trying to figure out how I would plan the mowing paths- and how to deal with obstacles.

I’m trying exclusion fencing- and seem to have a fairly decent result going. I’ve tweaked Fence_Margin, OA_Margin_Max, and OA_Type in all different ways, trying to see what effects it had. I don’t seem to have good control of how far away it stays from the fence circle. I have had to place waypoints at close proximity to the fence to get the results I am aiming for. Without the extra waypoints, the rover veers off way wide, and stays wide until it has sight of the next WP, and stays more or less a straight course to that WP.

Any tips here to improve this? Any Param’s I should be looking at?

In this pic, its pretty much what I would expect possible, but Ive had to add WP’s to get it to work. Is this the best method?

Most telemetry radios (such as SiK-based ones) will have a USB connector at the “ground” side for connection to the PC. It then appears as a standard serial port.

You want the “throttle L/R”. This will work in all flight modes.

Have you tuned the rover as per First Drive with Rover — Rover documentation?

Hey Thanks!

A quick search shows what you mention with the USB. (Also documentation explaining this on Ardupilot in detail was found :slight_smile: ) I was picturing Telemetry radios that Ive seen that clip into the RC transmitters. I guess my next Q would be- How do people get Telemetry to the RC transmitter AND a GCS at the same time?

As for the RCin functions- I’ll be able to test/verify this in a few days. As I mentioned, I had control of rover with the Transmitter when servos were set to RCin+channel, but switching that to the needed Throttle L/R for auto control I assumed removed the transmitter control. If the ability to control via the transmitter is indeed still there- how does that work if its not selected as the proper RCin channel?

The image was from Sim. I assumed Sim rover was “properly calibrated.” I am just looking to get desired pathing and understand it in sim, before I attempt to do the same with my real rover. Are there limitations to sim I should be aware of?

How do you setup your rover mowing grids?

Seems very WP intensive to try to plot out an entire property. Do you break areas down and save them separately?

Do you load the WP files manually as you work around a property?

Typically, the telemetry and RC are separate systems/protocols. There are some systems (such as Herelink RC/HD Video Transmission System — Copter documentation) that do both.

Yes, the ability is still there. For throttle left/right, ArduPilot will take in the throttle and yaw channels from the RC, mix accordingly, and output the result to the left and right throttle channels.

The sim should be decently calibrated. If you can post the waypoints and params you used, I can take a look.

Mission Planner has a plugin for that. See Mission Planner Flight PLAN — Mission Planner documentation

Super helpful- I appreciate you taking the time to answer my random Q’s.

I’ve read through the linked info on mission planner quite a bit, I don’t think I’m overlooking much info there. I’m able to create WP grids from polygons, and adjust spacing, direction, everything fine. I’m seeing that a polygon section of “yard” gets pretty WP intensive, so doing the full property I’m looking at mowing has proven difficult, atleast in SIM. Seems it wants to error out and crash the software if too many waypoints are used. I’ve seen the suggested limitations, 400± WP’s depending on FC, or the option of using SD to increase, but again, I’m working in SIM currently. Perhaps this is a memory allocation limitation in SIM only?

I’m mostly curious how others handle mowing specifically. Do they setup a full property in one WP grid? Break it into smaller sections and save/load separately, etc.

I’ll recreate the OA setup I was trying and post the files shortly. I’ve tried quite a few setups both on my pc here and at home, just looking to learn what the changes effect.

I guess different people have different approaches to that.

I have different sections I use on the property. In that way keeps number of waypoints down. It also doesn’t make sense to me trying to cover a large area, only to discover the fuel ran out half way. This then causes issues trying to continue / re-start mission in a way a nice, clean mowing result is achieved. ( In my case the drive system is independently powered.)

A different approach I want to try and was reading about:

A professional lawn mower man written a report, that he first uses his converted ride on mower in manual mode when he starts mowing on a new property. In that way he mows the lawn as works best, but records all GPS data in the process. He then post processes the data and reduces some of the GPS data to suit.

In that way he has all the obstacles already covered and utilizes the best pattern for a particular shaped property, including slopes and odd shapes.

Starting from the next visit he then runs his mower in Auto-mode, which allows him to trim the edges. Needles to say this saves him a lot of time.

1 Like

So you manually drive the mower to areas, load WP files and start sections of yard?

Could be done that way, but not really practical.

The way I handle it;

  • Create a mission (list of waypoints). This can be done in any Ground Control Software like MP, QGC and now also on a new software called ArduDeck. - This can be done at any time and then saved as a file on computer or USB / SD memory.
  • In the previous step I add extra waypoints to and from the mower’s home position (just outside where the mower is stored) to the section I want to mow.
  • When I want to do the mowing, I start the control system and use the startup time to upload the mission. (waypint file). –> During the first 30 seconds of starting any vehicle with Ardupilot as control software/system,the vehicle must not be moved as a Gyro calibration is performed. But you can upload a mission file during that time, providing you don’t touch/disturb controller.
  • Then I drive the mower outside in manual mode in order to get a good GPS reception.
  • Now it takes another 30 seconds or minute until a good GPS lock is acquired. (This time could also be used to upload a mission).
  • Then I start the actual mowing motor and switch to Auto mode

Needless to say there are different mowers out there and as such you’ll need to find a way that works best for you.

I.e. I can move my mowing deck up and down via RC. So I can leave it in the up position, let it drive to the area to be mowed, and then lower mowing deck to actually start mowing.

But if you have a mower without such functionality, you may have to set a pause in the mission file at the location where the mowing should commence and then manually lower deck or activate mowing system. …..unless you don’t care if the mower already cuts a path whilst driving to and from the mowing area.

3 Likes

I’ve had many hours of frustration trying to get a rover working with Ardupilot and a FC. I started with much the same aspirations as you, wanting to mow and trim my large property. There are certainly examples of people doing it, so I thought I’d have an easy time following in their footsteps.

I may have been dealing with a faulty FC, but my frustrations largely stem from aspects of Ardupilot and Mission Planner that are designed for flying platforms with sharp spinny bits. I suspect that most people who are successful at building rovers have started out from flying RC aircraft and driving RC cars, so the terms and requirements and safety constraints make more sense to them. Flight Controllers are designed around the need to have constant realtime adjustments to actuators in response to many sensor inputs just maintain “not crashing”.

By comparison, autonomous ground platforms designed without a flight heritage have very different terminology and approaches. As a simple example, “stop everything” is a valid fail-safe condition for a ground platform. Operating over small areas with tight clearance to obstacles is required, rather than something to be avoided. Operating indoors is perfectly reasonable. The elevation of your vehicle, its pitch, and its roll are all being dictated by the surface it operates on and pretty much outside your control, but you don’t need realtime compensation trying to hold them steady to keep the vehicle from crashing. You can estimate your movement based on counting wheel rotations, and most ground robots treat that as a very important source of feedback.

I’ve mostly given up using a FC with Ardupilot and Mission Planner. I might give PX4 a shot, but I’m finding that there is a better codebase for using ROS2 to do the higher-level control functionality, with more of the assumptions being suitable for machines on surfaces. You can interface a ROS control system to an Ardupilot flight controller, but that only appears to add value if you need realtime compensation for things disturbing your attitude and heading (i.e. you’re airborne).

My approach now is a simple microcontroller to interface with the motor drivers, servos, and sensors, but without the kind of realtime feedback loops needed to maintain flight. Control is from an SBC (like a Pi) running ROS2 programs and interfacing to sensors like GPS, LIDAR, and depth cameras. There are good tools for monitoring “pose” and estimating location using many factors that may not be as easy to incorporate into a flight controller.

I also punted and bought a commercial RTK+vision robot mower that is “good enough and cheap” so that I would have more time. It cost much less than I’ve spent trying to build my own. It’s not perfect by a long shot, but it’s keeping me in the good graces of my neighbors because my grass isn’t knee-high anymore.

1 Like

@MikeAnt, I’m sorry to hear that. I agree that ArduPilot isn’t necessarily an ideal Rover platform. There are indeed compromises that exist as a result of shared architecture with aircraft, but they probably aren’t what your assumptions led you to believe. I won’t address that further, as it’s not worth the time to type.

A lot of what ArduPilot buys you is a rich, well tested set of peripheral drivers for an enormous array of devices, all of which run very reliably on relatively cheap, accessible hardware. You get an industry standard communications protocol (MavLink) that talks both wired and wireless with various GCS software and even more peripheral devices. You get DroneCAN for even more device support and extensibility. And on top of all of that, you get ROS/ROS2 compatibility for the features you seem to desire.

The alternative route you’ve chosen is by far not wrong, but much of what you describe already exists within ArduPilot, and you’ll be implementing each of those devices, protocols, and layers yourself until you can functionally interact with ROS2. I’d posit that if you’re industrious and skilled enough to do all of that, you’re easily capable of using ArduPilot as a head start.

As an aside, I don’t think you’ll find PX4 less frustrating - at a very basic level, it’s similar enough to ArduPilot to induce the same kinds of issues you experienced, and its Rover codebase is far less mature. Arguably, it’s probably little friendlier with ROS2, but I’m not sure that’s compelling enough to drive a firmware decision, especially since Rover on PX4 is still a bit of a stepchild.

2 Likes