Drone Navigation in Semi-Cluttered Environment – Update 3

Setting up the Drone

The drone that we are going to use for this project is an Intel® Aero Ready to Fly Drone. Package includes drone itself, 4 spinning blades (plus 4 extra), and remote controller. It doesn’t come with battery/charger and user should buy them separately, for which I suggest LiPo* 4000mA batteries and Keenstone* LiPo battery charger. Some of the specifications of the drone itself include:

  • GPS
  • 3 Cameras (Two front, one below)
  • USB ports to connect peripherals like mouse, flash drive
  • HDMI port to connect drone operating system to monitor
  • Preinstalled Linux* operating system
  • 865 gr weight

This drone comes embedded Yocto Project*, which is a custom Linux* based operating system. This means that it is basically Linux with the capability of being independent of the underlying hardware system.

First things first, is to install the latest Yocto operating system on the drone. The drone comes with a pre-installed operating system but this might not be enough. Find the latest version of the Yocto Project operating system and update the drone. One can go to the above link, download the file which is an iso file. Once the file is downloaded, Etcher* is the software to be used in order to put the iso file into a flash memory and make it bootable. Then follow these steps in order to install the operating system on the drone. One of the necessary steps after installing Yocto Project is to also install dependencies. Make sure to follow the instructions step-by-step.

It should be taken into account that Yocto Project is totally based on Terminal* and it does not provide a graphical user interface. If one prefers a graphical user interface, they can install Ubuntu on the top of Yocto and then wipe out Yocto. Yocto still needs to be installed initially, regardless of installing Ubuntum because there are some dependencies that need to be installed while Yocto is available.

Personally, I recommend Yocto as opposed to Ubuntu because Ubuntu is a bit heavy for the drone. If someone likes a graphical interface they can develop all the code on their laptop and then transfer the code to Yocto which is a straightforward process. I talk about it later in this post.

This drone also has a Wi-Fi access point. Once you turn on the drone, look for a Wi-Fi network that starts with “Aero-” on your laptop’s available Wi-Fi networks. The password to connect to this Wi-Fi network is 1234567890. Once connected to the network, one can access the terminal via ssh:

ssh root@192.168.1.1

One of the nice features of this drone is that it can also be used as a client and get connected to the Internet. Follow these steps in order to connect the drone to the wireless network of your choice. Once you do that, the drone will automatically connect to Internet each time you turn it on. If your laptop is also connected to the same network, you can ssh to the drone again and access the terminal. This time we need to know the IP address of the drone and that can be found by listing all available IP addresses on the device. For example in my case it was 192.168.7.1, knowing that can help us to ssh to the drone. This time we would have access to the Internet as well:

ssh root@192.168.7.1

Also, you can easily copy files from a local computer. For example, socket_server.py is the file that I copied from my local computer to the drone, via a command like the following:

scp socket_server.py root@192.168.1.7:/home/root

Furthermore, you can install two Python* dependencies, websocket-server on the drone and websocket-client on your own laptop, in order for the laptop and drone to talk to each other without any need to be connected to each other. They have to be connected to the same network though. For more information refer to the networked-drone-in-websockets section in this link.

For more information regarding developing applications in drone with python please refer to this link.

Read previous post: Drone Navigation in Semi-Cluttered Environment - Update 2

Reference:

[1]https://github.com/intel-aero/meta-intel-aero/wiki/04-Autonomous-drone-programming-in-Python

[2] https://github.com/intel-aero/meta-intel-aero/wiki/02-Initial-Setup

[3]https://github.com/intel-aero/meta-intel-aero/wiki/90-(References)-OS-user-Installation

[4]https://github.com/intel-aero/meta-intel-aero/wiki/08-Aero-Network-and-System-Administrations)-OS-user-Installation

[5]https://github.com/intel-aero/meta-intel-aero/wiki/08-Aero-Network-and-System-Administration

For more complete information about compiler optimizations, see our Optimization Notice.