How to start developing

Hey guys,
I’m new to this and I want to know as many newbies how to get started!

I have basic experience skills in C/C++ (embedded) and Python programming.
My goal is to start programming my RC airplane so that it can fly autonomously (waypoints, takeoff, landing and so on…)
My RC airplane is a ‘mini Talon’ and I have bought a Holybro PX4 6C flight controller.
I have read a bit about MAVLink but still I don’t know how to get started with the programming.
Which dev environment should I use?
I’m kind of familiar with the QGroundcontrol settings and Ardupilot. But where does the programming start?

I would be very thanksful for you suggestions and instructions!

Thanks a lot!!

But where does the programming start?

Programming starts when you have an issue that doesn’t have an existing solution.
For example, when I joined the PX4 community PX4 didn’t support DShot so this is when I first started contributing, by writing DShot low-level driver.

Once you figure out what you want to improve in PX4 you can clone the PX4 repo from Github, learn how to build it for your board, and you can start with improvements in the code.

p.s. there are plenty of things to improve, If you don’t have an idea you can take the issue board and try to solve some bugs:


Hello @Igor_Misic thanks a lot for your helpful reply!
That’s a good idea to start! As you know the gebinning is always difficult that’s why I rely on your experience in this forum.

My aim is also to make my drone fly autonomous, for example takeoff and fly different waypoints. Things like that, I think Mavlink is the right way?

Well, your drone can do that already without any programming. You can open QGroundcontrol set waypoints and it will do exactly the same. You can also control your drone over Mavlink as you suggested.

Recently, we have made some changes on the main branch so you shall be able to use ROS2 to upload waypoints. Not sure in what state is at the moment, but you can have a look at “mission planning” and see if tehre is help required.

This is changed to make this possible, check related topics:

Yeah I know it is extremely hard to jump in, but after spending hours looking into the code and documentation eventually, it will start sitting in its place.

1 Like

Big Thanks @Igor_Misic!
I will take some time to read more and get deeper into this topic!

If i wanted to edit/modify the firmware for personal use would WSL2 work to run the dev environment? or do I need a linux machine.