Skip to content

Commit 924a032

Browse files
committed
update: first steps tutorial
1 parent 4d99658 commit 924a032

4 files changed

Lines changed: 63 additions & 10 deletions

File tree

docs/Multirotor/Tutorials/First_Steps/1._Developer_Environment.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,13 +90,13 @@ We will go over Git as we need it, but if you have no experience and would like
9090

9191
### VS Code
9292

93-
VS Code is an extendable text editor developed by Microsoft.
93+
VS Code is a popular text editor developed by Microsoft, it is highly extendable with many plugins existing that can turn it into a fully featured integrated development environment (IDE).
9494

9595
Install VS Code if you haven't already: [https://code.visualstudio.com/](https://code.visualstudio.com/)
9696

97-
You will also need the dev containers extension, just search for "dev containers" or see here: [https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)
97+
You will also need the dev containers extension, just search for "dev containers" in the extension tab (`Ctrl+Shift+X`) or see here: [https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)
9898

99-
If you'd like to learn more bout dev containers see here for the full overview: [https://code.visualstudio.com/docs/devcontainers/containers](https://code.visualstudio.com/docs/devcontainers/containers)
99+
If you'd like to learn more about dev containers see here for the full overview: [https://code.visualstudio.com/docs/devcontainers/containers](https://code.visualstudio.com/docs/devcontainers/containers)
100100

101101
### GitHub
102102

@@ -132,6 +132,7 @@ Eventually you should see `Done. Press any key to close the terminal.`
132132
g++-multilib-arm-linux-gnueabi
133133
g++-multilib-arm-linux-gnueabihf
134134
```
135+
Otherwise build the container with x86 emulation or use a VM.
135136

136137
## Next
137138

docs/Multirotor/Tutorials/First_Steps/2._Interacting_with_the_Environment.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ If you are coming from Windows `apt` is similar to `winget`, `scoop`, or `choco`
6262

6363
Before you start you will have to enable `X11` pass through, `X11` is a windowing system that allows programs to draw to the screen and is how the container will create windows on our host computer.
6464

65-
For Linux the container is already setup to mount the `X11` socket and configure `$DISPLAY`, but you may have to run `xhost +local:docker` if nothing shows up when you run the simulation. (this command allows non-network local connects to access the X server)
65+
For Linux the container is already setup to mount the `X11` socket and configure `$DISPLAY`, but you may have to run `xhost +local:docker` if nothing shows up when you run the simulation. (this command allows non-network local connections to access the X server)
6666

6767
For Windows see: [https://medium.com/@potatowagon/how-to-use-gui-apps-in-linux-docker-container-from-windows-host-485d3e1c64a3](https://medium.com/@potatowagon/how-to-use-gui-apps-in-linux-docker-container-from-windows-host-485d3e1c64a3)
6868

@@ -77,7 +77,6 @@ If you pan around the scene with your mouse and you are getting more than 10fps
7777
See the `WSL2` note back on [Developer Environment](./1._Developer_Environment.md) <br>
7878
Otherwise a good a place to start is to search `docker <operating system> <amd/intel/nvidia> <desktop/laptop> gpu`.
7979

80-
8180
If you want to fly the drone you can use the commands on the left of the app like `Takeoff`, after the drone takes off you can also click on places on the map and tell the drone to fly there. If the simulator does not let you take off please resolve the warnings.
8281

8382
You can also control the drone with a virtual joystick (a little difficult to use without a touch screen) to enable go to `Application Settings > Fly View > Virtual Joystick`.

docs/Multirotor/Tutorials/First_Steps/3._Recommended_Tutorials.md

Lines changed: 43 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,26 @@
22
title: Recommended Tutorials
33
---
44

5+
6+
## C++, Python
7+
8+
Learning an new programming language (or improving your skills) depends on many factors that this tutorial cannot account for.
9+
10+
If you have *no* experience at all, your 100 level programming course *might* be a good place to start. If you'd like more guidance ask your lead(s) and they will help you out.
11+
12+
If you have some experience in any programming language, you should be able to pick up most things you need by going through the tutorials and searching/LLMing things that you don't recognize.
13+
14+
If you'd like to go through some **very comprehensive** tutorials/guides before you start any UAS specific stuff here are the good ones:
15+
16+
- [https://docs.python.org/3/tutorial/index.html](https://docs.python.org/3/tutorial/index.html)
17+
- [https://www.learncpp.com/](https://www.learncpp.com/)
18+
19+
## Linux
20+
21+
The previous tutorial should (I'm hoping) give you enough context to start the ROS2 tutorials. Most commands and concepts you should be able to pickup as you go.
22+
23+
If you'd like to go even further the most immediately relevant "Linux topics" will be sysadmin related. I don't have any recommended tutorials, but topics of note include `processes` `package managment`, `networking`, `tailsale`, `udev`, and `systemd`.
24+
525
## ROS2
626

727
> The Robot Operating System (ROS) is a set of software libraries and tools for building robot applications. From drivers and state-of-the-art algorithms to powerful developer tools, ROS has the open source tools you need for your next robotics project.
@@ -10,13 +30,27 @@ For our team ROS2 acts as the middleware the binds all of our systems together,
1030

1131
Main documentation: [https://docs.ros.org/en/humble/index.html](https://docs.ros.org/en/humble/index.html)
1232

13-
To get started go through the beginner tutorials: [https://docs.ros.org/en/humble/Tutorials.html](https://docs.ros.org/en/humble/Tutorials.html)
14-
15-
You can skip the `Configuring environment` section if you are using the development container, but I would read it anyways.
33+
Recommend Tutorials to complete: [https://docs.ros.org/en/humble/Tutorials.html](https://docs.ros.org/en/humble/Tutorials.html)
34+
35+
- All of `Beginner: CLI tools`
36+
- Most of `Configuring environment` has been done for you if you are using the development container, but you should read it anyways to get familiar with the CLI.
37+
- We do not set `ROS_LOCALHOST_ONLY=1` because the container is not setup for `network_mode: host`
38+
- Most of `Beginner: Client libraries`
39+
- Using colcon to build packages
40+
- Creating a workspace
41+
- Creating a package
42+
- Writing a simple publisher and subscriber (C++)
43+
- Writing a simple publisher and subscriber (Python)
44+
- Writing a simple service and client (C++)
45+
- Writing a simple service and client (Python)
46+
- Creating custom msg and srv files
47+
- Implementing custom interfaces
48+
- Using parameters in a class (C++)
49+
- Using parameters in a class (Python)
1650

1751
I recommend using using the `uas_ws` directory for your workspace as the container's `.bashrc` comes preconfigured to use this workspace.
1852

19-
The basic concepts page is also a good place to learn more about ROS: [https://docs.ros.org/en/humble/Concepts.html](https://docs.ros.org/en/humble/Concepts.html)
53+
The concepts page is good place to learn more about the inner workings of ROS: [https://docs.ros.org/en/humble/Concepts.html](https://docs.ros.org/en/humble/Concepts.html)
2054

2155
## PX4
2256

@@ -32,6 +66,10 @@ Read the basic concepts page to get familiar with basic drone concepts: [https:/
3266

3367
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](https://docs.px4.io/main/en/ros/offboard_control.html)
3468

69+
Recommended "Tutorial": [https://docs.px4.io/main/en/ros2/offboard_control](https://docs.px4.io/main/en/ros2/offboard_control)
70+
71+
- Follow the instructions to install
72+
3573
We are specifically using the uXRCE-DDS bridge to communicate with the drone, see here to learn more about its implementation: [https://docs.px4.io/main/en/middleware/uxrce_dds.html](https://docs.px4.io/main/en/middleware/uxrce_dds.html)
3674

3775
## Gazebo
@@ -44,7 +82,7 @@ Main documentation: [https://gazebosim.org/docs/harmonic/tutorials/](https://gaz
4482

4583
## Onboarding Project
4684

47-
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).
85+
The best way to get learn the basics is by doing, as such I have scoped a smallish scale learning project that you can undertake (not for marks).
4886

4987
To get started create a ROS package in `uas_ws/src`, use the PX4 offboard docs as reference.
5088

docs/Multirotor/Tutorials/First_Steps/index.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,21 @@
22
title: First Steps
33
---
44

5+
## Introduction
6+
7+
These tutorials cover the installation of a developer environment for working with ROS2+PX4, basic navigation within the environment, and conclude with tutorial recommendations and an onboarding project.
8+
9+
Knowledge assumptions:
10+
11+
- These tutorials assume some knowledge of programming (C++ or Python)
12+
- These tutorials assume some knowledge of git
13+
- These tutorials assume limited knowledge of the terminal
14+
- These tutorials assume no knowledge of Linux
15+
- These tutorials assume no knowledge of dev-containers
16+
- These tutorials assume no knowledge of ROS2, PX4, etc.
17+
18+
## Index
19+
520
1. [Developer Environment](./1._Developer_Environment.md)
621
2. [Interacting with the Environment](./2._Interacting_with_the_Environment.md)
722
3. [Recommended Tutorials](./3._Recommended_Tutorials.md)

0 commit comments

Comments
 (0)