Even in the case of specialistic software, a comfortable and responsive UI increases the efficiency of usage. This also applies to Ozarkfalls - new software project which was planned to provide dedicated solution for controlling and planing military robots fieldwork.
In case of controlling robots or drones, one of the most popular approaches is to create a dedicated app that behaves like a control panel. This way user is not forced to purchase additional hardware and developers can use many of the features that modern tablets, phones or other devices have on board. What we wanted to achieve was to create an application that allows users to get necessary information from device, visualize it, and send properly parsed user input data to the robot. All of that in simple and user friendly way.
If you want to learn about the development process of such a product using Qt, you are in the right place!
This project was targeted to be an MVP (Minimal Value Product). This term describes the milestone of the project when most important functionalities are fully functional, however developers are not focusing on the UI look and feel. The most important thing was to make things work well rather than look.
Each project has to begin with defining a list of necessary features and grouping tasks into proper milestones. Good communication is one of the most important factors when it comes to defining requirements for the project. This is why before starting with implementation we offer consultation for the clients to make sure app development would go smoothly. To ensure the highest quality of the end product and customer satisfaction, we provided ready-to-use packages after each development iteration in order to let the client review them. This way we could adjust our product and follow feedback from the customer while the product was still in production.
The highest priority functionalities included an interactive map – the core element of the app. Since Qt has great support for them, this functionality was implemented quickly and with low costs.
If you want to add custom elements to the map Qt lends you a hand by providing ready QML components – all you need to do is to set them up. In the case of Ozark Falls, we created waypoints which robot should visit and robot marker, to indicate its current position on the map. In order to display them properly on an interactive map, a combination of Qt Positioning and Qt location was used. With map plugins provided by Qt, adding such functionalities to the map are greatly simplified – basic implementation takes only few dozen of lines.
The map had to support satellite view and offline caching – these functionalities may seem hard and expensive to implement, however, this is not the case with Qt. Qt Location plugins provide a variety of maps with many different functionalities. To enable satellite view and caching all you need to do is to add few lines in Plugin item.
Since the app needed to allow users to read waypoints stored in the robot’s memory and send ones added on the map to the robot, a reliable two-way communication had to be implemented. That is why the TCP sockets were used. Why TCP? This approach allows us to make sure all data sent to the device has been received while allowing the robot to send data to the user device as well.
The map used a custom model in order to store waypoints. Thanks to this user can reorganize list of waypoints: change their order or delete selected ones. All of the changes are immediately visualized on the map.
The whole UI was implemented using QML (Qt Markup Language) from the QtQuick module. It allows creating responsible, smoothly animated and beautiful GUI in no time.
Another advantage of Qt framework is its calculation and memory efficiency. This allows deploying an app on all types of devices – even embedded. All of the communication and file managing logic was made with C++ since we wanted to make it fast and efficient. Qt allows easy interfacing of C++ and QML. This way we got lightning-fast app logic with a responsive and user-friendly UI – it is a great combination. This app is targeted for Windows tablet, however, as it’s Qt-based we can launch it on Android or iOS without any code changes. Cross-platform applications are great!
If you want to know how to deploy Qt application on Windows feel free to check out the following blog post.
You don’t have to trust only our words – see what Chris thinks about our work:
“I hired Scythe-Studio team to work on a robotics mapping project and I am very pleased with the results. They took my loose requirements and made a well organized schedule and milestone list, and successfully completed each item. Part of this project included a communication scheme used to talk to a robot in the field. I was concerned that whoever I chose for this job, this part of the project would present a challenge to implement. I was very pleasantly surprised when Scythe-Studio team correctly implemented this on the first try with absolutely no hiccups. Great job!”
Try answering those questions:
If you answered “yes” on any of those, feel free to give us a call.
In Scythe Studio we believe that every idea can be forged into a software product.