
Demonstrates a custom 3d-printed drone frame with Raspberry Pi software connected to a cloud platform, enabling live video feed, map-based drone selection, and web-based control of drones and cameras.
Install our software-in-the-loop simulator on Ubuntu 22 with VMware Workstation Player 17, replacing VirtualBox; clone the repository, install prerequisites, build Arducopter, and run the Python simulator.
Set up a java project in Visual Studio Code, install JDK 11 and Java 8, and configure a Gradle-based springboard project with WebSocket support.
Configure java logging with logback for our application, using asynchronous console and file appenders, reading environment variables from yaml, and setting per-package log levels.
Create the initial Biton Python app in VS Code, set up logging, initialize a git repository with a readme, and prepare a Raspberry Pi deployment with a log file.
Configure your Python application to run as a Linux service on a Raspberry Pi by creating a dynamic systemd service file, handling root paths and logging to console and files.
Learn to set up a Python configuration reader to manage drone, cloud, and video settings, parse and validate config files, log runs, and handle errors on Raspberry Pi deployments.
Create a video streaming workflow that reads camera frames, encodes them as JPEG buffers, and sends each frame as a UDP message with drone IDs to a Java job application.
Develop a video page that receives back-end variables (host, drone ID, video endpoint) and activates a WebSocket video stream, updating the image element with live feed.
Add a /v/{droneId} video endpoint to the base controller, populate the model with IP, drone id, and video path, and return the video template to serve the feed.
Configure the video websocket endpoint in the backend by implementing websocket configuration and a handler, register it with the websocket registry, and manage drone sessions with a video stream manager.
Develop the video stream manager to facilitate drone-to-page streaming, mapping each drone to multiple WebSocket sessions via a thread-safe hash set for concurrent access.
Implement the core video stream manager: read UDP packets, extract drone ID and JPEG data, broadcast frames to all registered WebSocket sessions, and maintain resilience with try-catch and safe shutdown.
Build and run a remote drone video streaming app using a Raspberry Pi, WebSocket sessions, and a video stream manager, while discussing tests, public methods, and interfaces for prototyping.
Configure the index page backend endpoint by binding YAML values to model attributes via a reader. Expose the default drone speed and altitude to the front end for JavaScript.
Learn vanilla JavaScript for this project without Angular or React, using a single library called January for selectors to implement dynamic behavior and reusable UI components.
Initialize a JavaScript app for remote drone operations by setting up drone data, a world map, and markers for mission points, then enable keyboard controls and periodic system data updates.
Define the drone info data transfer object to formalize back-end to front-end communication, detailing an immutable object with latitude, longitude, speed, altitude, battery, and state, using Lombok to generate boilerplate.
Develop a JavaScript frontend drone abstraction that manages a drone object, video streaming, WebSocket control, and real-time position on a Google Maps world map.
Explore rendering the map point data component, configuring marker polling data, and updating or removing drone point data via a form-driven info window with height, speed, and action settings.
Develop and render a dynamic drone UI by implementing a UI components method that builds control panels, toggles between map and free views, and starts video feeds via WebSocket.
Build a mock json endpoint that returns drone status and location data for two drones, using a spring controller and json conversion to send json to the front end.
Implement and test start mission and command endpoints, sending drone id and JSON points, log received data, and validate front-end and back-end contracts for reliable data exchange.
Add a live video feed to the UI front page by streaming from the Raspberry Pi via WebSocket, updating the image source with JPEG data for the selected drone.
Implement the backend rest controller for remote drone operations, wiring endpoints to a control manager that handles system info, mission start, and command delivery with serialized data points.
Implement a control manager that opens a server socket, accepts Raspberry Pi connections, and registers drone handlers in a map by drone ID, enabling TCP/IP data exchange and lifecycle management.
Explore the drone handler receiver and sender threads, where a runnable polls network data into a drone info object, tracks the last update time, and writes commands from a queue.
Implement drone handler behaviors for sending mission data and commands, reading the latest drone status, and buffering messages through a network pipeline using the data mopper.
Learn protobuf basics and generate Java and Python libraries from a proto file to encode drone telemetry into bytes over tcp/ip 4g, using command data, drone data, and mission data.
Implement a simple Java network protocol by encoding message size in a four-byte header, sending a combined header and body, and reading data byte-by-byte to ensure complete messages.
Run and test a Java backend that connects phone data to a Raspberry Pi, verifies builds, runs locally, streams video, and executes drone mission data via a simulator.
Develop a Python app on a Raspberry Pi that connects to a flight controller via a modeling protocol, runs as Linux service, and streams video for simulator or real hardware.
Bootstraps a python drone app by loading configuration, initializing logging, and managing a watchdog-driven connection loop for a simulator or real drone, with socket communication and video streaming.
Explore how to implement a drone connection watchdog in Python by extending a thread, overriding its run method, and continuously monitoring internet status with reconnection logic.
Explore how a drone object abstracts simulator or real hardware, exposing macro level control and serializing telemetry via dronekit and proto data for Movielink and Mudlick interfaces.
Develop a Raspberry Pi camera servo controller using wiringpi with a dedicated thread that outputs PWM to sweep a 180-degree angle (60-220) safely.
Learn the complete multithreaded drone control flow, from configuration and drone object creation to connection watchdog, data receiver commands, telemetry streaming, and resilient Raspberry Pi video processing.
Demonstrates a full distributed drone application with two Raspberry Pi drones, simulators on virtual machines, deploying a Java backend, launching missions, streaming video, and handling reconnection and return-to-launch.
Embark on a maiden flight for territory exploration, take off amid wind gusts, and have fun while securing initial black boxes and all project files for remote drone operations.
In this course we are going to build a Cloud Application for Remote Drone Control Operations.
[DISCLAMER]
Guys, please do not buy this course!! It is very outdated in terms of initial libraries and packages installations. I am working to make an update to it, but if you go ahead and buy it it will take a significant effort on your side to find and install replacements and I do not want you to have bad experience and then hate this app development course in the rating section.
Also, this course is not about building drones. It's about building a system that will control drones. So you will not find hardware instructions, or instructions on how to build drones or anything like that( I'm really bad at hardware). It's only about software. So if you do not know how to build a drone and you want to do exactly that, then this educational video is definitely not for you. Do NOT buy it please!
Cheers
[/DISCLAMER]
We are going to code it from the grounds up - line by line - from 0 to the complete working solution.
This application will allow you by using only a web page to have a complete control of each of the drones, that could be assembled for any purpose - from a security missions to a delivery of pizza in miles of radius with range limit set only by a capacity of the battery.
Just imagine how cool and powerful such a thing really is:
all of the time, on the web page you will be receiving very low latency live video stream from all of the drones,
you will be able to share video link with anyone anywhere in the world,
you will be seeing all of the drones on the interactive map,
you will have full manual control of each of your custom build DIY Drone
you will be able to control it from anywhere in the world,
and you will be able at any time to setup and activate missions on any of those drones while they are flying.
So by the end of this course, you will not only learn a very useful skills in Java, Python and JavaScript, but most importantly, you will see how all these technologies could work together as one coherent distributed application that could easily have a real world usage.
You could adjust it to serve as a base for your own drone startup idea!
So to sum it up:
we will use Java to build a single file easy to deploy backend of our cloud platform that will manage drone connections
we will use Python to build application that runs on Raspberry Pi and controls the drone itself
we will use JavaScript to write a single page application for our interactive user interface
and we will make all those applications work together as a single cloud platform for remote drone operations