-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Filter Service Concept * GPS Service Concept * Add more info to GPS service * Add support@farm-ng.com to ssh instructions * Fix email/broken links * Update website/sidebars.js Co-authored-by: Kyle Coble <53625197+Hackerman342@users.noreply.github.com> * Organize concepts by level of complexity Co-authored-by: Kyle Coble <53625197+Hackerman342@users.noreply.github.com> * Add requirement of RTK base connection * Add protobuff defs to Concepts * Note for pvt messages not requiring wifi * Oak service + placeholder for can service * Clarified there might be multiple oak services * Typo fixes (1) Co-authored-by: Patrick Mihelich <484900+mihelich@users.noreply.github.com> * Typo fixes (2) Co-authored-by: Patrick Mihelich <484900+mihelich@users.noreply.github.com> * Typo fixes (3) Co-authored-by: Patrick Mihelich <484900+mihelich@users.noreply.github.com> --------- Co-authored-by: Kyle Coble <53625197+Hackerman342@users.noreply.github.com> Co-authored-by: Patrick Mihelich <484900+mihelich@users.noreply.github.com>
- Loading branch information
1 parent
d8b3951
commit c5f8ccf
Showing
6 changed files
with
291 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
--- | ||
id: canbus-overview | ||
title: CANBUS | ||
--- | ||
|
||
# Canbus Service Overview | ||
|
||
(Coming soon!) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
--- | ||
id: filter-overview | ||
title: Filter | ||
--- | ||
|
||
# Filter Service Overview | ||
|
||
The Filter service is the state estimation core of the Amiga, crucial for understanding the robot's | ||
position, orientation, and movement within its environment. | ||
Utilizing an **Unscented Kalman Filter**, it seamlessly fuses data from various sources like wheel odometry, | ||
GPS, and the IMU to provide a consistent and accurate representation of the robot's current state. | ||
|
||
The primary goal of the Filter service is to abstract the complexity involved in state estimation, | ||
providing users with clear, reliable information about the robot's pose, heading, and movement trajectory. | ||
This allows users to interact with and direct the Amiga effectively, without getting immersed in the | ||
technical depths of data fusion or sensor calibration. | ||
|
||
In essence, the Filter does the intricate work of synthesizing sensor data, enabling users to | ||
confidently interpret and utilize the Amiga's spatial information without needing extensive expertise | ||
in robotics or state estimation. | ||
|
||
## Subscriptions | ||
|
||
The `Filter` is a client from the following services: | ||
|
||
- Canbus (for wheel odometry) | ||
- GPS | ||
- Oak0 (for IMU data) | ||
|
||
For the Filter service to function correctly, these services must be operational and communicating | ||
relevant sensor data. | ||
Since the Filter relies on GPS data, the Amiga must have a GPS connected to an RTK base station. | ||
|
||
## Convergence Requirements | ||
|
||
For the state estimation to be considered valid and the results to be reliable, certain criteria | ||
need to be met, including: | ||
|
||
- The robot is connected to Wi-Fi, ensuring communication continuity. | ||
- The GPS service is receiving messages, with `accuracyNorth` and `accuracyEast` values smaller | ||
than 0.01, indicating high precision. | ||
- The oak0 service is active and transmitting IMU data. | ||
|
||
Upon startup or recalibration, the robot needs to be moved slightly to allow the filter to converge | ||
(indicated by `has_converged` = true). | ||
|
||
:::info Remember | ||
State estimation is a dynamic process, and environmental factors or sensor issues can affect convergence. | ||
Regular calibration and adherence to the recommended workflows are essential for maintaining accurate | ||
state estimation. | ||
::: | ||
|
||
## API | ||
|
||
Users can interact with the filter service using these commands through an EventClient of | ||
the filter service: | ||
|
||
- `/calibrate`: Triggers the calibration process, adjusting the IMU orientation relative to the robot | ||
and calculating gyroscope biases. | ||
- `/get_state`: Retrieves a protobuf message of type FilterState, containing the robot’s pose, | ||
heading (in radians), convergence status, and pose uncertainty. | ||
- `/get_track`: Returns the current track of the robot, essentially the path that the robot has traveled. | ||
- `/clear_track`: Clears the current track, useful when initiating a new tracking sequence or | ||
recalibrating the system. | ||
|
||
## Filter Service in Practice | ||
|
||
When planning to record a new track, the recommended workflow is as follows: | ||
|
||
- Start with `/clear_track`. This will clear the current track on memory and allow the user to | ||
"start fresh" | ||
- User drives the robot to generate the desired track | ||
- Once satisfied, the user stops the robot | ||
- Get the track with the API `/get_track`. | ||
|
||
:::tip TIP | ||
For a comprehensive understanding of the list of variables available in the filter state messages, | ||
make sure to check its [protobuf definition](https://github.com/farm-ng/farm-ng-amiga/blob/main-v2/protos/farm_ng/filter/filter.proto). | ||
::: | ||
|
||
## Features | ||
|
||
The Filter service, while sophisticated, is designed with user-friendliness in mind. | ||
It not only provides essential information on the robot's current state but also empowers users to: | ||
|
||
1. **Track Creation and Retrieval**: | ||
The system automatically logs the robot's path, creating tracks that can be reviewed and utilized for | ||
future tasks. This feature is invaluable for repeated navigation tasks or analyzing the robot's | ||
coverage over a workspace. | ||
|
||
2. **Real-time State Estimation**: | ||
By continuously synthesizing data from multiple sensors, the Filter offers real-time insights into | ||
the robot's position, orientation, and trajectory. | ||
This is crucial for tasks that require precise navigation or environment mapping. | ||
|
||
3. **Calibration on Demand**: | ||
Environmental changes or operational demands may necessitate recalibration. | ||
The /calibrate command simplifies this, enabling users to quickly recalibrate the IMU, ensuring | ||
continued accuracy in state estimation. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
--- | ||
id: gps-overview | ||
title: GPS | ||
--- | ||
|
||
# GPS Service Overview | ||
|
||
The GPS service is an integral component of the Amiga's navigation system, utilizing a | ||
high-precision Ublox module to determine the robot's exact position on Earth. | ||
This service is indispensable for tasks that require geo-location, from simple | ||
navigation to complex tasks like field mapping or precision agriculture. | ||
|
||
The primary role of the GPS service is to continuously capture and broadcast detailed | ||
positional data, which other components and services within the Amiga's system can utilize. | ||
It simplifies the intricacies of satellite-based positioning, offering users straightforward | ||
access to precise, real-time location data. | ||
|
||
In short, the GPS service continuously decodes and transmits location data, allowing users | ||
and systems to tap into accurate geospatial information without dealing with the | ||
complexities of GPS data interpretation. | ||
|
||
## Standalone Operation | ||
|
||
Unlike other services, the GPS service operates independently and is not a client of any other services. | ||
Its sole responsibility is to interpret and publish the data received from the GPS module. | ||
|
||
## Message Types | ||
|
||
Clients can subscribe to the GPS service to receive messages, which are typically of type `pvt` or `relposned`. | ||
These messages contain rich data sets that include the robot's current geospatial coordinates, | ||
velocity, time, and other relevant GPS data. | ||
|
||
:::info INFO | ||
There are two types of GPS messages: **PVT** and **RELPOSNED**. | ||
|
||
**PVT** (Position, Velocity, and Time) messages provide the all-in-one solution: position, velocity, | ||
and time. | ||
It contains details like longitude, latitude, altitude, speed, and UTC time. | ||
|
||
**RELPOSNED** (Relative Positioning) messages provide relative position information in a | ||
North, East, Down (N-E-D) frame. It's mainly used for applications requiring relative positioning | ||
between two receivers, often as a part of Real Time Kinematics (RTK) solutions. | ||
It shows the difference in position between a "moving" receiver and a "fixed" reference receiver. | ||
::: | ||
|
||
:::tip TIP | ||
For a comprehensive understanding of the list of variables available in each GPS message, | ||
make sure to check their [protobuf definitions](https://github.com/farm-ng/farm-ng-amiga/blob/main-v2/protos/farm_ng/gps/gps.proto). | ||
::: | ||
|
||
## Requirements | ||
|
||
For the GPS service to function optimally, certain conditions must be met: | ||
|
||
- The robot must have an active Wi-Fi connection, ensuring real-time data communication. | ||
- **NOTE**: The robot needs to be connected to Wi-Fi for `relposned` messages. | ||
However, an internet connection is not required for `pvt` messages. | ||
- Users need to input credentials for connecting to an RTK base station, enhancing the GPS accuracy. | ||
The required credentials include: | ||
- NTRIP ID: The server address of the base station. | ||
- NTRIP PORT: The port used by the NTRIP server. | ||
- NTRIP MOUNTPOINT: Specific mount point on the NTRIP server. | ||
- USER: Username for accessing the base station. | ||
- PASSWORD: Corresponding password for the above username. | ||
|
||
:::info NTRIP (Network Transport of RTCM via Internet Protocol) | ||
NTRIP is a protocol for streaming differential GPS (DGPS) data over the internet, enabling RTK | ||
corrections in areas with cellular coverage. | ||
Connecting to an NTRIP service enhances the GPS accuracy, crucial for tasks requiring precision navigation. | ||
::: | ||
|
||
:::tip Pro Tip for California Users | ||
If you're operating in California, consider [**signing up**](https://www.surveymonkey.com/survey-taken?sm=8oRYqrBI74rDSaBAdtcV5GY0_2FRs585_2FD4c_2BTVJDw_2Be9msUlD1XrZDpZ1Rvu0DLWBo8bsPAjLG8jj8DbutXMqryiezNdZiuVvgEb0osp55QY_3D) | ||
for a free CRTN | ||
(California Real Time Network) account. | ||
Managed by UC San Diego, [CRTN](http://sopac-csrc.ucsd.edu/index.php/crtn/) provides access | ||
to multiple base stations across the state, offering enhanced GPS accuracy. | ||
Other states or regions may have similar services available. | ||
Always check local resources for the best positioning support in your area. | ||
::: | ||
|
||
## Utilizing GPS Data | ||
|
||
The GPS data, while technical, is immensely valuable. | ||
With high-precision location information, users can: | ||
|
||
1. **Enhance Navigation**: | ||
Use the precise geospatial data in navigation tasks, allowing the Amiga to traverse pre-defined | ||
routes with minimal deviation. | ||
|
||
2. **Inform Decision-Making**: | ||
Analyze the GPS data to make informed decisions about resource allocation, route optimization, | ||
and task planning. | ||
|
||
3. **Improve Operational Efficiency**: | ||
Leverage the accuracy of real-time GPS data to enhance the reliability and efficiency of automated tasks, | ||
reducing the need for human intervention and potential for error. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
--- | ||
id: oak-overview | ||
title: OAK | ||
--- | ||
|
||
# Oak Service Overview | ||
|
||
The OAK service is a versatile component in the Amiga ecosystem, providing valuable data streams | ||
from the onboard OAK-D device, which includes stereo vision capabilities and an Inertial Measurement | ||
Unit (IMU). | ||
This service doesn't serve a singular purpose; instead, it offers a range of data that can be | ||
instrumental for various user-defined applications, from navigation and mapping to object detection | ||
and data collection. | ||
|
||
The OAK service is autonomous, not relying on other services to function. | ||
However, its data, especially the IMU information, plays a significant role in the Amiga's autonomous | ||
navigation capabilities, as it's fused with GPS and wheel odometry data in the Filter service | ||
(using an Unscented Kalman Filter). | ||
|
||
# Multiple Instances | ||
|
||
Depending on the number of OAK devices connected to the Amiga, there might be multiple instances | ||
of the OAK service running concurrently. | ||
For example, with two OAK cameras, there will be an oak0 service and an oak1 service. | ||
Each instance is responsible for managing the data streams from its respective OAK-D device. | ||
|
||
## Standalone Operation | ||
|
||
Unlike other services, each Oak service operates independently and is not a client of any other services. | ||
|
||
## Message Types | ||
|
||
Clients can subscribe to the OAK service to access the messages it publishes. | ||
These messages can include various data types such as: | ||
|
||
- Stereo vision (right and left) | ||
- RGB data | ||
- Accelerometer data | ||
- Gyroscope data | ||
|
||
The specifics of these messages, including their data structures and formats, are defined in the | ||
service's [protobuf definitions](https://github.com/farm-ng/farm-ng-amiga/blob/main-v2/protos/farm_ng/oak/oak.proto), | ||
which users can refer to for detailed information. | ||
|
||
## Requirements | ||
|
||
For the Oak service to function, there's only a single requirement: | ||
the oak camera(s) need to be powered via the POE Switch. | ||
|
||
## API | ||
|
||
The OAK service offers a few API endpoints that allow users to interact with and configure the | ||
OAK-D device's settings: | ||
|
||
- `/calibration`: Retrieves the calibration of the device, specifically the intrinsic parameters of | ||
the cameras. | ||
This is typically a one-time requirement unless the device undergoes significant changes or maintenance. | ||
|
||
- `/camera_settings/rgb`: Allows users to configure the RGB camera settings. | ||
If no settings are specified in the request, the service will return the current settings. | ||
|
||
- `/camera_settings/mono`: Similar to the RGB settings endpoint, this allows users to configure | ||
the mono camera settings or retrieve them if no new configurations are specified. | ||
|
||
While the specifics of these configurations are found in the protobuf definitions, they offer users | ||
the ability to customize the camera performance as per their application requirements, | ||
potentially adjusting parameters like exposure, focus, and white balance. | ||
|
||
## Practical Applications | ||
|
||
One of the key applications of the OAK service within the Amiga system is contributing to the robot's | ||
autonomous navigation. | ||
The gyroscope data from the OAK service's IMU is crucial for the robot's state estimation, | ||
as it's fused with other data sources in the Filter service. | ||
This fusion helps in achieving accurate positioning and orientation, enabling the Amiga | ||
to navigate effectively and autonomously. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters