Recommended Tutorials
ROS2🔗
Main documentation: https://docs.ros.org/en/humble/index.html
To get started go through the beginner tutorials: https://docs.ros.org/en/humble/Tutorials.html
You can skip the Configuring environment
section if you are using the development container, but I would read it anyways.
I recommend using using the uas_ws
directory for your workspace as the container's .bashrc
comes preconfigured to use this workspace.
The basic concepts page is also a good place to learn more about ROS: https://docs.ros.org/en/humble/Concepts.html
PX4🔗
Main documentation: https://docs.px4.io/main/en/
Read the basic concepts page to get familiar with basic drone concepts: https://docs.px4.io/main/en/getting_started/px4_basic_concepts.html
We make heavy use of offboard control for our autonomy, specially we use ROS2 and the uXRCE-DDS interface, there are quite a few pages, but skim a few to get a feel for what we are working with: https://docs.px4.io/main/en/ros/offboard_control.html
Onboarding Project🔗
The best way to get familiar with the basics is by doing as such I have scoped a smallish scale learning project that you can undertake (not for marks).
To get started create a ROS package in uas_ws/src
, use the PX4 offboard docs as reference.
Requirements (purposefully open ended):
- Software system that enables autonomous control of a drone in simulation
- The system should:
- Allow the drone to take off
- Allow the drone to go to a location via local coordinates
- Allow the drone to go to a location via global coordinates
- Allow the drone to land
- Can be done either in Python or C++ or both or anything you want.
Demonstrate:
- Take off
- The drone creates a square pattern in the sky (manual coordinates)
- The drone creates a square pattern in the sky (generated at runtime coordinates)
- Landing
These are all concepts that are used in our actual systems, by learning them on your own you will have easier time understanding them and you will develop a unique perspective for the team.
Consult this wiki and the dev_env
README for additional reference.