[Experiencia de prueba de Horizon Rising Sun X3 Pie] Visualización en el lado web de la detección de objetos basada en la cámara MIPI, todo el proceso (sección 3)

     Hoy finalmente mostré la cámara MIPI en la web. En realidad es un asunto muy simple, pero debido a un problema de red, lo estudié durante varios días y revisé todas las publicaciones en el foro. Finalmente, bajo la guía de los expertos de Horizon, encontré el problema.

Más cerca de casa, registre su propio proceso.

Después de que el sistema se inicie normalmente y el puerto serie esté conectado,

Para mostrar en el lado web, se requieren los siguientes preparativos.

 Primero, confirme que la cámara F37 esté correctamente conectada a la placa de desarrollo.

1.5.8 Cámara MIPI

La placa de desarrollo proporciona 1 interfaz MIPI CSI (interfaz 2), que puede realizar el acceso de la cámara MIPI. En la actualidad, los accesorios de la placa de desarrollo brindan dos especificaciones de módulos de cámara para cumplir con los requisitos funcionales de diferentes usuarios. Los modelos y especificaciones del módulo son los siguientes:

número de serie Sensor resolución campo de visión Dirección del dispositivo I2C
1 GC4663 400W Alto: 104 Ancho: 70 Fondo: 113 0x29
2 JXF37 200W Alto: 62 Ancho: 37 Fondo: 68 0x40

El módulo de la cámara está conectado a la placa de desarrollo a través de un cable FPC de 24 pines de diferentes lados. Tenga en cuenta que los lados azules de los dos extremos del cable se insertan en el conector .

Nota importante: está estrictamente prohibido enchufar y desenchufar la cámara cuando la placa de desarrollo no está apagada, de lo contrario, es muy fácil quemar el módulo de la cámara.

Tome el módulo de cámara JXF37 como ejemplo, una vez completada la instalación, la imagen es la siguiente:

Una vez completada la instalación, el usuario puede usar el comando i2cdetect para confirmar si la dirección I2C del módulo se puede detectar normalmente. Si no se puede detectar, el usuario debe verificar si la conexión del cable FPC es normal. Cuando la dirección I2C se detecta con éxito, la impresión del registro es la siguiente:

# 首先使能sensor的24MHz主时钟
sunrise@ubuntu:~# sudo bash -c "echo 1 > /sys/class/vps/mipi_host0/param/snrclk_en"
sunrise@ubuntu:~# sudo bash -c "echo 24000000 > /sys/class/vps/mipi_host0/param/snrclk_freq"
# 执行 i2cdetect 命令探测, 其中显示的 40 即F37这颗sensor的i2c设备地址
sunrise@ubuntu:~# sudo i2cdetect -y -r 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- UU -- -- -- -- 
 40 : 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
 50 : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60 : -- -- -- -- -- -- -- -- -- -- -- -- 
 -- -- -- -- 
 70 : -- -- -- -- -- -- -- --                         

En segundo lugar, confirme que la PC pueda acceder a la placa de desarrollo a través de la red. (Tome WIFI como ejemplo)

1. Conéctese a WFI

Escanear wifi:

sudo nmcli device wifi rescan

Lista WIFI lista:

nmcli device wifi list

Conéctese a Wi-Fi:  

sudo wifi_connect "wifi名" "密码"

2. Inicio de sesión remoto SSH

Inicio de sesión SSH

En la PC, el usuario puede iniciar sesión de forma remota en la línea de comando de la placa de desarrollo a través de una conexión SSH. Existen principalmente dos formas de crear una conexión SSH: software de terminal y línea de comandos de PC. A continuación se describen los pasos de creación de los dos métodos de conexión.

Software de terminal
Las herramientas de terminal actualmente más utilizadas incluyen Putty, SecureCRT, , MobaXtermetc. Los usuarios pueden elegir según sus propios hábitos de uso. El proceso de configuración de puertos de diferentes herramientas es básicamente similar. El siguiente es MobaXtermun ejemplo para presentar el proceso de creación de una nueva conexión SSH:

  • Abra MobaXtermla herramienta, haga clic en Sessiony seleccioneSSH

  • Introduzca la dirección IP de la placa de desarrollo, por ejemplo192.168.1.10

  • seleccione specify username, ingresesunrise

  • Después de hacer clic en Aceptar, ingrese el nombre de usuario y la contraseña para completar el inicio de sesión

 

Tres, instalación del paquete TogetherROS y ROS2

1.  Instale TogetherROS a través del paquete DEB

premisa:

  • El trabajo de preparación del entorno en el Capítulo 2.1 se ha completado.

  • Rising Sun X3 Pie puede acceder a Internet normalmente

  • Rising Sun X3 Pie puede ssh de forma remota

Nota: La IP de Sun X3 Pie utilizada aquí es 10.64.61.241, debe reemplazarla con su propia IP de Sun X3 Pie durante la instalación

Iniciar sesión en Rising Sun X3 Pie

raíz [email protected]

Instale el paquete HHP.deb,sudo apt install hhp

root@ubuntu:~# sudo apt install hhp 
Leyendo listas de paquetes... Listo 
Construyendo árbol de dependencias        
Leyendo información de estado... Listo 
Se instalarán los siguientes paquetes NUEVOS: 
  hhp 
0 actualizado, 1 recién instalado, 0 para eliminar y 52 no actualizado. 
Necesita obtener 384 MB de archivos. 
Después de esta operación, se utilizarán 512 MB de espacio adicional en disco. 
Obtener:1 http://42.62.85.28/ubuntu-ports focal/main arm64 hhp arm64 1.0.1 [384 MB] 
Obtuvo 384 MB en 6 min 43 s (954 kB/s)                                           
Seleccionando el paquete hhp no seleccionado previamente. 
(Leyendo base de datos... 110406 ​​archivos y directorios actualmente instalados.)
Preparándose para descomprimir.../archives/hhp_1.0.1_arm64.deb... 
Descomprimiendo hhp (1.0.1)... 
Configurando hhp (1.0.1)... 
Generando locales (esto puede llevar un tiempo)... 
  en_US.ISO-8859-1... done 
  en_US.UTF-8... done 
Generación completa.

Ver los archivos en el directorio /opt

root@ubuntu:/userdata# ls /opt/
tros

Puede ver que se instaló HorizonHobotPlatform (HHP) en el directorio /opt

Nota: Al instalar el software, ejecute el comando sudo apt install hhp y aparecerá el siguiente error:

E: No se puede localizar el paquete hhp

Solución:

sudo apt-get update muy bien

 

2. Instalación del paquete ROS2

Requisito previo: TogetherROS se ha instalado correctamente

TogetherROS es totalmente compatible con la interfaz de la versión ROS foxy, y puede reutilizar el rico kit de herramientas ROS.Aquí, la instalación y el uso de la versión ROS foxy ros-foxy-image-transport se toma como ejemplo para presentar cómo usar el paquete ROS en TogetherROS.

1 Agregar fuente apta de ROS

Agregar fuente apta de ROS

sudo apt update && sudo apt install curl gnupg2 lsb-release 
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg 
echo "deb [arch=$(dpkg --print-architecture) firm-by=/usr/share/keyrings/ros-archive-keyring.gpg] http ://packages.ros.org/ros2/ubuntu $(fuente /etc/os-release && echo $UBUNTU_CODENAME) principal" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

Actualizar el repositorio apt

sudo apt actualizar

2 Instalar paquetes

sudo apt install ros-foxy-image-transport 
sudo apt install ros-foxy-image-transport-plugins

3 Establezca una conexión suave

cd /opt/tros 
## Use create_soft_link.py en el directorio /opt/tros para crear un enlace suave desde el paquete ROS a TogetherROS 
sudo python3 create_soft_link.py --foxy /opt/ros/foxy/ --tros /opt/tros/

Utilice el paquete ROS2

Igual que el uso de ROS

fuente /opt/tros/local_setup.bash 
ros2 ejecutar image_transport list_transports

Los resultados de ejecución son los siguientes, que muestran los formatos de imagen admitidos por el paquete image_transport

root@ubuntu:/opt/tros# ros2 ejecutar image_transport list_transports 
Transportes declarados: 
image_transport/compressed 
image_transport/compressedDepth 
image_transport/raw 
image_transport/theora 

Detalles: 
---------- 
"image_transport/compressed" 
 - Proporcionado por el paquete:pressed_image_transport 
 - Editor: 
      este complemento publica una imagen comprimida usando compresión JPEG o PNG. 

 - Suscriptor: 
      este complemento descomprime un tema de imagen comprimida. 

---------- 
"image_transport/compressedDepth" 
 - Proporcionado por el paquete:pressed_depth_image_transport 
 - Editor:
      Este complemento publica imágenes de profundidad comprimidas usando compresión PNG. 

 - Suscriptor: 
      este complemento decodifica imágenes de profundidad comprimidas. 

---------- 
"image_transport/raw" 
 - Proporcionado por el paquete: image_transport 
 - Editor: 
      Este es el editor predeterminado. Publica la imagen tal cual en el tema base. 

 - Suscriptor: 
      este es el suscriptor de transferencia predeterminado para temas de tipo sensor_msgs/Image. 

---------- 
"image_transport/theora" 
 - Proporcionado por el paquete: theora_image_transport 
 - Publisher: 
      Este complemento publica un flujo de paquetes de video codificado usando Theora.

 - Suscriptor:
      Este complemento decodifica un flujo de paquetes de video codificado con Theora.

Cuatro, la preparación está completa, comienza el programa.

Inicie el servicio web_service

Antes de usar la pantalla web, asegúrese de que la placa esté en el mismo segmento de red que la PC personal y que la PC pueda acceder a la IP de la placa.

Ejecute el siguiente comando para iniciar el servicio web

cd /app/ai_inference/05_web_display_camera_sample/ 
sudo sh ./start_nginx.sh 
sudo python3 ./mipi_camera_web.py 


Tengo el siguiente error aquí:
root@ubuntu:/app/ai_inference/05_web_display_camera_sample# sudo python3 ./mipi_camera_web.py

[C][6444][08-08][20:43:17:400][configuration.cpp:51][EasyDNN]EasyDNN version: 0.3.5

[BPU_PLAT]BPU Platform Version(1.3.1)!

[HBRT] set log level as 0. version = 3.13.27

ioctl read error, ret = -1 error = 121

keros_i2c_read failed

ioctl write error, ret = -1 error = 121

keros_i2c_write failed

ioctl write error, ret = -1 error = 121

keros_i2c_write failed

ioctl read error, ret = -1 error = 121

keros_i2c_read failed

ioctl read error, ret = -1 error = 121

keros_i2c_read failed

ioctl read error, ret = -1 error = 121

keros_i2c_read failed

ioctl read error, ret = -1 error = 121

keros_i2c_read failed

ioctl read error, ret = -1 error = 121

keros_i2c_read failed

[000:000] (keros_util.cpp:99): keros_authentication failed, ret = 0

[000:000] (configuration.cpp:147): Keros key init failed.

[DNN] Runtime version = 1.8.4_(3.13.27 HBRT)

[HorizonRT] The model builder version = 1.5.2

[ERROR][sensor][f37_utility.c:253] not support mode 0

[ERROR]["LOG"][utility/hb_cam_utility.c:909] sensor_init fail

[ERROR]["LOG"][utility/hb_cam_utility.c:1004] hb_sensor_init_process fail

[ERROR]["mipi"][mipi/hb_mipi_api.c:225] hb_cam_utility_ex error!

[ERROR]["LOG"][/home/hobot/1-work/08_bsp/hbre/hb_ubuntu/hb_vio_python/x3_sdk/x3_sdk_swap/src/x3_vio_vin.c:100] hb mipi init sensor error!

[ERROR]["LOG"][/home/hobot/1-work/08_bsp/hbre/hb_ubuntu/hb_vio_python/x3_sdk/x3_sdk_swap/src/x3_vio_vin.c:224] x3_sensor_init error!

2022/08/08 20:43:17.561 ERROR [x3_cam_init][0139]x3_vin_init failed, -1
Solución: 

reinicie el programa, muestra éxito 

 

Supongo que te gusta

Origin blog.csdn.net/m0_38012497/article/details/126255279#comments_26133916
Recomendado
Clasificación