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
, , MobaXterm
etc. 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 MobaXterm
un ejemplo para presentar el proceso de creación de una nueva conexión SSH:
-
Abra
MobaXterm
la herramienta, haga clic enSession
y seleccioneSSH
-
Introduzca la dirección IP de la placa de desarrollo, por ejemplo
192.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