Dear ROS users,
I would like to announce the Fximu2 project: Fximu is a IMU board that uses the FXOS8700, FXAS21002 as sensors and an Arm Cortex TM4C123GH6PM as microcontroller.
Here is project page: https://github.com/altineller/fximu2
We have ported ROS’s imu_complementary_filter on to the embedded TM4C123 platform, and created ros software to configure the sensors and complementary filter over ros parameters, so the device could be used by 3rd parties, without requiring firmware update.
Basically, it is a small, easy and cheap to build IMU sensor board, that directly plugs into Usb port.
I needed a Imu sensor for my project, I was not happy with the results I got from different sensor boards I tried, and decided to build my own, based on the above chipset, and the manufacturer claims noise characteristics are 100 times better, after being disappointed by the hardware DMP (digital motion processing) features of few sensor chips I experimented, I decided to use a simpler, and cheaper chipset, and do the filtering myself. In the first version, raw data from sensor was used to feed ros’s imu_complementary filter, which worked quite well, much better than madgwick or dcm algoritms that you can find in imu boards that does the processing on-board. After realizing running the filter on another host causes latency, I decided to port ros’s complentary filter to TM4C123, a microcontroller unit that has a floating point processor.
Gyro, acceletometer, and magnetometer sensors are read at 400hz, and the complementary_filter running on the embedded microcontroller, it publishes standard Imu and MagneticField messages over rosserial.
The device shows up as a virtual serial port, since it encodes itself as a usb hid device, requiring no drivers, or ros software, it will directly publish at ‘imu/data’ and ‘imu/mag’
All parameters from output rate, to sensor config to complementary filter parameters are configurable over ros param, with a yaml file.
It has a calibration mode, and software wrapper, that can take the ros message, and send it to another virtual serial port, by using unix program ‘socat’, so one can use off-the-shelf software for calibration.
I woud like to colloborate with other people on this project. I prototyped the circuit for my own use, but after realizing that it could be useful to other people, I built a full circuit, that is configurable for every need.
I would like to start an open-source hardware project, and keep both the software and hardware open.
I am asking the communities help with this.