Tinymal-B的控制系统开发主要包括两部分:
1)基于UDroid-Pihat载板的伺服驱动开发,该部分教程可以参考载板独立的教程与资料;
2)机器人运动控制与力控算法开发,本教程主要围绕该部分内容进行介绍。 为方便用户基于Tinymal-B机器人完成运动控制与力控制算法的研究,我们除了提供功能持续更新的官方稳定固件外,还开源底层伺服、顶层导航软件代码工程与步态控制Demo工程。前者提供的固件具备稳定优异的步态运动能力,可以基于开源导航项目或ROS节点完成对机器人遥控、导航、SLAM算法的开发;基于底层伺服开源代码用户可以移植MIT或部署自己的运动控制算法,或者运行强化学习模型;我们开源的步态控制Demo工程以基本的站立步态为例,搭建了完善的运动学、雅克比运动学、力控制、模型预测和卡尔曼滤波器框架,可以快速入门机器人运动控制学习并作为基本的项目工程,进行改进与优化,同时随着我们项目受众不断扩大我们也将同步更新Trot等其他步态控制的例程,Tinymal机器人基本的开发方式如下表所示:
1. Linux下项目的基本开发说明
机器人运动控制对主控制器计算实时性和伺服通讯可靠性要求很高,这里我们提供了一个在Linux环境下采用QT作为IDE开发基本流程,其主要采用交叉编译实现固件更新与下载。这里以官方主控套件采用的Odroid-C4主控为例,对整个项目开发模式进行讲解,本项目开发参考了MIT等国外机器人方案,具体流程如下图所示:
如上图所示整个项目的开发流程如下:
(1)在Ubuntu虚拟机中通过QT完成运动控制代码编译,由于Odroid为ARM平台采用交叉编译生成固件,然后通过无线网络将可执行文件传输到Odroid中;
(2)载板在Keil中完成STM32驱动开发,使用STlink完成固件更新;
(3)Odroid运行固件后通过SPI读取STM32姿态和关节数据反馈,然后下传伺服驱动指令;
(4)STM32完成IMU数据采集和姿态解算,通过SPI与主控通讯,使用CAN完成对节点或电机的通讯;
2. IDE开发环境的搭建
由于Odroid为ARM平台而Ubuntu虚拟机为X86平台,因此需要配置交叉编译。打开QT tools-options配置GCC和C++编译器,拷贝资料中的cross-gcc(1.1G压缩包)到虚拟机中,参考下面的例子分别修改编译器使用的地址:
如果仅想进行ROS开发,那可以持续关注我们固件更新与使用方法:Tinymal-B官方固件更新地址
链接:https://pan.baidu.com/s/1RKb3Dm4lzwa-JMN_Mmm_hQ
提取码:blp0
--cross-gcc(1.1G压缩包
(1)首先在虚拟机中需要搭建QT相关IDE开发环境(我们采用Vmware 15.5.6 build-16341506,Ubuntu 18.04.5 LTS进行开发,QT版本为4.15.0):
由于Odroid为ARM平台而Ubuntu虚拟机为X86平台,因此需要配置交叉编译。打开QT tools-options配置GCC和C++编译器,拷贝资料中的cross-gcc(1.1G压缩包)到虚拟机中,参考下面的例子分别修改编译器使用的地址:
解压资料中的项目工程压缩包:
删除其中已有的编译文件,采用QT打开其cmakelist文件,采用新建立的交叉编译工具Kit编译对应的Release版本。编译如无误后可以在build文件夹找到可执行文件:
注:根据cmakelist中的路径配置最终产生的可执行文件将会在不同的文件夹中!
(2)在得到固件后,就可以采用无线或有线(UDroid联网参考之前的介绍)的方式将其传输到目标机中这也是Mini Cheetha项目的方式,通过资料中的download.sh脚本进行下载(在拷贝到虚拟机后首先需要在控制台中对其授权sudo chmod +x download.sh,脚本中实际就是采用SSH指令完成文件的传输):
scp ./build/*task2 odroid@192.168.1.120:/home/odroid/Corgi
其中需要注意拷贝的文件和目标机IP与目标地址;
(3)在固件下载后同样采用ssh odroid@192.168.1.120完成远程登录,在输入密码odroid后进入目标机,首次下载需要对文件进行授权,之后采用sudo指令对其进行启动!