From da9796c50ddab17513bc2eaa18642d124bb4b7a8 Mon Sep 17 00:00:00 2001 From: AgustinBRodriguez <133177230+AgustinBRodriguez@users.noreply.github.com> Date: Mon, 20 May 2024 18:20:47 -0700 Subject: [PATCH] Major update overhaul (#303) * launcher (#296) * launcher * Update README.md * launcher * Fix pre-commit * Fix pre-commit * robot geometry * geometry * fix * Update README.md additional images on IMU calibration * Update README.md imu imare order * imu/ntrip * fix * fix it * f * Update README.md name/character length changes * ntrip * pre co fix * Add specific details about adjustable parameters * launcher final * launch * suggestions * resolved conversations * resolved * Fix pre-commit * new images --------- Co-authored-by: Gui * spelling * Fix bug * setext * Update * Update PoE * Fix pre-commit errors * Update events recorder (#304) * Update website example * Update uri call * images.md * record.md * images.md * update.md * launcher images.md * Updated images.md * Updatee images.md * Updated images.md * Updated images.md * Update.md * save.md * updates * up * poe * Update poe.md * launch * changes (#305) * changes * Update tool control.md * autoplot update * hbridge view.md * Autoplot * Autoplot changes * camra app * Updates.md * file manager * resolve * file manager * Fix autoplot stuff * Fix pre-commit issues * Fix camera app stuff * Fix file manager app stuff * Fix launcher stuff * Bump released version * Update services descriptions/API (#308) * Review services apis * Finish review of services * Add missing '/' to canbus API * Enforce oak/* * Mention camera app as alternative for recording * Clarify role of the recorder sub-service * Add links to data streams available in the recorder service * Revert oversight * Release Notes OS 2.3 (#306) * First draft * Add new file to sidebar * Add more info * Wifi Manager * Add images/links to internal docs * Review content * Add image of new services diagram * Update placeholder * Include tip to divergence reasons * Revert unecessary changes * Add USB requirements for File Manager app (#310) * Update farm-ng-amiga to v2.3.0 (#311) * Rm pre-release warning for tool control * Alert users about manifest changes --------- Co-authored-by: Gui Co-authored-by: Guilherme <39603677+guilhermedemouraa@users.noreply.github.com> Co-authored-by: Kyle Coble <53625197+Hackerman342@users.noreply.github.com> --- farm-ng-amiga | 2 +- website/docs/apps/autoplot_app/README.md | 194 ++++++++------ website/docs/apps/camera_app/README.md | 41 +-- website/docs/apps/file_manager_app/README.md | 44 ++- website/docs/apps/filter_app/README.md | 5 + website/docs/apps/launcher/README.md | 251 ++++++++++++++++++ website/docs/brain/brain-install.md | 6 +- .../brain/custom-applications-manifest.mdx | 2 +- .../docs/concepts/canbus_service/README.md | 26 +- .../docs/concepts/filter_service/README.md | 8 +- website/docs/concepts/gps_service/README.md | 16 +- website/docs/concepts/oak_service/README.md | 4 +- .../docs/concepts/recorder_service/README.md | 159 ++++++----- .../docs/concepts/system_overview/README.md | 31 ++- .../concepts/track_follower_service/README.md | 2 +- website/docs/dashboard/dashboar_overview.md | 2 +- .../docs/dashboard/dashboard_user_guide.md | 12 +- website/docs/dashboard/fw_updates.md | 2 +- website/docs/debug_cable/README.md | 2 +- website/docs/debug_cable/service_cable.md | 2 +- .../examples/camera_aruco_detector/README.md | 22 +- .../examples/camera_calibration/README.md | 2 +- website/docs/examples/camera_client/README.md | 2 +- .../docs/examples/camera_settings/README.md | 2 +- website/docs/examples/cansniffer/README.md | 2 +- .../examples/dashboard_settings/README.md | 2 +- .../docs/examples/events_recorder/README.md | 18 +- website/docs/examples/filter_client/README.md | 2 +- website/docs/examples/motor_state/README.md | 2 +- .../examples/multi_client_geoimage/README.md | 2 +- .../multi_client_subscriber/README.md | 2 +- website/docs/examples/pendant_state/README.md | 4 +- website/docs/examples/square_track/README.md | 2 +- website/docs/examples/tool_control/README.md | 13 +- .../docs/examples/track_follower/README.md | 2 +- website/docs/release-notes/2024-05-10.md | 170 ++++++++++++ website/sidebars.js | 16 +- 37 files changed, 795 insertions(+), 281 deletions(-) create mode 100644 website/docs/apps/launcher/README.md create mode 100644 website/docs/release-notes/2024-05-10.md diff --git a/farm-ng-amiga b/farm-ng-amiga index 5c3088087..9db53866c 160000 --- a/farm-ng-amiga +++ b/farm-ng-amiga @@ -1 +1 @@ -Subproject commit 5c3088087021000bcf2b4aed217ce2da1b1f3a7b +Subproject commit 9db53866c03556e61a47533c1327bf238515246a diff --git a/website/docs/apps/autoplot_app/README.md b/website/docs/apps/autoplot_app/README.md index cc1d9df5f..7268de315 100644 --- a/website/docs/apps/autoplot_app/README.md +++ b/website/docs/apps/autoplot_app/README.md @@ -5,8 +5,8 @@ title: Autoplot App # Autoplot App Guide -The Autoplot app is an advanced control interface for your Amiga, offering multiple modes of -operation: +The Autoplot app is an advanced control interface for your Amiga, +offering multiple modes of operation: - **Direct control**: Manually drive the robot with simple controls for straight, turn, and backwards. - **Teach-and-repeat**: Manually drive the robot along a desired path, save it, and then command the @@ -15,90 +15,111 @@ robot to repeat the path autonomously. Sn30](https://shop.8bitdo.com/products/8bitdo-sn30-pro-bluetooth-gamepad) joystick. :::caution Resource Intensive Operation -The Autoplot app requires significant computational resources when run directly on the robot's screen. -To ensure optimal performance, it is recommended not to use the Autoplot app in conjunction with the -recorder or other custom user applications on the brain's display itself. -However, running the Autoplot app and the recorder app through a web browser on a separate device is -acceptable and should not impact performance. +Running the Autoplot app directly on the robot's screen demands considerable computational resources. +For optimal performance, avoid using the Autoplot app alongside other custom applications on the brain. +It is recommended to use the Autoplot app and +any custom applications through a web browser +on a separate device, as this should not impact performance. ::: ## Autonomy Requirements -Before starting any operation, make sure to check the following: +Before engaging autonomy, ensure to verify: -- [ ] The robot is calibrated through the [**Filter App**](/docs/apps/filter_app). -- [ ] The GPS antenna offsets are correctly set in the [**Filter App**](/docs/apps/filter_app). -- [ ] Ensure the robot is connected to an RTK base station for enhanced GPS accuracy. -- [ ] Set your Amiga to `automode`. -This is done through the dashboard in the [**automation screen**](https://www.youtube.com/watch?v=PKOhI4hbGUs&t=258s). +- [ ] Accurate [**IMU Calibration**](/docs/apps/launcher/#imu-calibration). +- [ ] The correct offsets are set in [**Robot Geometry**](/docs/apps/launcher/#robot-geometry). +- [ ] [**GPS NTRIP**](/docs/apps/launcher/#gps-ntrip) requirements have been met. +- [ ] Robot is connected to [**WiFi**](/docs/apps/launcher/#wifi). +- [ ] Amiga Dashboard is set to [**Auto Control**](/docs/dashboard/dashboard-user-guide#auto-control). :::tip RTK-GPS Configuration For precision in autonomous operations, configuring the RTK-GPS is essential. -This high-accuracy GPS configuration is critical for tasks that require precise geolocation capabilities. - -For detailed information on setting up and configuring RTK-GPS with your Amiga, please refer -to the [**farm-ng GPS Service Overview**](/docs/concepts/gps_service#Requirements). +This is critical for tasks that require precise geo-location capabilities. +Detailed RTK-GPS information can be found on the +[**GPS Service**](/docs/concepts/gps_service/) overview page. ::: ## How to Use the Autoplot App ### Teach-and-Repeat -The teach-and-repeat functionality allows you to manually drive the robot along a desired path -and then have the robot repeat the path autonomously. +The Amiga's teach-and-repeat functionality allows you to drive the robot along a desired path +and then repeat the path autonomously. +The process for doing so is as follows: -#### 1. Click "Record" to start mapping your path +#### 1. New Path -![Screenshot from 2023-11-08 16-15-51](https://github.com/farm-ng/amiga-dev-kit/assets/39603677/a23646f6-26e3-49c9-b70f-d8faab3ae159) +Click the **New Path** icon to initiate recording. -#### 2. Drive the robot as desired, blue dots will pop up on the screen indicating the robot's trace +![new path](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/4e338205-6f07-42a7-8131-5ee6522d597b) -![Screenshot from 2023-11-08 16-20-21](https://github.com/farm-ng/amiga-dev-kit/assets/39603677/13bbbec5-f66f-47a4-b064-8e98be59e43f) +#### 2. Map your Path -#### 3. Click "Save" and name your track to use it later +Drive the robot through the desired path and note the blue dots popping up on the screen indicating +the robot's trace. -![image](https://github.com/farm-ng/amiga-dev-kit/assets/39603677/7be15197-ced2-4f07-aa23-453dff7a0835) +![recording](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/65c208c2-0685-48b6-ba51-8124747c5e85) -#### 4. Load the track when needed and click "Start Track" to initiate autonomous follow +If you need to remove points along your recorded track, click the **Pause Path** button followed by +the **Remove Point** button. -![image](https://github.com/farm-ng/amiga-dev-kit/assets/39603677/72fcf1e5-5152-419b-a74a-78c0ef66b062) +![remove points](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/22cb8ddf-87c7-4d13-b9d6-6d976b1d120f) +Each press of the **Remove Point** button will delete a single dot. Deleted points will appear in green. +Once you have removed the desired points, click on **Resume Recording** to continue mapping your path. -:::info -After starting to follow the track, the `Start Track` button will switch to `Stop`, -which can be used to interrupt the autonomous task. -Additionally, users can press the `○` button on the pendant to disengage `automode`, -which will automatically cancel the autonomous operation. +:::tip Removing Points +Use this feature when you have deviated slightly from the desired course and need to make some corrections. ::: -### Remote Access via Web Browser +#### 3. Saving a Path -The Autoplot app is designed as a web-app, enabling seamless access from any standard web browser -like Google Chrome, Firefox, or Safari. -To open the Autoplot interface in your browser, simply enter the following address: +Clicking the **Save** button will prompt you to name your recently recorded track for later use. -```bash -:8008 -``` +![name it](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/e31b3e77-4b94-4119-a0cc-2efd260c0fff) -:::note Remote Control Requirements -To remotely control your Amiga: +#### 4. Load Path -- Ensure you are connected to the same network as your Amiga robot. -- For access across different networks, configure [**cross-network access**](/docs/ssh#recommended-configure-cross-network-access) -by adding your Amiga to your Tailscale network. +Clicking the **Load Path** icon enables you to + select from any of your previously recorded tracks. -For Tailscale users, access the app using your Amiga's Fully Qualified Domain Name (FQDN): +![load it](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/deb2daaf-37bf-4a51-9537-1ffcda67464c) + +:::tip Auto Control +In order to repeat a pre-recorded path, you must manually set the Dashboard to +[**Auto Control**](/docs/dashboard/dashboard-user-guide#auto-control), +and be sure that all other +[**Autonomy Requirements**](/docs/apps/autoplot_app/#autonomy-requirements) have been met. +::: -```bash -..ts.net:8008 -``` +![start](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/621eb211-1e2d-4553-a202-fb9e8eac962d) -Replace `` and `` with the respective names configured in your -Tailscale network. +Once you have loaded a track the **Start Path** icon will turn black and you will be ready to deploy +autonomous navigation on your Amiga. + +:::info +After starting to follow the track, the `Start Track` button will switch to `Stop`, +which can be used to interrupt the autonomous task. +Additionally, users can press the `○` button on the pendant to disengage `automode`, +which will automatically cancel the autonomous operation. ::: -You can control your Amiga from a web browser at any time, even when the Autoplot app is not active -on the Brain display. +### Tool Control + +This feature allows you to control your connected hardware devices through a browser window. +The control panel is accessed by clicking on the gear icon located in the upper +right corner. +![gearing](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/f09d117f-1026-4036-b2f0-20a557f83c9a) + +Our current Firmware release +[**amiga-dash-v0.5.0**](https://github.com/farm-ng/amiga-dev-kit/releases/tag/amiga-dash-v0.5.0) supports +up to four H-Bridge devices that can be latched or momentarily controlled. +They can also be coupled for synchronous operation. + +![Screenshot from 2024-05-02 18-05-04](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/ffb45918-ed86-497d-a72b-5892d75053ab) + +Up to four PTO Devices are supported and can be remotely selected for operation. +The control panel gives you directional controls for both H-Bridge and PTO connected devices. +As an added safety measure you may remotely stop all actively engaged tools. ## How to Control your Amiga @@ -107,17 +128,21 @@ You can control your Amiga robot in two ways: **Manual Control**: Use the [pendant](/docs/pendant), the [kartech](https://kar-tech.com/single-axis-joystick-universal-mega-system.html) or [dashboard](/docs/dashboard/dashboard-user-guide) -while physically present with the robot, ideal for teaching the robot new tracks. +while physically present with the robot, +ideal for teaching the robot new tracks. -Here are instructions for using the pendant and the kartech as of dashboard firmware -release [**`v0.0.5`**](https://github.com/farm-ng/amiga-dev-kit/releases): +Here are instructions for using the pendant +and the kartech as of dashboard firmware +release [**amiga-dash-v0.5.0**](https://github.com/farm-ng/amiga-dev-kit/releases/tag/amiga-dash-v0.5.0) ![pendant](https://github.com/farm-ng/amiga-dev-kit/assets/39603677/4a8fbe60-7780-4f32-b92f-6ce895a706e0) ![kartech](https://github.com/farm-ng/amiga-dev-kit/assets/39603677/99aee18e-e7d2-41c5-888b-6d38365c699e) -**Remote Control**: From your web browser, you can remotely operate the robot without needing +**Remote Control**: From your web browser, +you can remotely operate the robot without needing to be in the same physical location. -For that, you can use a keyboard for driving your Amiga, or use an +For that, you can use a keyboard for +driving your Amiga, or use an [8Bitdo Sn30](https://shop.8bitdo.com/products/8bitdo-sn30-pro-bluetooth-gamepad) joystick. Here are instructions for using both options: @@ -125,8 +150,9 @@ Here are instructions for using both options: ![keyboard](https://github.com/farm-ng/amiga-dev-kit/assets/39603677/6d81ee6c-6f9b-4395-ab4b-aaaa01b17565) ![joystick](https://github.com/farm-ng/amiga-dev-kit/assets/39603677/6bf57701-f241-4855-a675-d174084637b4) -:::info Autonomy Required for Remote Control -Remote Control requires the robot to be in `automode`. +:::info Auto Mode Required for Remote Control +The remote Control operation requires the robot's +Dashboard be set to [**Auto Control**](/docs/dashboard/dashboard-user-guide#auto-control). This mode ensures that all movements are managed safely by the robot's autonomous systems. ::: @@ -134,31 +160,13 @@ Both methods allow for track recording; however, remote control enables you to o robot from any location with internet access. :::tip Teaching Tracks Remotely or On-Site -Tracks can be taught to the robot whether you're using the on-site pendant or the Remote Keyboard -Control feature via a web browser. +Tracks can be taught to the robot by driving it manually with the pendant or the Kar-Tech controller. +Alternatively, you may use the Keyboard controls or the Game Pad controller via a web browser. ::: -## Status Bar Icons - -The Autoplot app features a status bar with icons that provide critical -information for autonomous operation: - -- **Automode**: This icon confirms if the robot is in automode, a prerequisite for autonomous tasks. -- **Filter**: This indicates the status of the UKF filter. -Autonomy will not engage if the filter has not converged. -- **GPS**: A visual indicator showing if the GPS service is active and functional. -- **WiFi**: This shows if the robot is connected to Wifi, which is necessary for autonomous operations. -- **Battery**: Displays the current battery level. -Always monitor this, especially before starting long tasks. - -
- image -
- ## Tips for Optimal Autonomy -- Before engaging in autonomous operations, always perform a safety check of the environment. +- Always perform a safety check of the surrounding environment before engaging in autonomous operations. - When operating the robot via remote keyboard control in the web app, ensure a stable and responsive network connection. - Monitor the robot's battery status via the Autoplot app to avoid interruptions in longer operations. @@ -167,10 +175,28 @@ responsive network connection. If you encounter issues with autonomy or control: +![icon bar](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/d69c2611-a3ad-4bb5-9db2-23a77c6a73ec) + - Verify all status indicators in the Autoplot app's top bar are active and showing the expected states. -- Check the [**Filter App**](/docs/apps/filter_app) -to confirm that calibration and GPS settings are up-to-date. -- If the robot does not respond to WAD keyboard commands, ensure that no other tasks are running and -that the robot is in automode. +- Confirm that [**IMU Calibration**](/docs/apps/launcher/#imu-calibration) and +[**GPS NTRIP**](/docs/apps/launcher/#gps-ntrip) settings are set correctly and up-to-date. +- If the robot does not respond to WASD keyboard commands, ensure that no other tasks are running and +the robot's Dashboard is set to [**Auto Control**](/docs/dashboard/dashboard-user-guide#auto-control). + +![filter error](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/9e6ab78d-dd52-4d86-9688-53b7ee9bff66) + +If the filter is not converged, the icon on the navigation bar will be crossed out. +Click on the icon to visualize error's details. + +![gps error](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/c026d6fb-c86e-43d9-b8ca-928bd2ed5515) + +If the robot is not receiving GPS messages the icon on the navigation bar will be crossed out. +Click on the icon to visualize error's details. + +![fail](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/9bd8b212-3286-4bac-9e40-2ec86b9ff11d) + +Occasionally, track following might fail. +An error message will appear and the **Start Path** button will switch to **Error-Check status**. +If you encounter this error message, make sure you Robot meets all the [**Autonomy Requirements**](/docs/apps/autoplot_app/#autonomy-requirements). For further assistance, reach out to the [support team](mailto:support@farm-ng.com). diff --git a/website/docs/apps/camera_app/README.md b/website/docs/apps/camera_app/README.md index 29bcecf55..598df737c 100644 --- a/website/docs/apps/camera_app/README.md +++ b/website/docs/apps/camera_app/README.md @@ -20,7 +20,8 @@ The app provides a live feed from each connected oak camera, allowing users to s camera sees. This real-time visualization aids in making informed adjustments to camera settings for optimal recording quality. -![Screenshot from 2023-12-08 11-38-03](https://github.com/farm-ng/amiga-dev-kit/assets/39603677/7c630193-68fb-4916-ae3c-fbfb16c33992) + +![main](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/1a146c44-e9f7-40de-ad75-df26a6c2bba7) ### Camera Configuration @@ -30,33 +31,41 @@ The following settings can be adjusted directly within the app: - **Exposure Time (ms)**: Control the duration of each frame's exposure to light. - **ISO Value**: Adjust the camera's sensitivity to light. - **Lens Position**: Fine-tune the focus of the camera lens to capture sharp images. +- **Settings Adjustment**: Quick access to camera settings, with sliders for manual adjustments and +checkboxes for automatic configurations. +- **Camera Selection**: Tabs for each oak device enable users to switch between different cameras effortlessly. + +![settings](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/3da3b23d-8c59-45b8-bbb4-c86b388edd64) -![Screenshot from 2023-12-08 11-43-07](https://github.com/farm-ng/amiga-dev-kit/assets/39603677/e50a1425-9274-4c3b-ba95-e8c18e1a6c4e) For convenience, users may also opt for: - **Auto Exposure**: The camera automatically adjusts the exposure settings for the best image quality. - **Auto Focus**: The camera will manage its focus settings to ensure clarity and detail in recorded imagery. -### Direct Recording +:::tip +Double click anyone of the auto controls to open up their manual configuration settings. +**Single Log File** allows you to set a maximum file size for log recording. +::: -Initiate data recording directly from the Camera App with the same efficacy as using the Recorder App. -This feature is particularly useful for capturing imagery data streams, like RGB, left, right, and -disparity views, without the need for additional configuration. +### Direct Recording -:::note -Recording from the Camera App is equivalent to recording from the Recorder App, however, the Recorder -App provides additional data streams such as GPS and canbus. -::: +**Start/Stop Recording**: Simple controls to begin or end the recording session. -## Streamlined Interface +![start rec](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/cb1d2d19-aaf5-4091-9d65-b2bf7b6e7499) -The Camera App interface is designed for ease of use: +To initiate data recording through the Camera App, simply press the **Start Recording** button at +the upper right corner. The button will switch from green to red and start flashing, +signaling that the recording is underway. +This functionality is especially handy for capturing various imagery data +streams such as RGB, left, right, and disparity views, all without requiring extra configuration. -- **Start/Stop Recording**: Simple controls to begin or end the recording session. -- **Settings Adjustment**: Quick access to camera settings, with sliders for manual adjustments and -checkboxes for automatic configurations. -- **Camera Selection**: Tabs for each oak device enable users to switch between different cameras effortlessly. +:::tip +By default, all the topic streams in the [**Recorder**](/docs/apps/launcher/#recorder) +are captured when you press the **RECORD** button on the navigation bar, or the **Start Recording** button +on the camera app. You may select individual topics to record from the +[**Recorder**](/docs/apps/launcher/#recorder) tab. +::: With its user-friendly design and comprehensive feature set, the Camera App is an indispensable tool for anyone looking to maximize the capabilities of their Amiga robot's camera system. diff --git a/website/docs/apps/file_manager_app/README.md b/website/docs/apps/file_manager_app/README.md index dfe53c8a0..64ee4b629 100644 --- a/website/docs/apps/file_manager_app/README.md +++ b/website/docs/apps/file_manager_app/README.md @@ -1,32 +1,50 @@ --- id: file-manager-app -title: File Manager App +title: File Manager App Guide --- -# File Manager App Guide +The File Manager app is crucial for efficiently managing log files on your Amiga. With its user-friendly +design, this app equips users with the tools needed to manage recorded log files and +topic streams chosen in the [**Recorder**](/docs/apps/launcher/#recorder). +Its simplicity and ease of use make it an essential tool for handling these files effectively. -The File Manager app is an essential utility for the effective management of log files on your Amiga. -Designed for simplicity and ease of use, this app provides users with the necessary tools to handle -the log files created by our [Recorder App](../recorder_app). +![one](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/e1f802a2-debe-4669-8af6-e523d8ba51a1) -![Screenshot from 2023-12-07 16-22-41](https://github.com/farm-ng/amiga-dev-kit/assets/39603677/37e712b1-31cf-42d7-a4ff-fcf6136649ed) +Log files are generated once a recording has been successfully initiated by pressing the +**RECORD** button on the navigation bar or the **Start Recording** button in the +[**Camera App**](/docs/apps/camera_app/). -## Key Features - -### Visualize Log Files +### Manage Log Files - **File Listing**: The app lists all log files stored on the robot, providing users with a clear view of available data. -- **File Details**: Alongside each file name, users can view the file size, making it easier to -gauge the data volume at a glance. - -### Manage Log Files +- **File Details**: Each file carries a time stamp and a file size, making it easier to gauge the +data volume at a glance. - **Delete**: Users can select and delete any log file. This feature is particularly useful for managing storage space and removing outdated or unnecessary data. +### Visualize Log Files + +Log files can be viewed locally by selecting the checkbox next to the desired file and then +pressing the open button. If the log file includes data from multiple camera streams, these can be +chosen from the dropdown menu located at the upper left corner of the screen. + +![playback](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/3ce5bdc4-2f99-4bff-8dc2-24ea870779de) + +Transport controls enable you to move through image frames one by one or in multiples of ten. + +![transport](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/319473d7-bfd4-4e71-8142-cdf6264893c0) + ### Transfer Files to USB Drive - **USB Copy**: If a USB drive is plugged into the robot, users can easily copy log files from the robot's storage to the USB drive. This functionality enhances data portability and facilitates easy sharing or backup of important logs. + +#### USB Requirements + +1. Your USB drive should be formatted as either `ext4` or `exFAT` for the app to detect your drive. +2. USB drives with multiple partitions may fail to be detected. +3. You should plug the drive into the brain AFTER booting up the brain and launching the app. +4. [Recommended] `USB 3.0` devices will transfer files significantly faster than `USB 2.0` devices. diff --git a/website/docs/apps/filter_app/README.md b/website/docs/apps/filter_app/README.md index 045e1cd0c..19835d7b4 100644 --- a/website/docs/apps/filter_app/README.md +++ b/website/docs/apps/filter_app/README.md @@ -3,6 +3,11 @@ id: filter-app title: Filter App --- +:::warning +The configuration settings and robot geometry found in this page are now part +of the [launcher](docs/apps/launcher/README.md) app and can be found under the settings tab. +::: + # Filter App Guide ## Calibration diff --git a/website/docs/apps/launcher/README.md b/website/docs/apps/launcher/README.md new file mode 100644 index 000000000..05ed72259 --- /dev/null +++ b/website/docs/apps/launcher/README.md @@ -0,0 +1,251 @@ +--- +id: launcher +title: Launcher +--- + +# Launcher Guide + +The Launcher is the first page you will see after your Amiga Brain has completed its booting process. +From here you can open various Apps and dive deeper into Settings. + +## Status Bar + +The status bar provides critical information for robot operation. + +![icon bar](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/d69c2611-a3ad-4bb5-9db2-23a77c6a73ec) + +- **Record**: Button used to Start and Stop recording. Recordings are saved in the [**File Manager App**](/docs/apps/file_manager_app/) +- **CPU**: Percentage processing power being used across all cores. +- **Memory**: Percentage of available RAM being used. +- **Tack**: When working in [**Autoplot**](/docs/apps/autoplot_app), this icon will show up +once a track has been loaded. +- **Auto**: This icon confirms the robot is in [**Auto Control**](/docs/dashboard/dashboard-user-guide#auto-control), +a prerequisite for autonomous tasks. +- **Filter**: This indicates the status of the [**UKF filter**](/docs/concepts/filter_service/). +Autonomy will not engage if the filter has not converged. +- **GPS**: A visual indicator showing if the [**GPS Service**](/docs/concepts/gps_service/) +is active and functional. +- **WiFi**: This icon shows you if the robot is connected to Wifi, a requirement for autonomous operations. +- **Battery**: Displays the current battery level. +Always monitor this, especially before starting long tasks. +- **E-Stopped**: This icon will show up whenever the E-stop button on your Amiga is engaged. + +## Apps + +![Apps](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/7cc6cd85-0f9f-47d7-bea8-2d68a3bb9649) + +Please visit the following links for an in-depth exploration of the [**Autoplot**](/docs/apps/autoplot_app), +[**Camera**](/docs/apps/camera_app), and [**File Manager**](/docs/apps/file_manager_app) Apps. + +## Settings + +The Settings menu allows you to make in depth adjustments to the various systems of your Amiga. + +### About + +This section presents useful information such as your Robot's Name, Software Version, and Apps. + +![about](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/3046a543-0888-4827-b4e8-c9c9483ef393) + +You can open a terminal window on this page for debugging while you are not at your computer. +To begin typing, you can either click on the "Show Keyboard" icon or connect a keyboard to +the USB port on the back of the Robot's Brain. + +![debug](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/e2f32875-55f5-4ddf-85ce-19208cf2bcea) + +### WiFi + +The WiFi Manager allows you to choose the network you want to connect to. Once you select a network +and fill out all the necessary fields, your WiFi connection will be established. + +![wifi](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/ad9d1ef7-ec30-4a35-b2cc-d8b4909af6d2) + +:::tip Network Connections +You may disable WiFi on the robot for network tests, making it easy to control and troubleshoot its functions. +It will help you ensure the robot operates correctly under different network conditions. +::: + +### Services + +For an in depth exploration of the Amiga Services, check out these [**overviews**](/docs/concepts/canbus_service/). +By default services will be active, but you may cycle them on/off to troubleshoot their functions. + +![service](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/7d09f493-dec1-48bd-b284-7e194650ad34) + +### Recorder + +The Recorder is the backbone of the Amiga's data logging and playback functionality. +It is designed to capture and store raw data from various robot +[**services**](/docs/concepts/canbus_service/) and +[**topics**](/docs/concepts/recorder_service/#available-topics-for-recording), +facilitating later analysis, debugging, and model training. + +![recorder](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/42edc61f-b7ef-4a7c-9831-90523a1d83ee) + +### Robot Geometry + +Fine-tuning your Amiga's geometry is key to seamless autonomous operation. +Begin all measurements from the **center or the robot** (in length & width) at ground level. + +- **Positive X** values are located **ahead of center** +- **Negative X** values are located **behind center** + +- **Positive Y** values are located **left-side** of **center** +- **Negative Y** values are located on the **right-side** of **center** + +![geometry](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/5121f89a-9402-4ce2-82d1-cdc8067dbc9d) + +:::info +The **GPS** value is taken from the center of the antenna, while the **IMU** value comes from OAK 0. +::: + +To determine the **wheelbase** and **track width** of your Amiga, see the illustration below. + +![Group 4 (7)](https://github.com/farm-ng/amiga-dev-kit/assets/39603677/28fa7805-75e2-4b99-9b8e-7c9961b392a8) + +### Robot Localization + +The modifiable parameters in the `Robot Localization` tab will directly interact with the +[**Autoplot App**](/docs/apps/autoplot_app) and how your robot drives autonomously. + +![local](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/5be65e1a-bd0f-4ad0-ba64-a213b7581254) + +#### Breadcrumb Spacing + +- Sets the distance between waypoints when a `Track` is recorded. +Decreasing this value improves navigation accuracy by creating a more detailed path but may slow +down the robot due to increased computational demands. +Increasing the spacing speeds up movement but at the cost of precision. + +#### Path Deviation Threshold + +- Determines the maximum allowable deviation from the planned path before the robot is +considered off-track, which will cancel the track following task. +A lower threshold ensures the robot is always close to the path, preventing it from entering +unwanted regions. +A higher threshold allows the track following to resume if for some reason the robot is far away from +the track, but at the cost of path adherence. + +#### Minimum State Estimation and Heading Accuracy + +- Dictates the minimal acceptable levels of accuracy for the robot's position and orientation estimations. +Higher thresholds will prevent the filter to diverge, but at the cost of precision state estimation, +which is crucial for autonomous driving. + +#### Minimum GPS Accuracy + +- Specifies the lowest acceptable GPS signal accuracy. +Poor GPS accuracy can significantly affect the stability and reliability of the navigation filter, +leading to potential divergences. + +![local time](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/4f67b9c5-254a-4a79-a4de-bb113b108c14) + +#### Divergence Delay + +- Defines the duration the robot's system will wait, considering all the aforementioned factors, before +determining that the navigation filter has diverged. +This setting is crucial for managing the balance between responsive corrections and filter stability. + +#### Gyroscope and GPS Stale Thresholds + +- These thresholds determine how long the robot waits before considering data from the gyroscope or +GPS as outdated ('stale'). +Stale data can cause the navigation filter to diverge, impacting robot localization. + +### IMU Calibration + +Calibrating the Inertial Measurement Unit (IMU) corrects any sensor biases and is essential for +precise navigation. +Carry out this process when setting up your Amiga for the first time or after making any + changes to the Robot's geometry. + +If your Amiga has been calibrated you will see the date/time when this process was last performed +along with a green tab that reads Calibrated. + +![calibration date](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/25aa7787-c2ea-476c-bb5d-b21bd7b1978b) + +If you need to calibrate your Amiga, place it on flat ground and press the + **Start Calibration** button. Hit **Confirm** + +![calibration flat](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/c0f45e33-2e57-4ada-8ec2-2bf3b803293d) + +The Calibration will begin and a green bar will move across the screen as the process is completed. + +![calibrating](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/81a6201c-f321-4048-ba37-d49c01883968) + +Once the Calibration process is complete you will be returned to the initial screen page and a new +date/time stamp will appear reflecting the latest Calibration performed. + +### PoE Switch + +The PoE Switch Manager offers network diagnostic capabilities, including the ability to detect +potential cabling issues via remote ping. +This is specially useful when your Oak devices might be down. +It gives you per port functionality to enable/disable PoE connected devices. + +![poe](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/f0394f2f-3163-42ae-99c7-7d9eaef54a3e) + +You can also reset your PoE Switch from this tab. + +:::warning +Resetting the PoE switch will affect all connected devices. +::: + +### GPS NTRIP + +The Setup ntrip menu is where you will input your base station's credentials. + +- **Server Name**: The server address of the base station. +This could be an IP address (e.g., 192.168.1.1) or a url (e.g., myrtkservice.com) + +- **Mountpoint**: Specific mount point on the ntrip server. + +- **Port**: The port used by the ntrip server. + +- **User**: Username for accessing the base station. + +- **Password**: Corresponding password for the above username. + +- **Serial Interface**: This is the USB port to which your GPS module is physically connected. +Unless you need to open the brain and modify its port (strongly not recommended), leave this field +untouched. + +![gps ntrip](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/794f06ab-9df2-4a96-91d1-1cfa6aa2e172) + +:::tip +For California users, [**CRTN**](http://sopac-csrc.ucsd.edu/index.php/crtn/) offers free +access to base stations across the state. +Other states or regions may have similar services available. +Always check local resources for the best positioning support in your area. +::: + +### Track Following + +![track follow](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/74733f20-ea97-46cf-932f-c29cff921c3b) + +#### Lookahead Distance + +- Represents how far ahead the robot looks to anticipate and prepare for path changes. +It's essential for enabling the robot to smoothly and efficiently navigate bends and turns. +The distance should be tuned based on the robot's speed and the complexity of the path. + +#### Linear Speed + +- Controls the maximum linear speed of the robot as well as the proportional gain in the PID controller +for linear movement. +Higher speeds increase the distance covered in less time but may reduce reaction time to path changes. + +![track follow angular](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/16360ebc-30de-4b67-8fc6-3d4d7b5c2967) + +#### Angular Speed + +- Governs the maximum angular velocity and the gains in the PID controller (proportional, integral, derivative) +for turning. +Tuning these values ensures that turns are handled smoothly and with appropriate responsiveness. + +![track follow turn](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/e6773357-da35-41d4-86a7-0f8fd612e78f) + +#### Turn in Place + +- Adjusts the proportional and derivative gains specifically for scenarios where the robot needs to +turn while stationary. diff --git a/website/docs/brain/brain-install.md b/website/docs/brain/brain-install.md index e12fc3c1e..94e991898 100644 --- a/website/docs/brain/brain-install.md +++ b/website/docs/brain/brain-install.md @@ -92,7 +92,7 @@ git clone https://github.com/farm-ng/farm-ng-core.git # Checkout the correct release and update submodules cd farm-ng-core/ -git checkout v2.0.0 +git checkout v2.3.0 git submodule update --init --recursive cd ../ @@ -120,8 +120,8 @@ You can check the installed version pip list | grep -E 'farm-ng|farm_ng' # You should see something like: -# farm-ng-amiga 2.0.0 -# farm-ng-core 2.0.0 +# farm-ng-amiga 2.x.x +# farm-ng-core 2.y.y # farm-ng-package 0.1.3 ``` diff --git a/website/docs/brain/custom-applications-manifest.mdx b/website/docs/brain/custom-applications-manifest.mdx index 58b14113b..ce147ff1d 100644 --- a/website/docs/brain/custom-applications-manifest.mdx +++ b/website/docs/brain/custom-applications-manifest.mdx @@ -53,7 +53,7 @@ all the supported fields and values: "8042" ], "autostart": true, - "http_gui_port": 8042, + "app_route": "8042", "display_name": "Example Service" }, } diff --git a/website/docs/concepts/canbus_service/README.md b/website/docs/concepts/canbus_service/README.md index f4071671d..d40f63e94 100644 --- a/website/docs/concepts/canbus_service/README.md +++ b/website/docs/concepts/canbus_service/README.md @@ -16,22 +16,34 @@ or microcontrollers and devices. - **Dependencies**: Standalone service, but pivotal for many autonomous operations. Notably, the Track Follower service is heavily reliant on the Canbus service. -# Data Streams +## Data Streams -- `/twist`: The commanded linear velocity of the vehicle in the x direction in meters per second. - Check the protobuf definition for more details: - [canbus_pb2.Twist2d](https://github.com/farm-ng/farm-ng-amiga/blob/main/protos/farm_ng/canbus/canbus.proto#L58-L61) +- `/motor_states`: Streams state messages from the motors of your Amiga, such as voltage and RPM. +Check the protobuf definition for more details: +[canbus_pb2.MotorStates](https://github.com/farm-ng/farm-ng-amiga/blob/main/protos/farm_ng/canbus/canbus.proto) + +- `/pendant`: Streams state messages from the pedant of your Amiga, such as buttons pressed. + Check the protobuf definition for more details: + [amiga_v6_pb2.PendantState](https://github.com/farm-ng/farm-ng-amiga/blob/main/protos/farm_ng/canbus/amiga_v6.proto) - `/raw_messages`:A representation of raw CAN bus messages with timestamps, node IDs, error flags, remote transmission indicators, and encoded payloads. Check the protobuf definition for more details: -[canbus_pb2.RawCanbusMessages](https://github.com/farm-ng/farm-ng-amiga/blob/main/protos/farm_ng/canbus/canbus.proto#L95-L107) +[canbus_pb2.RawCanbusMessages](https://github.com/farm-ng/farm-ng-amiga/blob/main/protos/farm_ng/canbus/canbus.proto) - `/state`: State of the Amiga CAN bus. Encapsulates key information required to evaluate the state of the Amiga robot. Check the protobuf definition for more details: [amiga_v6_pb2.AmigaV6CanbusState](https://github.com/farm-ng/farm-ng-amiga/blob/main/protos/farm_ng/canbus/amiga_v6.proto) +- `/tool_statuses`: State of the tools (if any) connected to your Amiga. + Check the protobuf definition for more details: + [tool_control_pb2.ToolStatuses](https://github.com/farm-ng/farm-ng-amiga/blob/main/protos/farm_ng/canbus/tool_control.proto) + +- `/twist`: The commanded linear velocity of the vehicle in the x direction in meters per second. + Check the protobuf definition for more details: + [canbus_pb2.Twist2d](https://github.com/farm-ng/farm-ng-amiga/blob/main/protos/farm_ng/canbus/canbus.proto) + ## API 1. `/twist`: Receives twist commands (linear and angular velocities) and instructs the @@ -40,6 +52,10 @@ motors accordingly. 3. `/get_battery_state`: Returns the battery state. A float value indicating the battery's state of charge, ranging [0.0, 1.0]. If no motors are connected, it returns -1.0. +4. `/control_tools`: Control the tools / actuators based on the ActuatorCommands message. +5. `/stop_all_tools`: Stop all tools and prevent control for a predetermined duration. +6. `/yield_all_tools`: Prevent control for a predetermined duration. +7. `/config_request`: Use the farm-ng SDO protocol to send a config request to the dashboard. ## Safety and Operation diff --git a/website/docs/concepts/filter_service/README.md b/website/docs/concepts/filter_service/README.md index 5e1ea29ca..16c54d9f7 100644 --- a/website/docs/concepts/filter_service/README.md +++ b/website/docs/concepts/filter_service/README.md @@ -31,7 +31,7 @@ For the Filter service to function correctly, these services must be operational relevant sensor data. Since the Filter relies on GPS data, the Amiga must have a GPS connected to an RTK base station. -# Data Streams +## Data Streams - `/state`: A filter's state detailing pose, convergence, calibration, uncertainty, innovation, and heading. Check the protobuf definition for more details: @@ -49,6 +49,10 @@ 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. +- `/pause_track`: Pause adding waypoints to a track. +- `/resume_track`: Resume adding waypoints to a track. +- `/pop_track_end`: Removes the last waypoint added to the track. +Track must be paused first (`/pause_track`). ## Convergence Requirements @@ -58,7 +62,7 @@ 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. +- The oak/0 sub-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). diff --git a/website/docs/concepts/gps_service/README.md b/website/docs/concepts/gps_service/README.md index 8cd034b3d..792aa5f7b 100644 --- a/website/docs/concepts/gps_service/README.md +++ b/website/docs/concepts/gps_service/README.md @@ -5,7 +5,7 @@ title: GPS # GPS Service Overview -The GPS service is an integral component of the Amiga's navigation system, utilizing a +The GPS sub-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. @@ -31,7 +31,7 @@ These messages contain rich data sets that include the robot's current geospatia velocity, time, and other relevant GPS data. :::info INFO -There are two types of GPS messages: **PVT** and **RELPOSNED**. +There are three types of GPS messages: **PVT**, **RELPOSNED**, and **ECEF**. **PVT** (Position, Velocity, and Time) messages provide the all-in-one solution: position, velocity, and time. @@ -41,9 +41,15 @@ It contains details like longitude, latitude, altitude, speed, and UTC time. 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. + +**ECEF** (Earth-Centered, Earth-Fixed) messages provide coordinates that represent positions +relative to the earth's center, but fixed to the earth as it rotates. +ECEF coordinates are expressed in meters in a 3D Cartesian coordinate system. +These messages are particularly useful for applications +that require a global reference frame, such as satellite operations and global mapping projects. ::: -# Data Streams +## Data Streams - `/pvt`: PVT message. Check the protobuf definition for more details: @@ -53,6 +59,10 @@ It shows the difference in position between a "moving" receiver and a "fixed" re Check the protobuf definition for more details: [gps_pb2.RelativePositionFrame](https://github.com/farm-ng/farm-ng-amiga/blob/main/protos/farm_ng/gps/gps.proto#L73-L97) +- `/ecef`:ECEF message. +Check the protobuf definition for more details: +[gps_pb2.EcefCoordinates](https://github.com/farm-ng/farm-ng-amiga/blob/main/protos/farm_ng/gps/gps.proto#L109-L117) + ## Requirements For the GPS service to function optimally, certain conditions must be met: diff --git a/website/docs/concepts/oak_service/README.md b/website/docs/concepts/oak_service/README.md index eaeba1735..1505c0117 100644 --- a/website/docs/concepts/oak_service/README.md +++ b/website/docs/concepts/oak_service/README.md @@ -17,7 +17,7 @@ However, its data, especially the IMU information, plays a significant role in t navigation capabilities, as it's fused with GPS and wheel odometry data in the Filter service (using an Unscented Kalman Filter). -# Multiple Instances +## Multiple Instances Depending on the number of OAK devices connected to the Amiga, there might be multiple instances of the OAK service running concurrently. @@ -38,7 +38,7 @@ These messages can include various data types such as: - Accelerometer data - Gyroscope data -# Data Streams +## Data Streams - `/calibration`: Intrinsic parameters of the cameras. Check the protobuf definition for more details: diff --git a/website/docs/concepts/recorder_service/README.md b/website/docs/concepts/recorder_service/README.md index 120f16cac..cebee00af 100644 --- a/website/docs/concepts/recorder_service/README.md +++ b/website/docs/concepts/recorder_service/README.md @@ -11,7 +11,7 @@ analysis, debugging, and model training. ## Purpose -The primary objective of the Recorder Service is to provide a robust mechanism for recording +The primary objective of the Recorder sub-service is to provide a robust mechanism for recording data streams from different services. This is invaluable for tasks such as training computer vision/AI models, where capturing field imagery is essential. For instance, when developing a precision sprayer application for weeds, one would @@ -22,10 +22,12 @@ first traverse the field, recording data to train a model to detect weeds. The Recorder Service is a subscriber to the following services: - Canbus +- Filter +- GPS - Oak (Multiple Oak topics may be available, depending on the number of Oak cameras connected, -e.g., oak0, oak1, ...) -- GPS Service -- Filter Service +e.g., oak/0, oak/1, ...) +- System Monitor +- Track Follower ## Available Topics for Recording @@ -41,44 +43,27 @@ Some of which may inherit from the protobuf messages found at:
[**`farm-ng-core/protos/`**](https://github.com/farm-ng/farm-ng-core/tree/main/protos/farm_ng/core) ::: -### Canbus Topics - -- `canbus/health`: Provides health metrics for the Canbus service, such as publishing frequency. -- `canbus/raw_messages`: Streams all messages received from the CAN bus by the canbus service. -You can parse and unpack these messages to see details of the motors (e.g., rpm, temperature), -of your Amiga (e.g., battery voltage, velocity, whether auto-mode is engaged), -and other pertinent information. -- `canbus/twist`: Outputs the linear and angular velocities of the robot, offering insights -into its movement dynamics. - -### Oak Topics - -- `oak/health`: Delivers health metrics for the Oak service, including publishing frequency. -- `oak/calibration`: Streams the current calibration settings of the Oak device, -ensuring the camera's accuracy. -- `oak/disparity`: Outputs the disparity image calculated from the left/right stereo images, -used for depth perception and 3D mapping. -- `oak/imu`: Streams 3-D accelerometer & gyroscope values from the Oak camera's internal IMU, -giving insights into the robot's orientation and movement. -- `oak/left`: Outputs the feed from the stereo left camera of the Oak device. -- `oak/right`: Outputs the feed from the stereo right camera of the Oak device. -- `oak/rgb`: Streams the stereo RGB image from the Oak device, providing full-color -visuals of the robot's environment. - -### GPS Topics - -- `gps/health`: Offers health metrics for the GPS service, such as publishing frequency. -- `gps/pvt`: Streams GPS Position, Velocity, and Time (PVT) messages, giving a comprehensive -view of the robot's location and movement. -- `gps/relposned`: Provides GPS relative position in North, East, Down (N-E-D) coordinates, -offering a detailed spatial orientation of the robot. - -### Filter Topics - -- `filter/health`: Delivers health metrics for the Filter service, including publishing frequency. -- `filter/state`: Streams the filter state, which combines the robot's pose, orientation, -filter state uncertainties, and filter convergence status. -This topic is essential for understanding the robot's current state and its accuracy. +- [Canbus Topics](/docs/concepts/canbus_service/#data-streams) + +- [Filter Topics](/docs/concepts/filter_service/#data-streams) + +- [GPS Topics](/docs/concepts/gps_service/#data-streams) + +- [Oak Topics](/docs/concepts/oak_service/#data-streams) + +- System Monitor Topics + + - `system_monitor/health`: Delivers health metrics for the system_monitor service, +including publishing frequency. + - `system_monitor/auto_mode`: Streams auto mode state (either true or false). + - `system_monitor/batteries_state`: Streams the percent of battery left. + - `system_monitor/cpu_usage`: Streams the percent of CPU currently being consumed on the brain. + - `system_monitor/filter_state`: Streams the filter service state. + - `system_monitor/wifi_state`: Streams auto mode state (either true or false). + - `system_monitor/virtual_memory_usage`: Streams athe percent of virtual memory being consumed +by the brain. + +- [Track Follower Topics](/docs/concepts/track_follower_service/#data-streams) --- @@ -88,58 +73,62 @@ depending on their specific needs and analysis requirements. ## Recording Profile To initiate recording, a "Recording profile" must be provided as an argument. -This profile is a JSON file detailing the subscriptions or topics to be recorded. Here's an example: +This profile is a +[**EventServiceConfig**](https://github.com/farm-ng/farm-ng-core/blob/main/protos/farm_ng/core/event_service.proto#L80-L107) + protobuf, detailing the subscriptions or topics to be recorded. ```json { - "config": { - "name": "record_default", - "subscriptions": [ - { - "uri": { - "path": "*", - "query": "service_name=canbus" - }, - "every_n": 1 - }, - { - "uri": { - "path": "*", - "query": "service_name=gps" - }, - "every_n": 1 - }, - { - "uri": { - "path": "/imu", - "query": "service_name=oak0" - }, - "every_n": 1 - }, - { - "uri": { - "path": "*", - "query": "service_name=filter" - }, - "every_n": 1 - } - ] - } + "name": "my_profile", + "subscriptions": [ + { + "uri": { + "path": "*", + "query": "service_name=canbus" + }, + "every_n": 1 + }, + { + "uri": { + "path": "*", + "query": "service_name=gps" + }, + "every_n": 1 + }, + { + "uri": { + "path": "/imu", + "query": "service_name=oak/0" + }, + "every_n": 1 + }, + { + "uri": { + "path": "*", + "query": "service_name=filter" + }, + "every_n": 1 + } + ] } ``` :::info INFO The **`*`** symbol in the `path` field indicates that all available topics of that specific subscription (service) should be recorded. + +The `every_n` field indicates the ratio of recording frequency. +For example, if the publishing rate of `oak/0/imu` is 50 ms, an every_n of "2" will yield +in data being recording every 100 ms (2 * 50 ms). ::: ## API Users can interact with the Recorder Service using the following commands: -- `/start`: Initiates data recording. +- `recorder/start`: Initiates data recording. A valid "Recording profile" must be provided as an argument. -- `/stop`: Halts the data recording process. +- `recorder/stop`: Halts the data recording process. ## Data Storage @@ -154,15 +143,19 @@ at the recording's start, the robot's name, and the file number in the sequence: For example: ```php -2023_01_12_16_17_52_134845_element-vegetable.0000.bin +2024_06_01_12_00_00_134845_element-vegetable.0000.bin ``` ## How to Use -Data can be recorded through the Recorder App, or using the `EventsClient` class. +Data can be recorded through the AppBar, the Camera App, or using the `EventsClient` class +as in the **Events Recorder example**. + +- To record data through the UI on the Brain display, see the +[Launcher Guide - Status Bar](/docs/apps/launcher/#status-bar). -To record data through the UI on the Brain display, see the -[Recorder App Guide](/docs/apps/recorder_app/). +- To record data through the Camera App on the Brain display, see the +[Camera App Guider](/docs/apps/camera_app/). -To record data using the Recorder Service API from your own application, see the +- To record data using the Recorder Service API from your own application, see the [Events Recorder example](/docs/examples/events_recorder/). diff --git a/website/docs/concepts/system_overview/README.md b/website/docs/concepts/system_overview/README.md index 0b7459626..93fe8a72e 100644 --- a/website/docs/concepts/system_overview/README.md +++ b/website/docs/concepts/system_overview/README.md @@ -31,19 +31,34 @@ making troubleshooting easier. 3. **Efficiency**: Services can run concurrently, utilizing the multi-core capabilities of platforms like the Brain. +## The Amiga Service + +The Amiga service serves as the central hub for coordinating several critical sub-services. +Think of it as the command center from which various specialized functions are controlled: + +- [**Oak**](/docs/concepts/oak_service/): Handles imagery and provides IMU data, crucial for +navigation and stability. +- [**GPS**](/docs/concepts/gps_service/): Manages the global positioning system to track the robot's +location. +- [**Recorder**](/docs/concepts/recorder_service/): Logs data for analysis. + +These sub-services are now components of the larger Amiga service, allowing for streamlined operations +and more efficient management of resources. + ## The Heartbeat of Amiga: Key Services +Here is how our services are structured under the Amiga service: + +- [**Amiga**](/docs/concepts/system_overview/#the-amiga-service): Acts as the central command. +Under this service, we have: + - OAK + - GPS + - Recorder - [**Canbus**](/docs/concepts/canbus_service/): Manages the robot's motors. It's like the nervous system, transmitting movement commands and receiving feedback. -- [**Oak**](/docs/concepts/oak_service/): The eyes and balance of the robot. -It streams imagery and provides IMU data, crucial for services like Filter and Track Follower. -- [**GPS**](/docs/concepts/gps_service/): The robot's global positioning sense. -It knows where the Amiga is in the world. - [**Filter (UKF)**](/docs/concepts/filter_service/): Acts as the robot's sense of self-awareness. By using IMU data from the OAK service, wheel odometry from CANBUS, and global positioning from GPS, it estimates the state of the robot. -- [**Recorder**](/docs/concepts/recorder_service/): The memory of the robot. -It logs data, ensuring we can revisit past operations or analyze performance. - [**Track Follower**](/docs/concepts/track_follower_service/): The brain of the operation. It uses algorithms like pure pursuit and PID to guide the Amiga. It makes decisions based on data from other services. @@ -55,7 +70,7 @@ the traffic cop (Track Follower) guides vehicles (services), and everyone communicates to ensure the city runs smoothly. Similarly, in the Amiga ecosystem: -- The **OAK** service streams visual and IMU data. +- The **OAK** sub-service streams visual and IMU data. - The **Filter** service uses IMU data from OAK, wheel odometry from CANBUS, and global positioning data from GPS to understand how the robot is moving. - The **Track Follower** takes this movement data, combines it with its algorithms, and decides @@ -68,7 +83,7 @@ All these services run on the powerful Brain, allowing for efficient and concurr ## Architectural Diagram Below is the architectural diagram that visually represents how these services interact: -![amiga_brain-1](https://github.com/farm-ng/amiga-dev-kit/assets/5157099/a7d5d95f-a94d-40a9-8df0-3c0c9084c2fa) +![amiga-services-diagram](https://github.com/farm-ng/amiga-dev-kit/assets/39603677/68bff7a0-08df-48d2-b6ae-5155cf7ff1eb) This introduction is designed to be a primer. Each service has its depths and intricacies, which you'll uncover as you dive deeper into Amiga development. diff --git a/website/docs/concepts/track_follower_service/README.md b/website/docs/concepts/track_follower_service/README.md index 7777eec47..ed524ee96 100644 --- a/website/docs/concepts/track_follower_service/README.md +++ b/website/docs/concepts/track_follower_service/README.md @@ -33,7 +33,7 @@ The State estimation filter service is also client of the following services: For this reason, all of the above-mentioned services must be up and running for the `track_follower` to work. -# Data Streams +## Data Streams - `/state`: The `TrackFollowerState` is a combination of information from the various tasks performed by the Track Follower. diff --git a/website/docs/dashboard/dashboar_overview.md b/website/docs/dashboard/dashboar_overview.md index 60241d47f..2dfd4d00d 100644 --- a/website/docs/dashboard/dashboar_overview.md +++ b/website/docs/dashboard/dashboar_overview.md @@ -17,7 +17,7 @@ allowfullscreen> ## Description -Farm-ng's Dashboard is a ruggedized, waterproof, outdoor-visible +Farm-ng's Dashboard is a rugged, waterproof, outdoor-visible touch-screen display and machine controller - customizable through our ADK (Amiga-Dev-Kit) toolset! diff --git a/website/docs/dashboard/dashboard_user_guide.md b/website/docs/dashboard/dashboard_user_guide.md index 5889ad90a..f0c62f12a 100644 --- a/website/docs/dashboard/dashboard_user_guide.md +++ b/website/docs/dashboard/dashboard_user_guide.md @@ -31,7 +31,7 @@ Pressing the START button will take you to the home screen. -This is the home screen of the dashboard. In the center sits the spedometer, +This is the home screen of the dashboard. In the center sits the speedometer, where you can switch between metric and standard units and adjust to the travel speed of your Amiga. On the right side of the screen you will see several icons displaying: @@ -158,7 +158,7 @@ The arrows (up/down/left/right) in the center of the pendant are used to select -These are the button configurations for those of you who purchased a Kartech control. +These are the button configurations for those of you who purchased a Kar-Tech controller. ### H-bridge settings @@ -176,7 +176,7 @@ Our [3 point hitch](https://farm-ng.com/products/cat-zero-3-point-lift-kit) is temporarily engaged by the [H bridge](https://farm-ng.com/products/h-bridge-for-canbus-accessory-control) to lift and lower the [A frame](https://farm-ng.com/products/cat-0-a-frame-kit) which you can use to engage a [seeder](https://farm-ng.com/products/mounted-6-line-seeder). -Alternatively, you can use the laching function in a sprayer system. +Alternatively, you can use the latching function in a sprayer system. ::: @@ -217,7 +217,7 @@ We currently support up to two PTO's running at the same time. When you connect a PTO device, you will have access to the following features: -- A slider control that enables you to increade or decrease the PTO's RPM. +- A slider control that enables you to increase or decrease the PTO's RPM. - Directional control by means of a toggle switch on the touchscreen. On the left side of the screen you will see a graph displaying the current PTO set-point & @@ -267,10 +267,10 @@ please visit [Dashboard Firmware Update](https://amiga.farm-ng.com/docs/dashboar ### State Indicators -The state indicators are for distacting and understanding which control state your Amiga is in. +The state indicators are for defining and understanding which control state your Amiga is in. These states include, but are not limited to, `E-stopped`, `Auto_ready`, and `Cruise Control`. -#### E-stopped +#### E-Stopped None: reply = await EventClient(service_config).request_reply( - "/start", recording_profile, decode=True + "recorder/start", recording_profile, decode=True ) print(reply) async def stop_recording(service_config: EventServiceConfig) -> None: reply = await EventClient(service_config).request_reply( - "/stop", Empty(), decode=True + "recorder/stop", Empty(), decode=True ) print(reply) @@ -93,14 +93,14 @@ if __name__ == "__main__": args = parser.parse_args() - # create a client to the camera service + # Create a client to the Recorder service service_config: EventServiceConfig = proto_from_json_file( args.service_config, EventServiceConfig() ) if args.command == "start_recording": recording_profile = proto_from_json_file( - args.recording_profile, EventServiceConfigList() + args.recording_profile, EventServiceConfig() ) asyncio.run(start_recording(service_config, recording_profile)) @@ -127,7 +127,7 @@ python main.py --service-config service_config.json start_recording --recording- You should see a similar output: ```bash -value: "/mnt/data/2023_09_28_10_24_07_212687_lead-mango" +string_value: "/mnt/data/2023_09_28_10_24_07_212687_lead-mango" ``` In order to stop the recording, run the following command: diff --git a/website/docs/examples/filter_client/README.md b/website/docs/examples/filter_client/README.md index 9e3a0ca56..c5b93bc38 100644 --- a/website/docs/examples/filter_client/README.md +++ b/website/docs/examples/filter_client/README.md @@ -30,7 +30,7 @@ example streams the results from the state estimation filter running on the Amig You can either run this example directly on a brain by `ssh`'ing in, or use your local PC. If using your local PC, it should be either connected to the same local network as the brain -or linked to it through tailscale. +or linked to it through [**tailscale**.](https://tailscale.com/) The requirements to run this example are to have a [**farm-ng brain**](/docs/brain/) running the `filter service`. diff --git a/website/docs/examples/motor_state/README.md b/website/docs/examples/motor_state/README.md index 4c752d398..75df8a92e 100644 --- a/website/docs/examples/motor_state/README.md +++ b/website/docs/examples/motor_state/README.md @@ -23,7 +23,7 @@ example is a basic way of showing how to access and decode the You can either run this example directly on a brain by `ssh`'ing in, or use your local PC. If using your local PC, it should be either connected to the same local network as the brain -or linked to it through tailscale. +or linked to it through [**tailscale**.](https://tailscale.com/) The requirements to run this example are to have a [**farm-ng brain**](/docs/brain/) running the `canbus service`, without the physical E-STOP pressed. diff --git a/website/docs/examples/multi_client_geoimage/README.md b/website/docs/examples/multi_client_geoimage/README.md index ef192b394..321e52d4f 100644 --- a/website/docs/examples/multi_client_geoimage/README.md +++ b/website/docs/examples/multi_client_geoimage/README.md @@ -27,7 +27,7 @@ You can either run this example directly on a brain by `ssh`'ing in, or use your To successfully run this example, ensure that a [**farm-ng brain**](/docs/brain/) running Oak cameras and GPS service is active. Your local PC should be either connected to the same local -network as the brain or linked to it through tailscale. +network as the brain or linked to it through [**tailscale**.](https://tailscale.com/) :::tip diff --git a/website/docs/examples/multi_client_subscriber/README.md b/website/docs/examples/multi_client_subscriber/README.md index d153b1d8b..434c98092 100644 --- a/website/docs/examples/multi_client_subscriber/README.md +++ b/website/docs/examples/multi_client_subscriber/README.md @@ -20,7 +20,7 @@ to different services. You can either run this example directly on a brain by `ssh`'ing in, or use your local PC. To successfully run this example, ensure that a [**farm-ng brain**](/docs/brain/) running the Canbus and Filter services. Your local PC should be either connected to the same local -network as the brain or linked to it through tailscale. +network as the brain or linked to it through [**tailscale**.](https://tailscale.com/) ### 1. Install the [farm-ng Brain ADK package](/docs/brain/brain-install) diff --git a/website/docs/examples/pendant_state/README.md b/website/docs/examples/pendant_state/README.md index 40eaea597..db796fa2d 100644 --- a/website/docs/examples/pendant_state/README.md +++ b/website/docs/examples/pendant_state/README.md @@ -23,14 +23,14 @@ example is a basic way of showing how to access and decode the You can either run this example directly on a brain by `ssh`'ing in, or use your local PC. If using your local PC, it should be either connected to the same local network as the brain -or linked to it through tailscale. +or linked to it through [**tailscale**.](https://tailscale.com/) The requirements to run this example are to have a [**farm-ng brain**](/docs/brain/) running the `canbus service`, with a pendant attached to your Amiga. There will be no `/pendant` stream if your amiga does not have a wired pendant connected. At the current dashboard firmware release `v0.5.0`, the `PendantState` is not published on the CAN -bus for pendant alternatives, including Kartech wireless remotes and the on-screen pendant. +bus for pendant alternatives, including Kar-Tech wireless remotes and the on-screen pendant. ## `PendantState` details diff --git a/website/docs/examples/square_track/README.md b/website/docs/examples/square_track/README.md index 456623748..8152f4bc0 100644 --- a/website/docs/examples/square_track/README.md +++ b/website/docs/examples/square_track/README.md @@ -41,7 +41,7 @@ and commands the Amiga to follow the square track. You can either run this example directly on a brain by `ssh`'ing in, or use your local PC. If using your local PC, it should be either connected to the same local network as the brain -or linked to it through tailscale. +or linked to it through [**tailscale**.](https://tailscale.com/) Ensure that a [**farm-ng brain**](/docs/brain/), with a GPS receiver and Oak cameras, is actively running the track follower service. diff --git a/website/docs/examples/tool_control/README.md b/website/docs/examples/tool_control/README.md index 45316bbe1..5d9d07090 100644 --- a/website/docs/examples/tool_control/README.md +++ b/website/docs/examples/tool_control/README.md @@ -5,17 +5,6 @@ title: Tool Control # Amiga Tool Control example -:::danger Pre-release -Running this example has minimum release versions of: - -- brain: `AmigaOS v2.3.0 +` -- dashboard: `firmware v0.5.0 +` -- PC: `farm-ng-amiga v2.3.0+` - -These may not yet be publicly available and are scheduled for release in early March 2024. -To request early access, please reach out to us at: [support@farm-ng.com](mailto:support@farm-ng.com) -::: - :::info Basic Knowledge Requirements Before diving into this code, here's a quick heads-up on what you'll need to be familiar with: @@ -45,7 +34,7 @@ This script commands actuators (H-bridges & PTOs) based on keyboard inputs from on which you run the example. You should run this example on your local PC, connected to the same local network as the brain -or linked to it through tailscale. +or linked to it through [**tailscale**.](https://tailscale.com/) Ensure that a [**farm-ng brain**](/docs/brain/), attached to an Amiga with at least one H-bridge or PTO device, diff --git a/website/docs/examples/track_follower/README.md b/website/docs/examples/track_follower/README.md index 186a91ba7..9534c7058 100644 --- a/website/docs/examples/track_follower/README.md +++ b/website/docs/examples/track_follower/README.md @@ -37,7 +37,7 @@ This script takes in a pre-recorded track and commands the Amiga to follow it. You can either run this example directly on a brain by `ssh`'ing in, or use your local PC. If using your local PC, it should be either connected to the same local network as the brain -or linked to it through tailscale. +or linked to it through [**tailscale**.](https://tailscale.com/) Ensure that a [**farm-ng brain**](/docs/brain/), with a GPS receiver and Oak cameras, is actively running the track follower service. diff --git a/website/docs/release-notes/2024-05-10.md b/website/docs/release-notes/2024-05-10.md new file mode 100644 index 000000000..7316fd853 --- /dev/null +++ b/website/docs/release-notes/2024-05-10.md @@ -0,0 +1,170 @@ +--- +id: release-023 +title: AmigaOS 2.3 Elderberry Release Notes +authors: [mihelich, hackerman342, guilhermedemouraa] +tags: [announcement, release] +--- + +We are thrilled to announce the launch of AmigaOS 2.3 Elderberry +! +This release marks a significant evolution in our software, with major updates aimed +at enhancing performance, user interaction, and integration capabilities. +From a robust Rust backbone to advanced teleoperation features, +every update brings you closer to seamless automation. + +## Core Updates + +* **Rust Implementation** + * We've transitioned many of our core services from Python to Rust, + significantly improving resource utilization, CPU performance and logging robustness. + This foundational upgrade ensures a faster, more reliable system. + + ![amiga-services-diagram](https://github.com/farm-ng/amiga-dev-kit/assets/39603677/68bff7a0-08df-48d2-b6ae-5155cf7ff1eb) + +* **Improved boot up time** + * We've significantly reduced the time it takes to boot up the brain. + +## Autonomy & Teleoperation + +* **Real-time video streaming** + * Introducing real-time streaming capabilities with WebRTC! Enjoy high-quality, + low-latency video streams directly from your Amiga, + enhancing both user experience and operational efficiency. + +* **Colorful images** + * Introducing both RGB and mono images. + Get vivid details and sharp definition of the RGB images on the oak devices. + Use the night-mode (mono images) for an extended view of the robot's surroundings + and better visualization in low-light environments. + + ![rgb-image](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/4e338205-6f07-42a7-8131-5ee6522d597b) + + :::info + To activate the night mode, you must use the web-app version of Autoplot. + Simply press `N` on the keyboard. + ::: + +* **Tool Control** + * Take control of h-bridges and PTOs directly through the Autoplot app. + Our new [Tool Control panel](/docs/apps/autoplot_app/#tool-control), + accessible via a dedicated button, + displays all connected tools and provides user-friendly controls for operation. + + ![tool-control](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/7ea61bf7-d90f-4c06-b98e-bc7f76133213) + +* **Teleoperation** + * Enhanced teleoperation capabilities allow you to [**control**](/docs/apps/autoplot_app/#how-to-control-your-amiga) + your Amiga and its tools using a a keyboard, a kartech, or an 8-BitDo controller. + This update brings precision and ease to your hands, making operations smoother than ever. + +## Enhanced User Experience + +* **Digital Twin** + * Access a digital twin of your Amiga through any web browser. + Simply enter `/` in the address bar of your web browser to interact with your + robot in real-time. The digital twin provides a seamless interface for monitoring and control. + + :::info + If accessing the digital twin of your Amiga using the robot's name, + make sure to use the **tailscale name**. For example,if your brain's name is "aluminum-pineapple", + you would access it by typing `http://aluminum-pineapple.tail0be07.ts.net/` on the web browser + address bar. + ::: + +* **App Bar everywhere** + * Enjoy a more functional and interactive app bar from everywhere. + * Both the GPS and Filter icons are now clickable, and will provide important + logs that are helpful for troubleshooting your robot. + + ![filter-interactive](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/9e6ab78d-dd52-4d86-9688-53b7ee9bff66) + ![gps-interactive](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/c026d6fb-c86e-43d9-b8ca-928bd2ed5515) + + :::tip + Make sure to check the possible [**reasons**](https://github.com/farm-ng/farm-ng-amiga/blob/main/protos/farm_ng/filter/filter.proto#L25-L41) + that will cause the filter to diverge. + ::: + + * Enjoy the new `RECORD` button on the app bar. + Use it to start/stop recording logs from anywhere in the brain. + +* **Fast app switching** + * Enjoy improved times for opening and closing apps. + +* **Revamped Launcher** + * We have created a `Settings` menu to allow users to make in depth adjustments to + the various systems of the Amiga. + * The `Filter`, `GPS`, and `Recorder` apps were moved into Settings to keep the launcher apps + more concise. + + ![revamped-launcher](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/7cc6cd85-0f9f-47d7-bea8-2d68a3bb9649) + + * Moreover, users can now control parameters of the filter and track follower services. + Tune them to your specific needs! + * New PoE Switch Manager, useful for network diagnostic capabilities, including the ability to + detect potential cabling issues with the cameras of your robot. + + ![settings](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/3046a543-0888-4827-b4e8-c9c9483ef393) + +* **Preview images on log files** + * We have added a preview functionality to the `File Manager` app. + * If an image is part of your log, you can now [preview](/docs/apps/file_manager_app/#visualize-log-files) + it directly on the brain + before saving it to a USB flash drive. + + ![image-preview](https://github.com/farm-ng/amiga-dev-kit/assets/133177230/35ae5327-d744-48d5-a981-c9c026c52eb7) + +* **Enhanced Wifi Manager** + * Forget networks + * Turn wifi on/off for troubleshooting + * Quickly connect to known networks without typing in a password + +## Enhanced GPS + +* **NMEA GGA Message Integration** + * Our GPS service now streams NMEA GGA messages back to the base station, + allowing for seamless integration with third-party service providers and enhancing + your geo-location capabilities. + +## Lots of new open source examples + +* Enjoy lots of new open-source examples. +From [**tool control**](https://amiga.farm-ng.com/docs/examples/tool_control/) +to [**track planning**](https://amiga.farm-ng.com/docs/examples/track_planner/). + +## Breaking Changes + +* **Custom Apps** + * The template for custom apps (`manifest.json`) had a minor change on its `http_gui_port` field. + It has been renamed to `app_route`. + Moreover, its corresponding value, has to be formatted as a string. + Please note the `""` around its corresponding value (`"8042"`). + +```json +{ + "services": { + "example-service": { + "name": "example-service", + "type": "service", + "exec_cmd": "/farm_ng_image/venv/bin/python3 example_service.py", + "args": [ + "--config", + "/opt/farmng/config.json", + "--port", + "8042" + ], + "autostart": true, + "app_route": "8042", + "display_name": "Example Service" + }, + } +} +``` + +--- + +Stay tuned for more updates as we continue to refine and expand the capabilities of the AmigaOS! + +![command prompt](https://user-images.githubusercontent.com/5157099/219821724-69dfc97d-17fc-4a08-933a-e6fb2446495e.jpg) + +Happy coding :sunglasses: from the Amiga Brain Team! diff --git a/website/sidebars.js b/website/sidebars.js index 7e3e119e0..33894d014 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -60,11 +60,10 @@ const sidebars = { }, { "App Overviews": [ - "apps/filter_app/filter-app", + "apps/launcher/launcher", "apps/autoplot_app/autoplot-app", - "apps/recorder_app/recorder-app", - "apps/file_manager_app/file-manager-app", "apps/camera_app/camera-app", + "apps/file_manager_app/file-manager-app", ], }, { @@ -148,9 +147,18 @@ const sidebars = { "hardware-tools/recommended-tools", "reference/faq", "support/github-101", - "brain/brain", { "items": [ + "brain/brain", + "apps/filter_app/filter-app", + "apps/recorder_app/recorder-app", + ], + "label": "Deprecated", + "type": "category" + }, + { + "items": [ + "release-notes/release-023", "release-notes/release-022", "release-notes/release-021", "release-notes/release-02",