IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> DJI NAZA系列飞控改装自主飞行 -> 正文阅读

[嵌入式]DJI NAZA系列飞控改装自主飞行

前言:
DJI系列的飞控只有N3、A3自带API控制功能,可以通过串口进行控制,对于NAZA系列的飞控是不带API控制功能的,只能通过接收机输出PWM信号控制对应的通道。
为了便于NAZA系列飞控二次开发,我们开发了一套NAZA系列飞控的API,使用树莓派3b+通过PCA9685转接板扩展十六组PWM通道,并依次连接至NAZA飞控的输入通道中,以此通过树莓派输出PWM模拟接收机控制,进而实现无人机的自主飞行。

DJI NAZA V2 C++ PWM 接口
树莓派与 DJI Naza V2 飞行控制器交互的C++接口。该项目是一个 diy 解决方案目的是在没有API功能的飞控上面实现自主飞行二次开发, 并兼顾 Naza V2 的准确性 / 优势。它允许用户通过安装于无人机上面的树莓派控制 Naza V2。通过安装这个库,并使用库函数提供的方法编写自己的程序。库通过模拟 PWM 信号来实现这一点,这些信号实际上/通常来自接收器来控制 Naza V2(无人机)。要生成 PWM 信号,它使用 PWM/伺服驱动程序 - I2C 接口 - PCA9685。lib 由两个不同的部分组成,即手动和自主。手动提供控制无人机的标准功能,这些功能立即执行。自主提供的功能,需要串行连接(解码gps,陀螺仪/acc信息)到Naza V2飞行,例如到不同的航点(是高度实验和部分未完成,继续在这里)。

网络干预
WebInterface 建在该项目之上,并使用该项目的工具/二进制文件访问 Naza。它基于 PHP 和 Js Ajax,PHP 脚本直接访问此项目编译的二进制文件,可用于测试 lib。

PWM 参考
Naza V2 可以适应不同的控制界面 PWM、PPM 和 S-Bus。在这里,我将专注于PWM,因为这是我选择使用的。这是最简单,最可靠,最容易效仿。

PWM 输入信号:
赫兹: 50
脉冲: 0.5-2.5ms

要生成适当的信号,您需要计算相对脉冲长度。为此,您需要另外两个表示总体脉冲周期和脉冲长度的值。两者的差别不能大于时期本身。该周期在 4096 值中分解,相当于 12 位精度 (2=12)。因此,这两个值的差异不能大于 4096。此相对脉冲长度可以通过将 Hz 速率、周期和脉冲长度相乘来计算。

50Hz:

50Hz* 0.0005s * 4096 × 102 (相对脉冲长度)

50Hz* 0.0025s * 4096 × 512 (相对脉冲长度)
要控制 Naza V2,我们需要一个从 102-512(取决于校准)的相对脉冲长度。

设置
安装

git clone https://github.com/MrGrimod/dji_naza_interface_c-.git
克隆项目
cd dji_naza_interface_c -
make
构建库的共享对象文件。
make install
安装配置和头,头文件目录

配置和校准(需要)
要使库函数工作,您需要配置库函数的配置文件(/etc/naza/pwm_config.txt)
每个变量(左、中、右)定义发射机油门端点棒位置。要找到它们,您需要打开您的 Naza 助手,然后转到 Rc 部分,在那里您必须重新校准 Naza 以用于发射机。接下来,examples/mod_pwm/ 并查找每个通道的左、右和"中间"值油门端点的拟合值,并将它们添加到pwm_config。

用法
成功安装后,您可以将头文件#include"libnaza/naza_interface_manual.h"
在你自己的项目和链接利布纳扎使用 - lnaza 和 - lwiringPi 标志。

布线
将 I2C 上的 PCA9685 与覆盆子派和 Naza V2 输入通道与 PCA9685 的不同输出通道连接起来。

例子
用法:

构建: ./重新安装
开始: ./

flight_sim
指挥线工具,以测试和调试项目的基本功能的功能。
CMD 命令:
前进, 后退, 油门, 左, 右, 右, 右, 特尔夫特, flm, 中立, 手臂

mod_pwm
命令线工具,手动设置某些通道的相对 PWM 脉冲长度

校准
校准纳扎 V2 的工具。在 Naza V2 助理软件中开始校准过程,然后开始重新校准工具,等到它完成为所有通道设置端点。

阅读 gps
解码来自纳扎 GPS 模块的串行 GPS 的工具。它将数据输入源源不断的数据流中。

依赖

bcm2835
wget http://www.open.com.au/mikem/bcm2835/bcm2835-1.49.tar.gz
tar xvfz bcm2835-1.49.tar.gz
cd bcm2835-1.49
./configure
make

sudo make install
WiringPi

与 NAZA 全球定位系统进行串行通信
切换到 AMA0(旧串行接口)
树莓派 3 上的 BCM2837, Pi3B+, PiZeroW 有 2 个 UART (就像它的前身一样), 然而, 为了支持蓝牙功能, 功能齐全的 PL011 UART 从头针移动到蓝牙芯片和迷你 UART 在头针 8 + 10 上提供。

这对串行界面的用户具有许多后果。

以前用于访问 UART 的 /dev/ttyAMA0 现在连接到蓝牙。迷你UART现已在 /dev/ttyS0 上提供。在最新的操作系统软件中,有一个 /dev/序列0 选择适当的设备,以便您可以用 /dev/序列0 替换 /dev/ttyAMA0,并在 Pi3 和早期型号上使用相同的软件。

不幸的是,还有其他一些后果: -

迷你 UART 是次要低吞吐量 UART
打算用作控制台。迷你 Uart 具有以下功能:
? 7 或 8 位操作。
? 1 个开始和 1 个停止位。
? 无平价。
? 断代。
? 8 个符号深 FIFO 用于接收和传输。
? SW 控制 RTS,SW 可读 CT。
? 具有可编程 FIFO 级别的自动流量控制。
? 16550 像寄存器。
? 从系统时钟中提取的包酸盐。
没有对平价的支持,吞吐量有限,但后者不应影响大多数用途。

有一个杀手功能"从系统时钟衍生的包",这使得迷你UART无用的,因为这个时钟可以动态变化,例如,如果系统进入降低功率或在低功率模式。

对于 GPS 数据输入流,我们需要一个可靠和快速的串行通信接口,因此我们需要禁用 miniUART 并切换回旧的 ttyAMA0 接口。为此,请遵循以下步骤:

要禁用蓝牙并设置 /dev/ttyAM0 到真正的 UART(如以前一样)编辑文件/启动/配置.txt 并在末尾添加以下行:
覆盖 =pi3 禁用 -bt 1 多溢=pi3-禁用-bt

停止蓝牙服务与数独系统禁用 hciuart 和重新启动。

要将蓝牙切换到软件 UART,并将 /dev/ttyAM0 设置为真正的 UART(如以前一样),请记住,这一个在蓝牙(软件 UART)上仍然存在可能的软件问题,但在串行(硬件)上则不会出现
编辑文件/启动/配置.txt并在末尾添加以下行:

dtoverlay=pi3-迷你-bt core_freq=250 1 2 dtoverlay=pi3-迷你-bt core_freq=250

编辑文件/lib/系统/系统/hciuart.服务,并替换/开发/ttyAMA0 与 /dev/ttyS0

如果你有一个系统与udev规则,创建/开发/串行0和/dev/串行1(看看如果你有这些),如果是的话,使用/开发/串行1。

然后重新启动

图书馆功能
手动:
fly_throttle:
为所有电机设置无人机油门。
对应到通道 T

fly_forward:
让无人机向前飞
对应到通道 E

fly_back:
让无人机向后飞行
对应到通道 E

fly_left:
让无人机侧身飞行左转
对应到通道 A

fly_right:
让无人机侧身向右飞行
对应到通道 A

fly_turn_right:
让无人机右转
对应到通道 R

fly_turn_left:
让无人机左转
对应到通道 R

set_neutral:
将所有粘杆位置设置为中性位置。

校准:
将所有粘结移动到油门端点

set_flight_mode:
设置飞行模式。您可以在:gps、故障安全、可选对应到通道 U 之间进行选择

arm_motors:
武器电机

自治:
auto_liftoff
让无人机起飞

auto_landing
让无人机降落

fly_to_gps_pos
让无人机飞到某个位置。

turn_to_deg
让无人机飞到某个位置。

auto_hover
让无人机悬停。

代码源文件:
https://github.com/Phillweston/dji_naza_interface_c-
Web界面:
https://github.com/Phillweston/dji_naza_web_interface

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-04 17:42:22  更:2021-09-04 17:43:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 9:09:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计