首页 > 其他分享 >刘潇翔:基于OpenHarmony的仿生四足狗开发分享

刘潇翔:基于OpenHarmony的仿生四足狗开发分享

时间:2022-09-29 11:37:14浏览次数:89  
标签:四足 OpenHarmony 模组 Hi3861 开发 刘潇翔 调试

刘潇翔:基于OpenHarmony的仿生四足狗开发分享​

说起人工智能机器人界的网红,那就不得不提到——“机器狗”。此前,著名机器人公司波士顿动力制造的“Spot”机器狗、国内知名科技企业蔚蓝科技自主设计研发的“阿尔法”机器狗、小米仿生四足机器人“CyberDog”都曾火爆全网。

机器狗的开发需要硬件、软件及运动行为三者达到协调,并不是一件容易的事,而在嘉立创EDA与传智教育联手举办的《仿生机器狗训练营》中,特等奖获得者刘潇翔脱颖而出,他从0-1打造了一个基于OpenAtom OpenHarmony(以下简称“OpenHarmony”)系统的机器狗,并将在本文中带来一些开发过程中的心得体会分享。


个人介绍​

大家好,我是刘潇翔,现就读于南方科技大学(Southern University of Science and Technology)研一,修读的专业是智能制造与机器人。


开发项目简介​

在这次训练营中,我从机械结构、电控硬件、控制算法、上位机等四个方面设计并制作了一款基于传智教育Hi3861 IoT WiFi模组主控,拥有十二自由度的桌面级四足机器狗—Puppy。

刘潇翔:基于OpenHarmony的仿生四足狗开发分享_引脚

仿生四足狗—Puppy

已经合仓的代码链接

​https://gitee.com/openharmony-sig/contest/tree/master/2022_itcast_LCEDA_OpenHarmony_camp/Harmony%20Puppy​



OpenHarmony学习过程​

我第一次接触到嵌入式开发,还是在立创EDA&传智教育联合举办的物联网实战——智能开关训练营中。在此之前我对OpenHarmony系统了解不是很多,以为仅是运行在移动端与PC端的系统,但我还是对其充满好奇,毕竟这是为了打破技术封锁自主研发的系统。所以我也想了解OpenHarmony嵌入式开发,与常见的单片机STM32、ESP32、ATmega328P这些MCU的开发有什么区别。

传智教育旗下的Hi3861 IoT WiFi模组主芯片为海思Hi3861V100,拥有完整的WiFi功能,支持采用Micropython或C语言开发。由于OpenHarmony的生态相比其他一些主流单片机,还比较单薄,所以辅助开发的相关资料搜集起来相对费力些。我总结了一下个人的学习流程,大致如下:

学习流程:

(1)搜寻并下载不熟悉芯片的硬件数据手册;

(2)参考在Gitee上开源的有关嵌入式的项目代码及文档;

(3)参考OpenHarmony开发者社区交流帖;

(4)通过各种搜索引擎(百度、搜狗、Microsoft Bing等)查找相关文章;

(5)去Bilibili搜索相关内容,碰碰运气;

(6)QQ群,碰碰运气;

(7)以上如果均未得到有效解决方案,根据已有资料,自己研究解决。


接触OpenHarmony最大的惊喜和具体的收获​

要数接触OpenHarmony最大的惊喜,我认为应该是在官方提供的如何采用C语言开发的教学中提供了一种通过SSH实现在WIN10系统内编辑,在虚拟机Ubuntu系统里编译的方法,这个方法对我提供了不小的帮助。

其他惊喜与收获:

(1)传智教育Hi3861 IoT WiFi物联网模组的封装十分精致小巧,该Hi3861模组支持FreeRTOS系统,且支持用Micropython、C语言开发;

(2)初步了解OpenHarmony嵌入式开发的基本流程,并实现了个人需求的相应效果。


对于OpenHarmony系统的建议​

(1)用来烧录程序的Hiburn软件无法保存偏好设置,UI设计及操作界面也有些不够清晰。比如,每次打开都要手动把烧录程序波特率115200调到921600;

(2)用来开发传智教育Hi3861物联网模组的一些基本工具库需要完善。比如,IIC通信、SPI通信、OLED屏幕、TFT屏幕、MPU6050传感器等常用模块的驱动;

(3)传智教育Hi3861模组在Linux环境下编译调试时,不方便找到报错信息。


项目技术过程分享​

(1)机械结构部分采用SolidWorks 2020设计,通过FDM式3D打印制造。其主要设计内容包括躯体与单腿。单腿机构采用平面四连杆构成并联腿,拥有3自由度,设计思路是尽量减轻腿部重量,并且使三个电机安装的位置紧凑集中。躯体采用模块分立结构设计,方便维护更换及升级;

(2)电控硬件部分采用立创EDA专业版设计。关于12路舵机驱动主要由PCA9685PW管理,Hi3861物联网模组主控,供电部分采用了一个DC-DC BUCK型降路压电路,支持最大电流6A,保证电机及控制电路供电充足;

(3)软件部分采用Clion作为编辑器,linux环境下编译。在实现主单腿正逆解、足端摆线轨迹规划的基础上,实现了四足机器狗的Trot小跑步态运动,姿态逆解控制等;

(4)机器人的远程控制App基于Android开发,与四足机器狗之间采用了UDP协议实现无线通信。


项目过程中遇到的困难&解决办法​

困难:

Hi3861模组焊接完成后,按EN复位,串口输出为乱码。

检测结果:

(1)拆除WS2812B灯珠后,串口即能输出正常信息;

(2)拔下MPU6050模块后,串口即能输出正常信息。

解决方案:

(1)拆去连接IO2引脚的WS2812B灯珠;

(2)拔下连接IO7、IO8引脚的MPU6050模块。

疑似原因:

Hi3861模组烧录时,特定引脚不能外接设备。

当我一开始发现输出乱码,惯性上会首先思考MCU的焊接是否良好、串口通讯的电路是否正常、芯片供电是否正常、EN按键是否正常等问题。后来能顺利解决问题也是在检查上面所有问题后歪打正着,意外拆掉那颗WS2812灯珠后才发现复位正常了。

刘潇翔:基于OpenHarmony的仿生四足狗开发分享_单片机_02



项目开发过程最重要或最值得分享的心得​

(1)开发过程中卡壳,先检查硬件问题,再检查软件问题。

硬件问题一般比软件问题更麻烦一些,毕竟可能遇到需要重买材料、重新制板等时间成本较大的修补措施。

硬件问题检查:一般采用控制变量法把所有的嫌疑因素逐个排除。比如,先考虑各器件的焊接是否正常(可采用万用表蜂鸣档检测)。如果有MCU的电路先检查MCU及其外围电路,是否能够烧录程序。之后可通过写各种Demo小程序来快速测试其他硬件资源是否正常。

检查MCU及其外围电路是否正常,可以先观察焊接上是否有虚焊,连锡等情况。如果均无问题可接着测供电电压是否正常。同时需注意,用电端烧毁一般是电压问题,供电端烧毁一般是电流过大。

软件问题调试:如果有报错信息,就去阅读报错信息来调试代码。如果是语法错误就比较容易解决。如果遇到比如LED驱动不亮,先检查封装或LED焊反没,检查原理图上LED是引脚电平拉高还是拉低点亮。如果遇到采用IIC通讯的OLED屏幕无法点亮,先写简单的程序从大到小逐步测通,比如先使屏幕点亮,再试着点亮一个点,再点亮一条线,画出一个方块,写下一个字符。各种功能齐全后再组合调试出自己想要的效果。

而且单片机开发调试时不应该光敲代码,中间需要穿插烧录到单片机看是否能够实现效果。问题多的话尽量分阶段解决,而不是汇总到最后一起解决,不然很可能会出现找不到哪里出错的。

(2)优质的问题获得优质的回答。

提问者要多思考,如何阐述清楚自己的问题,考虑是否方便回答者能简洁地回答自己的问题,比如对方只用回答是还是不是。

比如自己的代码编译报错,如果问为什么自己的代码跑不起来,为什么自己的LED灯不亮了,这无疑很难获得自己想要的答案。因为开发的时候碰到的Bug会有千万种,但是正确的跑通道路却只有一条。如果代码报错,自己首先要去检查所报错的代码段,细化大概在哪一行出现了问题,个人先去通过搜索、调试等手段尝试能否解决。

虽然有时太具体的问题也不太好回答,比如有人问自己想用Hi3861模组开发一款能够监测室内温湿度并实现浇水的智能浇花器。这类问题涉及的内容就比较多,也不好获得自己想要的回答。调整一下的话,比如可以在问题最后加上,哪款温湿度传感器比较推荐,浇水用哪款电机比较合适等之类细化一些的问题。

(3)做项目,要一边开发一边学习。

想做一个项目,不像之前我们所接触的教育那样,先把一个领域全方面熟悉摸透后再去做。毕竟想摸清某个领域都是很不容易的。要明确知道自己的需求,自己想要实现什么,大概可以怎么样去实现,然后再去学习。需要用什么去学什么,需要用多少就学多少,除非自己对某方面非常感兴趣。这样才有可能快速地去完成自己的需求和实现想法。

做项目也是多做才可以更熟练,入门的话可以先跟着资料齐全,文档清晰的优秀开源作品复刻。做了几个后,随后就会慢慢摸索出自己如果想要实现新项目的开展思路。


接下来的开发计划​

(1)完善曾经的项目

由于我对自己之前的一些作品感觉还有很多不满意、可以完善的地方,因此我计划去优化完善曾经一些老项目,包括结构设计、硬件设计、软件设计、项目文档等;

(2)开发一款电机调试器

毕竟我以后的工作很大概率会和机器人相关,预想的功能包括串口调试、CAN调试、舵机调试、总线舵机调试、直流电机调试、功率测量、屏幕显示、PC端上位机交互等。

机器人的发展前景是一片广阔无垠的星辰大海,OpenHarmony也是一样,期待刘同学能够在这两个领域同时不断深耕,并把它们灵活结合起来,创作出更多具有生活意义的作品,切实地影响改善人们的日常生活。


标签:四足,OpenHarmony,模组,Hi3861,开发,刘潇翔,调试
From: https://blog.51cto.com/OpenHarmony/5722075

相关文章

  • 4步成功将三方库——speexdsp移植到OpenHarmony
    4步成功将三方库——speexdsp移植到OpenHarmony​战码先锋,PR征集令(以下简称“战码先锋”)第二期正如火如荼地进行中,涉及OpenAtomOpenHarmony(以下简称“OpenHarmony”)主干仓......
  • #打卡不停更# OpenHarmony-ArkUI(TS)声明式开发之列表拖动排列
    作者:梁青松项目介绍本项目基于OpenHarmony的ArkUI框架:TS扩展的声明式开发范式,关于语法和概念直接看官网官方文档地址:基于TS扩展的声明式开发范式,因为OpenHarmony的API相对......
  • #打卡不停更#编译效率快三倍,使用WSL2编译OpenHarmony嘎嘎得劲!!
    笔者发现使用wsl(WindowsSubsystemforLinux,适用于Linux的Windows子系统)编译openharmony镜像比传统虚拟机快3倍以上。编译环境换成wsl后,编译ohos只需要传统虚拟机上三......
  • 4步成功将三方库——speexdsp移植到OpenHarmony
     战码先锋,PR征集令(以下简称“战码先锋”)第二期正如火如荼地进行中,涉及OpenAtomOpenHarmony(以下简称“OpenHarmony”)主干仓、SIG仓、三方库,共计1000+代码仓任君挑战。......
  • 如何贡献OpenHarmony开发样例
    单丝不成线,独木不成林,一个社区想要健康蓬勃发展离不开社区参与者的持续贡献。而社区贡献点有很多种,本文以贡献OpenAtomOpenHarmony(以下简称“OpenHarmony”)开发样例为例,围......
  • 基于OpenHarmony的智能喝水提醒器
    一、硬件说明NeptuneOpenHarmony物联网IOT模组Wi-Fi&蓝牙双模开发板、超声波模块、蜂鸣器模块、杜邦线若干开发板相关资料:https://gitee.com/hihope_iot/docs/tree/mast......
  • 如何利用OpenHarmony ArkUI的Canvas组件实现涂鸦功能?
     简介ArkUI是一套UI开发框架,提供了开发者进行应用UI开发时所需具备的能力。随着OpenAtomOpenHarmony(以下简称“OpenHarmony”)不断更新迭代,ArkUI也提供了很多新的组件......
  • OpenHarmony 3.2 Beta源码分析之MediaLibrary
     1.MediaLibrary介绍OpenAtomOpenHarmony(以下简称“OpenHarmony”)MediaLibrary媒体库提供了一系列易用的接口用于获取媒体文件元数据信息。MediaLibrary接口是OpenHa......
  • 手把手教你君正X2000开发板的OpenHarmony环境搭建
    摘要:本文主要介绍基于君正X2000开发板的OpenHarmony环境搭建以及简单介绍网络配置情况本文分享自华为云社区《君正X2000开发板的OpenHarmony环境搭建》,作者:星辰27。本文......
  • OpenHarmony中的HDF单链表及其迭代器
    概念为了性能考虑,嵌入式系统一般使用C语言进行开发,由于C语言标准库没有封装链表,所以嵌入式系统一般自己设计和实现链表这种数据结构。单链表是链表中的一种,本文描述Open......