installazione openvino su raspberry pi 3

IN realtà è preferibile seguire la seguente procedura, come descritto al link Installing OpenVino for Movidius NCS2 on Raspberry Pi 4 – Intel Community

Cross-Compiling OpenVINO™ Toolkit and NCS2 Plugin Using… (intel.com)

Quando si giunge alla fase in cui è necessario installare docker, seguire la seguente guida:

Install Docker Engine on Raspbian | Docker Documentation

Nella documentazione di cui sopra, c’è un piccolo punto da correggere. Quando fa riferimento alle righe da cambiare in un file sh, in particolare, le seguenti:

77 checkSrcTree $OPENCV_HOME https://github.com/opencv/opencv.git 4.5.5-openvino-2022.1

Va aggiunto uno zero in fondo, in quanto non esistono tags di quella libreria con quel nome. Quindi la stringa corretta è la seguente:

77 checkSrcTree $OPENCV_HOME https://github.com/opencv/opencv.git 4.5.5-openvino-2022.1.0

La compilazione delle demos di model_zoo

Per compilare le demos contenute in openvino_dist/extras/open_model_zoo/demos si deve lanciare il solito openvino_dist/setupvars.sh e poi andare nel direttorio demos e lanciare il comando:

./build_demos.sh

Per farlo, c’è bisogno di scaricare il progetto thirdparty, che stranamente non compare nel progetto base.

Questo si scarica andando nel direttorio vuoto demos/thirdparty e lanciando:

git clone https://github.com/gflags/gflags.git

che è un progetto che è in dipendenza da demos.

Si può compilare anche un solo progetto demos, indicando il parametro –target=”nomeprogetto”.

Per eseguire le demos realizzate in python è necessario preliminarmente lanciare il seguente comando:

pip install <omz_dir>/demos/common/python

e successivamente installare i seguenti pacchetti:

sudo apt install libatlas-base-dev
sudo pip3 install pybind11
pip3 install scipy

Prima di eseguire i comandi python ricordarsi di eseguire il source seguente:
source (home)/openvino_dist/setupvars.sh

Per installazione su sistemi diversi da raspberry, si può seguire la guida ufficiale, come di seguito.

Per l’installazione è necessario usare pip.

Step 1: Create virtual environment

python -m venv openvino_env

Step 2: Activate virtual environment

source openvino_env\bin\activate

Step 3: Upgrade pip to latest version

python -m pip install --upgrade pip

Step 4: Download and install the package

pip install openvino-dev==2022.3.1

Vedere le istruzioni alternative in:

Install OpenVINO™ toolkit for Raspbian* OS — OpenVINO™ documentation — Version(2021.4)

La pagina con istruzioni alternative (a mo’ di tutorial) si trova qui:

OpenVINO, OpenCV, and Movidius NCS on the Raspberry Pi – PyImageSearch

Mancano i file per eseguire il tutorial, ma si possono eseguire altri tutorial presi in altre pagine.

Per caricare i models di openvino, fare riferimento alla seguente pagina:

Install OpenVINO™ Runtime for Raspbian OS — OpenVINO™ documentation — Version(2022.1)

Per installare il development tools, usare il seguente link:

openvino-dev · PyPI

Quando si esegue il comando

pip install openvino-dev[tensorflow2,mxnet,caffe]

questo non funziona a causa di un issue (PyPI .tar.gz missing editdistance/bycython.pyx · Issue #105 · roy-ht/editdistance (github.com)), con la libreria editdistance, che nella versione 0.6.2 non contiene il file editdistance/bycython.pyx

A questo punto, procedere con l’installazione manuale della libreria editdistance, scaricando il file che si trova nelle Releases (che sono misteriosamente corrette), al seguente link:

Release Release v0.6.2 · roy-ht/editdistance (github.com)

e poi lanciare pip install file.tgz

Composer: auto update from github

Quando si crea un repository dentro packagist.org è necessario tenerlo aggiornato con le modifiche apportate su github. In caso contrario le modifiche non verranno apportate ai progetti che utilizzano la libreria packagist.

Per farlo è sufficiente inserire un webhook in github.

Le istruzioni dettagliate si possono trovare alla pagina: Packagist .

La via semplificata è, tuttavia, quella indicata nei passaggi seguenti:

You can configure a GitHub webhook manually by using the following values:

  • Payload URL: https://packagist.org/api/github?username=pzavoli
  • Content Type: application/json
  • Secret: your Packagist API Token
  • Which events? Just the push event is enough.

Il token da inserire nel webhook si trova alla pagina: Packagist, cliccando “Your Api Token”.

Per arrivare al webhook, in github, è sufficiente accedere al proprio repository e cliccare la rotellina “Settings”.

All’interno della pagina si trova il bottone Web Hooks.

Creare un nuovo repository per Composer

Per il corretto funzionamento di progetti php è necessario, normalmente, adoperare librerie esterne.

Per farlo si utilizza sovente composer.

Questo è un gestore di dipendenze di librerie che consente di indicare quali librerie utilizzare e il programma composer le scaricherà in automatico dal proprio repository.

Le librerie vengono indicate in un file chiamato composer.json.

Un esempio di questo file è il seguente, utilizzato in un progetto con yii2:

{
    "name": "yiisoft/yii2-app-advanced",
    "description": "Yii 2 Advanced Project Template",
    "keywords": ["yii2", "framework", "advanced", "project template"],
    "homepage": "https://www.yiiframework.com/",
    "type": "project",
    "license": "BSD-3-Clause",
    "support": {
        "issues": "https://github.com/yiisoft/yii2/issues?state=open",
        "forum": "https://www.yiiframework.com/forum/",
        "wiki": "https://www.yiiframework.com/wiki/",
        "irc": "irc://irc.freenode.net/yii",
        "source": "https://github.com/yiisoft/yii2"
    },
    "minimum-stability": "stable",
    "require": {
        "php": ">=7.4.0",
        "yiisoft/yii2": "~2.0.45",
        "yiisoft/yii2-bootstrap5": "~2.0.2",
        "yiisoft/yii2-symfonymailer": "~2.0.3",
        "yiisoft/yii2-jui": "~2.0.0",
        "pzavoli71/yii2-widget-datetimepicker": "*",
        "yiisoft/yii2-bootstrap5": "@dev"
    },
    "require-dev": {
        "yiisoft/yii2-debug": "~2.1.0",
        "yiisoft/yii2-gii": "~2.2.0",
        "yiisoft/yii2-faker": "~2.0.0",
        "phpunit/phpunit": "~9.5.0",
        "codeception/codeception": "^5.0.0 || ^4.0",
        "codeception/lib-innerbrowser": "^3.0 || ^1.1",
        "codeception/module-asserts": "^3.0 || ^1.1",
        "codeception/module-yii2": "^1.1",
        "codeception/module-filesystem": "^2.0 || ^1.1",
        "codeception/verify": "^2.2",
        "symfony/browser-kit": "^6.0 || >=2.7 <=4.2.4",
        "yiisoft/yii2-jui": "~2.0.0",
        "pzavoli71/yii2-widget-datetimepicker": "dev-master",   
        "kartik-v/yii2-datecontrol": "dev-master",
        "kartik-v/yii2-widgets": "@dev",
        "kartik-v/yii2-widget-datepicker": "dev-master",
        "twbs/bootstrap-icons":"*" ,        
        "yiisoft/yii2-bootstrap5": "@dev"
    },
    "autoload-dev": {
        "psr-4": {
            "common\\tests\\": ["common/tests/", "common/tests/_support"],
            "backend\\tests\\": ["backend/tests/", "backend/tests/_support"],
            "frontend\\tests\\": ["frontend/tests/", "frontend/tests/_support"]
        }
    },
    "config": {
        "allow-plugins": {
            "yiisoft/yii2-composer" : true
        },
        "process-timeout": 1800,
        "fxp-asset": {
            "enabled": false
        }
    },
    "repositories": [
        {
            "type": "composer",
            "url": "https://asset-packagist.org"
        }
    ]
}

La parte più importante è quella indicata con “require” che contiene l’elenco delle librerie con le relative versioni.

Può capitare di dover utilizzare una libreria non fornita, oppure di doverne utilizzare una modificata da una libreria esistente.

Composer preleva le librerie da progetti github, pertanto se si deve modificare una libreria già esistente è necessario effettuarne un fork.

Nel repository github corrispondente è necessario inserire un file denominato composer.json, così fatto:

{
    "name": "pzavoli71/yii2-widget-datetimepicker",
    "description": "An updated version of kartik-v datetimepicker to enable dd/mm/yyyy hh:ii format datetime",
    "keywords": [
        "yii2",
        "extension",
        "widget",
        "select2",
        "form",
        "datetime",
        "picker",
        "jquery",
        "plugin"
    ],
    "homepage": "https://github.com/pzavoli71/yii2-widget-datetimepicker",
    "type": "yii2-extension",
    "license": "BSD-3-Clause",
    "authors": [
        {
            "name": "Paride Zavoli",
            "email": "paride.zavoli71@gmail.com",
            "homepage": "https://fattodate.org"
        }
    ],
    "require": {
        "kartik-v/yii2-krajee-base": ">=3.0.4"
    },
    "autoload": {
        "psr-4": {
            "kartik\\datetime\\": "src"
        }
    },
    "extra": {
        "branch-alias": {
            "dev-master": "1.5.x-dev"
        }
    }
}

Successivamente si deve caricare il progetto nuovo nel repository di composer che si trova nel sito Packagist.org.

Qui è necessario registrarsi e successivamente premere su https://packagist.org/packages/submit indicando nel campo di testo il path del progetto github che contiene la libreria e il file composer.json.

A quel punto il progetto è pronto per essere utilizzato come libreria.

Reset password di root di MySql

Ogni tanto capita di dimenticare la password di root di MySql.

In tal caso viene a mancare la possibilità di accedere al server per fare manutenzione, restore, backup dei database.

Per ripristinare una password di accesso come root è necessario effettuare le seguenti operazioni:

  1. Scrivere il seguente comando in un file di testo e salvarlo in un file denominato mysql-init.txt:
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
  2. Chiudere il servizio MySql dalla maschera dei servizi di windows.
  3. Quando il server viene eseguito potrebbe utilizzare un file di dati non standard. In tal caso è necessario conoscere la posizione di questo file altrimenti il processo mysqld non si avvierà. La posizione del file si può trovare guardando il comando che viene lanciato dal servizio. Se questo comando contiene il parametro —defaults-file= allora è necessario copiare la posizione di questo file prima di eseguire il comando successivo.
  4. Aprire il command prompt in modalità “Esegui come amministratore“.
  5. Eseguire il comando seguente impostando i valori dei due file come da istruzioni precedenti:
    mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --init-file=c:\tmp\mysql-init.txt
  6. Fermare l’esecuzione del comando con CTRL+C.
  7. A questo punto il server è pronto per essere eseguito con il nuovo utente di root.

Creazione progetto yii2

Per la creazione di un nuovo progetto yii2 si può utilizzare il comodo comando composer.

Il problema è che composer funziona, attualmente, con la versione di php fino alla 8.1, pertanto se qualcuno avesse installato la versione più recente, questa non funzionerà per la creazione di un nuovo progetto.

Si può ovviare a questo facendo in modo di lanciare composer con una versione di php precedente.

Per farlo, è sufficiente posizionarsi all’interno del direttorio dove si intende generare il progetto e poi dare il seguente comando:

c:\php\php7.4.33\php.exe c:\ProgramData\ComposerSetup\bin\composer.phar create-project yiisoft/yii2-app-advanced advanced

intendendo che php sia nel direttorio c:\php\php7.4.33.

Questo farà sì che composer usi la versione precedente di php e il tutto funzionerà.

p.s. un comando per aggiornare la versione di composer è il seguente:

composer self-update --1

Per ripristinare composer alla nuova versione:

composer self-update --2

Per creare un progetto secondo nuovi std si può usare come template di progetto il seguente:

composer create-project pzavoli71/yii2-app-advanced -s dev provina

il quale creerà il progetto nel direttorio “provina”.

Una volta eseguito il comando ci si dovrà spostare nel direttorio “provina” e lanciare il seguente comando:

php init

il quale si limiterà a generare alcuni file di servizio che non vengono salvati nel repository (params-local.php, ecc.) che andranno configurati per l’accesso al db,per la e-mail, ecc.

Prima di lanciare il comando che creerà le tabelle di base nel DB è necessario assicurarsi che quando si lancino comandi console, questi non utilizzino parametri legati al WEB. In particolare, è necessario rimuovere il richiamo al main.php dentro al file yii, commentando la relativa riga:

$config = yii\helpers\ArrayHelper::merge(
//require DIR . '/common/config/main.php',
require DIR . '/common/config/main-local.php',
require DIR . '/console/config/main.php',
require DIR . '/console/config/main-local.php'
);

Infatti nel file main.php c’è solitamente il parametro che configura la request, che in modalità console non funziona:

    'request' => [
        'parsers' => [
            'multipart/form-data' => 'yii\web\MultipartFormDataParser'
        ],
    ],

Ora si possono creare le tabelle di base che serviranno per la gestione degli utenti e dei permessi, lanciando il comando:

php yii migrate

il quale si limiterà a cercare comandi nel direttorio console/migrations e li lancerà uno per volta.

Un po’ di scherzosa allegria

Per un po’ di sano divertimento vi consiglio di visitare la pagina YouTube di Marco, mio figlio.

Nel video seguente, Marco sfida l’Atalanta, squadra di serie A, con la ben più modesta, ma mitica, F.C. San Marino.

Come andrà a finire?

Fifa 23, Marco prova l’impossibile: Atalanta contro San Marino in Coppa Italia – YouTube

Configurazione FreeRouting con Kicad

Tutti sanno che Kicad non è dotato di un autorouter, pertanto è necessario utilizzare moduli esterni per poterlo utilizzare.

Esiste un comodo plugin, denominato FreeRouting, che può essere utilizzato allo scopo.

Il plugin va scaricato alla pagina: freerouting/integrations/KiCad at master · freerouting/freerouting (github.com)

Il direttorio kicad-freerouting va salvato nel direttorio dei plugins di kicad. Le istruzioni per installarlo sono contenute alla pagina: freerouting/freerouting: Advanced PCB auto-router (github.com)

Per poter funzionare, il plugin necessita di un jre di java aggiornato alla versione 61 (jre 1.17 almeno). In assenza di apposito jdk sul PC si può scaricare quello desiderato dal sito: Thank You | Adoptium scegliendo il sistema operativo, la versione e il tipo (jdk oppure jre).

Se si decide di installare il nuovo jdk o jre sul PC Kicad lo rileverà in automatico. Se il vostro PC avesse già un’altra installazione del jdk con versione diversa, si può intervenire direttamente nel plugin.

Per fare questo si deve modificare il file plugin.py, presente nel direttorio di freerouting appena scaricato.

La riga da modificare è la 49 e va sostituito il path di java con quello reale, per esempio:

self.java_path = 'C:/WinApp/OpenJDK17U-jre_x64_windows_hotspot_17.0.4.1_1/jdk-17.0.4.1+1-jre/bin/java'

A questo punto è sufficiente lanciare il plugin quando in maschera di pcbnew abbiamo un PCB (ricordarsi di scontornare il pcb con un rettangolo nel layer edge.cuts, altrimenti il sistema rifiuterà di funzionare.

PHPMyAdmin e versione di PHP: incompatibilità

Alcune volte capita che phpmyadmin fornisca dei warning in merito a funzioni deprecate.

Questo capita in quanto la versione di PHP utilizzata da apache non corrisponde a quella di phpmyadmin, di conseguenza ci sono due strade:

  1. Cambiare versione di PHP o aggiornare phpmyadmin
  2. Chiedere a phpmyadmin di ignorare i warnings

Per ignorare i warnings è sufficiente immettere il seguente testo all’interno del file /etc/phpmyadmin/config.inc.php:

$cfg['SendErrorReports'] = 'never';

Cambiare versione di PHP per apache2 in Ubuntu

Per vedere la versione di PHP utilizzata da apache2 è preferibile utilizzare il comando phpinfo. Si crei una pagina in /var/www/html, con estensione php e dal seguente contenuto:

<?php

phpinfo();

?>

Si acceda alla pagina con http://localhost/test.php.

Per modificare la versione di PHP utilizzata da apache è necessario disabilitare il modulo precedente e abilitare il nuovo. Per esempio:

//In ubunutu
Default PHP 7.1 is set on your system and you need to switch to PHP 5.6

$ sudo a2dismod php7.1
$ sudo a2enmod php5.6
$ sudo service apache2 restart

sudo update-alternatives --set php /usr/bin/php5.6