yangang123 / pa-quadcopter Goto Github PK
View Code? Open in Web Editor NEWThis project forked from magicworldos/pa-quadcopter
编程外星人-树莓派多旋翼无人机
License: GNU General Public License v3.0
This project forked from magicworldos/pa-quadcopter
编程外星人-树莓派多旋翼无人机
License: GNU General Public License v3.0
################################################################################################## MBH_ARobotThatCanFly是一个开源的四轴飞行器控制项目,使用树莓派3b型做四轴飞行器的控制器,通过gpio引脚读取摇控器的输入pwm信号,计算mpu-6050陀螺仪的读数,然后对欧拉角和旋转角速度做平衡修正,最后通过gpio引脚并对四轴上的4个电调输出. ################################################################################################## 免责声明: 此四轴飞行控制程序没有任何商业性质和盈利目的,您可以免费使用此四轴飞行控制程序. 如果在使用过程中由于您的操作不当或程序错误而出现意外事故本程序的作者和开发社区并不承担任何责任. ################################################################################################## 注意事项: 1.四轴飞行器不是玩具,在安装和使用时请一定要注意安全,并远离人群,确保自己和他人安全的情况下飞行. 2.在安装和调试四轴飞行器时不要为电动机安装螺旋桨,当程序调试成功并且摇控器校准成功之后,在确认您可以正常通过键盘或摇控器来操控电动机,并且确认电机转动完全正常之后才可以根据实际情况安装螺旋桨. 3.在安装螺旋桨时必须先断开4个电机的电源,再为电机安装螺旋桨,并将螺旋桨的桨叶与电机转子轴锁死,以免在电机高速转动时螺旋桨发生松动,进而出现射桨,断桨等危险情况. 4.在程序运行过程中,所有的键盘按键字符均为大小写字母敏感字符.在对程序做参数调整时请注意按键的大小写.例如'q'和'Q'是两个不同的字符. ################################################################################################## 版本说明: 程序的源代码使用git仓库来管理,通常有两个重要的分支master主分支和develop开发分支. develop分支上的代码通常非常不稳定并有很多错误. master分支上的代码通常是比较稳定的. tag版本号由3部分组成"v[大版本号].[中版本号].[小版本号]". 例如: v1.0.53 v : version 1 : 大版本号,通常是在有非常大的功能变化或特性变化时会发布新的大版本. 0 : 中版本号,通常是在修改了一些功能性问题时发布.中版本号为偶数时表示此版本已经进行过试飞测试;而中版本号为奇数时表示此版本只是理论计算,并没有进行过实际试飞测试,可能存在问题和错误. 53 : 小版本号,通常是源代码修改提交过的次数. ################################################################################################## 使用方法: 1.安装四轴飞行器可惜时请参见setup_X和setup_I. 1)安装X型:mpu-6050陀螺仪正方向对准电机0和1的中间位置,顺时针方向为电机0,电机1,电机2,电机3,请参见setup_X.png安装示意图. 修改 2)安装I型:mpu-6050陀螺仪正方向对准电机0,顺时针方向为电机0,电机1,电机2,电机3,请参见setup_I.png安装示意图. 2.下载源代码,并拷贝到您的树莓派上,用网线连接到莓派上,并通过pc机ssh远程到树莓派上执行这些命令. 3.修改include/driver.h文件中摇控器接收机和电调的gpio引脚编号,编号是wiringPi的编号. 4.执行make命令,编译源代码.如果编译成功则在源代码目录下生成一个可执行文件"release/bin/quadcopter". 5.执行su -c 'release/bin/quadcopter --test 15 0 3000' 命令测试您的gpio和电机,参数说明如下: --test [wringPi引脚编号] [电机运转速度0~1000] [测试时长0~30000毫秒] 测试时需要让电机0和电机2转动方向为顺时针;电机1和电机3转动方向为逆时针.如果您的某一个电机转动方向不正确仅需将电机的3根电源线的任意2根反接即可. 6.执行su -c 'release/bin/quadcopter --ctl' 命令显示并校准您摇控器的3个通道输入pwm信号时长. [BF: 1600 LR: 1600 PW: 1100] --> [BF: 1600 LR: 1600 PW: 1100] BF:表示"前/后",也就是摇控器上控制"前/后"通道的数值,校准时"前/后"通道必须被调节到中心点. LR:表示"左/右",也就是摇控器上控制"左/右"通道的数值,校准时"左/右"通道必须被调节到中心点. PW:表示"油门",也就是摇控器上控制"油门"通道的数值,校准时"油门"通道必须被调节到最低. 按"S"保存(Save的首字母)当前参数; 按"L"载入(Load的首字母)上次保存的参数. 7.执行su -c 'release/bin/quadcopter --fly' 命令进行飞行模式.按键q,w,e,r,t,y,u,i,o,p可以用于切换显示不同的参数.各按键的具体含义如下: q : [v: ]——当前速度 w : [xyz: ]——当前欧拉角 e : [ctlxy]——摇控器角度 r : [g: ]——当前角速度 t : [pid: ]——外环欧拉角的PID参数 y : [vpid: ]——内环角速度的PID参数 u : [ctl zero: ]——摇控器6通道基准 i : [PID/VPID ]——当前调参键对哪一种PID起作用 * : 切换当前调参对象PID还是VPID 0 : 速度归零 1 : 调参幅度为0.01 2 : 调参幅度为0.1 3 : 调参幅度为1 7 : 对P参数增加0.1 (假设调参幅度为0.1) 8 : 对I参数增加0.1 (假设调参幅度为0.1) 9 : 对D参数增加0.1 (假设调参幅度为0.1) 4 : 对P参数减少0.1 (假设调参幅度为0.1) 5 : 对I参数减少0.1 (假设调参幅度为0.1) 6 : 对D参数减少0.1 (假设调参幅度为0.1) + : 速度增加10,最大值为1000 - : 速度减少10,最小值为0 F : 电机解锁 J : 电机锁定 S:保存(Save的首字母)当前参数; L:载入(Load的首字母)上次保存的参数. 8.当程序运行时,电机处于锁定状态(停止转动),不可以通过油门控制电机的转动. 摇控器操作: 将摇控器油门拉至最低,将方向拉至最左侧,并等待3秒以上时间,则电机解锁; 将摇控器油门拉至最低,将方向拉至最右侧,并等待3秒以上时间,则电机锁定(停止转动). 键盘操作: 按下'F'键则电机解锁; 按下'J'键则电机锁定(停止转动). 9.在电机解锁时: 摇控器的油门增加,电机加速;摇控器的油门减小,电机减速. 按下键盘按键'+'电机加速; 按下键盘按键'-'电机减速; 按下键盘按键'0'电机停转; 10.停止调试需要按以下顺序操作: 1)将油门拉至最低或按下键盘'0'键,使电机停转; 2)将摇控器油门拉至最低,将方向拉至最右侧,并等待3秒以上时间(或按下'J'键),电机锁定; 3)关闭四轴飞行控制程序; 4)关闭摇控器; 5)断开电机的电源. 6)调试结束. ##################################################################################################
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.