You can download this notebook here.
This is one part of a series of blog posts on Force Plates.
- ForcePlates I: Notes on Equipment
- ForcePlates II: Calculations
- ForcePlates III: Probabilistic Calibration of Magnitude
- ForcePlates IV: Calibration of Sensor Depth
Assembling a Force Measurement Setup
I’m interested to use and model a kistler force plate that we have in the lab. I plan to attach sockets (padding) to it to reduce the potential contact surface, which will increase the chance of recording single limb forces from animals walking over it. However, this requires a correction of the calculation of contact point or centre of pressure (COP).
More on this will follow in the other blog entries about force plates.
Here is a sketch of the device:
Unfortunately, documentation for the force plate is sparse, despite its substantial price. Kistler seems to assume that closed source hard- and software can increase their revenue for sales and support.
Sod all greedy managers.
The situation was very unfortunate. The force plate we posess in my lab looks like it is several PhD projects old, and when I came to it, the laptop that is attached to it (via PC Card and two 50pin data cables) was beginning to deny service.
It is a beautiful piece of technology, but unfortunately not at all prepared for future challanges.
Replacement was not possible: whereas the PC Card DAQ (a standard from the good old nineties, lower right in the foto) had been made by “Measurement Computing” (MCC), Kistler had in the meantime turned to producing their own DAQs. These cost approximately 5000 EUR, or something less when you politely complain about their unacceptable product chain (see below) and their revenue-oriented end-of-life policy. Don’t get me wrong, I like to complain. But in this case it is even justified: the money for PhD projects usually comes from public funding, and with that financial background, long term investments for a lab simply may not have an inevitable end of life within twenty years.
I have to say, I like the Kistler force plates, and have made good measurements with it. My PhD wouldn’t be possible without them. Also, Kistler support team has been helpful and friendly to me, although I am a most annoying type of customer (“little money + nasty questions”). My standing lhypothesis to which all the inconvenience I experienced breaks down is revenue-centered product management, as opposed to open, user-centered strategies (as I experienced it at MCC, see below).
Worst of all, the new DAQs are controlled by Kistler’s own (windows) software. To put it politely: Kistler are not experts in software programming. The “BioWare” program (does anyone remember the great “Baldur’s Gate” computer games?) is neither stable, nor particularly user friendly.
Stability issues could be due to the computer. However, that is unlikely: I had equipped a completely blank computer with MS windows dedicated for my experiments. Note: my organism runs on linux natively, so installing windows is not to be underestimated. I almost ruined a table by biting its edge and banging my had to it (example: WHY would I need Candy Soda Pop Shit to operate a force plate?).
Luckily, it turned out that there are alternatives.
Let’s first review the components of a force plate setup and see which part can be made more “open”/“available” in terms of hard- and software.
I encountered two major brands of force plates: Kistler and AMTI. These manufacturers rely on different technologies, so I will try to point out differences below.
The Force Plate Setup Product Chain
When force is applied to the surface of the force plate, this generates a signal (transduction). In the case of Kistler devices, this is done by Piezo crystals that change electrical charge state upon change of pressure. In case of AMTI force plates, signal transduction happens in strain gauges. I was told that these two technical types of force plates each have (dis-)advantages in different recording situations (static/dynamic/transient).
I noticed that piezo’s are subject to “drift” (small, slowly cumulating random changes of the signal), but that can be helped by post processing to some extent, at least in dynamic measurements. The strain gauges, on the other hand, might be more sensitive to temperature, but that was negligible for my purpose.
If one wants to measure statics (such as balance), strain gauges seem to be the favorable transducer.
The decisive criteria in my case were availability and size. The AMTI’s we have in the lab are too big for my animals and have a sensitivity range that extends far above the forces I hoped to measure.
So in my situation, force plates are a given, and I have no way to make them more “open”. In fact, three of four devices were literally given to us temporarily by the lab of Anthony Herrel, a colleague in France, to whom I am very thankful for this.
The signals that come directly out of the force plate are of small magnitude. Hence, they need to be amplified. Amplifiers are very useful, but no rocket science, and they have been common since the time of synthesizers that precede the time in which my musical priming happened. The amplifiers for force plates do not only incease signal magnitude, they also sort the raw signal into “channels” of some meaning.
For example, with AMTI devices, these channels are usually forces (F_x), (F_y), (F_z), and moments \(M_x\), \(M_y\), \(M_z\) (make sure to find out the coordinate system defining the reference frame of the force plate). In contrast, on Kistler setups, the amp returns eight channels: \(F_x12\), \(F_x34\), \(F_y14\), \(F_y23\) and four components \(F_z1\) to \(F_z4\). The numbers correspond to the force plate legs, i.e. numbers of the internal sensor, and \(x\) and \(y\) forces are only given as differences, not as absolute magnitudes. Kistler data does not contain moments a priori, but these can be calculated.
Thought the Kistler notation makes sense in a way, I have the feeling that Kistler amp output is an irrelevant intermediate result: they could give raw data (i.e. \(x,y,z\)-values for each standfoot) with just four extra channels. Alternatively, to save channels, the forces and moments could be returned as in the AMTI form, i.e. three forces and three moments. But anyways. We can help that as follows in one of the next blog posts.
Amps could in principle be exchanged for less proprietary brands (or even self-tinkered devices). In my case, availability made the choice again, and I preferred to stick with the Kistler ones we have to ensure smooth transmission of the force data. These amps are excellent products after all, and I will forgive Kistler that I had to open the casing of a brand new one (fresh from vacuum bag) to retrieve a plug fixation screw that had not been properly tightened.
Further down the data stream remains a DAQ that interacts with software on a personal computer.
DAQ means “Data Acquisition”, a device that combines analog-digital transformation and further calculations, and then sends meaningful values to the recording software on the computer. DAQ’s can also forward control signals to the amp, for example zero’ing the voltage or defining the sensitivity. However, this can also be controlled manually on the amp.
DAQ solutions exist in branded variants that are uniquely coubled to the manufacturer or even to the type of force plate. However, as seen above, Kister used to work with MCC parts. Guess what: this is the part that I was able to replace.
To summarize, I would like to use the force plate and amp from Kistler, because these are good products. However, I need a cheap and compatible replacement for the DAQ that eventually works with my linux computer.
One DAQ to Rule Them All
A new Kistler DAQ was far too expensive for my limited budget. I first intended to replace only the DAQ and still use Kistler software. I reached out to MCC and asked whether there is a USB replacement for their ancient products.
Indeed, there is. It is the MCC USB-1608G DAQ. Cost point 400EUR (as of April 2019), which is less than a tenth of the investment that Kistler offered.
I convinced my boss to acquire two of these DAQs. Convincing was not too hard, the list of advantages is long:
- useful hardware design: sufficient (16) analog inputs, also digital IO, trigger and sync options
- customizable, multi-purpose devices
- compatibility (USB, various software available, even convenient freeware)
- drivers are available for most OS’es, e.g. they work flawlessly on linux
- there is a python library (uldaq), possibly other programming languages are supported
- the python library comes with well-documented, sophisticated code examples for various use cases
- MCC support was really friendly and cooperative.
The last point was important because I first intended to use the MCC DAQ with Kistler BioWare software. It turned out that that software did not support newer MCC products, which was for no obvious reason (it did support the ones from the old days after all; again, I find this a disadvantage of Kistlers own product chain). After explaining my situation and budget restrictions, MCC offered me a 30 day convenience return option, and payment could be delayed to after that.
Despite the software incompatibility, we decided to buy the DAQ.
Note that we also had DAQs from National Instruments available in the lab. But because of their driver and software policy, NI is no better than Kistler. In fact, they are much worse, and I would never consider buying one of their interfaces.
If it would have been possible to control the MCC DAQ from Kistler software, I might have sticked with it (after having gone through the pain of installing windows, anyways).
But because Kistler did not think of the option to replace parts of their product chain, I came up with something that worked much better for me.
Due to its open design, compatibility, and documentation, measuring with the MCC DAQ via
python worked right from the start.
Below, I link the code which I produced. It is provided as is, and just an extension to what ULDAQ provides (more triggering and display convenience).
In general, I can recommend starting from the extensive set of uldaq examples and building some bespoke recording software. Even if you are not a programmer, one of the examples should do most of the job already.
IO Toolbox with tests of less relevant DAQ functions:
Applied DAQ recording for my experiments:
A tiny puzzle piece still missing is the connection from the amp to the DAQ.
For two proprietary Kistler DAQs, I had two types of connector cables in my hands, which go together (although the amp is the same). Even these cables are incredibly expensive. I had one of each, but needed at least two. So I started soldering the cables myself:
- Get the D-Dub that matches your DAQ.
- Use connectors with solder cups/buckets, which is trivial to solder.
- For the amp side, see the channels that are written on the amp (image above).
- For the other side, you can try to follow the schemes below (at your own risk).
Or even simpler, one can solder open-ended cables for the less expensive DAQs.
Dummy Force Plate
Finally, I used a playstation joystick from some arduino kit as a dummy force plate for testing the software functionality during programming.
It has two horizontal axes (\(x\), \(y\)) that give quasi-analog signals and a push-function (\(z\)) that can serve as a trigger. I used a voltage divider to get from \(5V\) (DAQ) to \(3V\).
In this post, I argued why I would rather buy an MCC USB DAQ in the future than turning to Kistler or AMTI.
In short, it has to do with these companies’ product policy, i.e. pricing and especially the programming interface accessibility.
This is based on a single particular observation that I made, which however was my priming experience. Others might have made different experiences, or have different purposes for their force plates, so make sure to decide on your own.
The software I provided might influence your decision towards an open and inexpensive, but more versatile solution, given that you are willing to learn the code and adapt it for your purpose.
What is a force plate worth if it only gives cryptic values? We’ll next check how to compute physically meaningful values from the raw channels, before exploring ways to calibrate force plates.