"""Predefined robot models."""
import numpy as np  # type: ignore


def kuka_lbr_iiwa_7() -> np.ndarray:  # pragma: no cover
    """Get KUKA LBR iiwa 7 MDH model."""
    return np.array(
        [
            [0, 0, 0, 340],
            [-np.pi / 2, 0, 0, 0],
            [np.pi / 2, 0, 0, 400],
            [np.pi / 2, 0, 0, 0],
            [-np.pi / 2, 0, 0, 400],
            [-np.pi / 2, 0, 0, 0],
            [np.pi / 2, 0, 0, 126],
        ]
    )


def mecademic_meca500() -> np.ndarray:  # pragma: no cover
    """Get Meca500 MDH model."""
    return np.array(
        [
            [0, 0, 0, 135],
            [-np.pi / 2, 0, -np.pi / 2, 0],
            [0, 135, 0, 0],
            [-np.pi / 2, 38, 0, 120],
            [np.pi / 2, 0, 0, 0],
            [-np.pi / 2, 0, np.pi, 72],
        ]
    )


def puma560() -> np.ndarray:  # pragma: no cover
    """Get PUMA560 MDH model."""
    return np.array(
        [
            [0, 0, 0, 0],
            [-np.pi / 2, 0, 0, 0],
            [0, 612.7, 0, 0],
            [0, 571.6, 0, 163.9],
            [-np.pi / 2, 0, 0, 115.7],
            [np.pi / 2, 0, np.pi, 92.2],
        ]
    )


def ur10() -> np.ndarray:  # pragma: no cover
    """Get UR10 MDH model."""
    return np.array(
        [
            [0, 0, 0, 118],
            [np.pi / 2, 0, np.pi, 0],
            [0, 612.7, 0, 0],
            [0, 571.6, 0, 163.9],
            [-np.pi / 2, 0, 0, 115.7],
            [np.pi / 2, 0, np.pi, 92.2],
        ]
    )


def abb_irb120() -> np.ndarray:  # pragma: no cover
    """Get ABB irb120 MDH model."""
    return np.array(
        [
            [0, 0, 0, 290],
            [-np.pi / 2, 0, -np.pi / 2, 0],
            [0, 270, 0, 0],
            [-np.pi / 2, 70, 0, 302],
            [np.pi / 2, 0, 0, 0],
            [-np.pi / 2, 0, np.pi, 72],
        ]
    )

pybotics/predefined_models.py
"""Predefined robot models.

These models correspond to the Modified Denavit–Hartenberg parameters:
https://en.wikipedia.org/wiki/Denavit%E2%80%93Hartenberg_parameters
"""
import numpy as np  # type: ignore


def kuka_lbr_iiwa_7() -> np.ndarray:  # pragma: no cover
    """Get KUKA LBR iiwa 7 MDH model."""
    return np.array(
        [
            [0, 0, 0, 340],
            [-np.pi / 2, 0, 0, 0],
            [np.pi / 2, 0, 0, 400],
            [np.pi / 2, 0, 0, 0],
            [-np.pi / 2, 0, 0, 400],
            [-np.pi / 2, 0, 0, 0],
            [np.pi / 2, 0, 0, 126],
        ]
    )


def mecademic_meca500() -> np.ndarray:  # pragma: no cover
    """Get Meca500 MDH model."""
    return np.array(
        [
            [0, 0, 0, 135],
            [-np.pi / 2, 0, -np.pi / 2, 0],
            [0, 135, 0, 0],
            [-np.pi / 2, 38, 0, 120],
            [np.pi / 2, 0, 0, 0],
            [-np.pi / 2, 0, np.pi, 72],
        ]
    )


def puma560() -> np.ndarray:  # pragma: no cover
    """Get PUMA560 MDH model."""
    return np.array(
        [
            [0, 0, 0, 0],
            [-np.pi / 2, 0, 0, 0],
            [0, 612.7, 0, 0],
            [0, 571.6, 0, 163.9],
            [-np.pi / 2, 0, 0, 115.7],
            [np.pi / 2, 0, np.pi, 92.2],
        ]
    )


def ur10() -> np.ndarray:  # pragma: no cover
    """Get UR10 MDH model."""
    return np.array(
        [
            [0, 0, 0, 118],
            [np.pi / 2, 0, np.pi, 0],
            [0, 612.7, 0, 0],
            [0, 571.6, 0, 163.9],
            [-np.pi / 2, 0, 0, 115.7],
            [np.pi / 2, 0, np.pi, 92.2],
        ]
    )


def abb_irb120() -> np.ndarray:  # pragma: no cover
    """Get ABB irb120 MDH model."""
    return np.array(
        [
            [0, 0, 0, 290],
            [-np.pi / 2, 0, -np.pi / 2, 0],
            [0, 270, 0, 0],
            [-np.pi / 2, 70, 0, 302],
            [np.pi / 2, 0, 0, 0],
            [-np.pi / 2, 0, np.pi, 72],
        ]
    )

pybotics/predefined_models.py
diff --git a/pybotics/predefined_models.py b/pybotics/predefined_models.py
index daf27a26..6bd906b8 100644
--- a/pybotics/predefined_models.py
+++ b/pybotics/predefined_models.py
@@ -1,4 +1,8 @@
-"""Predefined robot models."""
+"""Predefined robot models.
+
+These models correspond to the Modified Denavit–Hartenberg parameters:
+https://en.wikipedia.org/wiki/Denavit%E2%80%93Hartenberg_parameters
+"""
 import numpy as np  # type: ignore
 
 

Create a way to add your own arm model[FEATURE]
## User Story

<!-- A clear and concise description of what the problem is. 
I want to add my own arm configuration to the list of pre-trained models.

## Potential Solutions

<!-- A clear and concise description of what you want to happen. -->
If there was a comment next to each line of one of the arrays containing the pre-trained model saying what exactly each value was supposed to represent, that would help.
<!-- A clear and concise description of any alternative solutions or features you've considered. -->
I tried looking at the spec sheets of the arms and matching up values but I couldn't figure much out. 


