Can pivot turns be setup for non-skid-steer config rovers?

I have a large-ish rover, Vigorun mower platform, VTLM600.

The motor encoder takes PWM input, with channel 0 operating each tread in opposing directions, and channel 1 operating them in the same direction. These inputs mix effectively creating GroundSteering and Throttle interfaces respectively. This motor controller is proprietary to the chassis and does not have other modes of operation, period. I cannot setup the motors to operate independently, if I could, I would.

Operating GroundSteering channel in manual without throttle performs a pivot turn. Operating with throttle performs as you would expect- it pulls down the motor speed in the direction of the desired turn. Is there a way to get rover to perform pivot turns in this setup?

I have no issues with manual control, but on auto / using waypoints the chassis overshoots massively and cannot follow plans correctly, even though the chassis seems to understand its position / yaw.

Platform is a SIYI N7 + SIYI MK32 ground station / controller.

1 Like

Have you confirmed this behaviour by putting a pwm signal into the motor controller via a known good pwm generator ? The similar mowers i’ve seen have been doing the mixing in the RC controller, with ch1 and ch2 on the mower just being 1000 ms reverse, 1500 stop, 2000 ms forwards on both sides.

Couple of options spring to mind

  • replace the motor controller(s) with something documented and supported
  • do some clever arduino mixing to straighten out the pwm (ugly!)

Yeah, this is confirmed behavior. The mower came with a cheap RC controller and the first thing I did was play with channels/etc to figure how the interfaces worked.

This has been a staged rollout, I didn’t immediately go for autopilot. My thought was:

  1. Play with channel control, figure out existing mower config
  2. Replace mower RC with MK32 direct control (required a dedicated SBUS → PWM converter)
  3. Replace SBUS → PWM converter with SIYI N7 PIX4 autopilot for manual operation
  4. Try to get GPS waypoint navigation going ← I am here
  5. Explore adding RTK for better positioning precision
  6. Explore object avoidance
  7. Explore starting / stopping engine automatically, setting cutting height automatically, etc

On replacing the motor controller:
The integration board that controlled the plow and deck height (h bridge) / started and stopped the engine (relays) blew on me pretty early on in my manual testing, so I’ve already replaced that with much better components… I wouldn’t be against it.

I guess I would need to know what to look for in my case… these motors are interfaced with three wires (yellow, blue, green) and what looks like a DB9 connector:

Another thought that occurred was that I could just add another identical controller… and just use channel 1 from both. But I am hoping this could be addressed by software.

Pivot turns are exclusive to rovers skid steering outputs. Frankly, use motor controllers that aren’t a cheap mess.

Super helpful dev here. Couldn’t just say “its not supported”, maybe even go that extra mile, be super nice and give some kind of reason why its technically undesirable / difficult to support?

Not enough information to provide a recommendation. Sounds like brushless DC by the somewhat vague description. The existing driver protocol is a wild unknown, and the internal mixing makes it impossible to support pivot turns.


To be fair… cheap mess is probably accurate. The blown integration board for the plow isn’t exactly confidence inspiring. I have been looking, praying there’s some kind of known standard or spec these operate by. Servos and motors are plentiful and easy to find until you get to a certain size and then all of a sudden its all very difficult to find.

If anyone has any good sources for large brushless DC motors and controllers it’d be appreciated.

What Yuri says !

BLDC drive motors? these are probably fine. 3 phase wires in and maybe a hall sensor for position feedback to the controller. Finding a motor controlller that matches the motor is what your mower vendor did for you. Im sorting through tuning a new VESC and matching it up with an existing motor on our project mower - replacing because the chinese controller occasionally drove the motor the wrong way. Not a great problem with RC but not cool under automation.

I buy VESCs from here. Vesc 75100. I originally bought a couple of their excellent outrunners that “just worked” with the VESC to get started on a known good config. I got something similar to this motor

If you go this route - block out some time to learn a lot more about DC motors, in a good way.

1 Like

Have you spoken to the supplier about this? I have the VTLM800 mower on a boat to me at the moment and I have a cube orange and 2 x F9P GPS that I have been getting ready on a test platform. One of the reasons that I selected this supplier is that they seemed to have a better drive system than the other similar mowers available. 280USD for a 2nd motor controller + shipping is quite a steep price to pay to fix the problem which may be addressed by configuration of the controller?

1 Like

I did, they mentioned it was not possible to change the encoder to independent operation / skid steering, which is why I’m here.

Since you have the same mower on the way- this is the replacement motor driver I used for the plow / deck height:

To start / stop the engine, I use:

In case yours goes as quickly as mine did. I have some other mods I’m going to be doing to it, but dual F9P is one of them so let me know if you make progress there.

The surefire way to get skid steering with this is a second motor controller for sure. I will look into @kiwiPaul 's links a bit. I think however I might experiment with using a high end RC brushless ESC controller- and then examine the signals coming from the DB9 connection. I’m guessing these aren’t just DC brushless motors- they’re probably servo motors that know their position. It may be possible to hook the power up to an RC ESC, and the encoder leads to the flight controller like
Wheel Encoders — Rover documentation , I will try to find out.

Is there a place in the ardurover forums for specific chassis support? I might move this thread there then.

Thanks. I did order a spare “Function Extension HUB” but have quite a few Sabertooth motor controllers lying around if required.

Your mower has Micro Servo Motors

Mine has Servo motors Servo Motor – Vigorun Mower, Remote Mower, Remote Control Lawn Mower, Wireless Grass Cutter, Remote Mowing Tank, Remote Operated Slope Mower, Radio Control Mowing Robot

From the description of the servo motor controller I am surprised that they can’t configure the operation. Servo Motor Controller – Vigorun Mower, Remote Mower, Remote Control Lawn Mower, Wireless Grass Cutter, Remote Mowing Tank, Remote Operated Slope Mower, Radio Control Mowing Robot

Do you mind if I share this thread with my contact at Vigorun?

Please do- if someone over there knows of some hidden DIP switches that change the encoder operation… My rep said they tried autonomous operation but that rover was “not mature at present” and they gave up. Probably because of this!

Thanks for the links.

If any of the devs are interested in supporting this drive scheme, I can cooperate with testing.

Ok. I am a little annoyed now. I chose this mower as they said they designed their own controller and advertise on the web site "It supports various control interfaces, including external potentiometer (0-5V), RC (pulse width) model control, RS232, and CAN”. I assumed wrongly it seems that when it arrived if it did not work out of the box that I could get support to make it work the way I required.

Vigorun outright refuse to provide instructions to the control interfaces that they advertise, or any instructions for the controller. Looking closer at their web site you can see that they black out or remove any identifying marks on any components, down to the IC’s on the motor controller so they are either paranoid about somebody copying them or they have knocked off somebody elses design and trying to hide it. It would be interesting to see if they do this to the controllers they deliver. The descriptions on the web site are false advertising which I will deal with in due course however since my mower is still en-route I will park that for now.

The response I received was similar to yours regarding automation “We have tried it before, but according to the current situation, the time is not right yet. But we are also continuing. I will update you in time when we succeed in research and development. This matter is not as simple as imagined. It is very troublesome to open the protocol.”

It is very troublesome to open the protocol…

Assuming they have copied or re-badged another design I had a look around for something similar and although it is a very very long shot, it would be very interesting to see if the pinout of your controller matches this one:

BLDC Controller,Dual Channel Brushless Dc Motor Controller ,10-55V 50A,brushless Type KYDBL4850-2E - Buy Dual motor controller, bldc controller, Brushless dc motor controller Product on Jinan Keya Electronic Science and Technology Co., Ltd (

The manual for this controller says that it can operate in Independant Mode and Mixed mode.

Manual here:
24V 48V 50A dual channel brushless servo controller China Manufacturer (

Now for a question to the coding\maths experts. Is it technically possible to, as kiwiPaul says “do some clever arduino mixing to straighten out the pwm” or do it in Lua something like this Enable Pivot Turn for Custom Rover Frame - ArduRover / Rover 4.0 - ArduPilot Discourse to make a motor controller with GroundSteering and Throttle interfaces drive correctly and do pivot turns with ardupilot configured for skid steering?

1 Like

@Paddy, yes should be possible, Lua is the right tool for this. The link above for the sawppy rover uses a custom Lua script to remap the rover steering and throttle output channels to something suited for that frame - so a custom mixer. It seems what you are after is something similar that mixes to a target of both motors in the same dir plus both motors in opposite dir. You could even set up the mix ratio as a user script parameter so you can tune the mix from a GCS.

Maybe we should add a lawnmower example to our Gazebo simulation environment. Seems to be a popular application of rover.


I would go down this route rather than messing with undocumented chinese motor controllers, I have dealt with a lot of them on ebikes and scooters and now i just fit a VESC 75100 in all of them. it just works. Just make sure to update the firmware before you use it, as they tend to ship them with really old firmware.

To it it up is very simple, it has wizards that auto detect your motor and inputs and sets it all up, the only thing you need to set is the battery current limits.


This is fairly common in China, where IP theft is rampant and there’s little in the way of recourse. I’m actually working on the firmware and support infra for a device that acts as a DC fuse block replacement (think BlueSea systems’ 12 position ATC fuse block), giving the user per-channel energy usage tracking and full automation control. If you don’t closely guard your designs and software, someone else will copy it, rebrand it, and re-release it as their own, beating you in volume.

I have to praise them for doing in-house engineering in such a risky environment. Aside from the poor quality integration board, the motor hardware and chassis seem pretty solid. Its good hardware… and quite cheap in the grand scheme of things.

Yeah, I’ll echo this. Look, I’m a fan of open source and open designs, but there is difficulty in opening interfaces for anyone to use.

It looks awfully close…

I will need to look into the Lua stuff, AND that VESC75100. Seems like there’s light at the end of this tunnel!

Thanks rys, this sound slike the best fix if there is no interest in building in support for pivot turns on GroundSteering and Throttle controllers.

I don’t have an issue at all with companies exercising their rights to not provide access to interfaces, however they then should not then advertise these interfaces as a ‘feature’ of their products which Vigorun have done and was a factor in my decision to buy their product.

I am not sure what happened with your integration board but I agree the motor hardware and chassis do look pretty solid and better than most similar designs available. This why I chose Vigorun. A quick look to replace the parts with similar\equivalent ones with better documentation and you come close to the mower price just for the drive.

The VESC75100 only seems to support hall sensors for the encoders so I am not sure this would work. The ideal replacement would be something like the one that I linked but is is quite expensive, much more than a 2nd Vigorun motor controller.

It sounds like you have some coding experience so ou may have success with the Lua option. If you do go down this path I have a small RTK + Yaw Rover with Sabertooth motor controller that I can switch between independent and speed+direction for testing.

OK, as a starting point on the lua script I asked Claude 3.5 Sonnet AI for assistance. Attached is the output. I would appreciate it if somebody could review this and advise if this is on the right track.

Ardupilot Steering Conversion Script R0.lua (2.1 KB)

1 Like