Sun, Nov 28, 21, udemy 4g java drone simulator
This is a draft, the content is not complete and of poor quality!
udemy
to make the control deployed on to the car and make the software actually connected to the car’s CAN bus and take control of the car is also non trivial. Same for the drone, I liked the course content, So just a bit feedback, if the hardware configuration could be included(the practical part) to make the code to run on the actual drone.
Goals
What you’ll learn
- Build Low Latency Cloud App to Operate DIY Drones From Anywhere in the World
- How to Control Drone with Python Application running on a Raspberry Pi
- Connecting Multiple Python Applications to a Single Remote Java App
- Managing Data Concurrently from Many Python Applications
- Low Latency Video Streaming from Raspberry Pi to a Web Page
- How to Have Many Active Video Streams on a Single Web Page
- Use Protobuf in Network Communication between Java and Python Applications
- How to Build Single Page JavaScript Application only with JQuery
- How to Control Simultaneously Many DIY Drones From a Single Web Page
- Using Google Maps API to Setup and Read Mission Data From a User
- Real Time Data Visualization From the Drones on the Interactive Map
- Use Spring Boot MVC to build Application For 4G Drone Control
- Multithreading Application Design in Java
- Multithreading Application Design in Python
- Distributed Application Design
- What are Design Requirements for a Cheap DIY 4G Drone
- Python Dronekit Library for MavLink Communication with Autopilot
- course contents
Introduction | DIY drone hardware overview control demo |
Video steaming and front-end control | Environment setup |
Raspi hardware/network setup | Java initial app layout |
Java logging setup async | Python initial app layout |
raspi as linux service | Configuration reader setup |
video streaming app | Html video page |
js video stream client | java home controller video endpoint |
Java configuration reader | java web-socket config |
Java Video stream manager 1 2 3 | App overview demo |
Drone control center html | java backend endpoint |
js usage | js app initialization |
js update system data | Java drone info dto |
Js loading drone data | js frontend drone abstraction |
js adding a position marker | Js drone control intializer keyboard mapping |
js rendering map point | Js UI component lib |
css | java update system endpoint with mock data |
Java mission command end point | Js adding video stream to ui control |
Java rest controller functionality | java control manager server socket |
Java dronehandler init | java dronehanlder network message sd/rv thread |
Java droneHandler reading latest data | Protobuf |
Java datamapper transforming protobuf object to domain logic objects | |
Java implementing network messaging protocol | Java backend application |
Java backend application | Python overview |
Python bootsraping initial app | Python Network connection monitoring |
Python data receiver thread | Python drone object vehicle abstraction |
Python network messages encoding | Python drone control panel object |
Python maintaining constant speed and direction | Python camera serve controlling thread |
Python camera server control | Python finished application logic |
Final result full distributed application | realworld flight demo |
Some of my land/air vehicle projects
- VTOL Portal of vtol codebase repowiki
- Advanced ND project UAV gui repo
- GCS ground control station GCS codebase repo
- RVIZ simuator C++ GAZEBO repo
- Computer vision Road Detection repo
- Raspberry Pi project LORA and sensors repo or here
- Documentation site for matlab click_here
interface architecture excluding the endpoints for hardwares
code example
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.ui.Model;
import lombok.RequiredArgsConstructor;
import lombok.extern.java.Log;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Controller
@RequiredArgsConstructor
public class BaseController {
private final ConfigReader configurations;
@GetMapping("/")
public String IndexPage(){
log.debug("opened index page");
return "index";
}
@GetMapping("/v/{droneId}")
public String getVideoFeed(Model model, @PathVariable("droneId") String droneId){
model.addAttribute("publicIp", getPublicIpAddress());
model.addAttribute("droneId", droneId);
model.addAttribute("videoEndpoint", configurations.getVideoWsEndpoint());
return "video";
}
private String getPublicIpAddress() {
String ip = "";
try {
final URL whatismyip = new URL("http://checkip.amazonaws.com");
try(final BufferedReader in = new BufferedReader(new InputStreamReader(whatismyip.openStream()))){
ip = in.readLine();
}
} catch (Exception e) {
log.error(e.getMessage());
}
return ip;
}
}
- raspi lib
sudo apt update
sudo apt install libhdf5-dev
sudo apt install libhdf5-serial-dev
sudo apt install libatlas-base-dev
sudo apt install libjasper-dev
sudo apt install libqtgui4
sudo apt install libqt4-test
sudo apt install python3-opencv
sudo pip3 install netifaces psutil google-api-python-client \
- SITL setup envs
Environment Setup:
- Install VirtualBox and spinn Ubuntu 16.04 in it
- On first start run:
sudo apt update && sudo apt upgrade
sudo apt install virtualbox-guest-dkms
And only after that click Insert Guest Addons CD
- Install Git
sudo apt-get install git
sudo apt-get install gitk git-gui
- Get the project
git clone --recursive https://github.com/ArduPilot/ardupilot.git
cd ardupilot
- Install required packages
Tools/environment_install/install-prereqs-ubuntu.sh -y
. ~/.profile
- Cofigure the board and build vehicle type
./waf configure --board fmuv3
./waf copter
- Go to ArduCopter directory and run simulator
cd ArduCopter
sim_vehicle.py --console --map --out 192.168.0.101:14553
More detailed information from:
https://ardupilot.org/dev/docs/building-setup-linux.html#building-setup-linux
When you decide to deploy finished Java application - build it, deploy it on a VPS [or any machine with public IP]
and then run it with this command in terminal:
java -Djava.security.egd=file:/dev/urandom -jar drone-control-station-0.0.1.jar &
Wait until it starts, and then you can close the terminal and it will continue to run in the background
- how to deploy java app
When you decide to deploy finished Java application - build it, deploy it on a VPS [or any machine with public IP]
and then run it with this command in terminal:
java -Djava.security.egd=file:/dev/urandom -jar drone-control-station-0.0.1.jar &
Wait until it starts, and then you can close the terminal and it will continue to run in the background
// Create droneapp.service file with this content:
[Unit]
Description=DroneApp Service
After=multi-user.target
[Service]
Type=idle
ExecStart=/usr/bin/python3 /home/pi/{app directory name}/app.py --d /home/pi/{app directory name}/
[Install]
WantedBy=multi-user.target
{app directory name} should be replaced with the name of the folder that contains app.py main application file
Then nn RaspPi move droneapp.service to /lib/systemd/system/
Then Run
sudo systemctl daemon-reload
sudo systemctl enable droneapp.service
If you want to stop it from autoloading on Raspi startup, Run:
sudo systemctl disable droneapp.service
The following wiki, pages and posts are tagged with
Title | Type | Excerpt |
---|---|---|
2021-09-26-thesis-indoor-drone.md | post | After launching a file, call the following services to initialize the drone in Gazebo and the Particle Filter algorithm |
Udemy qt5 course by Packt Publishing | post | Tue, Oct 26, 21, Dive into custom model-views, showcasing the power and flexibility of the mvodel view architecture, with extensive www applications |
Pilot handbook + drone resource wiki | post | Tue, Nov 02, 21, pilot's handbook summarized on top of key cocnepts from rapa drone-resource |
Single rotor drone | post | Thu, Nov 04, 21, single rotor air vehilce with rudder and flap to navigate |
Pilot's preflight checklist FAA | post | Tue, Nov 09, 21, preflight checklist with data mining, d3 visualization and google sheet implementation |
final-project | post | Sat, Nov 27, 21, motion planning dashboard with django vue and fcnd |
motion planning dashboard hardware setup | post | Wed, Dec 01, 21, master, raspi, database, video-streaming, api server setup |
px4 mavlink and qgc integration with 4gremoteoperation | post | Tue, Jan 18, 22, powerful 3d simulation environment for autonomous robots suitable for testing object-avoidance and cv |
Airlink by skydrone, youtube | post | Friday, airlink for mission flight, LTE connectivity and dl-ready |
set up with raspi connected to fc | post | Tue, Jan 25, 22, ardupilot documentation |
drone programming primer for software development | post | Mon, Jan 31, 22, flight stack with firmware middleware and api |
runcam with fc connection | post | Tue, Feb 15, 22, runcam split 2 with fc |
my new fixed wing AR Wing Pro, ready for dji HD fpv system | post | Thu, Feb 17, 22, setup guide after opening the package |
realflight 7 setup and console game | post | Thu, Feb 24, 22, flight simulation with real flight 7 |
uavmatrix's cast pro docs | post | Tue, Mar 01, 22, another way to integrate devices to gcs |
firmtech7 of naver cafe raspi drone project | post | Thu, Mar 03, 22, using raspi as fc to control small drone |
Garupner Polaron ex | post | Sun, Mar 06, 22, polaron 2 channels dc charger |
svg visualization messages and parameters | post | Mon, Mar 07, 22, organized structure and tree map of px4 messages and parameters |
lx network, airlink, gcs and data transmission on smart radio, rf mesh and quantum encryption | post | Tue, Apr 26, 22, all about setup and how it operates and managed |
Advanced Features | page | |
Advanced Configuration | page | |
Advanced Flight Controller Orientation Tuning | page | |
rflysim tltr | page | |
Bootloader Update | page | |
Bootloader Flashing onto Betaflight Systems | page | |
Compass Power Compensation | page | |
drones.md | page | my drones I work with and at my disposal. |
ESC Calibration | page | |
Flight Termination Configuration | page | |
my 100 supporters | page | my freelancers I work with since 2018. |
index.md | page | My recent projects are leveraging generative AI across various domains, yielding significant achievements. These encompass Digital Twin, Voice-to-Command, RA... |
Land Detector Configuration | page | |
About this site and its author | portfolio | My portofolio site and its mission statement |
🔭AIOT projects | page | summary. |
contents deploy automation | page | Pilot test on the automation prototype. |
pixhawk apm racing drone | page | summary. |
Challenger Engineering Project | page | summary. |
pixhawk tools | page | rFlyeval project details where Matlab Mathwor Simulink were used for complete process of UAV and UAS. |
Korea drone companies | page | summary. |
Racing drone, attck drone | page | summary. |
Django Django Two scoops | page | summary. |
docker learning curve | page | summary. |
🔭 Ground Control Station web-based approach | page | summary. |
gitlab | page | summary. |
🔭lora monitoring app | page | summary. |
🔭 MQTT pages | page | summary. |
My course list | page | my course list from udemy, udacity, NCS and other sources |
Nextcloud | page | summary. |
Automation pipeline | page | summary. |
Pixhawk 4 | page | summary. |
Pixhawk overview | page | summary. |
🔭raspberry pi project | page | summary. |
🔭yuneec realsense obstacle avoidance | page | summary. |
ROS topic for micro control | page | summary. |
🔭 RQt-based gui | page | summary. |
🔭sensor detection | page | RealSense with Open3D |
🔭Serializer with API | page | summary. |
Rules of thumb | page | Contact me for any support issues. |
web-dev ops pages | page | |
🔭 Webrtc | page | summary. |
Parameter Reference | page | |
Finding/Updating Parameters | page | |
Precision Landing | page | |
pixhawk tools advanced | page | rFlyeval project details where Matlab Mathwork Simulink were used for complete process of UAV and UAS. |
pixhawk tools | page | rFlyeval project details where Matlab Mathwor Simulink were used for complete process of UAV and UAS. |
RTK GPS | page | GNSS/GPS systems |
Iridium/RockBlock Satellite Communication System | page | |
Static Pressure Buildup | page | # Static Pressure Buildup Air flowing over an enclosed vehicle can cause the *static pressure* to change within the canopy/hull. Depending on the location of holes/leaks in the hull, you can end up with under or overpressure (similar to a wing). The change in pressure can affect barometer measurements, leading... |
Air Traffic Avoidance: ADS-B/FLARM | page | |
Air Traffic Avoidance: UAS Traffic Management (UTM) | page | |
Using the ECL EKF | page |