Twisted-Fields / acorn-precision-farming-rover

Source code for Acorn, the precision farming rover by Twisted Fields
Apache License 2.0
261 stars 37 forks source link

Support open hardware motor controllers? #19

Closed samuk closed 2 years ago

samuk commented 2 years ago

As the Odrive hardware is now closed source, it might be interesting to support additional open hardware controllers.

These might include; https://skysedge.com/robotics/nearzero/

Or simple FOC boards https://simplefoc.com/ such as Rosmo ESC or Dengs Foc

I guess this would include some layer of abstraction, I understand you don't want to use ROS2/Micro-XRCE-DDS but would LUOS help?

tlalexander commented 2 years ago

Hi good question!

Other controllers are possible but our design right now works very nicely with the Odrive and we have a fair bit of code and hardware designed around Odrive. Odrive has been good to us and I am happy to support them. I would have liked it if they stayed open source but I know it is a tough choice for them.

With odrive we use 40A peak current right now, 52V maximum.

NearZero is 3A peak per channel 36V max Rosmo is 5A per channel 40V max Dengs is 3.3A per channel 24V max

These controllers are just too small.

I have been curious about open source controllers. Something like the B-G431B-ESC1 looks promising, or a clone made in Kicad. But it is only cheap because it is an ST dev kit I think, a clone could be more expensive. https://www.st.com/en/evaluation-tools/b-g431b-esc1.html

The landscape of powerful open source brushless motor drivers is grim. Actually VESC 4.12 is nice hardware and open source in Kicad, but Odrive has a way better development community and if we have to buy drivers, I like to support Odrive. They are still putting a lot in to the open source software side of things and our support will help make that software better.

As far as a layer of abstraction: our whole system is python. We just need a python file to support other motors on the software side, no need for anything like Micro-XRCE-DDS or LUOS.

Odrive is a very good controller for now. There are probably better areas to invest time in right now, for anyone even community contributors. I suppose I should try to come up with a list of suggestions. Easiest place to start is to run our code in simulation, even connect with @merlinran and see what help he needs. Email me and I can connect if needed.

Good to see you here thanks for asking this question!

samuk commented 2 years ago

Makes sense, I should probably have used larger boards as examples. The NZ2 should do 30A peak @50v https://skysedge.com/robotics/nz2/index.html

Omicron would give you 20A https://community.simplefoc.com/t/bldc-omicron-24v-20a-new-board/1417 I suspect the SimpleFOC community would design a board to your spec if you wanted.

I'm hoping to work on a smaller/lighter scale so investment in 4x Odrives represents a decent chunk of budget. I'll see if we can emulate the Odrive API in SimpleFOC maybe.

tlalexander commented 2 years ago

Ah I see. If you are building your own smaller vehicle then other controllers might be useful. In that case the code changes would not be major. You would need to modify or temporarily remove the homing routines, but for actual driving we are just sending speed and position commands to each motor, so that would be the point to patch in something else.

The biggest problem is that any board suitable will end up being somewhat expensive to manufacture in small batches. What I really want to do is find a cheap Chinese volume manufacturer of ESCs and collaborate with them on a board design which is both suitable for their low cost manufacturing methods, and also supports encoders and open source FOC firmware. In my mind that is the way to lower the cost of precise brushless motor control.

But for a smaller vehicle feel free to use existing controllers to your liking. It should be easy enough to adapt the code once you have basic motor control working.