Intel Aero overview(Intel Aero compute board and Intel Aero RTF kit)

For the past few months I have been working on Intel Aero and Intel Aero RTF kit and after the sales started I got all the time the same questions from colleagues so I decided to revive this blog and write a small overview about.

Intel has 2 products under Intel Aero name focused in unmanned aerial vehicles:

  • Intel Aero Compute board

    Intel Aero Compute board
    It is a development board with most of components that drones needs:

    • Intel Atom CherryTrail with 4 cores running at 2.4GHz
    • 4GB of DDR3 RAM
    • 32 GB eMMC + microSD slot
    • WiFi(802.11ac)
    • Sensors:
      • BMI160 (gyroscope and accelerometer)
      • BMM150 (compass)
      • MS5611 (barometer)
    • Max 10 Altera/Intel FPGA with 8K logic blocks
    • MIPI connectors
    • USB 3.0
    • Linux 4.4

    So with this board alone is possible to have a flying drone, we have ported Ardupilot to it so you only will need to build a breakout board to the 80pin connector to export the PWM signals to the ESCs and gather all the drone components(frame, ESCs, motors, propellers…).
    Or you can grab a flight controller like Pixhawk to actually fly and connect it to Intel Compute board so it can do the heavy processing like computational vision and order tasks to flight controller.

  • Intel Aero RTF kit
    Intel Aero RTF kit

    It is the ready to fly kit, you just need to connect a 3S/4S Lipo battery to fly.

    On this kit you have:

    • Intel Aero Compute board(with everything above)
    • Intel Aero Flight controller
    • Intel Aero Vision accessory kit(Intel Real Sense R2000, 8MP RGB camera and down-faced VGA camera)
    • Carbon fiber frame
    • ESCs, motors and propellers
    • Remote controller and radio receiver
    • External compass
    • GPS
    • Power distribution board

    The Intel Aero Flight controller is another board that connects to Intel Aero Compute board and it is responsible to fly, so the Intel Atom is 100% free to do another tasks like video processing.
    The brain of Aero Flight controller is a STM32 micro-controller and it has another set of all the sensors needed to fly, we have ported 2 flight stacks to it: PX4 Pro that comes out of the box and Ardupilot.

    Flight controller and Compute board is connected by a high speed UART, this way applications running on Intel Atom can get information about the flight and order tasks/commands to the Flight controller, for example you can write a follow me application that will use the Intel Real Sense data process it in Intel Atom and send commands to the flight controller to actually follow the person or object.

    To the whole kit to work it needs a FPGA RTL firmware loaded to router some signals between Flight Controller, Compute board and breakout board but it still has more than 50% of logic ports to be used by software developers.

    So this kit is aimed to software developers that have brilliant idea of a drone application and don’t want/have time to gather all the hardware and software to build a drone and then start to focus on the application, saving a huge time to market.

This blog post was just a small overview there is a lot of specific information Intel Aero Github wiki page but if you still have some question please ask on the comments bellow.

New e18 modules

Yes e18, the world didn’t end and e17 was released. And then the development of e18 began. This desktop environment will be built on top of EFL1.8 that will bring edbus instead of the old e_dbus.

So in these first weeks of the year, we ported every e17 module to edbus and added 3 new modules.
I will briefly show the major improvements but if you are a developer I recommend you to see by yourself, Now with EFL1.8 single tree it’s really easy to install e18 dependencies.

Before continue, if you are not familiar with e17 modules you can read this guide.

Systray
This module is responsible by displaying the notification area. In this area application icons are displayed and clicking over an icon you have access to some features of applications without have to unminimize it. Several applications use it like Skype, Pidgin, Xchat and others but the implementation of the protocol that enables this is really old and modern desktops have serious technical issues to implement it. In e17 we have a function called _e_shelf_cb_mouse_move_autohide_fuck_systray() in http://svn.enlightenment.org/svn/e/trunk/e/src/bin/e_shelf.c that show a little bit how difficult is to maintain support to Xembed. Besides the technical issues, each application have their own behavior and theme when clicked over its icon, leaving the user confused.

Canonical(the company that develops Ubuntu) created a new notification area protocol called Application Indicators, which resolves all the problems of Xembed protocol.
This new protocol was implemented in the systray module but the older one will be there for while.

One of the greatest advantages of that is the possibility of use the network manager applet of Canonical.

systray

By clicking on it we can set up and connect to ethernet, wifi and 3g networks. Certainly a good alternative to ConnMan.

Music control
One of the new modules is music control, that allow user control his music player in his shelf. You can go to the next or previous song and pause or play.

music_player

The only dependency is the DBus Mpris2 interface your player must export it. Most modern players just need enable it through some configuration. But if your player implement that and are not in the supported list please inform us in the Enlightenment developer list.

Application menu
The second module added is the application menu. It implements a protocol also writen by Canonical know as Application Menu. This specification transfers the responsibility of showing the application menu to the window manager. There is a long explanation on why transferring the responsibility of application to window manager but to make a long story short it’s because of the gain space on-screen.

appmenu
Here I have a shelf on top with auto hide, showing the Chrome menu only when needed.
The applications must export they menu over DBus, Canonical added the support to Gnome and KDE toolkits, for the EFL/Elementary supported was added by Profusion but there are some environment variables in each toolkit to enable it.

Bluez4
The last new module is Bluez4, that is a graphic interface for BlueZ version 4.
BlueZ is the official Linux Bluetooth protocol stack so with bluez4 you can pair and use all your bluetooth gadgets.

bluez

So this was the first news about the e18, there’s more coming, stay tuned!

EDBus – EFL D-Bus wrapper

As I have wrote in a previous post, I will talk about the newest EFL library: EDBus.
EDBus is a D-Bus wrapper, that provides easy access to D-Bus for EFL applications.

But what is D-Bus?
It’s a protocol of communication between processes, like CORBA and DCOP. Heavily used in all UNIX graphical toolkits, with Windows port and specified by FreeDesktop.org.
Here is a good source of information about D-DBus: http://dbus.freedesktop.org/doc/dbus-tutorial.html

But what about E_DBus? (the old D-Bus binding for EFL)
E_DBus is a thin layer between libdbus and ecore (library that provides main loop), to use it it’s necessary to use libdbus functions to handle with messages which is not trivial and also does not have support to most of FreeDesktop.org interfaces, leaving this work to applications developers.

So EDBus comes to replace E_DBus, and we not only removed the “_” on name but all libdus functions are encapsulated into a simple and friendly API, here is a sample, reading a message with this signature: “a(sb)”

E_DBus + libdbus:

dbus_message_iter_init_append(msg, &iter);
dbus_message_iter_recurse(&iter, &array);
while (dbus_message_iter_get_arg_type(&array) != DBUS_TYPE_INVALID)
  {
     dbus_message_iter_recurse(&array, &st);
     dbus_message_iter_get_basic(&st, &txt);
     dbus_message_iter_next(&st);
     dbus_message_iter_get_basic(&st, &b);
     printf("%s - %dn", txt, b);
     dbus_message_iter_next(&array);
  }

EDBus:

edbus_message_arguments_get(msg, "a(sb)", &array)
while (edbus_message_iter_get_and_next(array, '(', &st))
  {
     edbus_message_iter_arguments_get(st, "sb", &txt, &b);
     printf("%s - %dn", txt, b);
  }

Most applications when ported to EDBus had 50% fewer lines of D-Bus code.
Here a list with more EDBus advantages:

  • High abstraction of method call using Proxies
  • Life cycle of objects simplified
  • arg0, arg1,…. match rules to signal handlers
  • Conversion of Eina_Value to and from EDBus_Message
  • ObjectManager interface support

 

In a future I will write giving more details about all advantages, but now you could download the EDBus code and read examples.
http://svn.enlightenment.org/svn/e/trunk/edbus

EDBus still under development, soon we will have a code generator, you only will need pass the Introspection XML and client and server D-Bus code will come almost free. Another object is remove libdbus dependency and talk directly with D-Bus Daemon through socket.

Bootstrap

Recently I started to work at Profusion, a software development company focused in open source projects, here some of them:
Linux Kernel
EFL
BlueZ
WebKit
PulseAudio

This blog was made with the intention to share news about projects that I’m working, some tutorials and anything that I think is worth.

Soon I will write about the new library of EFL, EDBus(or Edbus this detail is on discussion) and maybe something about my new acquisition, a Raspberry Pi.