We may earn an affiliate commission when you visit our partners.
Mustafa Gökçe

Fully autonomous unmanned systems are important technological and engineering wonders of today's world. All autonomous unmanned systems need an autopilot that controls the behaviors and working mechanism of the unmanned platform and controls the platform by semi-autonomous or fully autonomous.

Read more

Fully autonomous unmanned systems are important technological and engineering wonders of today's world. All autonomous unmanned systems need an autopilot that controls the behaviors and working mechanism of the unmanned platform and controls the platform by semi-autonomous or fully autonomous.

The ArduPilot project provides an advanced, full-featured, and reliable open source autopilot software system. The Ardupilot software system is capable of controlling almost any vehicle system imaginable: conventional and VTOL airplanes, gliders, multi-rotors, helicopters, sailboats, powered boats, submarines, ground vehicles, and even balance robots. The supported vehicle types frequently expand as use cases emerge for new and novel platforms.

This course covers some of the most important aspects of software development for controlling and monitoring Ardupilot autopilot software system-powered unmanned autonomous systems.

In this course, you are going to learn the following:

  • Ability to setup and run Ardupilot autopilot simulation environment.

  • Developing Python programming language scripts that communicate with Ardupilot software system using Dronekit library.

  • Understanding MAVLink messages and creating custom scripts using Python programming language and PyMAVLink library.

  • Learn how to use the MAVProxy Command Line Ground Control Station and what it does.

  • Autopilot onboard software development using LUA programming language.

  • Custom embedded software development with Ardupilot autopilot software system.

In this course, there are also supplementary sample projects, assignments, and resources to gain hands-on experience to work with the Ardupilot autopilot software system.

Enroll now

What's inside

Learning objectives

  • Understand and gain experience the capabilities and features of the ardupilot autopilot software system
  • Develop custom mission software that communicates with autopilot
  • Ability to setup and run ardupilot autopilot simulation environment
  • Ability to read telemetry data and give commands to autopilot by communicating with ardupilot using python programming language
  • Creating python scripts with dronekit library that communicates with ardupilot
  • Ability to develop custom python scripts with pymavlink and understanding the mavlink protocol
  • Learn how to use the mavproxy command line ground control station and what it does
  • Autopilot onboard software development using lua programming language

Syllabus

This section includes how to install the build environment and simulation software from Ardupilot source code and running the simulation with different vehicles for software development.
Read more
Introduction
Quickstart
Dealing with the autonomous missions
Quickstart (Windows)
Setting up the build environment
Setting up the simulation software
Starting the simulation software individually
Creating simulation environment starter shell script
This section includes use cases of MAVProxy command line ground control station and shell scripting.
Installing instructions
Calibrating the vehicle
Startup options
Telemetry forwarding
Creating MAVProxy shell scripts for automated proxy and forwarding services
Arming and disarming the vehicle
Request default message streams
Mission editing
Geofencing
Rally point operations
Changing the flight mode of the vehicle
"command_int" command
System commands
Log management
Graphing live data from the vehicle
Horizon module
Link management
"long" command
Map module
"position" command
Polygon fences
Set servo
Home distance
Set relay
Sensor reporting
Text-to-speech module
Time sync
Terrain data handling
This section includes how to control and monitor the vehicle states in Python programming language using Dronekit library
Set flight speed
Connecting to the vehicle
Set yaw
Getting the vehicle states
Setting the vehicle states
Creating vehicle state observers
Getting and setting vehicle parameters
Taking off and landing the vehicle
Pause/resume an autonomous flight
Flying the vehicle to a location
This section includes how to control and monitor the vehicle states in Python programming language using PyMAVLink library.
MAVLink messaging protocol basics
Receiving messages from vehicle
Sending messages to vehicle
Sending message stream requests to vehicle
Sending message requests to vehicle
Change current mission in auto flight mode
Request and receive auto mode flight plan from vehicle
Create and send auto mode flight plan to vehicle
Sending partial mission item list to vehicle
Clear mission item list on vehicle
Request and receive fence from vehicle
Create and send fence to vehicle
Enable and disable fence
Request and receive rally points from vehicle
Create and send rally points to vehicle
RC Overrides
Reading RC inputs and servo outputs
Terrain checking
Getting and setting the home location of the vehicle
Send message from companion computer to GCS
Logging data to on-board data flash logs
Interprocess communication with MAVLink
This section includes how to control and monitor the vehicle states of the vehicle by on-board using LUA programing language.
Sample script
Reading attitude of the vehicle
Reading location of the vehicle
Getting and setting vehicle flight mode
Take off and land the vehicle
Flying to a location
Location object examples
Multi location mission
Create and use a parameter
File read and write operations

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Uses ArduPilot, a widely adopted open-source autopilot software, making it relevant for real-world applications in autonomous systems
Covers Python programming with Dronekit and PyMAVLink libraries, which are essential tools for drone software development and custom scripting
Explores MAVLink protocol and MAVProxy Command Line Ground Control Station, offering a comprehensive understanding of drone communication and control
Includes autopilot onboard software development using LUA, expanding the skillset to embedded systems and custom software integration
Requires setting up a build environment and simulation software, which may present a challenge for beginners without prior experience in software development
Focuses on specific libraries like Dronekit and PyMAVLink, so learners should verify these tools are actively maintained and aligned with current industry practices

Save this course

Save Drone Programming to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Drone Programming with these activities:
Review Python Fundamentals
Solidify your understanding of Python fundamentals, as Dronekit and PyMAVLink heavily rely on Python scripting for interacting with the ArduPilot system.
Browse courses on Python Programming
Show steps
  • Review basic syntax and data structures.
  • Practice writing simple scripts.
  • Familiarize yourself with common libraries.
Brush up on Linear Algebra
Review linear algebra concepts, as they are essential for understanding vehicle attitude, position, and control within the ArduPilot framework.
Browse courses on Linear Algebra
Show steps
  • Review vector and matrix operations.
  • Understand coordinate system transformations.
  • Practice applying linear algebra to geometric problems.
Read 'Programming Drones with Python'
Supplement your learning with a practical guide to drone programming using Python, reinforcing the course's focus on Dronekit and PyMAVLink.
Show steps
  • Read the book cover to cover.
  • Try out the code examples.
  • Adapt the code examples to your own projects.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Practice MAVLink Message Parsing
Reinforce your understanding of MAVLink by practicing parsing and interpreting different message types, which is crucial for custom script development.
Show steps
  • Obtain MAVLink message definitions.
  • Write scripts to decode specific messages.
  • Simulate message streams and test your scripts.
Write a Blog Post on LUA Scripting for ArduPilot
Solidify your understanding of LUA scripting by creating a blog post that explains its use within the ArduPilot ecosystem.
Show steps
  • Research LUA scripting in ArduPilot.
  • Write a clear and concise blog post.
  • Include code examples and explanations.
Develop a Custom Drone Mission Planner
Apply your knowledge by creating a mission planner that allows users to define waypoints, actions, and parameters for autonomous drone flights.
Show steps
  • Design the user interface and functionality.
  • Implement waypoint creation and editing.
  • Integrate with Dronekit or PyMAVLink for communication.
  • Test the planner in a simulation environment.
Contribute to the ArduPilot Project
Deepen your understanding by contributing to the ArduPilot project, whether by fixing bugs, improving documentation, or adding new features.
Show steps
  • Explore the ArduPilot codebase.
  • Identify areas for improvement or new features.
  • Submit pull requests with your contributions.

Career center

Learners who complete Drone Programming will develop knowledge and skills that may be useful to these careers:
UAV Software Engineer
A UAV Software Engineer works on the software that controls unmanned aerial vehicles. This course directly addresses the software development needed for this kind of work. It provides experience in setting up ArduPilot software and using tools like Dronekit and PyMAVLink to communicate with drones. This course provides an understanding of MAVLink protocol used with UAVs, and the ability to customize software using LUA. This course helps build a strong foundation in the software development crucial for the success of a UAV software engineer.
Autonomous Systems Developer
An autonomous systems developer creates software for unmanned, self-governing systems. This course, focusing on ArduPilot, an open-source autopilot software, is directly aligned with the skills needed for this role. The developer in this field must be able to set up simulation environments, write scripts to interact with autonomous systems, and understand how to control the system using various protocols. The curriculum's coverage of Python programming using Dronekit and PyMAVLink for communication with the autopilot, in addition to onboard software development with LUA, helps build the skills required for an autonomous systems developer.
Robotics Engineer
A robotics engineer designs, develops, and tests robotic systems. This role often involves creating software to control the robot's movements and actions, which makes this course particularly relevant. The course's focus on ArduPilot software and its ability to control various types of vehicles, including ground vehicles and multi-rotors, will help build a foundation in robotics control and simulation, essential for a robotics engineer. The course's emphasis on Python scripting with Dronekit and PyMAVLink, combined with LUA onboard programming, is directly applicable to developing the kind of control systems needed in robotics.
Embedded Systems Engineer
Embedded systems engineers design and develop the software that runs on devices that are not general-purpose computers. This course is relevant because it teaches how to develop software for controlling and monitoring ArduPilot autopilot systems, which are embedded in drones and other unmanned vehicles. The course's coverage of custom embedded software development, using LUA programming language, and Python scripting provides an understanding of the kind of software development required for an embedded systems engineer. This course helps develop a strong foundation in interacting with and programming embedded systems.
Simulation Engineer
Simulation engineers create and run simulations to test and analyze the behavior of complex systems. This course helps a simulation engineer through its focus on setting up and running ArduPilot autopilot simulation environments. A simulation engineer requires practical experience with the kind of simulation software which this course provides. Skills gained in this course, such as writing Python scripts and understanding MAVLink, provide a foundation to use tools and develop models in the simulation field. The course's approach to setting up simulation environments helps develop a practical foundation for a simulation engineer.
Control Systems Engineer
A control systems engineer designs, develops, and tests systems that control other systems. This course is particularly relevant for control systems engineers who are interested in autonomous systems. A control systems engineer would be interested in the course's focus on ArduPilot, which directly relates to control of unmanned systems. The course's practical focus on programming with Dronekit and PyMAVLink, as well as LUA, helps develop expertise that is directly applicable to the work of a control systems engineer. The course's material may be especially helpful to a control systems engineer.
Automation Engineer
An automation engineer designs and implements automated systems. This course may be useful to an automation engineer, due to its focus on autonomous systems and software that enables automation. The course provides a look at creating custom mission software that communicates with the autopilot, which is relevant to automation tasks. The course's focus on Python programming, LUA onboard developement, and MAVLink protocols, may help build skills relevant to the automation field. This course may be helpful to an automation engineer.
Aerospace Engineer
An aerospace engineer designs, develops, and tests aircraft, spacecraft, and related systems. This course can be useful, as a focus on unmanned systems can provide important context for aerospace engineering. The course's focus on autopilot software and its use with various vehicle types might be useful to aerospace engineers. The course's approach to simulation and programming builds a foundation for working with complex systems. This course may prove useful to an aerospace engineer.
Research Scientist
A research scientist conducts research on a variety of topics and often requires an advanced degree. This course may be useful to a research scientist that studies robotics and autonomous systems. This course provides a foundation in setting up simulation environments, controlling unmanned vehicles with Python, and developing onboard software with LUA, which are all relevant to robotics research. The course's emphasis on MAVLink communications is directly applicable to this field. A research scientist studying robotics may find this course particularly helpful.
Software Developer
A software developer writes code for various software systems. This course may provide some helpful skills for a software developer. This course offers practice in Python programming using libraries like Dronekit and PyMAVLink. The course's focus on developing custom scripts and understanding protocols like MAVLink, may help build practical programming skills that are useful in software development. The LUA programming experience may be useful more broadly for software development. This course may be useful to a software developer.
Mechatronics Engineer
A mechatronics engineer integrates mechanical, electrical, and computer engineering to design and build complex systems. This course may be helpful for a mechatronics engineer, as it deals with the software components of robotic systems. The course's focus on ArduPilot and its control of various vehicles may be relevant to the field. The ability to set up simulation environments, program in Python, and work with protocols like MAVLink may help build relevant skills for mechatronics. This course may be useful to a mechatronics engineer.
Data Analyst
A data analyst collects, processes, and analyzes data to derive meaningful insights. This course may be useful for a data analyst, especially one who works with data from robotic or autonomous systems. The course teaches how to read telemetry data, manage logs, and work with data streams using Python and MAVLink. This knowledge could help a data analyst better understand the data generated by autonomous systems. This course may prove useful to a data analyst.
Project Manager
A project manager plans, oversees, and delivers projects by working with teams. This course may be useful to a project manager managing projects that have to do with drone technology. The understanding of the ArduPilot environment, its simulation capabilities, and the software development aspects could help a project manager oversee such projects. The project manager would be familiar with MAVLink protocol, and different drone programming languages. This course may be helpful to a project manager.
Technical Writer
A technical writer creates documentation for technical products and services. This course may be useful, as gaining an understanding of drone programming and related concepts may allow a technical writer to write more effective technical documentation. By completing the course, the technical writer may become more familiar with ArduPilot software and simulation and communicate more effectively with a technical audience. A technical writer may find this course useful.
Technical Support Specialist
A technical support specialist provides technical assistance to users of products or software. This course may be useful for a technical support specialist who works with drone technology. The course's focus on ArduPilot software and its related tools may help a technical support specialist resolve issues for users. The specialist may become more familiar with MAVLink and other concepts that would be useful in support and troubleshooting. This course may be useful to a technical support specialist.

Reading list

We've selected one books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Drone Programming.
Provides a practical guide to drone programming using Python. It covers topics such as drone control, computer vision, and machine learning. It serves as a valuable resource for understanding how to implement custom drone applications using Python, which aligns directly with the course's focus on Dronekit and PyMAVLink.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser