Raspbian安装云台
Raspbian安装云台
- 1. 源由
- 2. 选型
- 3. 组装
- 4. 调试
- 4.1 python3-print问题
- 4.2 python函数入参类型错误
- 4.3 缺少mjpg-streamer可执行文件
- 4.4 缺失编译头文件和库
- 4.5 python库缺失
- 4.6 图像无法显示,但libcamera-jpeg测试正常
- 4.7 异常IOCTL报错
- 4.8 Git问题
- 5. 效果
- 5.1 WEB页面效果
- 5.2 视频效果
- 5.3 外观效果
- 5.4 起飞前效果
- 6. 参考资料
- 7. 后续思考
1. 源由
既然安装了摄像头(《Raspbian安装摄像头》),那安装个简易云台也不过分。
注:看看后续能否配合ArduPilot开源代码之CompanionComputer上天计划。
2. 选型
基本上没什么可选的,找个市面上最通用的,且相对配套比较完善的。
-【Wiki】www.waveshare.net/wiki/Pan-Tilt_HAT
-【Github】https://github.com/waveshare/Pan-Tilt-HAT
3. 组装
4. 调试
调试才是最为麻烦的,因为得益于各位硬件、软件环境的差异性,会遇到各种不同的问题。以下是基于笔者发稿日的一个调试情况。
笔者测试环境:
- 硬件:Raspberry Pi3B+
- 系统:2022-09-22-raspios-bullseye-arm64-lite.img.xz
- 软件:Pan-Tilt_HAT_code.7z
4.1 python3-print问题
无论是官网或者git获取的代码,都存在python3-print问题,估计写这个python代码的作者用的是pythron2。
原因:python3 print作为函数使用,需要增加括号。
diff --git a/RaspberryPi/web_Python/main.py b/RaspberryPi/web_Python/main.py
index 9986a42..daffeea 100644
--- a/RaspberryPi/web_Python/main.py
+++ b/RaspberryPi/web_Python/main.py
@@ -37,7 +37,7 @@ def server_fonts(filename):def cmd():global HStep,VStepcode = request.body.read().decode()
- print "code ",code
+ print( "code ",code)# speed = request.POST.get('speed')# print(code)# if(speed != None):
@@ -120,5 +120,5 @@ try:run(host=localhost, port="8001")except:pwm.exit_PCA9685()
- print "\nProgram end"
- exit()
\ No newline at end of file
+ print( "\nProgram end")
+ exit()
4.2 python函数入参类型错误
原因:python编程人员对变量的使用相对随意,这个是之前的一个隐患,python3当前环境进行更加严格的检查,发现了问题。
diff --git a/RaspberryPi/web_Python/PCA9685.py b/RaspberryPi/web_Python/PCA9685.py
index b596863..2cdc45c 100644
--- a/RaspberryPi/web_Python/PCA9685.py
+++ b/RaspberryPi/web_Python/PCA9685.py
@@ -80,7 +80,7 @@ class PCA9685:def setServoPulse(self, channel, pulse):"Sets the Servo Pulse,The PWM frequency must be 50HZ"pulse = pulse*4096/20000 #PWM frequency is 50HZ,the period is 20000us
- self.setPWM(channel, 0, pulse)
+ self.setPWM(channel, 0, int(pulse))def start_PCA9685(self):self.write(self.__MODE2, 0x04)
4.3 缺少mjpg-streamer可执行文件
从7zip包里面,实际上该二进制是存在的,但是就是出毛病,无法执行。
原因:该代码包中,mjpg-streamer已经编译过了,且路径和测试路径不一致。导致无法clean,也无法编译成功。最后删除
_build
目录后,重新编译,现象消失。
4.4 缺失编译头文件和库
原因:该mjpg-streamer代码包编译需要WiringPi
和相关库支持。
$ sudo apt-get install libjpeg62-turbo-dev cmake
$ git clone https://github.com/WiringPi/WiringPi
$ ./build
$ gpio -v
gpio version: 2.70
Copyright (c) 2012-2018 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warrantyRaspberry Pi Details:Type: Pi 3B+, Revision: 03, Memory: 1024MB, Maker: Sony* Device tree is enabled.*--> Raspberry Pi 3 Model B Plus Rev 1.3* This Raspberry Pi supports user-level GPIO access.
4.5 python库缺失
原因:真正这个代码跑起来,缺少python3的一些组件,请务必安装。
$ sudo apt-get install python3-bottle python3-smbus
4.6 图像无法显示,但libcamera-jpeg测试正常
原因:mjpg-streamer仅支持legacy Camera。需要将下面配置修改为【YES】,重启树莓派。
4.7 异常IOCTL报错
最后确认,就是这个鸟样,直接可以忽略不管。
4.8 Git问题
如果想用最新的Git代码,需要提前处理git网络问题,详见:Github操作网络异常笔记
$ git clone https://github.com/waveshare/Pan-Tilt-HAT.git
$ cd Pan-Tilt-HAT/RaspberryPi/web_Python
$ git clone https://github.com/jacksonliam/mjpg-streamer
5. 效果
5.1 WEB页面效果
5.2 视频效果
PAN Tilt HAT for Camera 2D Control
5.3 外观效果
5.4 起飞前效果
6. 参考资料
【1】Raspbian安装摄像头
【2】Raspbian镜像无头烧录
7. 后续思考
【1】 Feature Request: pan-tilt gimbal controls #196
相关文章:

Raspbian安装云台
Raspbian安装云台 1. 源由2. 选型3. 组装4. 调试4.1 python3-print问题4.2 python函数入参类型错误4.3 缺少mjpg-streamer可执行文件4.4 缺失编译头文件和库4.5 python库缺失4.6 图像无法显示,但libcamera-jpeg测试正常4.7 异常IOCTL报错4.8 Git问题 5. 效果5.1 WEB…...

蓝桥杯理历年真题 —— 数学
1. 买不到的数目 这道题目,考得就是一个日常数学的积累,如果你学过这个公式的话,就是一道非常简单的输出问题;可是如果没学过,就非常吃亏,在考场上只能暴力求解,或是寻找规律。这就要求我们什么…...

自然语言处理--双向匹配算法
自然语言处理作业1--双向匹配算法 一、概述 双向匹配算法是一种用于自然语言处理的算法,用于确定两个文本之间的相似度或匹配程度。该算法通常使用在文本对齐、翻译、语义匹配等任务中。 在双向匹配算法中,首先将两个文本分别进行处理,然后…...

IDEA 2023.3.2 安装教程
1.下载2023.3.2版本IDEA 链接:https://pan.baidu.com/s/1RkXBLz6qxsd8VxXuvXCEMA?pwd5im6 提取码:5im6 2.安装 3.解压文件,进入,选择方式3 4.将下面文件夹复制到任意位置(不要有中文路径) 5.进入下面文…...
C语言常见面试题:什么是宏,宏的作用是什么?
宏在计算机科学中是一种批量处理程序命令,它是一种抽象的规则或模式,用于说明某一特定输入(通常是字符串)如何根据预定义的规则转换成对应的输出(通常也是字符串)。在编译时,预处理器会对宏进行…...
【0248】Background Writing实现机制分析
文章目录 1. 前言2. 有了checkpoint,为何还需要background writing?2.1 checkpoint和background writing有何差异? 如何协同工作?2.2 background writing如何工作? 职责是什么?1. 前言 本文是Background Writing进程理论篇,源码剖析实战篇会在后面给出。本文的主要内容…...

基于springboot+vue的教师工作量管理系统(前后端分离)
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…...
4-新建子模块(尝鲜)
新建子模块 Maven多模块下新建子模块流程案例。 1、新建业务模块目录,例如:ruoyi-test。 2、在ruoyi-test业务模块下新建pom.xml文件以及src\main\java,src\main\resources目录。 <?xml version"1.0" encoding"UTF-8&…...

反序列化字符串逃逸(上篇)
首先,必须先明白,这个点并不难,我给大家梳理一遍就会明白。 反序列化字符串逃逸就是序列化过程中逃逸出来字符,是不是很简单,哈哈哈! 好了,不闹了,其实: 这里你们只要懂…...

[C++]使用yolov5的onnx模型结合onnxruntime和bytetrack实现目标追踪
【官方框架地址】 yolov5框架:https://github.com/ultralytics/yolov5 bytetrack框架:https://github.com/ifzhang/ByteTrack 【算法介绍】 Yolov5与ByTetrack:目标追踪的强大组合 Yolov5和ByTetrack是两种在目标追踪领域具有显著影响力…...

i2c接口验证
用i2cdetect命令。 1,检测有几组i2c总线在系统上 i2cdetect -l 2,查询i2c总线上挂接的设备及设备的地址 i2cdetect -y <number> i2cdetect -y 0命令用于扫描I2C总线/dev/i2c-0,并列出所有在该总线上存在的有效I2C设备地址。...
1、Pandas 数据结构:从 Series 到 DataFrame
目录 Series 创建 Series Series 索引和选择 DataFrame 创建 DataFrame DataFrame 索引和选择 DataFrame 操作和转换 数据结构转换 Series Series 是 Pandas 中的一维数组形式的数据结构,它可以包含任何数据类型(整数、字符串、浮点数、Python对象…...

MySQL函数—字符串函数
MySQL函数—字符串函数 函数功能CONCAT(s1,s2,...sn)字符串拼接,将s1,s2,...sn拼接成一个字符串LOWER(str)将字符串全部转为小写UPPER(str)将字符串全部转为大写LPAD(str,n,pad)左填充,用字符串pad对str左边进行填充,达到n个字符串长度RPAD(s…...

PLC从HTTP服务端获取JSON文件,解析数据到寄存器
智能网关IGT-DSER集成了多种PLC协议,方便实现各种PLC与HTTP服务端之间通讯。通过网关的参数配置软件绑定JSON文件的字段与PLC寄存器地址,配置URL,即可采用POST命令,将JSON文件提交给HTTP的服务端; 服务端有返回的JSON&…...
LeetCode 46. 全排列
46. 全排列 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2: 输入&#…...

NVMe TCG安全数据存储简介
NVMe(非易失性内存主机控制器接口规范)与TCG(可信计算组)的集成主要体现在数据安全、固件验证和硬件信任根等方面,以确保存储设备的数据保护能力和安全性。 TCG Opal定义了一套针对自加密硬盘(SED, Self-En…...
Linux命令-ab命令(Apache服务器的性能测试工具 )
Apache服务器的性能测试工具 ab命令 是一个测试你 Apache http 服务器的工具,你可以通过这个工具,指定一个单位时间内向 apache 发出的请求数量来看看你的 Apache 和机器配合的性能如何。 语法 []内容为ab命令后跟的语法,eg:ab …...

蓝桥杯java基础
数组的倒序与隔位输出 时间限制:1.000S 空间限制:128MB 题目描述 给定一个整数数组,编写一个程序实现以下功能: 1. 将输入的整数数组倒序输出,每个数之间用空格分隔。 2. 从正序数组中,每隔一个单位&a…...

Unity3d引擎中使用AIGC生成的360全景图(天空盒)
前言 在这里与Skybox AI一起,一键打造体验无限的360世界,这是这个AIGC一键生成全景图的网站欢迎语。 刚使用它是23年中旬,在没有空去给客户实地拍摄全景图时,可以快速用它生成一些相关的全景图,用作前期沟通的VR de…...

React Router v6 改变页面Title
先说正事再闲聊 1、在路由表加个title字段 2、在index包裹路由 3、在App设置title 闲聊: 看到小黄波浪线了没 就是说默认不支持title字段了 出来的提示, 所以我本来是像下面这样搞的,就是感觉有点难维护,就还是用上面的方法了 …...

Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...