Pololu Blog (Page 38)
Welcome to the Pololu Blog, where we provide updates about what we and our customers are doing and thinking about. This blog used to be Pololu president Jan Malášek’s Engage Your Brain blog; you can view just those posts here.
This week I released version 2.0.0 of minimu9-ahrs, an open-source demo program that runs on the Raspberry Pi, reads data from a MinIMU-9 via I²C, and uses the readings to calculate the orientation of the IMU. The new version adds support for the MinIMU-9 v3. The program now supports all past and present versions of the MinIMU-9.
The original version of minimu9-ahrs was released back in 2012, along with ahrs-visualizer, a program for displaying the orientation in 3D. For more background, you can see my blog post about minimu9-ahrs from 2012 or read the Raspberry Pi blog post about it from June 2014. The video below shows minimu9-ahrs and ahrs-visualizer working together:
Version 2.0.0 of minimu9-ahrs also includes some other changes:
In this new version, the raw accelerometer readings that you can get using the
--mode raw option have basically been multiplied by 16 from what they were before. We made this same change to our LSM303 Arduino library when we added support for the LSM303D. The reason for this change is that before the MinIMU-9 v3, all the MinIMU-9 accelerometers were 12-bit, with the lower 4 bits of the output registers being unused, so we always shifted the readings to the right by 4 bits to get rid of the unused bits. The LSM303D in the MinIMU-9 v3 has a 16-bit output, so shifting its readings to the right by 4 bits would be inappropriate. However, it is nice for the raw accelerometer readings to have the same scale regardless of which accelerometer you happen to be using, so we chose to stop shifting the output of any of the accelerometers. All the accelerometers are configured to have a full-scale range of ±8 g by minimu9-ahrs, so a reading of 4096 will always correspond to about 1 g. This change should not affect most users, but it is not backwards-compatible, so, following semantic versioning, I incremented the major version number from 1 to 2.
The Debian package that I made for minimu9-ahrs version 2.0.0 uses the armhf architecture instead of armel (which was used for previous versions), so you can easily install it on a Raspberry Pi running Raspbian. I also made a new version of ahrs-visualizer that has an armhf package. If you are not using a Debian-based distribution like Raspbian or you are not using the armhf architecture, you can still compile the programs from source.
With this new version of minimu9-ahrs and our recent big price reduction of Pololu IMUs (which made the MinIMU-9 less expensive than a Raspberry Pi), now is a great time to start experimenting with these state-of-the-art MEMS sensors.
Related past posts
- Big price reduction of Pololu MEMS sensor carriers and IMUs
- New product: AltIMU-10 v4 gyro, accelerometer, compass, and altimeter
One of our customers made a hexapod that is controlled with a PlayStation controller. It uses our 18-channel Mini Maestro to command the servos and a MinIMU-9 v2 for stabilization. The hexapod’s movements are directed by a BeagleBone Black running Robot Operating System (ROS). The physical body of the hexapod is based on a Lynxmotion Phoenix design and was constructed by the customer. The project is well documented and more details can be found in the original post. However, the post is in Russian, so you might need to запустить страницу через переводчика.
We posted recently about how progress in MEMS sensors has resulted in a constant stream of improved Pololu breakout boards. This week, we brought some of that technological progress to our Zumo robot with the release of a new “v1.2” version of the Zumo Shield for Arduino. This new version upgrades the previously-included LSM303DLHC compass to nine channels of inertial sensing using the newer LSM303D compass and L3GD20H gyroscope.
That means that the new Zumo shield includes a full inertial measurement unit (IMU) – the equivalent of a MinIMU-9 v3 – letting you turn it into a complete AHRS by adding an Arduino or compatible controller.
The v1.2 update extends to three new products:
- Zumo Shield for Arduino, v1.2
- Zumo Robot Kit for Arduino, v1.2 (No Motors)
- Zumo Robot for Arduino, v1.2 (Assembled with 75:1 HP Motors)
Other parts, such as the Zumo chassis, sumo blade, and reflectance sensor array, are not affected by this update, and the new Zumo shield is mechanically and electrically compatible with the previous model. They are also completely code-compatible except for the MEMS sensor aspects, which are already supported by our open-source Arduino libraries.
Two weeks ago, we announced a big price reduction of our MEMS-based sensors and explained a little about why we release new versions of these boards so frequently. If you looked closely at the diagram showing the evolution of our ST MEMS sensor boards, you might have noticed that we’ve used each IC on a carrier board for that chip by itself, as well as on an IMU board combined with other sensors, with one exception: the LPS25H pressure sensor. When that post was written, we had recently released our LPS25H carrier, but we did not yet offer an IMU featuring this new barometer IC. The AltIMU-10 v3, which uses the older LPS331AP pressure sensor, was the newest AltIMU available from us at the time.
With the release of the AltIMU-10 v4 this week, that updated IMU is now available. Like the v3 version, the AltIMU-10 v4 contains an LSM303D three-axis magnetometer and accelerometer and an L3GD20H three-axis gyro, and it replaces the LPS331AP pressure sensor on the older board with the improved LPS25H, enabling pressure and altitude measurements with higher accuracy and lower noise.
We think the AltIMU-10 v4 combines the state of the art in ST’s MEMS sensors into one compact module at a great price. However, we’ve also put the AltIMU-10 v3 on clearance and lowered its price; if you don’t absolutely need ST’s newest pressure sensor on your IMU, the v3 is still a very good sensor board to consider.
Here’s an updated version of our diagram showing where the new AltIMU-10 fits in:
Evolution and release dates of Pololu carriers for ST’s MEMS sensors through June 2014.
Tomorrow is Tau Day! To celebrate, I thought I should write something about how we use math on our website.
Mathematics is essential to engineering, so we often need to use math when presenting a product or discussing some point about robotics and electronics. In the past, we have struggled to come up with our own ways of getting math online, such as using HTML code (e.g. a 1×2 table with an internal border can look like a fraction) or finding some engineer here who knows how to type up equations in LaTeX and export images.
Over the past month, we have quietly switched to MathJax, which is the technology used on the very popular site MathOverflow. We are using MathJax, for example, to explain current and voltage settings for our new TPS2113A carrier and to show how to compute the exact gear ratios of some of our Micro Metal Gearmotors – the 1000:1 Micro Metal Gearmotor being a particularly good example since it has so many gears.
MathJax allows us to type math directly into web pages using simple text codes, and it uses modern features of your web browser to format the math for you as the page is loaded. If you reload this page and watch the equation below carefully, you will briefly see the raw code before MathJax redraws it:
``int_0^oo e^(-x^2) dx = sqrt pi / 2``
(The integral of a Gaussian has long been one of my favorite mathematical exercises.)
Try it yourself
Instead of using the LaTeX syntax used on MathOverflow, we chose a simpler input format called ASCIIMath. You can read documentation on the ASCIIMathML page. The way it works is that you type ASCIIMath code within double back-quotes, like this:
``int_0^oo e^(-x^2) dx = sqrt pi / 2``
We have enabled MathJax throughout the site, including blog comments, so that you can participate fully in discussions here, starting with this little Tau Day celebration. So, what is your favorite equation? Try out MathJax and share it with us in the comment section below!
The folks from SHARC have converted a Jeep into an autonomous robot for SparkFun’s annual Autonomous Vehicle Competition that took place last weekend. Their robot, Troubled Child, won first place in its class and the “Crowd Favorite” award.
Long-time customer Michael Shimniok (our first blog post — from before we called it a blog — was about a tutorial he wrote for programming AVRs from a Mac) used his 1986 Jeep Grand Wagoneer to explore the back roads of Colorado and Utah before converting it into an autonomous vehicle. The autonomous Jeep uses our D15V35F5S3 switching step-down voltage regulator for powering the on-board electronics, and our dual relay board for running the warning horn and deactivating the pneumatic brake failsafe.
You can check out their final run from inside the vehicle in the video below.
Forum user Pablo shared his Wi-Fi controlled robot with pictures and videos from his Instagram. In Pablo’s forum post, he summarizes his project, which consists of a custom PCB that he designed himself to interface a PIC18F26K20 with a MRF24WB0MA Wi-Fi module. His custom board also carries a DRV8835 motor driver and is mounted on a Zumo Chassis. The robot is controlled through Wi-Fi using a custom Android app and has a GoPro camera mounted on the Zumo blade. Finally, to top it all off, he placed a 6" Domo plush doll on top.
The picture below shows his fully assembled PCB, and Pablo posted a sped up video of its assembly.
We’re now selling the UM7-LT orientation sensor, the latest Attitude and Heading Reference System (AHRS) from CH Robotics. The UM7 takes advantage of newer sensor technology to offer improved performance compared to its predecessor, the UM6, despite its reduced cost.
Like earlier CH Robotics AHRS modules, the UM7 contains an onboard microcontroller that combines data from its three-axis accelerometer, gyro, and magnetometer to produce orientation estimates 500 times a second. The attitude and heading information, available in the form of Euler angles or quaternions, can either be streamed automatically or provided upon request through a TTL serial interface.
Power and serial connections can be made to the UM7-LT through a five-pin connector and an included matching cable, and expansion headers provide additional interfaces like SPI and a secondary UART that can be connected to an external GPS module. The free CHR Serial Interface software makes it easy to visualize data from the UM7 and configure its settings.
The inside of the Geiger counter.
The home-made Geiger counter featured in this post by forum user bob_day uses an A-Star 32U4 Micro, LND 7313 Geiger tube, and LCD to measure and display Geiger tube counts. The LCD displays the counts detected during the last minute, the average counts per minute, and the maximum counts in a minute. The project was originally designed for the Arduino Micro, but the program was able to run on the A-Star without any software modifications. The entire project is powered from one S7V8A adjustable step-up/step-down voltage regulator, and the conditioning part of the circuit, which shapes the output into narrow pulses, was designed by bob_day . Schematics and code for the project are included in the forum post.
The case and display of the Geiger counter.