A MATLAB and C++ package to generate and solve equations of motion.
Mainly intended for the dynamical modelling of construction cranes, this package can solve systems with closed kinematic chains, holonomic algebraic constraints, and arbitrary external inputs (including use of state feedback).
The software architecture is designed around homogeneous transformation matrices. To simulate a system, the user specifies the kinematic chain of the system as the sequence of transformations between each joint. The package then symbolically generates the equation of motion through the Euler-Lagrange formulation with Lagrange multipliers. The package can then solve these equations in MATLAB, or export them to C++. Tools provided to visualise the results automatically calculate the joint space trajectories, task space trajectories, and system energies.
DOC LINKS:
EXAMPLES:
run_matlab/Examples/
Theoretical background of user:
- Robotics / Mechanics
- Describe mechanical systems with kinematic chains
- Describe 3D pose with 4x4 homogeneous transformation matrices
- Describe system state with generalised coordinates
- ODEs
- Basic understanding of ODEs
- Set initial conditions
Matlab
- Symbolic Math Toolbox
- Robotics System Toolbox
- Signal Processing Toolbox (used in some input files)
C++
- C++ is only required if using the SUNDIALS solver instead of the MATLAB ODE solvers
- For dependencies, see setup instructions
- Download this repository
- Run the tests to validate that the package is working by executing
run_matlab/Tests/Run_IntegrationTests.m
- Follow the Tutorial to create and run your first model
- Run the examples (
run_matlab/Examples/) to learn more complex functionality - Review the How To
- Review the Reference
This work is companion to our publication
@Article{citeKey,
author = {Johns, Brandon and Abdi, Elahe and Arashpour, Mehrdad},
journal = {Archives of Civil and Mechanical Engineering},
title = {Dynamical modelling of boom tower crane rigging systems: model selection for construction},
year = {2023},
issn = {1644-9665},
number = {3},
pages = {162},
volume = {23},
doi = {10.1007/s43452-023-00702-x},
}(Optional) If you find this work to be useful, please message me and share how you used it. I'd love to hear about it. You can find me here: twitter, linkedin.
This research was supported by an Australian Government Research Training Program (RTP) Scholarship.
This work is distributed under the BSD-3-Clause License
The data, user guide, and documentation are distributed under the Creative Commons CC BY 4.0 license
This project is hosted at https://github.com/Brandon-Johns/crane-dynamics-simulator