This tutorial provides a complete system architecture example using System Composer, building on the following resources:
- https://github.com/icub-tech-iit/training-matlab-pendulum
- https://github.com/icub-tech-iit/training-simscape-pendulum
In detail, the project consists of a system controlling a pendulum, showing how to deal with:
- Requirements
- Architectures
- Variant subsystems
- Test harnesses
- Test cases
- Digital threads
Open the project and browse it to discover how the requirements are linked to the architecture,
how the architecture is linked to the test harnesses, and how the test harnesses are linked to the test cases.
This is the so-called digital thread.
Run the test suite to verify that the system is working as expected.
playback_mech_explorer.mp4
- Create a further requirement to verify the safety properties of the system when the pendulum gets
in contact with an external obstacle while being driven by the controller at a constant velocity:
"The contact shall be detected and the interaction force shall be reduced under$1$ $\text{N}$ within$1$ $\text{s}$ ".
"Once the contact is detected, the system stops receiving further set-points". - Enable the
Test Safety
in the test suite and associate the new requirement to the test case. - Modify the controller to take the safety requirement into account.
- Run the test suite to validate your approach.
To complete the assignment do:
- Generate a copy of this repository into your account. Tick in the option "include all branches" ✔
- Create the branch
solution
off of the branchmaster
. - Commit into the branch
solution
your development. - Push/sync the changes up to GitHub.
- Create a pull request (PR) with
master
as base branch andsolution
as compare branch. - Request to review your PR 👋 to turn in the assignment.
- MATLAB
- Simulink
- System Composer
- Requirements Toolbox
- Motor Control Blockset
- Simscape
- Simscape Electrical
- Simscape Multibody
- Simulink Test