This article is produced by @ray, reprint please indicate the source.
article link:
http://blog.csdn.net/wz22881916/article/details/78161080
This year, our team selected the B problem, ball control system. Finally, we got the province special and the country one, also was to finish my big moment's wish. The following is a summary of the game, and later recalled when there is a thought.
The ball-rolling control system is a multivariable and nonlinear control object, and is a two-dimensional extension of the ball-rod system. The system takes Arduino due as the core Control Board, collects the position information of the ball through the camera, and controls the operation of the steering gear by PID control algorithm, thus controlling the movement of the small ball. The goal is to allow a free rolling ball to balance a specific position on the plate, or to scroll along a certain trajectory. After testing, the system can achieve the requirements of the various functions, measured indicators have reached or exceeded the requirements of the title.
Key words: rolling ball control system; Arduino Due; position detection; PID control
At that time, the network has a cricket system this problem, although the heart is not the same thing, but still silently to find some information.
Cricket system, cricket system, the most important thing is to detect the position of the ball, and then through the mechanical movement of the plate to keep the ball in the designated position.
How to check the position of the ball. There are two good ways: one is to use a resistive screen and one is to use a camera. These two methods I have tried before the game, resistive screen words on the market are generally 7-inch-17-inch four lines, five-wire resistive screen, it gets the small ball position is more sensitive, and high precision, low delay, the ball material, color is not required, but require a certain small ball weight, or not detect the ball ah. As for the camera to detect the location of the ball, one way is to detect the circle, another method is color detection, the general color detection faster. If the use of cameras to detect small ball position, then the processor's operational speed requirements higher, but also the light requirements are larger, but you can use the open source camera (such as OPENMV,PIXY, etc.), directly to the small ball position information, such as through the I2C, Usart transmission to the chip machine. The last thing we use is pixy.
When the final game problem came out, we were dumbfounded, and the news is so similar, but the size is so huge. Originally write a Good Resistance screen program is not used, can only use the camera to detect the ball location of this method.
Of course we think, small we have done, the big is not directly to the original structure to enlarge some of it. But then it turns out we're thinking a lot, and the larger the size, the more the result is that the mechanical structure needs to be redesigned. Before the small cricket system's stability is super good, does not appear the board jitter problem. But when the system becomes much larger, the board becomes very heavy, the camera needs to set up very high, it brings a lot of problems.
The camera is more than 1m away from the board, and the consequence is that the camera may not be able to find the small ball position.
In the days of the game, our mechanical structure changed 4 sets. I feel like I've been doing carpentry work all the time. The first set of structure is pure wood, all parts are glued to die. The second set is the board of foam board, the other part is still Woody. The third set is the board of black spray plate, stent is iron, the floor is wooden, the whole structure is super heavy, and can not be demolished. The fourth set of structure, we choose the board is the 60*60*1cm of the snow, this relatively light, but also relatively flat, the bottom plate is PVC version, drawing the schematic diagram and then cutting, support is part of the aluminum frame, all parts can be disassembled.
After the mechanical structure is done, there is one day left to write the program, and it feels like most of the time the game is in the design of mechanical structure. But this is very necessary, because if the mechanical structure is not good, your program optimization of the better, it will not be stable, especially such a large device.
a bunch of crap is in front of you, and here's a little bit of something useful:
① we choose the controller is Arduino Due. Because using it to develop simple and convenient fast, and clock frequency 84Mhz, compared to the ordinary stm32f1 is not inferior. Originally wanted to use the raspberry pie, but the idea of using raspberry pie may be illegal, so still forget.
The ② camera chooses the Pixy. Using Pixy image recognition sensor to detect small ball position coordinates. Pixy supports multiple objects, color recognition of many colors, but also supports a variety of communication methods, it is equipped with the image sensor with powerful hardware, can be small ball position coordinate information quickly sent to the microcontroller. Attention... This is the ball directly to the coordinates of the single-chip, alas, so you use the performance of the microcontroller is not a relationship, which greatly simplifies the complexity of the program, eliminating the part of their own writing image processing, saving a lot of time.
③ the rudder, we tried a lot of steering gear, expensive, cheap, and finally chose the mg996r. I do not say the specific reasons, we can buy a try.
(To be Continued ...) )