#### 今日推荐: 六足机器人(hexapod robot)控制板 --- 项目参与人员: * 成都信息工程大学大四学生[[page_hankun.zhang|张瀚坤]] * 北京石油化工学院硕士研究生[[page_jiwei.ren|任继伟]] * 复旦大学硕士研究生[[page_haoqian.li|李豪乾]] {{ :img_0843.jpg |}} --- #### 功能要求 基于小脚丫FPGA板和树莓派设计六足机器人控制和驱动系统。 - 摄像头采集 - 避障 - 手机遥控 #### 性能要求 - 运动流畅 - 电源能够保障持续工作20分钟以上 ### 项目方案 --- #### 方案综述: {{ :方案论述.png |}} * 1.控制电源模块:为Raspberry Pi、FPGA模块供电。 * 2.执行电源模块:为驱动模块供电,能满足驱动模块的总电流要求。 * 3.Raspberry Pi :控制中心。接收上位机的控制信息,控制FPGA输出正确的PWM波形。 * 4.FPGA:数据处理模块,控制驱动板。 * 5.驱动模块:驱动18个舵机使六足协调运动。 * 6.通讯:(模块间的通信协议) * Pi--FPGA:uart/I2C * Pi--PC:socket #### 购买清单: {{ :购买清单.png |}} #### 关键元器件及参数: * 电源: * CKCY BUCK2+ 购买链接:https://item.taobao.com/item.htm?spm=a230r.1.14.51.15cb64f8FBM5CY&id=542881952197&ns=1&abbucket=18#detail * LION Power 购买链接:https://item.taobao.com/item.htm?spm=a230r.1.14.45.35ff5585UyWOUv&id=545235225719&ns=1&abbucket=20#detail {{ :控制电源.png |}} {{ :电源2.png |}} * SN74LVC244A八路缓冲器(3个): * SN74LVC244A具有三态输出的八路缓冲器或驱动器数据表: http://www.ti.com/lit/ds/symlink/sn74lvc244a.pdf * FPGA: {{ :fpga.png |}} * 舵机:LDX-218 {{ :舵机.png |}} * 自恢复电阻丝 {{ :自恢复电阻.png |}} * 铝质电解电容器-SMD * 数据表:https://www.mouser.cn/ProductDetail/United-Chemi-Con/EMZR100ARA102MHA0G?qs=sGAEpiMZZMukHu%252BjC5l7YapRGWlqrIlqhjJ7X3G6n3Q%3D {{ :电解电容.png |}} * 树莓派3b+ [[http://www.eetree.io/doc/rpi#%E6%A0%91%E8%8E%93%E6%B4%BE%E7%9A%84%E7%A1%AC%E4%BB%B6%E5%8F%8A%E9%85%8D%E7%BD%AE|树莓派的硬件及配置]] * 摄像头CSI摄像头 #### 实施计划: ##### 第一阶段:实现六足机器人的各个模块连接 * FPGA : * PWM :测试 PWM波形测试(1.波形周期 2.最小步进距离) * 确定与树莓派通信接口:Uart/I2C * 数据分析 :通信数据格式 * Pi: * Uart/I2C * 摄像头 * 舵机: * 0点的确定 * 特性 * 驱动电流 * 执行精度 * 电源: * CKCY BUCK2+模块 * 原理图: * 18路PWM产生模块 * 18路舵机驱动模块 ##### 第二阶段:实现项目任务的一部分 * FPGA:PWM+缓冲器或驱动器(做控制与驱动隔离) * 电源:根据CKCY BUCK2+电源模块,自己设计电源模块 * 舵机:实现一条腿的控制 * 制板 ##### 第三阶段:实现传感器任务 * PI:加入摄像头和超声波功能 * FPGA:通过I2C挂载传感器 * 电源:根据LM2596电源模块,自己设计电源模块 * 舵机:实现简单的移动 * 制板 ##### 实体结构: 简单模块化设计 * 模块设计 {{ :系统结构布局图.png |}} * 安装方式 {{ ::ph_des2.png |}} ### 项目实施 --- ##### 原理图 Raspberry_Pi-FPGA转接板:{{:sheet1.pdf|}} {{ :rasperry_pi-fpga转接板.png |}} 电机驱动板:{{:drive.pdf|}} {{ :驱动板原理图.png |}} #### PCB制造设计 ##### PCB图 ###### Raspberry_Pi-FPGA转接板: {{ :转接板3d图.jpg?400|}} {{ :转接板pcb图.jpg?400 |}} ###### 电机驱动板: {{ :驱动板3d图.jpg?700 |}} {{ :驱动板pcb图.jpg?500 |}} #### BOM表 * BOM表 fpga_pi {{ :fpga_pi_bom.png |}} * BOM表 fpga_drive_18pwm {{ :fpga_drive_18pwm_bom.png |}} #### PCB焊接、调试 * 逐次增加舵机数量,调试18路舵机同时启动 {{ :tiaoshi.gif |}} * 六足机器人直走演示: {{ :六足机器人直走视频.mp4 |}} * 六足机器人打招呼: {{ :六足机器人打招呼.mp4 |}} #### FPGA连接和Verilog编程 * FPGA连接图 {{ :六足fpga连接图.png?600 |}} * 六足机器人实物连接图 {{ :spider实物连接图.jpg?600 |}} * Verilog编程 {{:六足_单舵机_code.7z|}} {{:六足_四态_code.7z|}} #### 系统测试 * 出现的问题:机器人走直线时,出现向右的偏差。 * 问题解决:适当调节右边的前后舵机度数 ### 项目报告 --- #### 项目简要总结 #####项目完成情况 硬件方面 舵机选型 电池选型 舵机驱动板 - 原理图设计 - PCB设计、打板和焊接 Raspberry Pi与小脚丫FPGA扩展板 - 原理图设计 - PCB设计、打板和焊接 资源查找方面: * ADI传感器www.analog.com * wiki百科:en.wikipedia.org * https://www.digikey.com.cn/ * mouser.cn、TI官网、Ultra Librian、samacsys等。 实现了两套控制系统 - 六足机器人的步态固化在FPGA内部,树莓派只需要发送简单的命令就可以控制六足机器人前进、原地转动。 - 树莓派通过控制协议,让小脚丫FPGA针对某一个舵机进行控制。 - 实现了树莓派摄像头的web访问。 现在存在的问题 - 电路板上的标注不够详细,对焊接和调试造成了困难。 - 两套软件需要对小脚丫FPGA重新烧写程序才能切换。 - 六足机器人的舵机线未作整理。 - 超声波模块未增加到系统中。 遗憾: - FPGA锁相环如何使用 - IP核如何移植 - FPGA的内部结构 - 未能自己设计电源 #### 项目达到的指标 * 系统工作20分钟 * 摄像头web访问 #### 参考文献 --- ##### Diamond安装及调试 * 官网获取许可证:http://www.latticesemi.com * 软件安装教程:[[http://www.stepfpga.com/doc/%E8%BD%AF%E4%BB%B6%E5%AE%89%E8%A3%85%E5%8F%8A%E9%85%8D%E7%BD%AE|Diamond的安装及配置]] * [[http://www.stepfpga.com/doc/lattice_diamond%E7%9A%84%E4%BD%BF%E7%94%A8|lattice_diamond的使用:跑马灯的简单例程]] *调试中出现的问题1:✘不能识别USB串口 *解决:安装下载USB驱动,重新编译,下载。 * [[http://www.stepfpga.com/doc/|FPGA的学习教程]] ---- ##### 相关参考资料: * 树莓派使用相关资料: * [树莓派资料](http://www.eetree.io/doc/%E9%80%82%E9%85%8D%E6%9D%BF_%E6%A0%91%E8%8E%93%E6%B4%BE) * [树莓派+usb摄像头](https://www.raspberrypi.org/documentation/usage/webcams/) * [树莓派+hc-sr04超声波测距](https://tutorials-raspberrypi.com/raspberry-pi-ultrasonic-sensor-hc-sr04/) * [树莓派的c语言编程](https://raspberry-projects.com/pi/programming-in-c/i2c/using-the-i2c-interface) * [树莓派写iic](https://raspberry-projects.com/pi/programming-in-c/i2c/using-the-i2c-interface) * [Linux tcp/ip编程](https://www.thecrazyprogrammer.com/2017/06/socket-programming.html) * Stackoverflow上关于[Linux 串口编程](https://stackoverflow.com/questions/6947413/how-to-open-read-and-write-from-serial-port-in-c) * FPGA使用相关资料: * [fpga产生pwm波资料1](https://www.fpga4student.com/2017/08/verilog-code-for-pwm-generator.html) * [fpga产生pwm波资料2](https://www.allaboutcircuits.com/projects/a-pwm-driver-for-fpga-and-soc-design-using-verilog-hdl/) * [fpga生成pwm波资料3](http://referencedesigner.com/tutorials/verilogexamples/verilog_ex_09.php) * [小脚丫fpga 串口](http://www.stepfpga.com/doc/uart%E4%B8%B2%E5%8F%A3%E6%A8%A1%E5%9D%97) * [小脚丫脉宽调制例程](http://www.stepfpga.com/doc/9._%E5%91%BC%E5%90%B8%E7%81%AF) * [PWM风扇控制设计文档以及PWM风扇控制设计源代码](http://www.stepfpga.com/doc/fpga_start) * [FPGA相关视频](https://www.moore8.com/courses/list/?cid=3) * 六足机器人参考资料: * [基于树莓派的六足机器人](https://medium.com/@mithi/a-raspberry-pi-hexy-transcript-62533c69a566) * [六足机器人资料1](https://www.robotshop.com/community/robots/show/hexpi-a-robopi-raspberry-pi-based-hexapod-robot) * [六足机器人资料2](https://blog.hackster.io/modifying-a-cheap-hexapod-robot-toy-to-run-on-a-raspberry-pi-479e181daf78) * [六足机器人舵机](https://item.taobao.com/item.htm?spm=a230r.1.14.11.252d28628nHb60&id=19653902949&ns=1&abbucket=18#detail) * 正在Crowdsupply上众筹的[一种基于树莓派的开源的机器人和自动控制器](https://www.crowdsupply.com/robotics-masters/robo-hat-mm1),该产品的官方网站:https://roboticsmasters.co/pages/robo-hat-mm1/, [[robohatmm1|Robo HAT MM1的资料]] --- 关于硬禾实战营研究生技能培训更多的实战项目信息,参见[[handsontraining|硬禾实战营研究生技能培训项目第一期]]