地平线旭日X3开发板基于MIPI Camera的目标检测 web 端展示调试记录

news2025/1/16 1:01:50

终于将MIPI Camera在web端显示出来了,

其实很简单的事情,但是因为一个网络的问题,自己研究了好几天,

查遍了论坛所有帖子,最后还是在地平线专家们的指导下,发现问题所在。

言归正传,将自己的过程记录下来。

在系统正常启动,串口登录之后,

想要在web端显示,需要以下准备工作

1.  确认摄像头F37正确接到开发板上

MIPI摄像头

开发板提供1路MIPI CSI接口(接口2),可实现MIPI摄像头的接入。

目前开发板配件提供了2种规格的摄像头模组,以满足不同用户的功能需求。

模组型号、规格如下:

序号Sensor分辨率FOVI2C 设备地址1GC4663400WH:104 V:70 D:1130x292JXF37200WH:62 V:37 D:680x40

摄像头模组通过24pin异面FPC排线跟开发板连接,注意排线两端蓝面向上插入连接器

重要提示:严禁在开发板未断电的情况下插拔摄像头,否则非常容易烧坏摄像头模组。

以JXF37摄像头模组为例,安装完成后如下图:

安装完成后,用户可以通过i2cdetect命令确认模组I2C地址能否正常检测到。

如检测不到,用户需要检查FPC排线连接是否正常。

成功探测到I2C地址时,log打印如下所示:

# 首先使能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: -- -- -- -- -- -- -- --

2.  确认PC可以通过网络访问开发板(以WIFI为例)

2.1 连接WFI

扫描wifi:

sudo nmcli device wifi rescan

列出WIFI列表:

nmcli device wifi list

连接WiFi:

sudo wifi_connect "wifi名" "密码"

2.2  SSH远程登录

用户在PC机上,可以通过SSH连接实现开发板命令行的远程登录。S

SH连接的创建方式,主要有终端软件、PC机命令行两种方式。

下面介绍两种连接方法的创建步骤。

终端软件
目前常用终端工具有PuttySecureCRTMobaXterm等,用户可根据自身使用习惯来选择。不同工具的端口配置流程基本类似,下面以MobaXterm为例,介绍新建SSH连接过程:

  • 打开MobaXterm工具,点击Session,然后选择SSH
  • 输入开发板IP地址,例如192.168.1.10
  • 选中specify username,输入sunrise
  • 点击OK后,输入用户名、密码即可完成登录

3.  TogetherROS及ROS2 package安装

3.1 TogetherROS通过DEB包安装

前提:

  • 已完成2.1章节环境准备工作
  • 旭日X3派能够正常访问互联网
  • 旭日X3派能够远程ssh

注意:这里使用的旭日X3派IP为10.64.61.241,安装时需要根据自己的旭日X3派IP进行替换

登录旭日X3派

ssh root@10.64.61.241

安装HHP.deb包,sudo apt install hhp

root@ubuntu:~# sudo apt install hhp
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  hhp
0 upgraded, 1 newly installed, 0 to remove and 52 not upgraded.
Need to get 384 MB of archives.
After this operation, 512 MB of additional disk space will be used.
Get:1 http://42.62.85.28/ubuntu-ports focal/main arm64 hhp arm64 1.0.1 [384 MB]
Fetched 384 MB in 6min 43s (954 kB/s)                                          
Selecting previously unselected package hhp.
(Reading database ... 110406 files and directories currently installed.)
Preparing to unpack .../archives/hhp_1.0.1_arm64.deb ...
Unpacking hhp (1.0.1) ...
Setting up hhp (1.0.1) ...
Generating locales (this might take a while)...
  en_US.ISO-8859-1... done
  en_US.UTF-8... done
Generation complete.

查看/opt目录下文件

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

可以看到HorizonHobotPlatform(HHP)已安装在/opt目录下

注意:安装软件时,执行命令sudo apt install hhp,出现如下错误:

E: Unable to locate package hhp

解决方法:

sudo apt-get update 就好了

3.2 ROS2 package 安装

前提:已成功安装TogetherROS

TogetherROS与ROS foxy版本接口完全兼容,能够复用ROS丰富工具包,

这里以安装和使用ROS foxy版本ros-foxy-image-transport为例介绍如何在TogetherROS中使用ROS package。

3.2.1  添加ROS apt源

添加ROS apt源

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) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

更新apt仓库

sudo apt update
3.2.2 安装packages
sudo apt install ros-foxy-image-transport
sudo apt install ros-foxy-image-transport-plugins
3.2.3 建立软连接
cd /opt/tros
## 使用/opt/tros目录下的create_soft_link.py创建ROS package至TogetherROS的软连接
sudo python3 create_soft_link.py --foxy /opt/ros/foxy/ --tros /opt/tros/

3.3 使用ROS2 package

与ROS使用一样

source /opt/tros/local_setup.bash
ros2 run image_transport list_transports

运行结果如下,展示了image_transport package支持的图像格式

root@ubuntu:/opt/tros# ros2 run image_transport list_transports
Declared transports:
image_transport/compressed
image_transport/compressedDepth
image_transport/raw
image_transport/theora

Details:
----------
"image_transport/compressed"
 - Provided by package: compressed_image_transport
 - Publisher:
      This plugin publishes a CompressedImage using either JPEG or PNG compression.

 - Subscriber:
      This plugin decompresses a CompressedImage topic.

----------
"image_transport/compressedDepth"
 - Provided by package: compressed_depth_image_transport
 - Publisher:
      This plugin publishes a compressed depth images using PNG compression.

 - Subscriber:
      This plugin decodes a compressed depth images.

----------
"image_transport/raw"
 - Provided by package: image_transport
 - Publisher:
      This is the default publisher. It publishes the Image as-is on the base topic.

 - Subscriber:
      This is the default pass-through subscriber for topics of type sensor_msgs/Image.

----------
"image_transport/theora"
 - Provided by package: theora_image_transport
 - Publisher:
      This plugin publishes a video packet stream encoded using Theora.

 - Subscriber:
      This plugin decodes a video packet stream encoded using Theora.

4. 准备完成,开启程序

启动 web_service 服务

在使用 web 展示之前,确保板子与个人PC机处于同一网段,并且PC可以访问板子的IP。

执行如下命令启动web service

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

在这里出现了以下错误:

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
解决方法:

重新启动程序,显示成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1677694.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python --Anaconda下载、安装

下载镜像 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/安装 等待安装完成,时间有点长,等了差不多5分钟左右。 验证conda是否安装成功 打开命令行窗口,输入conda --version 很遗憾,命令行回显是’conda’不是内部或…

Malbers Inventory System

Inventory插件为Malbers动物管理员生态系统带来了强大的库存系统,具有以下功能:通知系统、库存集、自定义物品反应等 ✔️特征 项目管理 收集和存储项目 库存显示 通知系统 物品所有者 库存集合 项目操作 保存和加载(基于JSON.Net&#xff0c…

酒店刷脸设备遭批量扔进「垃圾桶」,为啥所有人都叫好……

最近,不知道柴油们有没有关注到这么一个热点,就是大量酒店曾经动辄几千上万买来的刷脸设备,大批量的被挂在二手平台1折甩卖了…… 昔日花大几千,甚至上万买来的设备,如今年低至三四百?打折打到脚底板&#…

AI图书推荐:使用FastAPI框架构建AI服务

《使用FastAPI构建生成式AI服务》(Building Generative AI Services with FastAPI (Early Release) )是一本由Ali Parandeh编写的书籍,计划于2025年3月首次出版,该书以实践为导向,指导读者如何开发具备丰富上下文信息的…

Rust Web开发框架actix-web入门案例

概述 在看书的时候,用到了actix-web这个框架的案例。 书里面的版本是1.0,但是我看官网最新都4.4了。 为了抹平这种信息差,所以我决定把官方提供的示例代码过一遍。 核心代码 Cargo.toml [package] name "hello" version &q…

(教程)gpt-4o如何使用,怎么体验?gpt-4o和gpt-4-turbo的区别

今天OpenAI发布了gpt-4o,我体验之后,gpt-4o简直逆天了。中文能力也挺别强。速度比现在的gpt4还要快。 早在 5 月 11 日,Sam 就在推文中表示:OpenAI 并没有推出 GPT-5,或搜索引擎,但团队一直在努力研发一些…

重启服务器后node节点显示NotReady

场景:夜间进行了断电维护,重启后发现业务无法使用,检查发现一个node节点显示NotReady. 去到目标服务器查看kubelet服务未成功启动 journalctl -u kubelet 执行journalctl -u kubelet 查看日志发现提示: ailed to run Kubelet: run…

IRENE:医学图像、文本、基因数据 + 多模态融合 + 疾病诊断模型

IRENE:医学图像、文本、基因数据 多模态融合 疾病诊断模型 多模态融合方法分析与分类1. 早期融合方法2. 晚期融合方法3. 混合融合方法 传统非统一的多模态融合方法的局限性IRENE 解法子解法1:多模态表征学习子解法2:双向多模态注意力机制IR…

AC/DC电源模块的故障诊断与维修技巧

BOSHIDA AC/DC电源模块的故障诊断与维修技巧 AC/DC电源模块是一种常用的电力转换设备,用于将交流电转换为直流电供给电子设备。然而,由于使用环境和操作不当等原因,电源模块可能会出现故障。本文将介绍AC/DC电源模块的故障诊断与维修技巧。…

【稀疏三维重建】pixelSplat:仅需两张图像的3D Gaussian Splats重建

文章目录 一.摘要二、相关工作 , 背景(gs)三、基于图像的三维高斯预测3.1 双视图图像编码器(解决尺度模糊性)3.2 (像素对齐的)高斯参数预测 四、实验效果 论文:《pixelSplat: 3D Gaussian Splats from Image Pairs for…

【脚本】使用脚本备份docker中部署的mysql数据库

v1版本明文密码方式: #!/bin/bash# 定义 MySQL 容器名称和数据库信息 container_name"mysql_container" db_user"root" db_password"your_password"# 定义要备份的数据库列表 databases("database1" "database2"…

pyenv 之 python 多版本管理(win11)

1. 背景 常常会用到Python的多个版本,因此可以使用Pyenv来对Python版本进行管理。 2. win11下载 pyenv 在终端执行下载语句: pip install pyenv-win --target D:\software\pyenv 其中 D:\software\pyenv 为你想要下载到的文件目录,建议在 …

数据中台管理系统原型

数据中台是一个通用性的基础平台,适用于各类行业场景,数据中台包含多元数据汇聚、数据标准化、数据开发、数据共享、数据智能、数据资产管理等功能,助力企业数字化转型。 数据汇聚 数据汇聚是将不同系统、不同类型的多元源数据汇聚至目标数据…

动态规划-两个数组的dp问题3

文章目录 1. 两个字符串的最小ASCII删除和(712)2. 最长重复子数组(718) 1. 两个字符串的最小ASCII删除和(712) 题目描述: 状态表示: 根据经验以及题目要求,建立二维数…

深度解析YOLOV9,目标检测算法(附论文和源码)|

目录 一、YOLOV9 1、概述: 2,论文摘要: 输入数据在前馈过程中可能会有不可忽略的信息丢失。这种信息丢失会导致梯度流出现偏差,而梯度流又被用于更新模型。上述问题会导致深度网络在目标和输入之间建立不正确的关联&#xff0c…

【千帆AppBuidler】零代码构建AI人工智能应用,全网都在喊话歌手谁能应战,一键AI制作歌手信息查询应用

欢迎来到《小5讲堂》 这是《千帆平台》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 背景创建应用平台地址随机生成快速创建应用头像应用名称应用描述…

Python自动化神器:如何用PyAutoGUI模拟滚轮动一次

哈喽,大家好,我是木头左! 一、PyAutoGUI简介 PyAutoGUI是一个纯Python的GUI自动化工具,其目的是可以用程序控制鼠标和键盘操作。它主要在三个方面发挥作用:1)对屏幕上的图像进行识别;2&#xf…

8.11 矢量图层线要素单一符号使用二

文章目录 前言箭头(Arrow)QGis设置线符号为箭头(Arrow)二次开发代码实现 总结 前言 本章介绍矢量图层线要素单一符号中箭头(Arrow)的使用说明:文章中的示例代码均来自开源项目qgis_cpp_api_apps 箭头(Arr…

【制作100个unity游戏之26】unity2d横版卷轴动作类游戏5(附带项目源码)

最终效果 系列导航 文章目录 最终效果系列导航前言三段攻击攻击设置只对敌人造成伤害限制可以移动攻击问题 角色连续按四下攻击,最后会多a一下问题:站在原地连续攻击野猪,只有第一下攻击野猪才掉血,后面的攻击野猪不掉血源码完结 …

数据结构复习指导之图的存储及基本操作

文章目录 图的存储及基本操作 考纲内容 复习提示 1.邻接矩阵法 2.邻接表法 3.十字链表 4.邻接多重表 5.图的基本操作 图的存储及基本操作 图的存储必须要完整、准确地反映顶点集和边集的信息。根据不同图的结构和算法,采用不同的存储方式将对程序的效率产生…