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