
这是APM2.5飞控系统中提取出的库文件,具有完整的PID(比例,积分、微分)运算功能。
解压后,将文件带目录一起放到Arduino\libraries\子目录中去,重新启动Arduino,在示例中能找到这个库的示例。打开后,你需要自己再研究研究。
毕竟PID控制技术是经典的自动控制理论,如果你不具备这方面的基础知识,想拿来就用好,还是要费点脑筋的。好在这里有这个库,你应该可以节省不少精力。
可是在上迅碰面的程序中,当PID不规则的调用时就会出现两个问题:1.有时候定时调用,有时候又停止调用,将得不坦昌并到PID的持续稳定特性。
2.需要额外对积分和微分进行数学计算,因为他们都是和时间息息相关的。
解决方法:保证PID在一个固定的的时间间隔内被调用,让迹我通过每个周期内事先设置好的采样时间调用compute函数,PID再决定是计算还是立即返回数值。一旦我们知道PID在固定时间间隔内被调用,积分和微分的计算就能被简化。
于是我们的程序就变成了
如果编译和上传分离到不同的机器上执行,可以使用下面方式。依赖
安装arduino环境
sudo apt-get install arduino
编译
在Arduino IDE环境下,写好源码程序(以.ino结尾姿州兆的文件)。然后
Arduino ->Preferences ->”Show verbose output during”选择”compilation”。点击编译,在下方的输出迹哪框最后一行显示如下内容
/usr/share/arduino/hardware/tools/avr/bin/avr-objcopy -O ihex -R .eeprom /tmp/build355782919138539048.tmp/Blink.cpp.elf /tmp/build355782919138539048.tmp/Blink.cpp.hex
可以得迹租知, 源码(.ino)编译后生成的二进制文件为/tmp/build355782919138539048.tmp/Blink.cpp.hex
上传
把上一步编译生成的二进制文件上传到arduino控制板上。
/usr/share/arduino/hardware/tools/avrdude -patmega2560 -cwiring -P/dev/ttyACM0 -b115200 -D -Uflash:w:/tmp/build355782919138539048.tmp/Blink.cpp.hex:i
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)