示例#1
0
def ur5():
    """Return a UR5 created programatically instead of from a file."""
    return RobotModel('ur5',
                      joints=[
                          Joint('shoulder_pan_joint', 'revolute', 'base_link',
                                'shoulder_link'),
                          Joint('shoulder_lift_joint', 'revolute',
                                'shoulder_link', 'upper_arm_link'),
                          Joint('elbow_joint', 'revolute', 'upper_arm_link',
                                'forearm_link'),
                          Joint('wrist_1_joint', 'revolute', 'forearm_link',
                                'wrist_1_link'),
                          Joint('wrist_2_joint', 'revolute', 'wrist_1_link',
                                'wrist_2_link'),
                          Joint('wrist_3_joint', 'revolute', 'wrist_2_link',
                                'wrist_3_link'),
                      ],
                      links=[
                          Link('base_link'),
                          Link('shoulder_link'),
                          Link('upper_arm_link'),
                          Link('forearm_link'),
                          Link('wrist_1_link'),
                          Link('wrist_2_link'),
                          Link('wrist_3_link'),
                      ])
示例#2
0
def test_programatic_robot_model():
    robot = RobotModel("robot")
    link0 = robot.add_link("link0")
    link1 = robot.add_link("link1")
    robot.add_joint("joint1", Joint.CONTINUOUS, link0, link1)
    assert(['link0', 'joint1', 'link1'] == list(robot.iter_chain()))
    link2 = robot.add_link("link2")
    robot.add_joint("joint2", Joint.CONTINUOUS, link1, link2)
    assert(['link0', 'joint1', 'link1', 'joint2', 'link2'] == list(robot.iter_chain()))
示例#3
0
def test_programmatic_robot_model():
    robot = RobotModel("robot")
    link0 = robot.add_link("link0")
    link1 = robot.add_link("link1")
    robot.add_joint("joint1", Joint.CONTINUOUS, link0, link1)
    assert (['link0', 'joint1', 'link1'] == list(robot.iter_chain()))
    link2 = robot.add_link("link2")
    robot.add_joint("joint2", Joint.CONTINUOUS, link1, link2)
    assert (['link0', 'joint1', 'link1', 'joint2',
             'link2'] == list(robot.iter_chain()))
    urdf = URDF.from_robot(robot)
    robot_reincarnated = RobotModel.from_urdf_string(urdf.to_string())
    assert (['link0', 'joint1', 'link1', 'joint2',
             'link2'] == list(robot_reincarnated.iter_chain()))
示例#4
0
    def basic(cls, name, joints=[], links=[], materials=[], **kwargs):
        """Convenience method to create the most basic instance of a robot, based only on a name.

        Parameters
        ----------
        name : str
            Name of the robot

        Returns
        -------
        :class:`Robot`
            Newly created instance of a robot.
        """
        model = RobotModel(name,
                           joints=joints,
                           links=links,
                           materials=materials,
                           **kwargs)
        return cls(model, None)
robot = RobotModel('ur10e',
                   joints=[
                       Joint('shoulder_pan_joint',
                             'revolute',
                             parent='base_link',
                             child='shoulder_link'),
                       Joint('shoulder_lift_joint',
                             'revolute',
                             parent='shoulder_link',
                             child='upper_arm_link'),
                       Joint('elbow_joint',
                             'revolute',
                             parent='upper_arm_link',
                             child='forearm_link'),
                       Joint('wrist_1_joint',
                             'revolute',
                             parent='forearm_link',
                             child='wrist_1_link'),
                       Joint('wrist_2_joint',
                             'revolute',
                             parent='wrist_1_link',
                             child='wrist_2_link'),
                       Joint('wrist_3_joint',
                             'revolute',
                             parent='wrist_2_link',
                             child='wrist_3_link'),
                   ],
                   links=[
                       Link('base_link'),
                       Link('shoulder_link'),
                       Link('upper_arm_link'),
                       Link('forearm_link'),
                       Link('wrist_1_link'),
                       Link('wrist_2_link'),
                       Link('wrist_3_link'),
                   ])
from compas.geometry import Cylinder
from compas.geometry import Frame
from compas.geometry import Plane
from compas.geometry import Translation
from compas.robots import Joint
from compas.robots import RobotModel
from compas_fab.rhino import RobotArtist
from compas_fab.robots import Configuration

# create cylinder in yz plane
radius, length = 0.3, 5
cylinder = Cylinder(Circle(Plane([0, 0, 0], [1, 0, 0]), radius), length)
cylinder.transform(Translation([length / 2., 0, 0]))

# create robot
robot = RobotModel("robot", links=[], joints=[])

# add first link to robot
link0 = robot.add_link("world")

# add second link to robot
mesh = Mesh.from_shape(cylinder)
link1 = robot.add_link("link1", visual_mesh=mesh, visual_color=(0.2, 0.5, 0.6))

# add the joint between the links
axis = (0, 0, 1)
origin = Frame.worldXY()
robot.add_joint("joint1", Joint.CONTINUOUS, link0, link1, origin, axis)

# add another link
mesh = Mesh.from_shape(cylinder) # create a copy!
示例#7
0
from compas.robots import RobotModel
from compas.robots import Joint

robot = RobotModel('tom')

# ==============================================================================
# Links
# ==============================================================================

base = robot.add_link('base')
shoulder = robot.add_link('shoulder')
arm = robot.add_link('arm')
forearm = robot.add_link('forearm')
wrist = robot.add_link('wrist')
hand = robot.add_link('hand')

# ==============================================================================
# Joints
# ==============================================================================

base_joint = robot.add_joint('base-shoulder', Joint.REVOLUTE, base, shoulder)
shoulder_joint = robot.add_joint('shoulder-arm', Joint.REVOLUTE, shoulder, arm)
elbow_joint = robot.add_joint('arm-forearm', Joint.REVOLUTE, arm, forearm)
wrist_joint = robot.add_joint('forearm-wrist', Joint.REVOLUTE, forearm, wrist)
hand_joint = robot.add_joint('wrist-hand', Joint.CONTINUOUS, wrist, hand)

# ==============================================================================
# Visualization
# ==============================================================================

print(robot)
示例#8
0
from compas.robots import Joint
from compas.robots import RobotModel
from compas.geometry import Box
from compas.geometry import Circle
from compas.geometry import Cylinder
from compas.geometry import Frame
from compas.geometry import Plane
from compas.geometry import Sphere
from compas.geometry import Vector
from compas_rhino.artists import RobotModelArtist

model = RobotModel('drinking_bird')

foot_1 = Box(Frame([2, .5, .25], [1, 0, 0], [0, 1, 0]), 1, 2, .5)
foot_2 = Box(Frame([-2, .5, .25], [1, 0, 0], [0, 1, 0]), 1, 2, .5)
leg_1 = Box(Frame([2, 0, 4], [1, 0, 0], [0, 1, 0]), .5, 1, 7)
leg_2 = Box(Frame([-2, 0, 4], [1, 0, 0], [0, 1, 0]), .5, 1, 7)
axis = Cylinder(Circle(Plane([0, 0, 7], [1, 0, 0]), .01), 4)
legs_link = model.add_link('legs',
                           visual_meshes=[foot_1, foot_2, leg_1, leg_2, axis])

torso = Cylinder(Circle(Plane([0, 0, 0], [0, 0, 1]), .5), 8)
torso_link = model.add_link('torso', visual_meshes=[torso])

legs_joint_origin = Frame([0, 0, 7], [1, 0, 0], [0, 1, 0])
joint_axis = Vector(1, 0, 0)
model.add_joint('torso_base_joint', Joint.CONTINUOUS, legs_link, torso_link,
                legs_joint_origin, joint_axis)

head = Sphere([0, 0, 0], 1)
beak = Cylinder(Circle(Plane([0, 1, -.3], [0, 1, 0]), .3), 1.5)