上位机图像处理和嵌入式模块部署(树莓派4b的提高版)

2024-05-14 19:28

本文主要是介绍上位机图像处理和嵌入式模块部署(树莓派4b的提高版),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        目前人工智能非常火,但是人工智能需要极高的算力和海量的数据,因此相关的关联公司非常吃香,nvidia就是提供算力的一家公司。大家都知道,nvidia的游戏显卡非常厉害,但是大家不了解的是,nvidia的嵌入式开发板jetson系列也非常不错。至少从性能上说,jetson系列的开发板还是非常不错的。

        不过要说jetson开发板的缺点,无非就是这么三个,第一,发热比较大;第二,价格比较贵;第三,产品供应存在风险。客户如果追求性能,并且是小批量使用,对成本不太敏感的话,个人还是非常推荐jetson系列开发板。和树莓派4b相比,nvidia的gpu资源就是最大的杀手锏。这次,我们以jetson Xavier nx做一个介绍。

1、价格

        一般来说,nano的价格会比较便宜一点,其他类型的板子,一般都在几千元上下。目前手上的这个nx开发板,当时的购买价格应该是5000左右。这还不是最贵的,如果是orin系列的开发板,价格甚至会到上万元。所以,这方面大家根据自己的经济能力灵活进行选择。

2、系统镜像

        从电商网站上面购买到的jetson开发板,一般系统镜像都是安装好的。此外还会额外带一个ssd存储,所以系统软件这方面,不需要我们担心。

3、创建用户、配置静态ip

        拿到板子之后,插好电源、插好键盘和鼠标、接好hdmi、上电之后,第一步要做的事情,就是创建第一个用户。比如说,我们第一个创建的用户是lidar,密码也是lidar。

        此外,对于我个人而言,不太习惯用屏幕进行系统操作,所以这个时候还会配置一个静态ip。一般的做法,就是直接找到eth0,通过鼠标选择manual设置ip的方式,把ip设置为192.168.0.97即可。后期,我们如果需要访问jetson,直接和它配置在同一个网段,用网线和pc直连,用ssh登录就可以访问。       

        默认jetson里面的系统软件,已经开启了ssh服务。

4、下载软件

        本身nx是同时支持wifi和有线网口的。这边为了方便,就直接通过有线网口直接插入到路由器端口了。当然也需要把路由器配置在192.168.0.*网段。我们的pc也连到这个路由器上面,后续通过ssh登录到jetson,用apt install就可以下载需要的软件了。

         当然,喜欢使用wifi的朋友,可以用nmcli配置一下,也是可以的,

sudo nmcli dev wifi list
sudo nmcli dev wifi connect NETGEAR86 password "88888888" ifname wlan0
sudo nmcli dev dis wlan0

5、默认安装的软件

        jetson本质上已经和一台pc没什么区别了,里面默认安装了gcc、g++、make和gdb等工具,我们要做的就是使用好这些工具。

6、资料的上传和下载

        在jetson系统里面,sftp服务已经开启了。这个时候我们只需要找一个支持sftp协议的客户端就可以实现资料的上传、下达了。比如说,mobaxterm就支持sftp协议。

7、支持opencv

        前面我们已经配置好了网络环境,所以如果需要进行opencv开发,比较简单,直接输入下面这行命令就可以了,

sudo apt-get install libopencv-dev

8、安装pcl库

        pcl,全称point cloud library,也就是点云库。本身安装pcl库依赖于几百个第三方库,如果pcl都可以安装了,那代表整个系统、软件库和编译环境就基本ok了。安装方法和opencv差不多,直接输入下面这个命令就可以了,

sudo apt-get install libpcl-dev

9、网站开发

        个人写网站比较喜欢用python去处理,框架使用webpy。所以,直接输入这个命令即可,

sudo apt-get install python3-webpy

10、pyqt5开发

        有的时候,我们需要开发qt界面程序。这种情况下,用c++来开发又显得有点笨重。所以,为了偷懒,我们可以通过pyqt5来完成对应界面的开发。因为之前安装libpcl-dev的时候,pyqt5已经安装好了,所以可以编写一个demo.py,用python3.6 demo.py执行一下即可。在mobaxterm上面,对应的窗口是可以显示的。

11、docker安装

        开机启动后,我们通过ifconfig看到了docker0的ip信息,这说明docker已经安装好了。

lidar@lidar-desktop:~/Desktop$ ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255ether 02:42:51:c1:79:b5  txqueuelen 0  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

        既然有了docker,那么可以验证和测试一下相关功能,比如运行hello-world、或者运行ubuntu,

sudo docker run hello-world
sudo docker run -it ubuntu bash

12、安装ros1

        安装ros1的方法,目前我们是利用docker来完成的,这主要也是为了防止不同ubuntu版本之间的差异。因为,现在ros版本和ubuntu的版本都是一一对应的。所以,这里可以找一个kinetic版本测试验证一下,如果没有问题的话,就可以进行ros1的开发了。

sudo docker pull ros:kinetic-robot
sudo docker run -it  --rm ros:kinetic-robot /bin/bash

13、编写驱动代码hello.ko

        首先,我们准备hello.c文件,

#include <linux/init.h>
#include <linux/sched.h>
#include <linux/module.h>MODULE_LICENSE("GPL");
MODULE_AUTHOR("feixiaoxing");
MODULE_DESCRIPTION("This is just a hello module!\n");static int __init hello_init(void)
{printk(KERN_EMERG "hello, init\n");return 0;
}static void __exit hello_exit(void)
{printk(KERN_EMERG "hello, exit\n");
}module_init(hello_init);
module_exit(hello_exit);

        接着我们准备Makefile文件,

ifneq ($(KERNELRELEASE),)
obj-m := hello.oelse
PWD  := $(shell pwd)
KVER := $(shell uname -r)
KDIR := /lib/modules/$(KVER)/build
all:$(MAKE) -C $(KDIR) M=$(PWD) modules
clean:rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions
endif

        直接输入make,不出意外的话,可以生成ko文件。接着就可以通过sudo insmod hello.ko和sudo rmmod hello的方法分别添加和删除驱动。为了验证驱动是否添加、删除成功,可以通过sudo dmesg的方法进行确认。

14、总结    

        因为写这篇文章的原因,发现现在jetson系列性能又更强了。不过算力要求不是特别严苛的话,个人觉得nano版本就够了,价格在2500上下,算力20t,这还是可以接受的。比纯硬件能力更重要的,是通过软件把开发板的性能发挥出来,这比什么都重要。

这篇关于上位机图像处理和嵌入式模块部署(树莓派4b的提高版)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/989636

相关文章

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

4B参数秒杀GPT-3.5:MiniCPM 3.0惊艳登场!

​ 面壁智能 在 AI 的世界里,总有那么几个时刻让人惊叹不已。面壁智能推出的 MiniCPM 3.0,这个仅有4B参数的"小钢炮",正在以惊人的实力挑战着 GPT-3.5 这个曾经的AI巨人。 MiniCPM 3.0 MiniCPM 3.0 MiniCPM 3.0 目前的主要功能有: 长上下文功能:原生支持 32k 上下文长度,性能完美。我们引入了

荣耀嵌入式面试题及参考答案

在项目中是否有使用过实时操作系统? 在我参与的项目中,有使用过实时操作系统。实时操作系统(RTOS)在对时间要求严格的应用场景中具有重要作用。我曾参与的一个工业自动化控制项目就采用了实时操作系统。在这个项目中,需要对多个传感器的数据进行实时采集和处理,并根据采集到的数据及时控制执行机构的动作。实时操作系统能够提供确定性的响应时间,确保关键任务在规定的时间内完成。 使用实时操作系统的

键盘快捷键:提高工作效率与电脑操作的利器

键盘快捷键:提高工作效率与电脑操作的利器 在数字化时代,键盘快捷键成为了提高工作效率和优化电脑操作的重要工具。无论是日常办公、图像编辑、编程开发,还是游戏娱乐,掌握键盘快捷键都能带来极大的便利。本文将详细介绍键盘快捷键的概念、重要性、以及在不同应用场景中的具体应用。 什么是键盘快捷键? 键盘快捷键,也称为热键或快捷键,是指通过按下键盘上的一组键来完成特定命令或操作的方式。这些快捷键通常涉及同

嵌入式Openharmony系统构建与启动详解

大家好,今天主要给大家分享一下,如何构建Openharmony子系统以及系统的启动过程分解。 第一:OpenHarmony系统构建      首先熟悉一下,构建系统是一种自动化处理工具的集合,通过将源代码文件进行一系列处理,最终生成和用户可以使用的目标文件。这里的目标文件包括静态链接库文件、动态链接库文件、可执行文件、脚本文件、配置文件等。      我们在编写hellowor