Luke, We have done both single and twin inverted pendulums in our Feedback & Control classes. Our apparatus (our design and fabrication) has a cart driven by fishing line around a pulley on a high quality DC "basket weave" motor (Escap or Maxon). These have zero cogging, with no steel in the rotor. The state space control law uses encoder feedback from the motor (for cart position) and each of the pendulums.
I've wanted somebody to work on the system identification problem to collect all the data to compute the parameters needed by the control law, but so far we just used statically measured data or manufacturer's datasheets. The difficulty with using a BBB for this project is that it doesn't have enough counters (or drivers for them) to handle three incremental encoders. If you used one of the FPGA SoC boards that have been discussed on this list recently, you could implement encoder counters in the FPGA. Our inverted pendulum setup uses a Digilent FPGA board, with a custom H-bridge and ethernet connection to communicate with Octave running on a PC. Octave does all the control calculations and just gets encoder readings from the FPGA board, and writes PWM values. I think your control law will be a lot simpler, and the rest of the system too, if you use velocity control rather than torque control. Then you only need to control your motor voltage (proportional to velocity) rather than motor current (proportional to torque). -- Ralph On Wednesday, September 14, 2016 at 9:20:11 AM UTC-7, Luke Steele wrote: > > Hello, > > I should probably explain that I'm a linux and BBB novice, and am > currently experiencing a crazily steep learning curve. So please bear with > me while I ask what are probably incredibly rudimentary questions... > > I'm interested in doing some realtime control (servos, reading encoders > etc) on my BBB rev C under Xenomai, and after some reading around it seemed > like the simplest way to get started was using the pre-built machinekit > images found here: > http://elinux.org/Beagleboard:BeagleBoneBlack_Debian#BBW.2FBBB_.28All_Revs.29_Machinekit > > So, having installed this image I can now ssh into the BBB from a Xubuntu > install running under VMware on my PC. > > I thought a good place to start would be blinking an LED. To that end I've > compiled the C++ program here > <http://inspire.logicsupply.com/2014/07/beaglebone-c-programming-example.html>, > > which works (only) if I use sudo, i.e. sudo ./myprog. I've also tried > turning them on and off at the command line as outlined on Derek Molloy's > site > <http://derekmolloy.ie/beaglebone-controlling-the-on-board-leds-using-c/>, > but this doesn't work: > > cd /sys/class/leds > cd beaglebone:green:usr0 > echo none > trigger > > -bash: trigger: Permission denied > > sudo echo none > trigger doesn't work either... > > What am I doing wrong? > > Also more generally, is this approach of accessing LEDs and GPIOs through > the file system the right way to go if I'm interested in doing things > quickly? Intuitively it feels like it'd be slow - is there another way? > > Incidentally this <https://hackaday.io/project/12827-double-pendulum-cart> > is what I'm aiming to do eventually. > > Thanks for any help, it's appreciated! > > Luke > > > -- website: http://www.machinekit.io blog: http://blog.machinekit.io github: https://github.com/machinekit --- You received this message because you are subscribed to the Google Groups "Machinekit" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. Visit this group at https://groups.google.com/group/machinekit. For more options, visit https://groups.google.com/d/optout.
