Tinymal-B控制教程介绍-快速教程

本教程介绍了如何快速使用Tinymal机器人

1 开源控制例程下载

Tinymal-B目前开源了基于运动学逆解的控制例程,开源了完整的导航与伺服控制任务,基于控制例程可以快速学习基本的MPC控制方法和逆运动学位力混合控制框架,相关控制原理、教程编译环境搭建方式可以查看控制教程:
链接:https://pan.baidu.com/s/10Y1T0kHhVPWidOV6iQHFPg 提取码:taye --来自百度网盘超级会员V3的分享

2 固件更新与下载(2023.8.26日后发货的主控需要用户自行跟新)

Tinymal机器人在后续软件更新中,可能需要用户自行完成的固件下载和更新,总共包括4个步骤:
1)载板(发货时,默认已经下载);
2)TS-NODE(发货时,默认已经下载);
3)主控(需要自己更新);
4)JetsonNano(需要下载镜像,重新编译最新项目源码);
前两个部分主要采用STlink的SWD直接下载(配合我们提供的转接模块),下面重点介绍主控部分固件更新流程:
更新主控程序可以采用两种方式,一是直接使用WinSCP这样的工具到ODroid目标机中拖拽替换,另外一种是使用脚本自动下载。二者都需要进入目标机使用top指令查看pid号,然后关闭当前已经自启动运行的程序。
首先,下载合适固件http://tinymal.cn/5d13/6a93
用网线连接主控和路由器,给主控供电,登录路由器确认主控IP,登录路由器管理界面查看连接的设备(路由器操作可查看其使用方法):
采用Ubuntu系统在控制台输入如下指令进入目标机:
ssh odroid@192.168.1.106 (替换为路由器显示的IP地址) pwd:odroid
采用top查看当前运行的软件,首次更新需要关闭hardware、navigation、control三个程序,如后续软件开发仅需要替换修改的固件:
top
在更新固件时首先采用kill指令杀死对应PID的进程:
sudo kill -9 进程PID号 e.g. sudo kill -9 1705
如果使用Ubuntu系统下载,需要新建.sh脚本采用chmod +x进行授权,目录指向固件存放的路径,IP与主控对应:
#!/bin/bash scp ./build/*task2 odroid@192.168.1.126:/home/odroid/Corgi scp ./build/*task2_opensource odroid@192.168.1.126:/home/odroid/Corgi scp ./control_task2/Param2/param_* odroid@192.168.1.126:/home/odroid/Corgi/Para
也可以采用winscp软件直接拖拽更新:
运行脚本进行下载:
在目标机中cd到下载固件的目录采用sudo指令可以运行测试:
sudo ./control**
修改自启动,如果采用如下指令可以查看目标机中的自启动程序:
sudo nano /etc/rc.local
如果不是2后缀的则需要修改为对应固件:
sleep 5 sudo /home/odroid/Corgi/hardware_task2 & sleep 1 sudo /home/odroid/Corgi/control_task2 & sleep 1 sudo /home/odroid/Corgi/navigation_task2 &
最后打开参数param文件夹确认下是否是Tinymal-small的名字,如果不是也请下载最新参数进行更新, 下载固件http://tinymal.cn/5d13/6a93。  :
程序如果启动时无法下载更新,固件、配置参数需要杀死进程后才可以下载

3 下载器转接板说明

我们默认配套了MicroUSB转换模块,4P线和USB转换头,针对主控和TS NODE下载区别如下
  • 主控连线说明:
首先4P线采用同面(即按线梳理最终两个端子头朝向面一样),将其与SWD口和MicroUSB转接模块连接:
上图连接的为SWD下载口,引脚顺序为:
下图为USB转换模块,下载程序可以直接使用STlink连接小转接板上排针引脚,另外可以通过Micro USB口连接延长线到转接模块:
USB转换模块定义如下:
  • TS-Node上位机连接说明:
TS-Node下载固件方法与主控载板一样,但是需要注意下由于版本问题,如果收到的是双路TS-NODE其PCB上端子为立端子需要采用异面4P线,如果是卧贴采用同面就可以,如果收到的是单路TS-NODE则立贴的也采用同面4P线。
另外连接上位机时MicroUSB线不需要再与USB转换模块连接,直接插入PC即可!

3 开源控制例程下载

Tinymal-B目前开源了基于运动学逆解的控制例程,开源了完整的导航与伺服控制任务,基于控制例程可以快速学习基本的MPC控制方法和逆运动学位力混合控制框架,相关控制原理、教程编译环境搭建方式可以查看控制教程:
链接:https://pan.baidu.com/s/10Y1T0kHhVPWidOV6iQHFPg 提取码:taye --来自百度网盘超级会员V3的分享

4 机器人移动时偏差修正

如果机器人在机动中出现给前后指令往某方向偏,即走不了直线,这可能是当前IMU策略精度导致的,可以通过在param_gait.yaml中可以修改如下固定横滚策略偏差:
1)首先将机器人水平放置在地面,完成IMU标定;
2)进行移动测试,微调改值,如果需要机器人往左调整则为+,往右为-,修改后需要重启control程序参数才能生效;
3)如果重新标定了IMU,则需要再次进行上述步骤!
att_bias_rol: 1 #+ to left

5 机器人前后移动时交叉腿

由于机器人腿部标定或者IMU标定问题,前后移动会随着速度出现前后腿交叉,导致运动效果变差,而最理想的移动效果是前后直线移动中,前后两侧腿落足宽度一致,可以通过在param_gait.yaml中可以修改:
trot_fb_off_y: [1.05,0.45]
其中数组[0]为前进时的偏差补偿,该值越大,前进中,前侧腿张开宽度越大;
数组[1]为后退时的偏差补偿,该值越大,后退中,后侧腿张开宽度越大;

6 DIY机器人配置参数介绍

Tinymal采用配置文件参数管理,可实现参数快速调节与机器人DIY需求,主要包括param_gait.yaml涉及所有步态控制参数:
  • param_robot.yaml涉及机器人结构参数:
robot_param为机器人基本配置参数,L1为大腿长度,L2为小腿,L3为侧展偏距,Mess为机体质量,I为机体转动惯量:
robot_param: L1: 0.12 L2: 0.145 L3: 0.075 L4: 0.0 H: 0.306 W: 0.09 Q_side_bias: 0.0 Mess: 6.0 Ix_Body: 0.04 Iy_Body: 0.05 Iz_Body: 0.05
kin_param中head为腿部朝向,顺序与腿号一致+1为反肘,-1为正肘,int_q为初始化角度,rst_q为标定0度的角度,tau为扭矩限制:
kin_param: #0右前腿 dof_num: [3,3,3,3] kin_head: [1,-1,1,-1] max_q0: [90,90,90,90] min_q0: [-10,-10,-10,-10] max_q1: [150,150,150,150] min_q1: [27,27,27,27] max_q2: [45,45,35,35] min_q2: [-35,-35,-45,-45] int_q0: 80 int_q1: 25 int_q2: 0 rst_q0: [80,80,80,80] rst_q1: [18,18,18,18] rst_q2: [1,1,1,1] max_q_tau_div: [8,8,8] #Nm max_q_tau: 8 #Nm max_q_I: 8 #A i_2_Nm_q: [1.0,1.0,1.0,1.0] #Nm.A
dyn_param为单腿动力学配置参数,分别为大腿电机质量、大腿结构质量、小腿质量、侧展模组质心偏差、大腿质心位置百分比、小腿电机质心偏差:
dyn_param: MESS_KIN1: 0.3 #kg MESS_KIN12: 0.02 #kg MESS_KIN2: 0.32 #kg L_MESS_KIN1: 0.01 #l3 L_MESS_KIN12: 0.45 #rate*l1 L_MESS_KIN2: 0.065 #l3
touch为着地的力阈值(单位:N)、速度门限和反向史密斯触发器判断次数:
touch_st_stand: st_td: 5 st_lf: 2 check_spd: 0.6 check_td: 1 check_lf: 1 touch_st_trot: st_td: 5 st_lf: 2 check_spd: 0.6 check_td: 1 check_lf: 1 touch_swing: st_td: 16 trot_sw: 10 st_lf: 2 check_spd: 1.2 check_td: 2 check_lf: 1 touch_td: st_td: 7 st_lf: 1.5 check_spd: 0.8 check_td: 2 check_lf: 1
2023-08-26