Skip to content

Commit

Permalink
Required knowledge (#223)
Browse files Browse the repository at this point in the history
* BKR Camera Client

* BKR Camera Settings

* BKR Camera Calibration

* BKR Camera Pointcloud

* BKR Camera ArUco detector

* Minor changes in text

* BKR GPS Client

* BKR Filter Client

* BKR Record a Track

* BRK Controller Track

* Link to our concepts pages for examples required knowledge

---------

Co-authored-by: Kyle Coble <53625197+Hackerman342@users.noreply.github.com>
Co-authored-by: Kyle Coble <kwc57@cornell.edu>
  • Loading branch information
3 people authored Oct 27, 2023
1 parent 838d6c1 commit eee3ef1
Show file tree
Hide file tree
Showing 13 changed files with 184 additions and 7 deletions.
8 changes: 4 additions & 4 deletions website/docs/concepts/controller_101/README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
---
id: create-and-propagate-poses
title: Create and Propagate Poses
id: tracks-and-waypoints
title: Tracks & Waypoints
---

## Understanding Transforms and Poses
## Understanding Transforms & Poses

Before we can send our robot out to drive a **track** (or **path**),
we need to understand where our robot is and where we want to send it.
For that purposes, please refer to **[Concepts - Transforms and Poses](/docs/concepts/transforms_and_poses)**
For that purposes, please refer to **[Concepts - Transforms & Poses](/docs/concepts/transforms_and_poses)**
before continuing on with this overview.

## Creating and Propagating Poses for the Controller
Expand Down
2 changes: 1 addition & 1 deletion website/docs/concepts/transforms_and_poses/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
id: transforms-and-poses
title: Transforms and Poses
title: Transforms & Poses
---

## Fundamental Concepts
Expand Down
25 changes: 25 additions & 0 deletions website/docs/examples/camera_aruco_detector/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,31 @@ id: camera-aruco-detector
title: Camera Aruco Detector
---

:::info Basic Knowledge Requirements

Before diving into this code, here's a quick heads-up on what you'll need to be familiar with:

1. **Python Programming**: It's important to have a good grasp of Python, especially with concepts
like `functions`, `loops`, and `classes`, since the example utilizes these fundamentals.
2. **Asynchronous Programming with asyncio**: Familiarity with Python's asyncio for writing concurrent
code using the `async/await` syntax.
3. **Understanding of ArUco Markers**: Understand what ArUco markers are and how they function.
These markers are used for various applications in computer vision,
most commonly for camera calibration and pose estimation,
and this example specifically utilizes them for detecting their positions in image frames.
4. **Familiarity with OpenCV's ArUco Library**: The example uses OpenCV's functionalities to handle ArUco
markers, including detection and pose estimation.
Knowledge of functions like `detectMarkers`, `drawDetectedMarkers`, and `estimatePoseSingleMarkers`
is important.
5. **Camera Calibration and 3D Geometry Concepts**: Knowledge of camera intrinsic parameters
to compute the camera matrix and distortion coefficients.
Knowing how these parameters influence the projection of 3D points onto a 2D image is important.
6. **Experience with Image Processing and Decoding**: Users should be comfortable with image manipulation
tasks, as the example involves converting images to grayscale for marker.
7. **[farm-ng Oak Service Overview](/docs/concepts/oak_service/)**:
This overview provides a base understanding of the gRPC service the client you create will connect to.
:::

### [Link to `camera_aruco_detector/main.py`](https://github.com/farm-ng/farm-ng-amiga/blob/main-v2/py/examples/camera_aruco_detector/main.py)

In this example we are going show how to implement a simple Aruco marker detector
Expand Down
14 changes: 14 additions & 0 deletions website/docs/examples/camera_calibration/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,20 @@ id: camera-calibration
title: Camera Calibration
---

:::info Basic Knowledge Requirements

Before diving into this code, here's a quick heads-up on what you'll need to be familiar with:

1. **Python Programming**: It's important to have a good grasp of Python, especially with concepts
like `functions`, `loops`, and `classes`, since the example utilizes these fundamentals.
2. **Asynchronous Programming with asyncio**: Familiarity with Python's asyncio for writing concurrent
code using the `async/await` syntax.
3. **Camera Calibration Concepts**: Basic knowledge about camera calibration, including what it is
and why it's important, will help you understand the context and the results returned by the example.
4. **[farm-ng Oak Service Overview](/docs/concepts/oak_service/)**:
This overview provides a base understanding of the gRPC service the client you create will connect to.
:::

## Camera Calibration

This [example](https://github.com/farm-ng/farm-ng-amiga/blob/main-v2/py/examples/camera_calibration/main.py)
Expand Down
14 changes: 14 additions & 0 deletions website/docs/examples/camera_client/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,20 @@ id: camera-client
title: Camera Client
---

:::info Basic Knowledge Requirements

Before diving into this code, here's a quick heads-up on what you'll need to be familiar with:

1. **Python Programming**: It's important to have a good grasp of Python, especially with concepts
like `functions`, `loops`, and `classes`, since the example utilizes these fundamentals.
2. **Asynchronous Programming with asyncio**: Familiarity with Python's asyncio for writing concurrent
code using the `async/await` syntax.
3. **Image Processing with OpenCV**: Basic knowledge of the OpenCV library for handling and manipulating
image data, including functions like `imdecode`, `applyColorMap`, and `imshow`.
4. **[farm-ng Oak Service Overview](/docs/concepts/oak_service/)**:
This overview provides a base understanding of the gRPC service the client you create will connect to.
:::

### [Link to `camera_client/main.py`](https://github.com/farm-ng/farm-ng-amiga/blob/main-v2/py/examples/camera_client/main.py)

This example operates as a standalone Python script,
Expand Down
19 changes: 19 additions & 0 deletions website/docs/examples/camera_pointcloud/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,25 @@ id: camera-pointcloud
title: Camera Pointcloud
---

:::info Basic Knowledge Requirements

Before diving into this code, here's a quick heads-up on what you'll need to be familiar with:

1. **Python Programming**: It's important to have a good grasp of Python, especially with concepts
like `functions`, `loops`, and `classes`, since the example utilizes these fundamentals.
2. **Asynchronous Programming with asyncio**: Familiarity with Python's asyncio for writing concurrent
code using the `async/await` syntax.
3. **3D Point Cloud Data**: Understanding the basics of 3D point cloud data.
You should be familiar with concepts like depth maps and disparity maps, and how they can be
converted into 3D representations of a scene.
Knowledge of methods such as `depth_from_disparity` and `depth_to_3d_v2`, and data structures
for representing 3D data (like tensors), will be especially helpful.
4. **Image Decoding and Tensor Manipulation**: Understanding of image data decoding and manipulation,
particularly using tensors.
5. **[farm-ng Oak Service Overview](/docs/concepts/oak_service/)**:
This overview provides a base understanding of the gRPC service the client you create will connect to.
:::

## Camera Pointcloud

The requirements to run [this example](https://github.com/farm-ng/farm-ng-amiga/blob/main-v2/py/examples/camera_pointcloud/main.py)
Expand Down
15 changes: 15 additions & 0 deletions website/docs/examples/camera_settings/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,21 @@ id: camera-settings
title: Camera Settings
---

:::info Basic Knowledge Requirements

Before diving into this code, here's a quick heads-up on what you'll need to be familiar with:

1. **Python Programming**: It's important to have a good grasp of Python, especially with concepts
like `functions`, `loops`, and `classes`, since the example utilizes these fundamentals.
2. **Asynchronous Programming with asyncio**: Familiarity with Python's asyncio for writing concurrent
code using the `async/await` syntax.
3. **Camera Configuration and Control**: Knowledge of camera settings and configurations
(possibly specific to the OAK-D camera) would be beneficial for understanding how the camera
settings are manipulated in the code.
4. **[farm-ng Oak Service Overview](/docs/concepts/oak_service/)**:
This overview provides a base understanding of the gRPC service the client you create will connect to.
:::

## Camera Settings

[This example](https://github.com/farm-ng/farm-ng-amiga/blob/main-v2/py/examples/camera_settings/main.py)
Expand Down
18 changes: 18 additions & 0 deletions website/docs/examples/controller_square/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,24 @@ id: controller-square
title: Drive a Square
---

:::info Basic Knowledge Requirements

Before diving into this code, here's a quick heads-up on what you'll need to be familiar with:

1. **Python Programming**: It's important to have a good grasp of Python, especially with concepts
like `functions`, `loops`, and `classes`, since the example utilizes these fundamentals.
2. **Asynchronous Programming with asyncio**: Familiarity with Python's asyncio for writing concurrent
code using the `async/await` syntax.
3. **[farm-ng Controller Service Overview](/docs/concepts/controller_service/)**:
This overview provides a base understanding of the gRPC service the client you create will connect to.
4. [**farm-ng Transforms & Poses Overview**](/docs/concepts/transforms_and_poses/):
This overview provides insight into coordinate frames, transforms,
and poses as they pertain to autonomous systems and autonomous navigation.
5. [**farm-ng Tracks & Waypoints Overview**](/docs/concepts/controller_101/):
This overview provides insight into compiling poses as waypoints into a Track
that can be followed by the Amiga.
:::

# Controller Drive a Square Example

:::caution Warning
Expand Down
18 changes: 18 additions & 0 deletions website/docs/examples/controller_track/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,24 @@ id: controller-track
title: Follow a track
---

:::info Basic Knowledge Requirements

Before diving into this code, here's a quick heads-up on what you'll need to be familiar with:

1. **Python Programming**: It's important to have a good grasp of Python, especially with concepts
like `functions`, `loops`, and `classes`, since the example utilizes these fundamentals.
2. **Asynchronous Programming with asyncio**: Familiarity with Python's asyncio for writing concurrent
code using the `async/await` syntax.
3. **[farm-ng Controller Service Overview](/docs/concepts/controller_service/)**:
This overview provides a base understanding of the gRPC service the client you create will connect to.
4. [**farm-ng Transforms & Poses Overview**](/docs/concepts/transforms_and_poses/):
This overview provides insight into coordinate frames, transforms,
and poses as they pertain to autonomous systems and autonomous navigation.
5. [**farm-ng Tracks & Waypoints Overview**](/docs/concepts/controller_101/):
This overview provides insight into compiling poses as waypoints into a Track
that can be followed by the Amiga.
:::

# Controller Follow Track Example

:::caution Warning
Expand Down
23 changes: 23 additions & 0 deletions website/docs/examples/filter_client/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,29 @@ id: filter-client
title: Filter Client
---


:::info Basic Knowledge Requirements

Before diving into this code, here's a quick heads-up on what you'll need to be familiar with:

1. **Python Programming**: It's important to have a good grasp of Python, especially with concepts
like `functions`, `loops`, and `classes`, since the example utilizes these fundamentals.
2. **Asynchronous Programming with asyncio**: Familiarity with Python's asyncio for writing concurrent
code using the `async/await` syntax.
3. **[farm-ng Filter Service Overview](/docs/concepts/filter_service/)**:
This overview provides a base understanding of the gRPC service the client you create will connect to.
4. [**farm-ng Transforms & Poses Overview**](/docs/concepts/transforms_and_poses/):
This overview provides insight into coordinate frames, transforms,
and poses as they pertain to autonomous systems and autonomous navigation.
5. **Knowledge of State Estimation and Uncertainty**: The example deals with concepts of state estimation
(pose, orientation) and the associated uncertainties.
Understanding these concepts is important for interpreting the received data and how these
might be used in downstream applications or enhancements.
6. **Understanding of Kalman Filters, specifically the Unscented Kalman Filter (UKF)**:
The client in this example is receiving state estimates that are the result of UKF computations.
It may be helpful to understand how UKFs work, their limitations and functionalities.
:::

### [Link to `filter_client/main.py`](https://github.com/farm-ng/farm-ng-amiga/blob/main-v2/py/examples/filter_client/main.py)

This example streams the results from the state estimation filter running on the Amiga.
Expand Down
13 changes: 13 additions & 0 deletions website/docs/examples/gps_client/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,19 @@ id: gps-client
title: GPS Client
---

:::info Basic Knowledge Requirements

Before diving into this code, here's a quick heads-up on what you'll need to be familiar with:

1. **Python Programming**: It's important to have a good grasp of Python, especially with concepts
like `functions`, `loops`, and `classes`, since the example utilizes these fundamentals.
2. **Asynchronous Programming with asyncio**: Familiarity with Python's asyncio for writing concurrent
code using the `async/await` syntax.
3. **[farm-ng GPS Service Overview](/docs/concepts/gps_service/)**:
This overview provides a base understanding of the gRPC service the client you create will connect to.
This includes **GPS** (as PVT) & **RTK** (as RELPOSNED) messages.
:::

# GPS Client Example

The [**GPS Client example**](https://github.com/farm-ng/farm-ng-amiga/blob/main-v2/py/examples/gps_client/main.py)
Expand Down
18 changes: 18 additions & 0 deletions website/docs/examples/record_track/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,24 @@ id: record-track
title: Record a Track
---

:::info Basic Knowledge Requirements

Before diving into this code, here's a quick heads-up on what you'll need to be familiar with:

1. **Python Programming**: It's important to have a good grasp of Python, especially with concepts
like `functions`, `loops`, and `classes`, since the example utilizes these fundamentals.
2. **Asynchronous Programming with asyncio**: Familiarity with Python's asyncio for writing concurrent
code using the `async/await` syntax.
3. **[farm-ng Filter Service Overview](/docs/concepts/filter_service/)**:
This overview provides a base understanding of the gRPC service the client you create will connect to.
4. [**farm-ng Transforms & Poses Overview**](/docs/concepts/transforms_and_poses/):
This overview provides insight into coordinate frames, transforms,
and poses as they pertain to autonomous systems and autonomous navigation.
5. [**farm-ng Tracks & Waypoints Overview**](/docs/concepts/controller_101/):
This overview provides insight into compiling poses as waypoints into a Track
that can be followed by the Amiga.
:::

# Filter Track Recording Example

:::caution Warning
Expand Down
4 changes: 2 additions & 2 deletions website/sidebars.js
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ const sidebars = {
{
"Fundamental Concepts": [
"concepts/transforms_and_poses/transforms-and-poses",
"concepts/controller_101/create-and-propagate-poses",
"concepts/controller_101/tracks-and-waypoints",
],
"Service Overviews": [
"concepts/canbus_service/canbus-overview",
Expand Down Expand Up @@ -174,8 +174,8 @@ const sidebars = {
"examples/camera_client/camera-client",
"examples/camera_settings/camera-settings",
"examples/camera_calibration/camera-calibration",
"examples/camera_pointcloud/camera-pointcloud",
"examples/camera_aruco_detector/camera-aruco-detector",
"examples/camera_pointcloud/camera-pointcloud",
],
"label": "Camera Examples",
"type": "category"
Expand Down

0 comments on commit eee3ef1

Please sign in to comment.