# BIRDy: Benchmark for Identification of Robot Dynamics
Without a suitable framework, it is rather difficult for students, engineers or researchers to evaluate the relevance of a parameter identificaiton method for a given scenario.
We here propose a unifying benchmark dedicated to robot identification. So far the following algorithms are implemented:
* Inverse Dynamic Identification Model with Ordinary Least Square (IDIM-OLS)
* Inverse Dynamic Identification Model with Weighted Least Square (IDIM-WLS)
* Inverse Dynamic Identification Model with Iteratively Reweighted Least Square (IDIM-IRLS)
* Inverse Dynamic Identification Model with Total Least Square (IDIM-TLS)
* Inverse Dynamic Identification Model with Maximum Likelihood (IDIM-ML)
* Inverse Dynamic Identification Model with Instrumental Variables (IDIM-IV)
* Direct and Inverse Dynamic Identification Model (DIDIM)
* Closed-Loop Output-Error (CLOE)
* Closed-Loop Input-Error (CLIE)
* Direct Dynamic Identification Model with Extended Kalman Filter (DDIM-EKF)
* Direct Dynamic Identification Model with Square-Root Extended Kalman Filter (DDIM-SREKF)
* Direct Dynamic Identification Model with Unscented Kalman Filter (DDIM-UKF)
* Direct Dynamic Identification Model with Square-Root Unscented Kalman Filter (DDIM-SRUKF)
* Direct Dynamic Identification Model with Central Difference Kalman Filter (DDIM-CDKF)
* Direct Dynamic Identification Model with Square-Root Central Difference Kalman Filter (DDIM-SRCDKF)
* Adaline Neural Network (AdaNN)
* Hopfield-Tank Recurrent Neural Network (HTRNN)
* Physically Consistent Inverse Dynamic Identification Model with Ordinary Least Square (PC-IDIM-OLS)
* Physically Consistent Inverse Dynamic Identification Model with Weighted Least Square (PC-IDIM-WLS)
* Physically Consistent Inverse Dynamic Identification Model with Iteratively Reweighted Least Square (PC-IDIM-IRLS)
* Physically Consistent Direct and Inverse Dynamic Identification Model (PC-DIDIM)
* Physically Consistent Inverse Dynamic Identification Model with Instrumental Variables (PC-IDIM-IV)
## Getting started
### Prerequisites
So far the benhmark was successfully tested on the following platforms:
* Ubuntu 14.04/16.04 + (Matlab R2017a/b, Matlab R2018a/b, Matlab R2019a/b, Matlab R2020a/b, Matlab R2021a)
* Windows 10 + (Matlab R2017a/b, Matlab R2018a/b, Matlab R2019a/b)
It should work on Mac platforms as well. Please let us know if you find any bug.
Important: in case you want to test the physically consistent identification methods based on Semi-Definite Programming (SDP), you must install the [CVX](http://cvxr.com) constrained optimization framework. Note that the results presented in the paper were obtained with the [MOSEK](https://www.mosek.com/) solver. You should install these softwares and add them to the Matlab path to be able to use them.
### Benchmark structure
* The "**Utils**" folder contains the initialization routines called by the main matlab script "**run_identification_benchmark.m**".
* The "**Benchmark**" folder contains 4 subfolders:
* **Robot_Data_Generation** contains the model generation routines, as well as trajectory and experimental data generation tools. These tools are divided into three folders, namely:
* *Dynamic_Model_Generation* (symbolic model generation routines)
* *Experiment_Data_Generation* (experimental data generation routines)
* *Trajectory_Data_Generation* (trajectory generation routines)
* **Robot_Generated_Data** contains all the data generated by the previous tools and distributed for each robot in five sub-folders:
* *<robot_name>/Homogeneous_Transforms*
* *<robot_name>/Jacobian_Matrices*
* *<robot_name>/Dynamic_Model*
* *<robot_name>/Trajectory_Data*
* *<robot_name>/Experiment_Data*
* **Robot_Identification_Algorithms** contains the different parametric identification algorithms
* **Robot_Identification_Results** contains the results of the different algorithms and a set of post-processing functions
### How to run the benchmark
To run the parameter identification benchmark, execute the matlab script "**run_identification_benchmark.m**".
* Once started, this script will call the function "**Utils/initBenchmark.m**", which will in turn:
1. build the benchmark data structures,
2. check that the robot identification model has already been computed and recompute it automatically if necessary,
3. check that the robot trajectory has already been generated and reoptimize it automatically if necessary,
4. check that the experiment data exist and correspond to the trajectory data. Regenetate it automatically if not,
5. check .mex files compatibility and recompile them if necessary.
* Then the desired identification algorithm will be called sequentially on the generated data.
* Once the identification process is over, the results are stored automatically in the folder "**Benchmark/Robot_Identification_Results**" as a set of *.mat* files.
* If desired, these files can eventually be parsed by the post-processing script "**Benchmark/Robot_Identification_Results/postProcessing.m**" in order to generate curves.
You can choose which algorithm to execute and which result to send to the post-processing script, by modifying the data structure "**identificationMethods**", within the main matlab script "**run_identification_benchmark.m**".
### How to (re)generate an excitation trajectory
* If you wish to generate a new robot trajectory for the experiments, set the "**regenerateTrajectory**" flag to "true", in the script "**run_identification_benchmark.m**".
* At the next execution of the benchmarrk, an optimization script will be called and generate a suitable excitation trajectory by parametrising Fourier series.
* You can modify the optimization algorithm by changing the value of the "alg" variable in the script "**Benchmark/Robot_Data_Generation/Trajectory_Data_Generation/generateExcitationTrajectory.m**". So far, you have the choice between 'fmincon' and a generic genetic algorithm.
* The cost function of the optimizer can also be adjusted by modifying the variable "J" in the script "**Benchmark/Robot_Data_Generation/Trajectory_Data_Generation/trajectory_criterion.m**"
* It is possible to add constraints to the optimizer in order to avoid inconsistant trajectories (e.g. self-collisions, and so on). This can be done in the he script "**Benchmark/Robot_Data_Generation/Trajectory_Data_Generation/traj_nl_constraint.m**".
* Note that the experiment data is automatically re-generated when an inconststancy is detected between the actual data and the generated trajectory. For more details have a look at the trajectory check function in "**Utils/trajectoryCheck.m**"
### How to (re)generate experiment data
* If you wish to generate a new bunch of experiment data, set the "**regenerateData**" flag to "true", in the script "**run_identification_benchmark.m**".
* At the next execution of the benchmarrk, the robot model will track the excitation trajectory using a noisy PID controller.
* PID gains and noise levels are defined for each robots in the file "**Utils/SymbolicModelData/Robot_Description_Files/<robot_name>.m**" as:
```matlab
robot.controlParameters.Kp % Proportional gains
robot.controlParameters.Ki % Integral Gains
robot.controlParameters.Kd % Derivative Gains
robot.numericalParameters.sd_q % Encoders noise standard deviation (we assume zero mean gaussian noise)
robot.numericalParameters.sd_tau % Joint torque sensors noise standard deviation (we assume zero mean gaussian noise)
```
* Details about the experiment data generation procedure are given in "**Benchmark/Robot_Data_Generation/Experiment_Data_Generation/generateData.m**"
### How to (re)generate the indentification model of a robot
* If the symbolic model of your robot alread
没有合适的资源?快使用搜索试试~ 我知道了~
BIRDy:机器人动力学辨识基准
共334个文件
m:179个
class:29个
stl:12个
需积分: 5 0 下载量 12 浏览量
2024-04-14
10:29:53
上传
评论
收藏 5.17MB ZIP 举报
温馨提示
如果没有一个合适的框架,学生、工程师或研究人员很难评估参数识别方法对于给定场景的相关性。 在这里,我们提出了一个专用于机器人识别的统一基准。到目前为止实现了以下算法: Inverse Dynamic Identification Model with Ordinary Least Square (IDIM-OLS) Inverse Dynamic Identification Model with Weighted Least Square (IDIM-WLS) Inverse Dynamic Identification Model with Iteratively Reweighted Least Square (IDIM-IRLS) Inverse Dynamic Identification Model with Total Least Square (IDIM-TLS) Inverse Dynamic Identification Model with Maximum Likelihood (IDIM-ML) 。。。。。
资源推荐
资源详情
资源评论
收起资源包目录
BIRDy:机器人动力学辨识基准 (334个子文件)
_clang-format 696B
SetEnv.bat 595B
torqueVector_mex.bat 245B
fileSnapshots.bin 33KB
taskArtifacts.bin 20KB
fileHashes.bin 20KB
outputFileStates.bin 18KB
dynamic-revisions.bin 18KB
module-metadata.bin 18KB
_coder_torqueVector_api.c 4KB
torqueVector.c 4KB
torqueVector_emxutil.c 3KB
_coder_torqueVector_info.c 3KB
_coder_torqueVector_mex.c 2KB
torqueVector_data.c 1KB
torqueVector_terminate.c 957B
torqueVector_initialize.c 785B
rt_nonfinite.c 553B
CATKIN_IGNORE 0B
build_4or99d498qbul2npj8n358cvs9.class 10KB
settings_2rei890sjgiba7asguoof1k3vh.class 10KB
build_ruuffiblnm29v977nljga4hnj.class 10KB
build_ruuffiblnm29v977nljga4hnj.class 9KB
build_ruuffiblnm29v977nljga4hnj$_run_closure2.class 5KB
settings_2rei890sjgiba7asguoof1k3vh$_run_closure2_closure3.class 4KB
build_ruuffiblnm29v977nljga4hnj$_run_closure2_closure4.class 4KB
build_ruuffiblnm29v977nljga4hnj$_run_closure1.class 4KB
InteractiveMarkerControl.class 4KB
Marker.class 4KB
build_ruuffiblnm29v977nljga4hnj$_run_closure1_closure2.class 4KB
build_ruuffiblnm29v977nljga4hnj$_run_closure2_closure6.class 4KB
build_ruuffiblnm29v977nljga4hnj$_run_closure2_closure5.class 4KB
build_ruuffiblnm29v977nljga4hnj$_run_closure1.class 4KB
build_ruuffiblnm29v977nljga4hnj$_run_closure1_closure3.class 3KB
build_ruuffiblnm29v977nljga4hnj$_run_closure3.class 3KB
settings_2rei890sjgiba7asguoof1k3vh$_run_closure1.class 3KB
build_4or99d498qbul2npj8n358cvs9$_run_closure1.class 3KB
settings_2rei890sjgiba7asguoof1k3vh$_run_closure2.class 3KB
settings_2rei890sjgiba7asguoof1k3vh$_run_closure2_closure3_closure4.class 3KB
build_ruuffiblnm29v977nljga4hnj$_run_closure3_closure7.class 3KB
InteractiveMarkerFeedback.class 2KB
ImageMarker.class 2KB
MenuEntry.class 2KB
InteractiveMarkerUpdate.class 2KB
InteractiveMarker.class 2KB
InteractiveMarkerInit.class 1KB
InteractiveMarkerPose.class 833B
MarkerArray.class 561B
visualization_msgsConfig.cmake 8KB
visualization_msgsConfig-version.cmake 427B
visualization_msgs-msg-extras.cmake 339B
visualization_msgs-msg-paths.cmake 226B
.gitignore 165B
.gitignore 165B
build.gradle 2KB
settings.gradle 1KB
build.gradle 334B
torqueVector_emxutil.h 823B
rt_nonfinite.h 739B
_coder_torqueVector_mex.h 702B
torqueVector_types.h 650B
torqueVector_internal_types.h 559B
torqueVector_data.h 499B
torqueVector.h 491B
torqueVector_terminate.h 446B
_coder_torqueVector_api.h 445B
torqueVector_initialize.h 415B
rtwtypes.h 309B
_coder_torqueVector_info.h 304B
visualization_msgs-1.12.7.jar 12KB
visualization_msgs-1.12.7.jar 12KB
InteractiveMarkerControl.java 4KB
Marker.java 4KB
InteractiveMarkerFeedback.java 2KB
MenuEntry.java 2KB
ImageMarker.java 2KB
InteractiveMarkerUpdate.java 2KB
InteractiveMarker.java 2KB
InteractiveMarkerInit.java 1KB
InteractiveMarkerPose.java 787B
MarkerArray.java 458B
compile_commands.json 11KB
bringUR5.launch 835B
LICENSE 1KB
cache.properties.lock 2B
artifacts-26.lock 2B
cache.properties.lock 2B
cache.properties.lock 2B
cache.properties.lock 2B
cache.properties.lock 2B
cache.properties.lock 2B
cache.properties.lock 2B
buildLog.log 8KB
run_identification_benchmark.m 125KB
postProcessing.m 113KB
Inertia_M_TX40_uncoupled.m 44KB
initBenchmark.m 24KB
getFilteredData.m 23KB
computeSymbolicDynamics.m 22KB
RV2SQ.m 21KB
共 334 条
- 1
- 2
- 3
- 4
资源评论
余加木
- 粉丝: 787
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功