Source code for roboticstoolbox.models.DH.Sawyer

#!/usr/bin/env python
"""
@author: Peter Corke
"""

import numpy as np
from roboticstoolbox import DHRobot, RevoluteDH


[docs]class Sawyer(DHRobot): """ Class that models a Sawyer manipulator :param symbolic: use symbolic constants :type symbolic: bool ``Sawyer()`` is an object which models a Rethink Sawyer robot and describes its kinematic characteristics using standard DH conventions. .. runblock:: pycon >>> import roboticstoolbox as rtb >>> robot = rtb.models.DH.Sawyer() >>> print(robot) Defined joint configurations are: - qz, zero joint angle configuration, 'L' shaped configuration :references: -`Layeghi, Daniel. “Dynamic and Kinematic Modelling of the Sawyer Arm ” Google Sites, 20 Nov. 2017 <https://sites.google.com/site/daniellayeghi/daily-work-and-writing/major-project-2>`_ .. note:: SI units of metres are used. """ def __init__(self, symbolic=False): if symbolic: import spatialmath.base.symbolic as sym # zero = sym.zero() pi = sym.pi() else: from math import pi # zero = 0.0 # deg = pi / 180 mm = 1e-3 # kinematic parameters a = np.r_[81, 0, 0, 0, 0, 0, 0] * mm d = np.r_[317, 192.5, 400, 168.5, 400, 136.3, 133.75] * mm alpha = [-pi / 2, -pi / 2, -pi / 2, -pi / 2, -pi / 2, -pi / 2, 0] links = [] for j in range(7): link = RevoluteDH(d=d[j], a=a[j], alpha=alpha[j]) links.append(link) super().__init__( links, name="Sawyer", manufacturer="Rethink Robotics", keywords=( "redundant", "symbolic", ), symbolic=symbolic, ) self.qr = np.zeros(7) self.qz = np.zeros(7) self.addconfiguration("qr", self.qr) self.addconfiguration("qz", self.qz)
if __name__ == "__main__": # pragma nocover sawyer = Sawyer(symbolic=False) print(sawyer)