diff options
39 files changed, 352 insertions, 78 deletions
diff --git a/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image.md b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/01_Building_the_AGL_Image.md index faa033c..c307ea3 100644 --- a/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image.md +++ b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/01_Building_the_AGL_Image.md @@ -15,7 +15,9 @@ This section, provides links to topics with instructions needed to create images three types of supported platforms and for emulation/virtualization using Quick EMUlator (QEMU) or VirtualBox: -* [x86 (Emulation and Hardware)](./07_Building_for_x86_(Emulation_and_Hardware).md) -* [Raspberry Pi 4](./08_Building_for_Raspberry_Pi_4.md) -* [R Car Gen 3](./09_Building_for_Supported_Renesas_Boards.md) -* [Virtio](./10_Building_for_Virtio.md) +* [x86 (Emulation and Hardware)](./02_Building_for_x86_(Emulation_and_Hardware).md) +* [Raspberry Pi 4](./03_Building_for_Raspberry_Pi_4.md) +* [R Car Gen 3](./04_Building_for_Supported_Renesas_Boards.md) +* [Rockchip/NanoPC T6](./05_Building_for_Supported_Rockchip_Boards.md) +* [Virtio](./06_Building_for_Virtio.md) +* [AWS EC2 (arm64 or x86-64)](./07_Building_for_EC2_arm64_and_x86-64.md) diff --git a/docs/01_Getting_Started/02_Building_AGL_Image/07_Building_for_x86_(Emulation_and_Hardware).md b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/02_Building_for_x86_(Emulation_and_Hardware).md index 89ee35d..89ee35d 100644 --- a/docs/01_Getting_Started/02_Building_AGL_Image/07_Building_for_x86_(Emulation_and_Hardware).md +++ b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/02_Building_for_x86_(Emulation_and_Hardware).md diff --git a/docs/01_Getting_Started/02_Building_AGL_Image/08_Building_for_Raspberry_Pi_4.md b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/03_Building_for_Raspberry_Pi_4.md index 057d70b..fe883e8 100644 --- a/docs/01_Getting_Started/02_Building_AGL_Image/08_Building_for_Raspberry_Pi_4.md +++ b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/03_Building_for_Raspberry_Pi_4.md @@ -16,7 +16,7 @@ AGL demo image for the Raspberry Pi 4 board. ## 1. Making Sure Your Build Environment is Correct The -"[Initializing Your Build Environment](./04_Initializing_Your_Build_Environment.md)" +"[Initializing Your Build Environment](../04_Initializing_Your_Build_Environment.md)" section presented generic information for setting up your build environment using the `aglsetup.sh` script. If you are building the AGL demo image for a Raspberry Pi 4 board, you need to specify some @@ -49,7 +49,7 @@ the AGL demo image suited for Raspberry Pi 4. Before launching the build, it is good to be sure your build configuration is set up correctly (`/build/conf/local.conf` file). -The "[Customizing Your Build](./05_Customizing_Your_Build.md)" +The "[Customizing Your Build](../05_Customizing_Your_Build.md)" section highlights some common configurations that are useful when building any AGL image. diff --git a/docs/01_Getting_Started/02_Building_AGL_Image/09_Building_for_Supported_Renesas_Boards.md b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/04_Building_for_Supported_Renesas_Boards.md index 95a2267..2a49078 100644 --- a/docs/01_Getting_Started/02_Building_AGL_Image/09_Building_for_Supported_Renesas_Boards.md +++ b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/04_Building_for_Supported_Renesas_Boards.md @@ -145,7 +145,7 @@ Internet. ### 1.4. Making Sure Your Build Environment is Correct The -"[Initializing Your Build Environment](./04_Initializing_Your_Build_Environment.md)" +"[Initializing Your Build Environment](../04_Initializing_Your_Build_Environment.md)" section presented generic information for setting up your build environment using the `aglsetup.sh` script. If you are building an image for a supported Renesas board, @@ -233,7 +233,7 @@ Finally, the AGL features are provided to support building the AGL Demo image for the Renesas board. You can learn more about the AGL Features in the -"[Initializing Your Build Environment](./04_Initializing_Your_Build_Environment.md)" +"[Initializing Your Build Environment](../04_Initializing_Your_Build_Environment.md)" section. ## 2. Using BitBake diff --git a/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/05_Building_for_Supported_Rockchip_Boards.md b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/05_Building_for_Supported_Rockchip_Boards.md new file mode 100644 index 0000000..4a63a29 --- /dev/null +++ b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/05_Building_for_Supported_Rockchip_Boards.md @@ -0,0 +1,132 @@ +--- +title: Building for Rockchip boards +--- + +AGL supported some Rockchip [RK3588](https://www.rock-chips.com/a/en/products/RK35_Series/2022/0926/1660.html) boards. +[NanoPC T6](https://wiki.friendlyelec.com/wiki/index.php/NanoPC-T6) board is one of the RK3588 based board. That is manifactured by [friendlyelec](https://www.friendlyelec.com). + +This section describes the steps you need to take to build the +AGL demo image for the NanoPC T6 board. + +## 1. Making Sure Your Build Environment is Correct + +The +"[Initializing Your Build Environment](../04_Initializing_Your_Build_Environment.md)" +section presented generic information for setting up your build environment +using the `aglsetup.sh` script. +If you are building the AGL demo image for a NanoPC T6 board, you need to specify some +specific options when you run the script : + +**Basic IVI demo :** + + ```sh + $ source meta-agl/scripts/aglsetup.sh -f -m nanopc-t6 -b build-nanopc-t6 agl-demo + $ echo "# reuse download directories" >> $AGL_TOP/site.conf + $ echo "DL_DIR = \"$HOME/downloads/\"" >> $AGL_TOP/site.conf + $ echo "SSTATE_DIR = \"$AGL_TOP/sstate-cache/\"" >> $AGL_TOP/site.conf + $ ln -sf $AGL_TOP/site.conf conf/ + ``` + +In each case, the "-m" option specifies the machine and the list of AGL features used with script are appropriate for development of +the AGL demo image suited for NanoPC T6. + +## 2. Configuring the Build + +Before launching the build, it is good to be sure your build +configuration is set up correctly (`/build/conf/local.conf` file). +The "[Customizing Your Build](../05_Customizing_Your_Build.md)" +section highlights some common configurations that are useful when +building any AGL image. + +## 3. Using BitBake + +This section shows the `bitbake` command used to build the AGL image. + +Start the build using the `bitbake` command. + +**NOTE:** An initial build can take many hours depending on your +CPU and and Internet connection speeds. +The build also takes approximately 200G-bytes of free disk space. + +**Flutter Based IVI demo :** +The target is `agl-ivi-demo-flutter`. + +```sh +$ time bitbake agl-ivi-demo-flutter +``` + +By default, the build process puts the resulting image in the Build Directory and further exporting that as `$IMAGE_NAME`. +Here is example for the NanoPC T6 board for Flutter Based demo: + +```sh +<build_dir>/tmp/deploy/images/rockchip-rk3588-nanopc-t6/agl-ivi-demo-flutter-rockchip-rk3588-nanopc-t6.rootfs.wic.xz + +$ export IMAGE_NAME=agl-ivi-demo-flutter-rockchip-rk3588-nanopc-t6.rootfs.wic.xz +``` + +**Qt Based IVI demo :** +The target is `agl-ivi-demo-qt`. + +```sh +$ time bitbake agl-ivi-demo-qt +``` + +By default, the build process puts the resulting image in the Build Directory and further exporting that as `$IMAGE_NAME`. +Here is example for the NanoPC T6 board for Qt Based demo: + +```sh +<build_dir>/tmp/deploy/images/rockchip-rk3588-nanopc-t6/agl-ivi-demo-flutter-rockchip-rk3588-nanopc-t6.rootfs.wic.xz + +$ export IMAGE_NAME=agl-ivi-demo-flutter-rockchip-rk3588-nanopc-t6.rootfs.wic.xz +``` + +## 4. Deploying the AGL Demo Image + +Deploying the AGL demo image consists of copying the image on a MicroSD card, +plugging the card into the NanoPC T6 board, and then booting the board. + +Follow these steps to copy the image to a MicroSD card and boot +the image on the NanoPC T6 board: + + 1. Plug your MicroSD card into your Build Host (i.e. the system that has your build output). + + 2. Extract the image into the SD card of NanoPC T6 : + + **NOTE:** For NanoPC T6, the image is at `<build-dir>/tmp/deploy/images/rockchip-rk3588-nanopc-t6/${IMAGE_NAME}`. + + Be sure you are root, provide the actual device name for *sdcard_device_name*, and the actual image name for *image_name*. + + ```sh + $ lsblk + $ sudo umount <sdcard_device_name> + $ xzcat ${IMAGE_NAME} | sudo dd of=<sdcard_device_name> bs=4M + $ sync + ``` + + **IMPORTANT NOTE:** Before re-writing any device on your Build Host, you need to + be sure you are actually writing to the removable MicroSD card and not some other + device. + Each computer is different and removable devices can change from time to time. + Consequently, you should repeat the previous operation with the MicroSD card to + confirm the device name every time you write to the card. + + To summarize this example so far, we have the following: + The first SATA drive is `/dev/sda` and `/dev/sdc` corresponds to the MicroSD card, and is also marked as a removable device.You can see this in the output of the `lsblk` command where "1" appears in the "RM" column for that device. + + +## Appendix. + +### Serial Debugging + +Initially, please refer to [friendlyelec NanoPC-T6 wiki page](https://wiki.friendlyelec.com/wiki/index.php/NanoPC-T6) at "3 Diagram, Layout and Dimension". The debug UART connector stay between audio out and 12V DC connector. + +The UART speed of NanoPC T6 is 1500000bps, not a 115200bps. That speed supports by FT234X, CH340G, and etc. + +Pin assign. + +| Pin# | Assignment | Description | +|---|---|---| +| 1 | GND | 0V | +| 2 | UART2_TX_M0_DEBUG | output | +| 3 | UART2_RX_M0_DEBUG | intput | + diff --git a/docs/01_Getting_Started/02_Building_AGL_Image/10_Building_for_Virtio.md b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/06_Building_for_Virtio.md index b8aefc7..b8aefc7 100644 --- a/docs/01_Getting_Started/02_Building_AGL_Image/10_Building_for_Virtio.md +++ b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/06_Building_for_Virtio.md diff --git a/docs/01_Getting_Started/02_Building_AGL_Image/11_Building_for_EC2_arm64_and_x86-64.md b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/07_Building_for_EC2_arm64_and_x86-64.md index 8e22274..8e22274 100644 --- a/docs/01_Getting_Started/02_Building_AGL_Image/11_Building_for_EC2_arm64_and_x86-64.md +++ b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/07_Building_for_EC2_arm64_and_x86-64.md diff --git a/docs/01_Getting_Started/02_Building_AGL_Image/images/1_EC2_dashboard.png b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/images/1_EC2_dashboard.png Binary files differindex 6a5341b..6a5341b 100644 --- a/docs/01_Getting_Started/02_Building_AGL_Image/images/1_EC2_dashboard.png +++ b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/images/1_EC2_dashboard.png diff --git a/docs/01_Getting_Started/02_Building_AGL_Image/images/2_start-instance-1.png b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/images/2_start-instance-1.png Binary files differindex 89e38ad..89e38ad 100644 --- a/docs/01_Getting_Started/02_Building_AGL_Image/images/2_start-instance-1.png +++ b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/images/2_start-instance-1.png diff --git a/docs/01_Getting_Started/02_Building_AGL_Image/images/3_start_instance-2.png b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/images/3_start_instance-2.png Binary files differindex 3387182..3387182 100644 --- a/docs/01_Getting_Started/02_Building_AGL_Image/images/3_start_instance-2.png +++ b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/images/3_start_instance-2.png diff --git a/docs/01_Getting_Started/02_Building_AGL_Image/images/RaspberryPi2-ModelB-debug-serial-cable.png b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/images/RaspberryPi2-ModelB-debug-serial-cable.png Binary files differindex f4374d0..f4374d0 100644 --- a/docs/01_Getting_Started/02_Building_AGL_Image/images/RaspberryPi2-ModelB-debug-serial-cable.png +++ b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/images/RaspberryPi2-ModelB-debug-serial-cable.png diff --git a/docs/01_Getting_Started/02_Building_AGL_Image/images/vbox-1.png b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/images/vbox-1.png Binary files differindex a43c111..a43c111 100644 --- a/docs/01_Getting_Started/02_Building_AGL_Image/images/vbox-1.png +++ b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/images/vbox-1.png diff --git a/docs/01_Getting_Started/02_Building_AGL_Image/images/vbox-2.png b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/images/vbox-2.png Binary files differindex d4e1dd0..d4e1dd0 100644 --- a/docs/01_Getting_Started/02_Building_AGL_Image/images/vbox-2.png +++ b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/images/vbox-2.png diff --git a/docs/01_Getting_Started/02_Building_AGL_Image/images/vbox-3.png b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/images/vbox-3.png Binary files differindex f6389f1..f6389f1 100644 --- a/docs/01_Getting_Started/02_Building_AGL_Image/images/vbox-3.png +++ b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/images/vbox-3.png diff --git a/docs/01_Getting_Started/02_Building_AGL_Image/images/vbox-4.png b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/images/vbox-4.png Binary files differindex 09f7f0b..09f7f0b 100644 --- a/docs/01_Getting_Started/02_Building_AGL_Image/images/vbox-4.png +++ b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/images/vbox-4.png diff --git a/docs/01_Getting_Started/02_Building_AGL_Image/images/vbox-5.png b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/images/vbox-5.png Binary files differindex 0c3f51b..0c3f51b 100644 --- a/docs/01_Getting_Started/02_Building_AGL_Image/images/vbox-5.png +++ b/docs/01_Getting_Started/02_Building_AGL_Image/06_Building_the_AGL_Image/images/vbox-5.png diff --git a/docs/01_Getting_Started/02_Building_AGL_Image/21_Available_Demo_Images.md b/docs/01_Getting_Started/02_Building_AGL_Image/07_Available_Demo_Images.md index 32ebb6c..32ebb6c 100644 --- a/docs/01_Getting_Started/02_Building_AGL_Image/21_Available_Demo_Images.md +++ b/docs/01_Getting_Started/02_Building_AGL_Image/07_Available_Demo_Images.md diff --git a/docs/01_Getting_Started/03_Build_and_Boot_guide_Profile/01_Instrument_Cluster_(IC-IVI_with_Container_isolation).md b/docs/01_Getting_Started/03_Build_and_Boot_guide_Profile/01_Instrument_Cluster_(IC-IVI_with_Container_isolation).md index 6463059..e535b90 100644 --- a/docs/01_Getting_Started/03_Build_and_Boot_guide_Profile/01_Instrument_Cluster_(IC-IVI_with_Container_isolation).md +++ b/docs/01_Getting_Started/03_Build_and_Boot_guide_Profile/01_Instrument_Cluster_(IC-IVI_with_Container_isolation).md @@ -33,10 +33,10 @@ table2. |:---:|:---:|:---:| | AGL RefHW | 1,2a,3a,3b | Tested. | | R-CarH3 Starter Kit with Kingfisher board | 1,2a,3a,3b | Not tested. | -| Raspberry Pi4 (4G or 8G) | 1,2a,3a,3b | Not tested. | -| NanoPC-T6 (4G or 8G or 16G) | 1,3a,3b | TODO. | +| NanoPC-T6 (4G or 8G or 16G) | 1,3a,3b | Tested by 16G board. | +| Raspberry Pi4/5 (4G or 8G) | 1,2a,3a,3b | Tested. | -We recommend to choice AGL RefHW or Raspberry Pi4 (4G or 8G). +We recommend to choice AGL RefHW or Raspberry Pi4 (4G or 8G) or NanoPC-T6 (4G or 8G or 16G) . **Typical Hardware Set is shown in Appendix.1. ** @@ -135,11 +135,22 @@ When your board is R- CarH3 Starter Kit with Kingfisher board. $ source meta-agl/scripts/aglsetup.sh -f -m h3ulcb-kf -b build-ic-h3kf agl-ic-container ``` +When your board is NanoPC T6 +```bash +$ source meta-agl/scripts/aglsetup.sh -f -m nanopc-t6 -b build-ic-nanopc-t6 agl-ic-container +``` + When your board is Raspberry Pi 4 ```bash $ source meta-agl/scripts/aglsetup.sh -f -m raspberrypi4 -b build-ic-rpi4 agl-ic-container ``` +When your board is Raspberry Pi 5 +```bash +$ source meta-agl/scripts/aglsetup.sh -f -m raspberrypi5 -b build-ic-rpi5 agl-ic-container +``` + + ### 2nd step: Build target image. In this time, you can build 1,2a and 3a. If you want to build 3b, @@ -196,11 +207,21 @@ When your board is R- CarH3 Starter Kit with Kingfisher board. $ source meta-agl/scripts/aglsetup.sh -f -m h3ulcb-kf -b build-ivi-h3kf agl-container-guest-demo agl-demo ``` +When your board is NanoPC T6 +```bash +$ source meta-agl/scripts/aglsetup.sh -f -m nanopc-t6 -b build-ic-nanopc-t6 agl-container-guest-demo agl-demo +``` + When your board is Raspberry Pi 4 ```bash $ source meta-agl/scripts/aglsetup.sh -f -m raspberrypi4 -b build-ivi-rpi4 agl-container-guest-demo agl-demo ``` +When your board is Raspberry Pi 5 +```bash +$ source meta-agl/scripts/aglsetup.sh -f -m raspberrypi5 -b build-ivi-rpi5 agl-container-guest-demo agl-demo +``` + #### 2nd step: Build target images. Type 3b integration need to build 3 image, these image are @@ -225,19 +246,31 @@ OUT_OF_TREE_CONTAINER_IMAGE_DEPLOY_DIR = "/path/to/deploy/" ex. When your board is AGL RefHW and your home directory is "/home/user/". ```bash -OUT_OF_TREE_CONTAINER_IMAGE_DEPLOY_DIR = "/home/user/AGL/octopus/build-ivi-refhw/tmp/deploy" +OUT_OF_TREE_CONTAINER_IMAGE_DEPLOY_DIR = "/home/user/AGL/master/build-ivi-refhw/tmp/deploy" ``` ex. When your board is R- CarH3 Starter Kit with Kingfisher board and your home directory is "/home/user/". ```bash -OUT_OF_TREE_CONTAINER_IMAGE_DEPLOY_DIR = "/home/user/AGL/octopus/build-ivi-h3kf/tmp/deploy" +OUT_OF_TREE_CONTAINER_IMAGE_DEPLOY_DIR = "/home/user/AGL/master/build-ivi-h3kf/tmp/deploy" +``` + +ex. When your board is NanoPC T6 board and your home directory is "/home/user/". + +```bash +OUT_OF_TREE_CONTAINER_IMAGE_DEPLOY_DIR = "/home/user/AGL/master/build-ivi-nanopc-t6/tmp/deploy" ``` ex. When your board is Raspberry Pi 4 and your home directory is "/home/user/". ```bash -OUT_OF_TREE_CONTAINER_IMAGE_DEPLOY_DIR = "/home/user/AGL/octopus/build-ivi-rpi4/tmp/deploy" +OUT_OF_TREE_CONTAINER_IMAGE_DEPLOY_DIR = "/home/user/AGL/master/build-ivi-rpi4/tmp/deploy" +``` + +ex. When your board is Raspberry Pi 5 and your home directory is "/home/user/". + +```bash +OUT_OF_TREE_CONTAINER_IMAGE_DEPLOY_DIR = "/home/user/AGL/master/build-ivi-rpi5/tmp/deploy" ``` #### 4th step: Build all in one image (3b). @@ -486,7 +519,6 @@ Upstream: | C | Crash IVI guest | | D | Qt IVI | | G | Flutter IVI | -| H | HTML5 IVI | # Reference webpages 1. [eLinux](https://elinux.org/R-Car/AGL) diff --git a/docs/01_Getting_Started/02_Building_AGL_Image/22_Available_KVM_Demo_Images.md b/docs/01_Getting_Started/03_Build_and_Boot_guide_Profile/02_KVM_Demo_Images.md index ce8bb44..ce8bb44 100644 --- a/docs/01_Getting_Started/02_Building_AGL_Image/22_Available_KVM_Demo_Images.md +++ b/docs/01_Getting_Started/03_Build_and_Boot_guide_Profile/02_KVM_Demo_Images.md diff --git a/docs/01_Getting_Started/03_Build_and_Boot_guide_Profile/02_Flutter_Instrument_Cluster_(qemu-x86).md b/docs/01_Getting_Started/03_Build_and_Boot_guide_Profile/03_Flutter_Instrument_Cluster_(qemu-x86).md index 1cb3899..1cb3899 100644 --- a/docs/01_Getting_Started/03_Build_and_Boot_guide_Profile/02_Flutter_Instrument_Cluster_(qemu-x86).md +++ b/docs/01_Getting_Started/03_Build_and_Boot_guide_Profile/03_Flutter_Instrument_Cluster_(qemu-x86).md diff --git a/docs/01_Getting_Started/03_Build_and_Boot_guide_Profile/03_IVI_Flutter_apps.md b/docs/01_Getting_Started/03_Build_and_Boot_guide_Profile/04_IVI_Flutter_apps.md index 6d6bd93..6d6bd93 100644 --- a/docs/01_Getting_Started/03_Build_and_Boot_guide_Profile/03_IVI_Flutter_apps.md +++ b/docs/01_Getting_Started/03_Build_and_Boot_guide_Profile/04_IVI_Flutter_apps.md diff --git a/docs/06_Component_Documentation/09_AGL_Demo_Control_Panel.md b/docs/06_Component_Documentation/09_AGL_Demo_Control_Panel.md index 2b99242..04f8e0a 100644 --- a/docs/06_Component_Documentation/09_AGL_Demo_Control_Panel.md +++ b/docs/06_Component_Documentation/09_AGL_Demo_Control_Panel.md @@ -25,6 +25,8 @@ $ source control-panel/bin/activate - Step 2 ```bash $ pip3 install -r requirements.txt +$ /usr/lib64/qt6/libexec/rcc -g python assets/res.qrc | sed '0,/PySide6/s//PyQt6/' > res_rc.py +# OR $ pyside6-rcc assets/res.qrc -o res_rc.py ``` ## Setup @@ -66,7 +68,7 @@ To set up the CAN interface between the Host system and the target machine(s) we You should now be able to send and receive CAN messages between the two machines using the vcan interface and cannelloni. -### 3. Configuration for Kuksa-val-server/ Kuksa databroker +### 3. Configuring the Demo Control Panel Run the `kuksa-val-server`/`databroker` on `0.0.0.0` by either restarting the server, editing `/etc/default/kuksa-databroker` or add the `agl-demo-preload` as a feature to your build of AGL. The server should be started using the `--address 0.0.0.0` argument. @@ -76,27 +78,46 @@ Now, you can create a custom configuration to save your specific preferences for ```python [default] -preferred-config=AGL-kuksa-val-server - -# [cutom-config-template] -# ip=<ip address> -# port=<port number> -# protocol=<ws|grpc> # ws/grpc -> kuksa-val-server, grpc -> databroker -# insecure=<true|false> -# cacert=<default|/path/to/CA.pem> -# token=<default|/path/to/token> -# tls_server_name=<name> - -[kuksa-val-server] -ip=localhost -port=8090 -protocol=ws -insecure=false -token=default -tls_server_name= +fullscreen-mode = true # launches app in fullscreen mode +hvac-enabled = true +steering-wheel-enabled = true +file-playback-enabled = true # if not, vcar simulator will be used instead +file-playback-path = # Add path to can_messages.txt file generated (Refer Step 4. Playback) +dbc-file-path = +can-interface = + +[keypad-feature] +enabled = true # If false, keypad UI is not shown +keypad-only = false # only Keypad page is shown +ip = +port = +keys-to-hide = 3 # hide keys by specifying 1,2,3,4 + +[vss-server] +ip = localhost +port = 55555 +protocol = grpc +insecure = False +token = default +cacert = default +tls_server_name = Server ``` -### 4. Start AGL Demo Control Panel +### 4. Playback (Demo mode) + +This mode is configured via the `config.ini` file as shown above, using the `file-playback-enabled` and `file-playback-enabled` fields. + +![Playback Demo](images/AGL-Demo-Control-Panel/PlaybackDemo.gif) + +The playback Mode runs in two ways: + +1. CARLA File Playback: In this mode, a pre-recorded sequence of CAN messages is used to feed values into the Demo apps. + +Follow the [CARLA with AGL](13_CARLA_with_AGL.md) steps to generate the **can_messages.txt** file, which is populated during a CARLA session. + +_Note_: While generating the playback file, it is recommended to run both **record_playback** and **carla_to_CAN** scripts with a python version supported by CARLA. + +### 5. Start AGL Demo Control Panel 1. To start the control panel ``` @@ -121,14 +142,10 @@ tls_server_name= - Reconnect - Page settings: Configure the visibility of pages and switch between CAN and Kuksa messages by using the toggle for the same. -![Layers_And_Extensions](images/AGL-Demo-Control-Panel/Settings_Page.png) - 1. Navigate to the desired page using the provided buttons at the bottom -| | -|---| -| ![Layers_And_Extensions](images/AGL-Demo-Control-Panel/IC.png) | - | | | |---|---| -| ![Layers_And_Extensions](images/AGL-Demo-Control-Panel/HVAC.png) | ![Layers_And_Extensions](images/AGL-Demo-Control-Panel/SC.png) | +| ![Layers_And_Extensions](images/AGL-Demo-Control-Panel/IC1.png) | ![Layers_And_Extensions](images/AGL-Demo-Control-Panel/IC2.png) | +| ![Layers_And_Extensions](images/AGL-Demo-Control-Panel/HVAC.png) | ![Layers_And_Extensions](images/AGL-Demo-Control-Panel/Keypad.png) | +| ![Layers_And_Extensions](images/AGL-Demo-Control-Panel/SC.png) | ![Layers_And_Extensions](images/AGL-Demo-Control-Panel/Settings_Page.png) |
\ No newline at end of file diff --git a/docs/06_Component_Documentation/10_agl_voice_agent_assistant.md b/docs/06_Component_Documentation/10_agl_voice_agent_assistant.md index 97bdd0d..e75382e 100644 --- a/docs/06_Component_Documentation/10_agl_voice_agent_assistant.md +++ b/docs/06_Component_Documentation/10_agl_voice_agent_assistant.md @@ -5,10 +5,15 @@ title: AGL Voice Agent / Assistant # AGL Voice Agent / Assistant # Introduction -A gRPC-based voice agent designed for Automotive Grade Linux (AGL). This service leverages GStreamer, Vosk, Snips, and RASA to seamlessly process user voice commands. It converts spoken words into text, extracts intents from these commands, and performs actions through the Kuksa interface. The voice agent is designed to be modular and extensible, allowing for the addition of new speech recognition and intent extraction models. +A gRPC-based voice agent designed for Automotive Grade Linux (AGL). This service leverages GStreamer, Vosk, Whisper AI, and Snips to process user voice commands seamlessly. It converts spoken words into text, extracts intents from these commands, and performs actions through the Kuksa interface. The voice agent is modular and extensible, allowing for the addition of new speech recognition and intent extraction models. Whisper AI is available for both online and offline modes, offering more accurate transcription compared to Vosk, though it may run slower in offline mode. + +Note: RASA NLU is currently not available as it is not supported by Python 3.12, the version used in AGL. + # Installation and Usage -Before we dive into the detailed components documentation, let's first take a look at how to install and use the voice agent service. All of the features of the voice agent service are encapsulated in the `meta-offline-voice-agent` sub-layer which can be found under `meta-agl-devel` layer. These features are currently part of the `master` branch only. This sub-layer can be built into the final image by using following commands: +Before diving into the detailed components documentation, let's first look at how to install and use the voice agent service. All of the features of the voice agent service are encapsulated in the `meta-offline-voice-agent` sub-layer, which can be found under the `meta-agl-devel layer`. These features are currently available in the `master` branch only. You can build this sub-layer into the final image using the following commands: + +### Building for QEMU x86-64 ```shell $ source master/meta-agl/scripts/aglsetup.sh -m qemux86-64 -b build-master agl-demo agl-devel agl-offline-voice-agent @@ -16,36 +21,73 @@ $ source agl-init-build-env $ bitbake agl-ivi-demo-flutter ``` -After the build is complete, you can run the final image using QEMU. Once the image is running, you can start the voice agent service by running the following command: +### Building for Raspberry Pi 5 + +Whisper AI does not work on the emulator; therefore, building and running on a physical device like the Raspberry Pi 5 is recommended. You can set up the build environment specifically for Raspberry Pi 5 using: + +```shell +$ source master/meta-agl/scripts/aglsetup.sh -m raspberrypi5 -b build-master agl-demo agl-devel agl-offline-voice-agent +$ source agl-init-build-env +$ bitbake agl-ivi-demo-flutter +``` + +<br> +**Note**: The voice assistant client is already integrated into the `flutter-ics-homescreen`, which is the default homescreen app for `agl-ivi-demo-flutter`. However, if you wish to build any other image, you can use the `flutter-voiceassistant` app, which is a standalone flutter-based client for the voice assistant. You can add `flutter-voiceassistant` to your build by adding the following line to the `conf/local.conf` file: + ```shell -$ voiceagent-service run-server --default +FEATURE_PACKAGES_agl-offline-voice-agent:append = " \ + flutter-voiceassistant \ +" ``` -The `--default` flag loads the voice agent service with default configuration. The default configuration file looks like this: +The voice agent service will automatically start on startup with the default configuration located at +`/etc/default/voice-agent-config.ini.` + + +The default configuration file looks like this: ```ini [General] base_audio_dir = /usr/share/nlu/commands/ -stt_model_path = /usr/share/vosk/vosk-model-small-en-us-0.15/ +vosk_model_path = /usr/share/vosk/vosk-model-small-en-us-0.15/ +whisper_model_path = /usr/share/whisper/tiny.pt +whisper_cpp_path = /usr/bin/whisper-cpp +whisper_cpp_model_path = /usr/share/whisper-cpp/models/tiny.en.bin wake_word_model_path = /usr/share/vosk/vosk-model-small-en-us-0.15/ snips_model_path = /usr/share/nlu/snips/model/ channels = 1 sample_rate = 16000 bits_per_sample = 16 -wake_word = hello auto +wake_word = hey automotive server_port = 51053 server_address = 127.0.0.1 rasa_model_path = /usr/share/nlu/rasa/models/ rasa_server_port = 51054 -rasa_detached_mode = 0 +rasa_detached_mode = 1 base_log_dir = /usr/share/nlu/logs/ store_voice_commands = 0 +online_mode = 1 +online_mode_address = online-whisper-asr-service-address +online_mode_port = online-whisper-asr-service-port +online_mode_timeout = 15 +mpd_ip = 127.0.0.1 +mpd_port = 6600 [Kuksa] ip = 127.0.0.1 -port = 8090 -protocol = ws -insecure = True -token = /usr/lib/python3.10/site-packages/kuksa_certificates/jwt/super-admin.json.token +port = 55555 +protocol = grpc +insecure = 0 +token = /usr/lib/python3.12/site-packages/kuksa_certificates/jwt/super-admin.json.token +tls_server_name = Server + +[VSS] +hostname = localhost +port = 55555 +protocol = grpc +insecure = 0 +token_filename = /etc/xdg/AGL/agl-vss-helper/agl-vss-helper.token +ca_cert_filename = /etc/kuksa-val/CA.pem +tls_server_name = Server [Mapper] intents_vss_map = /usr/share/nlu/mappings/intents_vss_map.json @@ -56,8 +98,6 @@ Most of the above configuration variable are self explanatory, however, I'll div - **`store_voice_commands`**: This variable is used to enable/disable the storage of voice commands. If this variable is set to `1`, then the voice commands will be stored in the `base_audio_dir` directory. The voice commands are stored in the following format: `base_audio_dir/<timestamp>.wav`. The `timestamp` is the time at which the voice command was received by the voice agent service. -- **`rasa_detached_mode`**: This variable is used to enable/disable the detached mode for the RASA NLU engine. If this variable is set to `1`, then the RASA NLU engine will be run in detached mode, i.e. the voice agent service won't run it and will assume that RASA is already running. This is useful when you want to run the RASA NLU engine on a separate machine. If this variable is set to `0`, then the RASA NLU engine will be run as a sub process of the voice agent service. - - **`intents_vss_map`**: This is the path to the file that actually maps the intent output from our intent engine to the VSS signal specification. This file is in JSON format and contains the mapping for all the intents that we want to support. The default file looks like this: ```json @@ -70,18 +110,18 @@ Most of the above configuration variable are self explanatory, however, I'll div }, "HVACFanSpeed": { "signals": [ - "Vehicle.Cabin.HVAC.Station.Row1.Left.FanSpeed", - "Vehicle.Cabin.HVAC.Station.Row1.Right.FanSpeed", - "Vehicle.Cabin.HVAC.Station.Row2.Left.FanSpeed", - "Vehicle.Cabin.HVAC.Station.Row2.Right.FanSpeed" + "Vehicle.Cabin.HVAC.Station.Row1.Driver.FanSpeed", + "Vehicle.Cabin.HVAC.Station.Row1.Passenger.FanSpeed", + "Vehicle.Cabin.HVAC.Station.Row2.Driver.FanSpeed", + "Vehicle.Cabin.HVAC.Station.Row2.Passenger.FanSpeed" ] }, "HVACTemperature": { "signals": [ - "Vehicle.Cabin.HVAC.Station.Row1.Left.Temperature", - "Vehicle.Cabin.HVAC.Station.Row1.Right.Temperature", - "Vehicle.Cabin.HVAC.Station.Row2.Left.Temperature", - "Vehicle.Cabin.HVAC.Station.Row2.Right.Temperature" + "Vehicle.Cabin.HVAC.Station.Row1.Driver.Temperature", + "Vehicle.Cabin.HVAC.Station.Row1.Passenger.Temperature", + "Vehicle.Cabin.HVAC.Station.Row2.Driver.Temperature", + "Vehicle.Cabin.HVAC.Station.Row2.Passenger.Temperature" ] } } @@ -142,21 +182,27 @@ $ voiceagent-service run-server --config path/to/config.ini One thing to note here is that all the directory paths in the configuration file should be absolute and always end with a `/`. # High Level Architecture -![Voice_Agent_Architecture](images/agl-voice-agent/AGL_Offline_VoiceAgent_(High_Level_Architecture).png) +![Voice_Agent_Architecture](images/agl-voice-agent/AGL_VoiceAgent_updated_architecture.png) # Components - Voice Agent Service + - Whisper AI - Vosk Kaldi - Snips - RASA - Voice Assistant App # Voice Agent Service -The voice agent service is a gRPC-based service that is responsible for converting spoken words into text, extracting intents from these commands, and performing actions through the Kuksa interface. The service is composed of three main components: Vosk Kaldi, RASA, and Snips. +The voice agent service is a gRPC-based service that is responsible for converting spoken words into text, extracting intents from these commands, and performing actions through the Kuksa interface. The service is composed of three main components: Whisper AI, Vosk Kaldi, RASA, and Snips. + +## Whisper AI +Whisper AI is a versatile speech recognition model developed by OpenAI. It is designed to convert spoken words into text with high accuracy and supports multiple languages out of the box. Whisper AI offers various pre-trained models, each optimized for different hardware capabilities and performance requirements. The current voice agent service uses Whisper AI for **speech recognition**. In offline mode, Whisper AI processes speech locally on the device, providing an accurate transcription of user commands. While Whisper AI may be slightly slower than other models like Vosk, it offers higher accuracy, especially for complex and noisy inputs. It does not currently support wake word detection, so it is used alongside other tools like Vosk for a comprehensive voice assistant solution. ## Vosk Kaldi Vosk Kaldi is a speech recognition toolkit that is based on Kaldi and Vosk. It is used to convert spoken words into text. It provides us with some official pre-trained models for various popular languages. We can also train our own models using the Vosk Kaldi toolkit. The current voice agent service requires two different models to run, one for **wake-word detection** and one for **speech recognition**. The wake word detection model is used to detect when the user says the wake word, which is "Hey Automotive" by default, we can easily change the default wake word by modifying the config file. The speech recognition model is used to convert the user's spoken words into text. +**Note:** The current **wake word** is set to **"Hey Automotive,"** but you can change it to any wake word of your choice. However, if you plan to use a more specific wake word, you may need to train the Vosk wake word model yourself, as the pre-trained models may not be optimized for your specific wake word. + ## Snips Snips NLU (Natural Language Understanding) is a Python based Intent Engine that allows to extract structured information from sentences written in natural language. The NLU engine first detects what the intention of the user is (a.k.a. intent), then extracts the parameters (called slots) of the query. The developer can then use this to determine the appropriate action or response. Our voice agent service uses either Snips or RASA to extract intents from the user's spoken commands. @@ -203,6 +249,9 @@ To set up and run the Snips NLU Intent Engine, follow these steps: - The Snips NLU engine is not very accurate as compared to RASA, however, its extremely lightweight and really fast. ## RASA + +**Note:** : RASA is currently not included into the build as it is not supported by Python 3.12, the version used in AGL. + RASA is an open-source machine learning framework for building contextual AI assistants and chatbots. It is based on Python and TensorFlow. It is used to extract intents from the user's spoken commands. The RASA NLU engine is trained on a dataset that contains intents, entities, and sample utterances. The RASA NLU engine is used to parse user queries and extract the intent and relevant entities for further processing. It is recommended to take a brief look at [RASA Official Documentation](https://rasa.com/docs/rasa/) to get a better understanding of how RASA works. @@ -279,8 +328,19 @@ To set up and run the RASA NLU Intent Engine, follow these steps: - The underlying AI arhictecture of the RASA NLU is extensible and changeable thanks to the TensorFlow backend. - The RASA NLU engine is very accurate as compared to Snips, however, its heavy and slightly slow. -# Voice Assistant App -The voice assistant app is a flutter based application made for Automotive Grade Linux (AGL). It is responsible for interacting with the voice agent service for user voice command recognition, intent extraction, and command execution. It also receives the response from the voice agent service and displays it on the screen. Some app UI screenshots are attached below. +# Voice Assistant Client + +## flutter-ics-homescreen Integration +The voice assistant client is integrated into the `flutter-ics-homescreen` app, which can interact with the voice agent service to process user voice commands. + +| ![Flutter-ics-homescreen_1](images/agl-voice-agent/flutter-ics-homescreen-voice-assistant-1.png) | ![Flutter-ics-homescreen_2](images/agl-voice-agent/flutter-ics-homescreen-voice-assistant-2.png) | +|:--:|:--:| + +| ![Flutter-ics-homescreen_1](images/agl-voice-agent/flutter-ics-homescreen-voice-assistant-3.png) | ![Flutter-ics-homescreen_2](images/agl-voice-agent/flutter-ics-homescreen-voice-assistant-settings.png) | +|:--:|:--:| + +## Voice Assistant App +The voice assistant app is a standalone, Flutter-based client designed for Automotive Grade Linux (AGL). It is responsible for interacting with the voice agent service for user voice command recognition, intent extraction, and command execution. It also receives the response from the voice agent service and displays it on the screen. Some app UI screenshots are attached below. -![Voice_Agent_App_1](images/agl-voice-agent/voice-assistant-flutter-1.png) -![Voice_Agent_App_2](images/agl-voice-agent/voice-assistant-flutter-2.png) +| ![Voice_Agent_App_1](images/agl-voice-agent/voice-assistant-updated-1.png) | ![Voice_Agent_App_2](images/agl-voice-agent/voice-assistant-updated-2.png) | +|:--:|:--:|
\ No newline at end of file diff --git a/docs/06_Component_Documentation/13_CARLA_with_AGL.md b/docs/06_Component_Documentation/13_CARLA_with_AGL.md index 075da80..7e699e0 100644 --- a/docs/06_Component_Documentation/13_CARLA_with_AGL.md +++ b/docs/06_Component_Documentation/13_CARLA_with_AGL.md @@ -1,13 +1,21 @@ --- title: CARLA with AGL --- -# CARLA with AGL (WIP) +# CARLA with AGL + +![Playback Demo](images/AGL-Demo-Control-Panel/CARLA_CAN.gif) + +As part of the [agl-demo-control-panel](https://gerrit.automotivelinux.org/gerrit/admin/repos/src/agl-demo-control-panel,general) application, `carla_to_CAN` and `record_playback.py` scripts provide a way to record CAN messages generated during a CARLA simulation. The `can_messages.txt` playback file generated, can then be used to to playback the messages via CLI or GUI. + +![Playback Demo](images/AGL-Demo-Control-Panel/PlaybackDemo.gif) ## Setting up CARLA You can follow the steps provided in the [CARLA documentation](https://carla.readthedocs.io/en/latest/start_quickstart/#carla-installation) for installing CARLA. -We recommend using the [latest release](https://github.com/carla-simulator/carla/releases/), and using the supported Python version to run the `carla_to_CAN.py` Script. +We recommend using the [CARLA V0.9.15](https://github.com/carla-simulator/carla/releases/tag/0.9.15), and using the supported Python version to run the `carla_to_CAN.py` script (Other releases have not been validated). + +_Note_: Use a version of python compatible with CARLA to create the venv **(Python 3.9 tested with CARLA V0.9.15)** 1. Running the CARLA Server @@ -43,6 +51,29 @@ We recommend using the [latest release](https://github.com/carla-simulator/carla # Start the manual_control.py script $ python3 manual_control.py ``` +_Tip_: If facing issues running the `manual_control.py` script, you may try removing `numpy` version from `requirements.txt` and comment out line `385` from the script. +```python +. +. +. + +class KeyboardControl(object): + """Class that handles keyboard input.""" + def __init__(self, world, start_in_autopilot): + self._autopilot_enabled = start_in_autopilot + self._ackermann_enabled = False + self._ackermann_reverse = 1 + if isinstance(world.player, carla.Vehicle): + self._control = carla.VehicleControl() + self._ackermann_control = carla.VehicleAckermannControl() + self._lights = carla.VehicleLightState.NONE + # world.player.set_autopilot(self._autopilot_enabled) <<------ # disable autopilot + world.player.set_light_state(self._lights) + elif isinstance(world.player, carla.Walker): +. +. +. +``` ## Converting CARLA data into CAN @@ -56,13 +87,14 @@ To access these scripts, clone the [AGL Demo Control Panel](https://gerrit.autom ```bash # Move to the Scripts directory -$ cd /path/to//agl-demo-control-panel/Scripts +$ cd /path/to/agl-demo-control-panel/ # Fetch the agl-vcar.dbc file -$ wget -nd -c "https://git.automotivelinux.org/src/agl-dbc/plain/agl-vcar.dbc" +$ wget -nd -c -P Scripts "https://git.automotivelinux.org/src/agl-dbc/plain/agl-vcar.dbc" +$ cd Scripts/ ``` -Create a Python virtual environment and resolve dependencies +Create a Python (3.9) virtual environment and resolve dependencies. ```bash $ python3 -m venv carlavenv $ source carlavenv/bin/activate @@ -75,9 +107,9 @@ $ ./vcan.sh 1. Converting CARLA Data into CAN ```bash - $ python -u carla_to_CAN.py + $ python -u carla_to_CAN.py --interface vcan0 # OR - $ python -u carla_to_CAN.py --host <carla_server_ip> --port <carla_server_port> + $ python -u carla_to_CAN.py --interface vcan0 --host <carla_server_ip> --port <carla_server_port> ``` 2. Recording and Playback of CAN messages @@ -94,7 +126,6 @@ $ ./vcan.sh - 2: Replays captured CAN messages - 3: Exit - ## CAN interface to AGL Demo Platform To use the **`carla_to_CAN.py`** and **`record_playback.py`** scripts to send messages on the CAN interface, one can use the CAN bus or use CAN over Ethernet using **cannelloni**. diff --git a/docs/06_Component_Documentation/images/AGL-Demo-Control-Panel/CARLA_CAN.gif b/docs/06_Component_Documentation/images/AGL-Demo-Control-Panel/CARLA_CAN.gif Binary files differnew file mode 100644 index 0000000..4e94fee --- /dev/null +++ b/docs/06_Component_Documentation/images/AGL-Demo-Control-Panel/CARLA_CAN.gif diff --git a/docs/06_Component_Documentation/images/AGL-Demo-Control-Panel/Dashboard.png b/docs/06_Component_Documentation/images/AGL-Demo-Control-Panel/Dashboard.png Binary files differindex e31024e..3477dbe 100644 --- a/docs/06_Component_Documentation/images/AGL-Demo-Control-Panel/Dashboard.png +++ b/docs/06_Component_Documentation/images/AGL-Demo-Control-Panel/Dashboard.png diff --git a/docs/06_Component_Documentation/images/AGL-Demo-Control-Panel/HVAC.png b/docs/06_Component_Documentation/images/AGL-Demo-Control-Panel/HVAC.png Binary files differindex c4db3b2..420f5b2 100644 --- a/docs/06_Component_Documentation/images/AGL-Demo-Control-Panel/HVAC.png +++ b/docs/06_Component_Documentation/images/AGL-Demo-Control-Panel/HVAC.png diff --git a/docs/06_Component_Documentation/images/AGL-Demo-Control-Panel/IC.png b/docs/06_Component_Documentation/images/AGL-Demo-Control-Panel/IC.png Binary files differdeleted file mode 100644 index 72555dc..0000000 --- a/docs/06_Component_Documentation/images/AGL-Demo-Control-Panel/IC.png +++ /dev/null diff --git a/docs/06_Component_Documentation/images/AGL-Demo-Control-Panel/IC1.png b/docs/06_Component_Documentation/images/AGL-Demo-Control-Panel/IC1.png Binary files differnew file mode 100644 index 0000000..e93e6b8 --- /dev/null +++ b/docs/06_Component_Documentation/images/AGL-Demo-Control-Panel/IC1.png diff --git a/docs/06_Component_Documentation/images/AGL-Demo-Control-Panel/IC2.png b/docs/06_Component_Documentation/images/AGL-Demo-Control-Panel/IC2.png Binary files differnew file mode 100644 index 0000000..500c760 --- /dev/null +++ b/docs/06_Component_Documentation/images/AGL-Demo-Control-Panel/IC2.png diff --git a/docs/06_Component_Documentation/images/AGL-Demo-Control-Panel/Keypad.png b/docs/06_Component_Documentation/images/AGL-Demo-Control-Panel/Keypad.png Binary files differnew file mode 100644 index 0000000..04f20f5 --- /dev/null +++ b/docs/06_Component_Documentation/images/AGL-Demo-Control-Panel/Keypad.png diff --git a/docs/06_Component_Documentation/images/AGL-Demo-Control-Panel/PlaybackDemo.gif b/docs/06_Component_Documentation/images/AGL-Demo-Control-Panel/PlaybackDemo.gif Binary files differnew file mode 100644 index 0000000..d2e796f --- /dev/null +++ b/docs/06_Component_Documentation/images/AGL-Demo-Control-Panel/PlaybackDemo.gif diff --git a/docs/06_Component_Documentation/images/agl-voice-agent/AGL_VoiceAgent_updated_architecture.png b/docs/06_Component_Documentation/images/agl-voice-agent/AGL_VoiceAgent_updated_architecture.png Binary files differnew file mode 100644 index 0000000..b302a45 --- /dev/null +++ b/docs/06_Component_Documentation/images/agl-voice-agent/AGL_VoiceAgent_updated_architecture.png diff --git a/docs/06_Component_Documentation/images/agl-voice-agent/flutter-ics-homescreen-voice-assistant-1.png b/docs/06_Component_Documentation/images/agl-voice-agent/flutter-ics-homescreen-voice-assistant-1.png Binary files differnew file mode 100644 index 0000000..ecd5c04 --- /dev/null +++ b/docs/06_Component_Documentation/images/agl-voice-agent/flutter-ics-homescreen-voice-assistant-1.png diff --git a/docs/06_Component_Documentation/images/agl-voice-agent/flutter-ics-homescreen-voice-assistant-2.png b/docs/06_Component_Documentation/images/agl-voice-agent/flutter-ics-homescreen-voice-assistant-2.png Binary files differnew file mode 100644 index 0000000..7a12045 --- /dev/null +++ b/docs/06_Component_Documentation/images/agl-voice-agent/flutter-ics-homescreen-voice-assistant-2.png diff --git a/docs/06_Component_Documentation/images/agl-voice-agent/flutter-ics-homescreen-voice-assistant-3.png b/docs/06_Component_Documentation/images/agl-voice-agent/flutter-ics-homescreen-voice-assistant-3.png Binary files differnew file mode 100644 index 0000000..2e2b5d1 --- /dev/null +++ b/docs/06_Component_Documentation/images/agl-voice-agent/flutter-ics-homescreen-voice-assistant-3.png diff --git a/docs/06_Component_Documentation/images/agl-voice-agent/flutter-ics-homescreen-voice-assistant-settings.png b/docs/06_Component_Documentation/images/agl-voice-agent/flutter-ics-homescreen-voice-assistant-settings.png Binary files differnew file mode 100644 index 0000000..ebc5007 --- /dev/null +++ b/docs/06_Component_Documentation/images/agl-voice-agent/flutter-ics-homescreen-voice-assistant-settings.png diff --git a/docs/06_Component_Documentation/images/agl-voice-agent/voice-assistant-updated-1.png b/docs/06_Component_Documentation/images/agl-voice-agent/voice-assistant-updated-1.png Binary files differnew file mode 100644 index 0000000..c32b395 --- /dev/null +++ b/docs/06_Component_Documentation/images/agl-voice-agent/voice-assistant-updated-1.png diff --git a/docs/06_Component_Documentation/images/agl-voice-agent/voice-assistant-updated-2.png b/docs/06_Component_Documentation/images/agl-voice-agent/voice-assistant-updated-2.png Binary files differnew file mode 100644 index 0000000..1d70e6c --- /dev/null +++ b/docs/06_Component_Documentation/images/agl-voice-agent/voice-assistant-updated-2.png |