您可以选择观看视频或者查看文档,这两种方式所讲的内容几乎是相同的:
单执行器力矩控制
介绍
欢迎使用由鑫拓公司研发的关节执行器,这里包含了两部分内容,第一是辨识并消除摩擦力矩,第二是获取电流到力矩的转换系数。这两部分内容使得关节执行器在连接较大质量的负载的情况下也能够轻松地旋转。下载对应功能包请点这
依赖项
ROS noetic or other Version(not tested yet)
Eigen
构建
install Eigen:
sudo apt update
sudo apt install git
git clone https://gitlab.com/libeigeigen.git
sudo cp -r ./eigEigen /usr/include/
sudo apt install libeigen3-dev
install pyyaml:
sudo apt install python3-pip
sudo pip3 install pyyaml
install serial:
sudo apt install ros-noetic-serial
如果发现错误“version `GLIBC_2.34‘ not found”,这会是一个解决方法:
- 打开 /etc/apt/sources.list 文件
sudo gedit /etc/apt/sources.list
- 添加更高版本的源并保存
deb http://th.archive.ubuntu.com/ubuntu jammy main # 添加这行到文件
- install libc6
sudo apt update
sudo apt install libc6
- 重新打开 /etc/apt/sources.list 并删除之前添加的源, 重新更新源
sudo gedit /etc/apt/sources.list
deb http://th.archive.ubuntu.com/ubuntu jammy main # 删除这行
sudo apt update
使用介绍
single_actuator功能包中包含了3个功能(可以在install/share/single_actuator/config/single_actuator.yaml文件中查看):
speed_riction_detection:
- 获取空载情况下执行器为克服摩擦力而输出的电流(简称摩擦电流)与速度的关系
- 该功能控制执行器在不同的速度下进行旋转,并保存其连续反馈的数据,然后使用install/lib/single_autor/speed_frication_fitting文件对电流和速度数据进行拟合,得到电流与速度的关系
torque_friction_detection:
- 获取摩擦与输出力矩的关系
- 本功能需要给执行器输出端装上较大重量的负载,而后收集执行器在不同力矩下摩擦电流变化,使用torque_friction_fitting文件拟合出摩擦电流与输出力矩的关系
torque_identification:
- 获取电流到力矩的转换系数,验证摩擦参数的最终效果
- 根据实际情况在较小幅度上更改摩擦参数
使用步骤
功能1
-
在上位机中修改执行器的默认参数,将加减速度更改为6000。
-
将single_actuator.yaml文件的 feature 参数改为 speed_riction_detection 并根据注释设置好该文件的其他参数,而后运行install/share/single_actuator/launch/torque_control.launch文件:
需要注意的是,如果 record_path 路径不存在,则无法生成记录数据的csv文件;
此时执行器输出端不能装配任何物品,否则将导致测试结果偏大。
cd your_path/install
source ./setup.bash
roslaunch single_actuator torque_control.launch
- 完成该功能需要16分钟左右,在执行器收集完数据并停止转动后,关闭程序,配置好speed_friction_fitting.yaml文件并运行:
chmod +x ./lib/single_actuator/speed_friction_fitting
./lib/single_actuator/speed_friction_fitting
该文件将会输出执行器的7个关于速度的摩擦参数,将这些数值填入single_actuator.yaml文件的 Frict_param 参数中
功能2
- 给执行器加上较大重量的配重,并修改零点偏置,如图所示:
零点应该位于连接杆竖直向下的方向;配重的整体重心应该位于连接杆上
- 将 feature 参数改为 torque_identification 并再次运行torque_control.launch文件:
roslaunch single_actuator torque_control.launch
该功能会将配重举起并识别输出的电流
-
计算配重(包括连接杆)由于重力而对执行器施加的力矩大小,将输出的电流值除以力矩值得到电流到力矩的转换系数,将该系数填到single_actuator.yaml文件的cur_tor_fastor参数中
-
将 feature 参数改为 torque_friction_detection 并再次运行torque_control.launch文件:
roslaunch single_actuator torque_control.launch
该功能将运行2分钟左右
- 在执行器停止后关闭程序,配置好torque_friction_fitting.yaml文件并运行:
chmod +x ./lib/single_actuator/torque_friction_fitting
./lib/single_actuator/torque_friction_fitting
该文件将输出摩擦力与输出力矩的关系参数,其中参数分为旋转方向与输出力矩方向相同(助力方向)和相反(阻力方向)两个部分,各两个参数,将这些数值分别填入single_actuator.yaml文件的 frict_param_assist 和 frict_param_resistance 参数中。
功能3
- 将 feature 参数改为 torque_identification 并再次运行torque_control.launch文件:
roslaunch single_actuator torque_control.launch
- 如果在执行器的非受力方向(竖直方向)感觉到阻力则小幅度增大 Frict_param 参数的最后一个值,反之减小。
- 而后根据实际情况可以适当地调节 frict_param_assist 或 frict_param_resistance 参数的第二位,如果无异常情况则无需调节
比如,如果在执行器转动过程中,旋转方向与力矩方向相同时出现明显减速现象,则增大 frict_param_assist 参数的绝对值,反之减小;旋转方向与力矩方向相反时则调节 frict_param_resistance,方法类似;
- 更改参数后关闭并重新启动程序(注意托住配重,避免配重快速下坠)