Control a ROS-enabled UAV (Implementation)

This content has 6 years. Please, read this page keeping its age in your mind.

The implementation of the application was based on three UIViewControllers embedded in navigation controllers (fig.1). The navigation between the screens was accomplished using segues. In the projects’ workspace, three external libraries have been imported, namely:


As long as the control tab is enabled, the control messages are published in a continuous rate of 10Hz using an NSTimer object.

On the other side ROS was executed in a VMWare Virtual Machine. The ROS distribution was Indigo and the operating system Ubuntu 14.04 LTS. The simulation was based on Hector quad-rotor ROS stack. The host computer was connected with the iPhone via a Wi-Fi access point. The network topology is shown in figure (fig.2).


For a successful working scenario the my_hector package, which was developed for the assisted obstacle avoidance flight mode, had to be installed. Particularly, the hover node had to be executed to allow the altitude hold mode (rosrun my_hector hover). In addition, the Rosbridge and the MJPEG server also had to be turned on and to be running using the following commands:

roslaunch rosbridge_server rosbridge_websocket.launch
rosrun mjpeg_server mjpeg_server

The iOS source files of the project are available online in the project’s github repository (