Monday, November 11, 2019

TinyCross: 4WD and Servoless RC Mode

I finished building up the second dual motor drive for TinyCross, which means that the electronics and wiring have finally caught up to the mechanical build and both are 100% complete!

That's not to say that the project is 100% complete; there's still some testing to be done to bring it all the way up to full power, as well as some weight reduction and weatherproofing tasks. But there are no more parts sitting in bins waiting for installation. It should be at peak mass, too, which is good because it's 86lb (39kg) without batteries. The original target was 75lb (34kg) without batteries, but I will settle for 80lbs (36kg) if I can get there.

The second TxDrive went together with no issues, and the software is identical to the front wheel drive. I have both set at 80A right now, which gives a total force at the ground of 112lbf (51kgf). That's about the same peak force as the rebuilt "black" version of tinyKart, which was maybe too much for that frame. But TinyCross is about 20% heavier (with the driver weight included) and 4WD, so it should be able to handle some more. I haven't seen any thermal issues at 4x80A - if anything, the motors run cooler now that all four are sharing the acceleration. Over the next few test drives, I'll work my way up toward the 120A target.

But before that, there's something I've been wanting to try. I have an abundance of actuators and not that many degrees of freedom. I decided to borrow an idea from Twitch X to cash in some of this actuator surplus for one more degree of control, specifically automatic servoless steering. So, a free 1/3-scale RC car mode without adding any parts.

Well okay, I do have to add the receiver.
The steering wheel board reads the throttle and steering PWM signals from a normal RC receiver. The throttle PWM gets directly mapped to a torque command for all four motors. The steering PWM sets a target angle for the steering wheel. The measured angle comes from an IMU, the secret part on the steering wheel board. (Yes, there are all sorts of issues with that...I honestly just don't want to run any more wires.) The angle error drives a feedback controller that outputs differential torque commands to the front motors. Not much to it, really.
I've also seen so many runaway robots and go-karts in my life that I consider it a must to have working failsafes for both radio loss of signal and receiver (PWM) disconnect. It's extra work but trust me, it's worth it! Anyway, time for a test drive:

I wasn't sure how tightly I could tune the steering control loop, since there's a long chain of mechanical mush between the torque output at the motors and the sensor input at the steering wheel. But it works just fine. After a minute I forgot it wasn't really an RC car and tried some curb jumping. Just like Twitch X, the wheels do need traction to be able to control the steering angle. But then again, that is a necessary condition for steering anyway.

I don't actually think there's much point in a go-kart-sized RC car. But it's a short jump from that to an autonomous platform. It might also be useful to adjust the "feel" of the steering during normal driving. Mostly, I just like to abide by the Twitch X philosophy of using your existing actuators to do as much as possible.


  1. Have you considered torque vectoring? It may not matter if your intent isn't to drive at the limit, but it's an interesting concept. The guy in the youtube video below did that with an independent drive RC car with some cool results:

    1. Definitely. That was the main motivation for including steering angle sensing. Using it in a feedback loop for remote control is more of a silly experiment.

      I think it'll work similarly to that RC car: add torque to the outer rear wheel and subtract torque from the inner rear wheel, proportional to the steering angle (and maybe speed).

  2. Hello, Mr. Colton.
    This may be outdated to your project interest, but I recently read upon your paper on series battery/supercapacitor go kart and thought it was really astonishing (coming from knowing about the disadvantages of parallel hybrid connection)! I talked to one professor to farther study this concept, but he didn't believe that it was practical and rather inconvenient to connect a SC in series. But I think it has potential for more testing and I would love to hear your current opinion about the work.

    1. Thanks for reaching out! It has been a while - I actually had to go back and reread the paper to remember all the details. I think a lot of the advantages of the series configuration are still valid. (Summary on Slide 17 here: The biggest advantage for us was that we could use a lower-voltage capacitor module without having to build a separate high-current DC/DC converter.

      Things get a little more complicated with an AC (or PMSM) motor, since there would be an inverter at the motor that would need to operate at up to the maximum series-combined voltage. It wouldn't be practical to hard-switch between normal, boost, and brake states since the inverter's DC link capacitor would have to deal with huge transients. But I guess there could be a way to make the transitions gradual with the upstream switches. Or maybe a current-fed inverter design could work?

      Probably the biggest disadvantage in the version we presented was that you can only regen until the capacitor is full. There's no way to switch to regen onto the battery. I think that could be changed by replacing the diode that bypasses the capacitor with another active switch, turning that into another half-bridge that could be used to select any amount from 0V to the capacitor's present voltage to put in series. It would also reduce the voltage drop when not using the capacitor.

      It's definitely an unusual configuration and one that makes experienced power electronics engineers uncomfortable for some reason!

    2. Thanks for the reply! I didn't really see the use of parallel connection, since voltage balancing meant you can't really use the supercapacitor entirely. I do have one more question. Was there any problem with current flow from either the battery or the supercapacitor due to the power density differences? I couldn't find much reading from this unique setup.

    3. "I didn't really see the use of parallel connection, since voltage balancing meant you can't really use the supercapacitor entirely."

      Exactly, it seems wasteful not to operate the supercapacitor all the way down to 0V. To do so requires adding (at least) one more full-power DC/DC converter to the system somewhere. In digging around for more modern references, I found this paper:

      I think it covers the different parallel options well. If you abstract the motor control to something downstream on the DC bus (which is valid for DC or AC motors), then the question is how many additional full-power DC/DC converters do you need to sit between the energy storage elements and the DC bus (0, 1, or 2 as that paper discusses with the advantages and disadvantages of each).

      Our system is a little different because it's a DC motor, so the main half-bridge connected at the battery is also used for armature current control. That makes the series option more appealing since we could operate the supercapacitor over its full voltage range without adding an additional full-power DC/DC converter. There may still be advantages to the series configuration with an AC motor, but it's less clear-cut, especially if the diode/switch capacitor select is converted to a full-power half-bridge anyway to allow a partial capacitor voltage to be put in series.

      "Was there any problem with current flow from either the battery or the supercapacitor due to the power density differences?"

      In our case, both the battery and the supercapacitor could handle the motor's maximum armature current (300A), so it wasn't a major concern. Only the supercapacitor saw the -300A maximum regenerative braking current, so we also didn't have to worry about battery charging current limits.

      Also, even though we called it a series configuration, the battery and supercapacitor aren't directly in series to the point where the each always see the same current. For example, if the battery is at 36V and the supercapacitor is at 12V, the supercapacitor sees the full motor current but the battery only sees a portion of it depending on how much more than 12V is needed to drive the target current into the motor's back EMF. (Slides 13 and 14 in that presentation show the two switching states).

  3. Thank you again for answering my question! Your insights are very helpful towards my research projects.