We’d like to present a Debian package that makes it even easier to get APM up and running. It includes all APM supported vehicles. The only thing needed to install it is to type these lines at the command prompt
wget http://emlid.com/files/apm.deb sudo dpkg -i apm.deb
After the installation is complete, you can launch any one the supported vehicles:
For example, if you want to run a quadcopter, the only thing you need to do is
sudo ArduCopter-quad -A <telemetry_source>
-A switch lets you choose the telemetry source.
The source might me /dev/ttyAMA0 if you use a UART-connected radio or udp:<GSC_IP>:<GSC_PORT> if you want to control your vehicle with Wi-Fi. To see another options launch APM with -h switch to see a help entry.
sudo ArduCopter-quad -h
It might produce something like this:
Usage: -A uartAPath -B uartBPath -C uartCPath Options: -serial: -A /dev/ttyO4 -B /dev/ttyS1 -tcp: -C tcp:192.168.2.15:1243:wait -A tcp:220.127.116.11:5678
Some time ago we’ve released a new version of our Linux autopilot – Navio+. Main new feature is that Navio+ supports HAT standard and is compatible with Raspberry Pi models A+,B+ and also with… Odroid-C1. It is a new board from Hardkernel powered by quadcore 1.5GHz CPU with 1GB of RAM. Odroid-C1 sets a new standard for performance – it is fast, 10 times faster than Raspberry Pi and faster than most of the single-board computers on the market. It also features EMMC storage for high performance memory operations. Another benefit of Odroid C1 is that you can build APM on it in just 45 seconds.
Here are the benchmark results for Raspberry Pi B+ and Odroid-C1 made by intorobotics.com:
Besides DMIPS, very important improved metrics are system call overhead and context switching that will positively affect real-time capabilities.
We’ve added support for Navio+ and Odroid-C1 combo in APM. The porting was mostly straightforward thanks to the APM’s HAL and as we already had the drivers for Navio+. As Odroid-C1 is a new board, not all required system features were implemented and we had to do some tuning. Luckily, Hardkernel team is very responsive and great in communication and helped us solve the problems as we found them.
Most of the features are implemented for C1 such as toolchain configuration, build target, IMU, baro, GPIO driver, RGB LED etc.
But we won’t be kept without work, a couple of things are still left to do:
- RT_PREEMPT kernel. The real-time patch doesn’t apply as smoothly as on Raspberry Pi’s Linux, so we’ll have to deal with that by manually applying the failed hunks.
- RCInput. This is a tricky part on Linux, but on Raspberry Pi it was solved by using DMA. We can go that way too, but Amlogic S805 has quite a few other peripherals we can use – unlike BCM2835 it’s got a lot of spare timers that can generate 1us interrupts. Datasheet was only released a couple of days ago and we’re currently exploring the possibilities.
APM’s port for Odroid-C1 is available here:
For now our main goal is to take Odroid-C1 into the air and we believe that many exciting projects will follow, that will take advantage of incredible processing power.
We believe that open communication between users leads to better future for Navio+ project. Thanks to you our forum started to grow and it was time to switch to something more powerful. BB forums are a thing of the past and we found an amazing project called Discourse.
Discourse is a very nice looking and feature rich place where community members can share their experience and thoughts.
Previously we had a problem trying to navigate through numerous comments in the blog. Now every blog post is published to the forum and could be discussed on community, so that no opinion will be lost.
It would be great to hear about your project! Come and check out community.emlid.com
This is a release of the new SD card image of default Raspberry Pi distribution Raspbian with real-time kernel. It is based on 2014-12-24-wheezy-raspbian with default kernel replaced to new 3.12.36-rt50+ kernel and a few additional tunings.
Default Raspbian kernel is configured with PREEMPT option and provides worst case latency around single digit milliseconds. Real-time demanding applications require lower latencies than that. Real-time patch and PREEMPT_RT option lowers the worst case latency to tens of microseconds, allowing for real-time applications such as autopilots to be run on Linux.
Results of testing with “sudo cyclictest -l1000000 -m -n -a0 -t1 -p99 -i400 -h400 -q”:
PREEMPT #Min: 00013uS #Avg: 00023uS #Max: 01153uS
PREEMPT_RT #Min: 00011uS #Avg: 00023uS #Max: 00066uS
Histogram values are on the plot above.
List of changes includes:
- Replaced default kernel with PREEMPT_RT kernel 3.12.36-rt50+
- Processor frequency set to 800MHz (can be changed in /boot/config.txt)
- Enabled SPI
- Enabled I2C and set speed to 1MHz (if you’d like to connect a sensor with lower clock speed, edit the baudrate option in /etc/modprobe.d/i2c.conf)
- Enabled camera
- Installed pigpio, screen, socat, python-smbus, python-spi, cmake, cyclictest
- Disabled serial console, so /dev/ttyAMA0 UART can be used for radio (to enable back use raspi-config or edit /boot/cmdline.txt)
- Disabled extra ttys
- Removed wolfram and sonic-pi for extra space (to reinstall simply use apt-get)
- Added sdhci_bcm2708.enable_llm=0 to boot/cmdline.txt
- Default WiFi network: ssid “emlidltd”, psk “emlidltd”, key_mgmt=WPA-PSK
- Due to the required options some USB keyboards may not work
Patched and configured source code for Raspberry Pi real-time kernel:
SD card image downloads:
When we started experimenting with RTKLib we were amazed that it is possible to achieve centimeter precision positioning without breaking the budget. Even though RTK became more affordable there is still need in a very inexpensive USB raw data GPS receiver.
After manufacturing Navio Raw boards we got some raw data GPS receivers left. More precisely Ublox NEO-6T model. We really want to give something back to RTKLib community and are selling them mounted on boards for the price we got the chip itself!
Board breakouts USB, UART, PPS and EXTINT connection.
What can you do with it:
- Use as a GPS base station:
Connect antenna and install it on the roof of your home, connect Raw Data USB dongle to your PC and For 49.99$ you get a RTKLib base station that will stream RTCM.
- Use as a GPS rover:
All you need is a laptop or a single board computer to run RTKLib and a source of corrections available over the net. You can also use it to record GPS raw data and then postprocess it
They are in stock, so get them while they last!
We are glad to share that most of the patches for Navio has been accepted in the main APM repository.
There is still a lot of work to be done, including rework of the ADC, GPS and performance optimizations, but it’s great that now a working version of APM for Navio can be built using the code in the main APM repository.
We are happy to announce the new version of our Raspberry Pi autopilot – Navio+. With more than 300 Navios in the wild we’ve got plenty of feedback and now it is time for an upgrade.
Here’s a list of new features:
- New version is compliant with Raspberry Pi’s HAT standard, it fits both on Raspberry Pi Model A+ and Model B+. Our favorite combination is with Raspberry Pi A+, it is very compact and fits on a 250mm quadcopter frame nicely.
- Power module port. Power module provides clean power to Raspberry Pi and sensors from a Li-Po battery as well as current and battery voltage information.
- New GNSS receiver – U-blox NEO-M8N, latest generation multi-constellation receiver that supports GPS/Glonass/Beidou and provides better precision and higher update rate. This receiver is supported by RTKLIB.
- Triple source power supply with ideal diodes – now you can power your Navio+ simultaneously from power module, servo rail and Raspberry Pi’s USB. And if one power supply fails Navio+ simply switches to another.
And other improvements:
- New MCX antenna connector for solid connection.
- New RGB LED that looks much smoother.
- Additional LED indicators.
- Extended voltage range for PPM input – both 3.3V and 5V are supported.
- AUX input\output for custom purposes.
P.S. Check out the video of Navio+ controlling the quadcopter
Since the last update we’ve added a couple of additional pieces of code, as well as reworked some of the previous ones. Here’s the list of new features:
- Enabled external clocking for PCA9685, it should provide precise PWM values.
- Added support for ADS1115 ADC in APM.
- Added support for external GPS.
Seeing the rover finally make its first autonomous turns in an empty parking lot, even with not tuned PIDs is a large step forward in our project. Even though most of the code pieces are still in the prototype state, we hope to finalize them soon. Thanks to the APM’s HAL all drivers are the same for Rover, Plane and Copter, so the first plane flight on Raspberry Pi with Navio is not far ahead – we’ll make it as soon as we do some additional testing with the rover.
Previous week was quite productive for our team – few important blocks of code for APM have achieved working state:
- MPU9250 compass driver
- U-blox SPI driver
- RGB LED driver
Of course, they are not fully ready and require testing, fixing and some polishing, but it’s an important step in APM’s porting. New features are available in our GitHub Ardupilot repo in the navio-experimental branch.
Here’s a demonstration how APM statuses are displayed on Navio using an RGB LED.