The past week I’ve spent more time than I had hoped learning how to use the PWM functionality on the BallE board with the help of ChibiOS. There are a few things that have slowed my progress — for example “TIM3_CH4″ seems to be implemented as Timer 3 Channel “3″ (starting at 0). Not realizing this in order to make the proper 1-off correction consumed the majority of my time.
The other issue I had was implenting the usage of the PWM with one of the board’s blue LEDs. I wasn’t able to use ChibiOS’s “palSetPadMode” function to change the LED to alternative mode 1 on the fly. Instead I found a way to get it working by setting the alternative mode directly in our board.h initialization file. This is not the biggest of issues, seeing as we will most likely never use the LEDs for PWM functionality.
There is still a lot of work to do on implementing the balancing control of BallE. Depending on our progress with getting the H bridges up and functional, I may continue on trying to build a sim environment for testing the control of the motors. The plan is to have a balancing bot by the end of the week… I’m sure this will be a challenge, but I’ll be working hard during the week to have it ready.
For the past few weeks I have been working hard to understand a mash of Matlab, Simulink, VRealm, Mathematica, and most of all ‘math’ itself; all of this in attempt to fully understand and simulate the 3D modeling and feedback control of the state of the art rezero robot. The information included by the rezero team is impressive, but the matrix translations and binding equations for describing the coupled state of the robot are too complicated to understand and implement in the amount of time remaining.
The BallIP implements a straightforward planar model, in which the movement of the ballbot is described in 3 separate 2D planes (XZ, YZ, and XY). The feedback control loop is modeled as a PD loop. The theoretical values are computed and then tuned for the real system. The first attempts to reproduce the nyquist plots given in the BallIP report were unsuccessful. I can only imagine that its a misunderstanding on my part of the interpretation of transfer functions in matlab. This is something I will have to get help on from one of the TSI professors.
Today I started up on coding in ChibiOS along with the rest of the group by testing a thread which flashes a LED. Pierre-Hugues has set all of the configurations for the BallE board so it was fairly easy to pick up demo code and get it running.
To further understand ChibiOS I will also start playing the usage of the PWM during the vactatio (sooner than later). Hopefully in parallel I have time model the transfer functions used by BallIP.
More to come…
First of all, I would like to apologize for not having given you news about Ball-E for such a long time.
Let me make a short summary of where we are now.
Before the Athens week, we decided several components of our robot and we received most of them. Actually, we have our 3 stepping motors (Trinamics QSH5718), our two-rows 4″ omniwheels (Kornylak). With Pierre-Hugues, we made the pin assignment of our STM32405RG-based card and finished the schematic of our PCB. Routing will be done as soon as Alexis will have corrected our schematic. Scott and Otilia are working hard in order to implement a Kalman filter and to understand a huge part of the mechanics.
Alexis lent us a card with an accelerometer, a gyroscope and a magnetometer so that Otilia and Scott can test their Kalman filter. Pierre-Hugues is going to code tomorrow a bootloader which will make the card dump the values of the sensors through the usb port.
My objective of tomorrow is to build the whole robot so that it will be ready for real tests when we will receive the PCB.
I hope I can recall everything that we reviewed in class for place and route in Expedition PCB. It was impressive to see a completed pcb diagram in 30 minutes. He makes it look easy. I spent about 3 or 4 hours working on just the placement. I finished the routing after another 1 hour for configuration corrections and 1 hour of careful routing. My placement didn’t take into consideration the routing for voltage and ground, so my sublayer is pretty ugly and I didn’t take much time get rid of snaking. I also haven’t made consideration for lengthening wires to the same bus. I’ll have to practice it later. I’m also thinking about asking for suggestions. I saw others using grounding pins for some of their chips. I didn’t use any. It’s difficult to stop working on my PCB because I’m really not satisfied with the outcome, but I will hopefully practice later and try following some principal guidlines which I may have missed this time (such as better placement with consideration to voltage and ground wires).