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.
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:
Play with channel control, figure out existing mower config
Replace mower RC with MK32 direct control (required a dedicated SBUS ā PWM converter)
Replace SBUS ā PWM converter with SIYI N7 PIX4 autopilot for manual operation
Try to get GPS waypoint navigation going ā I am here
Explore adding RTK for better positioning precision
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.
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.
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.
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?
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.
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:
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?
@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!
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.