Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

from director import transformUtils 

from director import affordanceitems 

from urdf_parser_py import urdf 

 

 

def geometryFromAffordance(aff): 

 

    if isinstance(aff, affordanceitems.SphereAffordanceItem): 

        radius = aff.getProperty('Radius') 

        return urdf.Sphere(radius=radius) 

 

    if isinstance(aff, affordanceitems.BoxAffordanceItem): 

        dimensions = aff.getProperty('Dimensions') 

        return urdf.Box(size=dimensions) 

 

    if isinstance(aff, affordanceitems.CylinderAffordanceItem): 

        return urdf.Cylinder(length=aff.getProperty('Length'), radius=aff.getProperty('Radius')) 

 

    if isinstance(aff, affordanceitems.CapsuleAffordanceItem): 

        return urdf.Cylinder(length=aff.getProperty('Length'), radius=aff.getProperty('Radius')) 

 

    if isinstance(aff, affordanceitems.CapsuleRingAffordanceItem): 

        raise Exception('not supported yet') 

 

    if isinstance(aff, affordanceitems.MeshAffordanceItem): 

        filename = aff.getProperty('Filename') 

        filename = affordanceitems.MeshAffordanceItem.getMeshManager().getFilesystemFilename(filename) 

        return urdf.Mesh(filename=filename, scale=[1.0, 1.0, 1.0]) 

 

 

def stringWithAffordanceId(inputStr, aff): 

    return inputStr % aff.getProperty('uuid') 

 

 

def stringWithAffordanceName(inputStr, aff): 

    return inputStr % aff.getProperty('Name') 

 

 

def colorFromAffordance(aff): 

    color = aff.getProperty('Color') 

    return urdf.Color(color[0], color[1], color[2] ,1) 

 

 

def materialFromAffordance(aff): 

    color = colorFromAffordance(aff) 

    return urdf.Material(name=stringWithAffordanceId('material_%s', aff), color=color, texture=None) 

 

 

def poseFromAffordance(aff): 

 

    t = aff.getChildFrame().transform 

    position, quat = transformUtils.poseFromTransform(t) 

    rpy = transformUtils.rollPitchYawFromTransform(t) 

    return urdf.Pose(position, rpy) 

 

 

def linkFromAffordance(aff): 

 

    geometry = geometryFromAffordance(aff) 

    material = materialFromAffordance(aff) 

    pose = poseFromAffordance(aff) 

 

    visual = urdf.Visual(geometry=geometry, material=material, origin=pose) 

    collision =  urdf.Collision(geometry=geometry, origin=pose) 

    return urdf.Link(name=stringWithAffordanceId('link_%s', aff), visual=visual, collision=collision) 

 

 

def urdfStringFromAffordances(affordanceList): 

    r = urdf.Robot(name='affordance_environment') 

    for aff in affordanceList: 

        r.add_link(linkFromAffordance(aff)) 

    return r.to_xml_string()