{"id":17797342,"url":"https://github.com/kjyv/flobaroid","last_synced_at":"2025-10-04T18:47:32.490Z","repository":{"id":138798359,"uuid":"49442839","full_name":"kjyv/FloBaRoID","owner":"kjyv","description":"Framework for dynamical system identification of floating-base rigid body tree structures","archived":false,"fork":false,"pushed_at":"2019-01-28T06:01:55.000Z","size":51906,"stargazers_count":63,"open_issues_count":6,"forks_count":26,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-02T03:15:00.762Z","etag":null,"topics":["dynamics-models","excitation","identification","measurements","parameter-estimation","robotics","urdf","yarp"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kjyv.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-01-11T17:38:06.000Z","updated_at":"2025-01-11T09:46:13.000Z","dependencies_parsed_at":null,"dependency_job_id":"f7329a36-951f-4bce-98d9-e8b1e938774b","html_url":"https://github.com/kjyv/FloBaRoID","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kjyv/FloBaRoID","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kjyv%2FFloBaRoID","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kjyv%2FFloBaRoID/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kjyv%2FFloBaRoID/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kjyv%2FFloBaRoID/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kjyv","download_url":"https://codeload.github.com/kjyv/FloBaRoID/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kjyv%2FFloBaRoID/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278358473,"owners_count":25973946,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-04T02:00:05.491Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dynamics-models","excitation","identification","measurements","parameter-estimation","robotics","urdf","yarp"],"created_at":"2024-10-27T11:54:00.302Z","updated_at":"2025-10-04T18:47:32.437Z","avatar_url":"https://github.com/kjyv.png","language":"Python","readme":"# FloBaRoID [![Build Status](https://travis-ci.org/kjyv/FloBaRoID.svg?branch=master)](https://travis-ci.org/kjyv/FloBaRoID)\n\n(FLOating BAse RObot dynamical IDentification)\n\nFloBaRoID is a python toolkit for parameter identification of floating-base rigid body tree-structures such as\nhumanoid robots. It aims to provide a complete solution for obtaining physical consistent identified dynamics parameters.\n\n\u003cdiv\u003e\n\u003cimg alt=\"Overview diagram\" src=\"https://cdn.rawgit.com/kjyv/FloBaRoID/master/documentation/identification_overview.svg\" width=\"57%\" align=\"left\" hspace=\"5px\"\u003e\n\u003cimg alt=\"Visualization of Kuka LWR4+\" src=\"documentation/kuka_vis.png\" width=\"38%\"\u003e\n\u003c/div\u003e\n\nTools:\n\n* **trajectory.py**: generate optimized trajectories\n* **excite.py**: send trajectory to control the robot movement and record the resulting measurements\n* **identify.py**: identify dynamical parameters (mass, COM and rotational inertia) starting from an URDF description and from torque and force measurements\n* **visualize.py**: show 3D robot model of URDF, trajectory motion\n\n\nFeatures:\n\n* find optimized excitation trajectories with non-linear global optimization (as parameters of fourier-series for periodic soft trajectories)\n* data preprocessing\n    * derive velocity and acceleration values from position readings\n    * data is zero-phase low-pass filtered from supplied measurements\n    * it is possible to only select a combination of data blocks to yield a better condition number (Venture, 2009)\n* validation with other measurement files\n* excitation of robots, using ROS/MoveIt! or Yarp\n* implemented estimation methods:\n  * ordinary least squares, OLS\n  * weighted least squares (Zak, 1994)\n  * estimation of parameter error using previously known CAD values (Gautier, 2013)\n  * essential standard parameters (Pham, Gautier, 2013), estimating only those that are most certain for the measurement data and leaving the others unchanged\n  * identification problem formulation with constraints as linear convex SDP problem to get optimal physical consistent standard parameters (Sousa, 2014)\n  * non-linear optimization within consistent parameter space (Traversaro, 2016)\n* visualization of trajectories\n* plotting of measured and estimated joint state and torques (interactive, HTML, PDF or Tikz)\n* output of the identified parameters directly into URDF\n\nrequirements for identification module:\n\n* python 2.7 or \u003e= 3.3\n* python modules\n    * numpy (\u003e 1.8), scipy, sympy (== 1.0), pyyaml, trimesh, cvxopt, pylmi-sdp, matplotlib (\u003e= 1.4), colorama, palettable, humanize, tqdm\n    * iDynTree, e.g. from [iDynTree superbuild](https://github.com/robotology/idyntree-superbuild/) (with enabled python binding)\n    * when using Python 2.7: future\n    * when using Python \u003c 3.5: typing\n* dsdp5 (command line executable)\n\noptional:\n\n* pyglet, pyOpenGL (for visualizer)\n* symengine.py (to speedup SDP)\n* mpld3, jinja2 (for html plots)\n* matplotlib2tikz (for tikz plots)\n* rbdl (alternative for inverse dynamics)\n\nrequirements for excitation module:\n\n* for ros, python modules: ros, moveit\\_msg, moveit\\_commander\n* for yarp: c compiler, installed [robotology-superbuild](https://github.com/robotology-playground/robotology-superbuild), python modules: yarp\n* for other robots, new modules might have to be written\n\nrequirements for optimization module:\n\n* optimization: python modules: iDynTree, pyOpt (fork at https://github.com/kjyv/pyOpt is recommended)\n* pyipopt from https://github.com/xuy/pyipopt (plus cmd line ipopt/libipopt with libhsl/coin-hsl)\n* mpi4py / mpirun (for parallel trajectory optimization)\n* [fcl 0.5.0](https://github.com/flexible-collision-library/fcl/releases) and python-fcl (from https://github.com/jf---/python-fcl) (possibly disable octomap if there are errors)\n \n\nYou can do `pip install -r requirements.txt` for most of them but you will need to check for the correct versions of each library. You might have to install some library dependencies if you get compile errors. If you're using on Ubuntu and also have ros installed, it is recommended to install with pip within a [virtualenv](https://virtualenv.pypa.io/en/stable/).\n\nAlso see the [Tutorial](documentation/TUTORIAL.md).\n\nKnown limitations:\n\n* trajectory optimization is limited to fixed-base robots (full simulation, balance criterion etc. not implemented)\n* YARP excitation module is not very generic (ROS should be)\n* using position control over YARP is not realtime safe and can expose timing issues (especially with python to C bridge)\n* Since preparing SDP matrices uses sympy expressions, most of the time for solving the identification problem is spent in symbolic manipulations rather than the actual convex optimization solver. Possibly the time demands can be reduced.\n\nSDP optimization code is based on or uses parts from [cdsousa/wam7\\_dyn\\_ident](https://github.com/cdsousa/wam7_dyn_ident)\n\nUsage is licensed under the LGPL 3.0, see License.md. Please quote the following publication if you're using this software for any project:\n`S. Bethge, J. Malzahn, N. Tsagarakis, D. Caldwell: \"FloBaRoID — A Software Package for the Identification of Robot Dynamics Parameters\", 26th International Conference on Robotics in Alpe-Adria-Danube Region (RAAD), 2017`\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkjyv%2Fflobaroid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkjyv%2Fflobaroid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkjyv%2Fflobaroid/lists"}