randomvibe Posted April 30, 2017 Posted April 30, 2017 It's almost spooky what a robot will do with just a few simple rules, as with a PID controller. In my project below, at 1:20, all I do is issue a forward-command, and the system moves backward momentarily to tilt the robot forward, and then it moves. 2
John Cuthber Posted April 30, 2017 Posted April 30, 2017 Very cool. What happens if someone pokes it with a stick?
Raider5678 Posted April 30, 2017 Posted April 30, 2017 Very cool. What happens if someone pokes it with a stick? It seems to have the ability to re balance itself. If it's center of mass is close to the ground, then it should be able to. I'm not sure though.
John Cuthber Posted April 30, 2017 Posted April 30, 2017 It seems to have the ability to re balance itself. If it's center of mass is close to the ground, then it should be able to. I'm not sure though. Oddly, I too was unsure. That's why I asked.
randomvibe Posted April 30, 2017 Author Posted April 30, 2017 The robot will fall down without a feedback control system. The CG is about 2-feet above the wheels, so the robot is inherently unstable. Like a broom stick sitting on your palm. This is how the robot responds if "you poke a stick at it"...
John Cuthber Posted April 30, 2017 Posted April 30, 2017 Even more cool.It seems more difficult to react to an external changing load than a simple one like gravity- which is why I asked.
Manticore Posted April 30, 2017 Posted April 30, 2017 I seem to remember a balance feedback algorithm being worked out many years ago using a stick pivoted on the carriage of a dot matrix printer. (Sometime in the late 80s if I remember rightly.)
Raider5678 Posted April 30, 2017 Posted April 30, 2017 V The robot will fall down without a feedback control system. The CG is about 2-feet above the wheels, so the robot is inherently unstable. Like a broom stick sitting on your palm. This is how the robot responds if "you poke a stick at it"... Very interesting. Any practical purpose for this robot?
randomvibe Posted May 1, 2017 Author Posted May 1, 2017 The purpose of this project is to learn feedback control systems, by practice and experience (sometimes painful). Dealing with sensor noise was a big problem, and the stepper motors exasperated the problem. That said, I've learned much and it seems to be working well.
Bender Posted May 1, 2017 Posted May 1, 2017 It's nice, but I've seen better Behold: the double inverted pendulum. The triple inverted pendulum This balancing and walking cube is pretty neat too. Control theory can be fun.
Bender Posted May 2, 2017 Posted May 2, 2017 These are just video's I found on Youtube. I didn't mean to claim credit A simple PID won't be sufficient. The microcontroller has to be sufficiently fast and the sensors and actuators sufficiently accurate. This poses a limit to how many links are possible in a real setup. Higher order pendulums are very chaotic, so to control them you need to be very precise. I can't find a video, but these guys did a quadruple one too.
Klaynos Posted May 2, 2017 Posted May 2, 2017 These are just video's I found on Youtube. I didn't mean to claim credit A simple PID won't be sufficient. The microcontroller has to be sufficiently fast and the sensors and actuators sufficiently accurate. This poses a limit to how many links are possible in a real setup. Higher order pendulums are very chaotic, so to control them you need to be very precise. I can't find a video, but these guys did a quadruple one too. Sorry, I meant op, i assumed you'd found links of interesting things. I've seen people build sit on segway type devices that use similar systems. Mostly built around different arduinos. The rover I'm planning is more of a terrain traverser than these are likely to be. I want something that can get to the end of my garden and back. It's not far but there are steps in the way... The idea being that if it can do that then it'll be capable of crossing a grass field.
randomvibe Posted May 3, 2017 Author Posted May 3, 2017 (edited) What microcontroller are you using? I originally used the 32-bit Arduino Due board, but switched to the more powerful and lower cost Teensy 3.6 by prjc.com. The Teensy is also a 32-bit microcontroller, and compatible with the Arduino programming environment. Support at the forum is excellent - the owner/developer get involved and is very helpful. The programming environment uses the avr-gcc compiler. This is important because it's compatible with the Eigen C/C++ library. I use it for my Extended Kalman Filter (EKF) to calculate tilt angle from noisy accel & gyro measurements. The EKF involves hefty matrix algebra and Eigen greatly simplifies the coding. Edited May 3, 2017 by randomvibe
Klaynos Posted May 3, 2017 Posted May 3, 2017 I've not used a teensy yet. They do look really interesting. EKF seems like a very sensible approach to handing the noisy data, what frequency do you measure at?
Bender Posted May 3, 2017 Posted May 3, 2017 Did you try it without a Kalman filter first? If so, how bad was it?
randomvibe Posted May 5, 2017 Author Posted May 5, 2017 (edited) I've not used a teensy yet. They do look really interesting. EKF seems like a very sensible approach to handing the noisy data, what frequency do you measure at? Dealing with sensor noise was one of the biggest challenges. The control system samples at 100 hz, which seems fast enough to stabilize the robot. The stepper-motors are very responsive, but induce lots of vibration. So the accelerometers and gyros both have analog anti-alias-filters with a ~100hz cutoff. In software, the gyro signals are filtered further with a butterworth at 10hz. Lower cutoff results make an unstable controller. Tilt angle from just accelerometers is not practical because the measurements are just too noisy. They pick up everything. The robot-frame resonant frequencies feedback into the sensors and cause the steppers to vibrate the robot-frame further. It does not diverge. It hits a Limit Cycle Oscillation. You can put in strong filters with very low cutoffs, but then you end up with too much lag and an unstable controller. There are many ways to fuse the accel & gyro measurements to get a clean tilt angle. A Kalman filter is probably overkill for this robot. But because the Kalman filter is ubiquitous in aircraft and spacecraft, I wanted to learn about it by coding it and using it. And I wanted to practice using the Eigen library. I highly recommend it if you need to do matrix operations. It's almost as simple as Matlab. Edited May 5, 2017 by randomvibe 2
Bender Posted May 5, 2017 Posted May 5, 2017 I must admit it looked easier at first. The typical practicum setup can use a less noisy tilt sensor and often has a higher frequency.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now