def dump_body(body, fixed=False): print('Body id: {} | Name: {} | Rigid: {} | Fixed: {}'.format( body, get_body_name(body), is_rigid_body(body), is_fixed_base(body))) for joint in get_joints(body): if fixed or is_movable(body, joint): print( 'Joint id: {} | Name: {} | Type: {} | Circular: {} | Limits: {}' .format(joint, get_joint_name(body, joint), JOINT_TYPES[get_joint_type(body, joint)], is_circular(body, joint), get_joint_limits(body, joint))) link = NULL_ID print('Link id: {} | Name: {} | Mass: {} | Collision: {} | Visual: {}'. format(link, get_base_name(body), get_mass(body), len(get_collision_data(body, link)), NULL_ID)) # len(get_visual_data(body, link)))) for link in get_links(body): joint = parent_joint_from_link(link) joint_name = JOINT_TYPES[get_joint_type(body, joint)] if is_fixed( body, joint) else get_joint_name(body, joint) print( 'Link id: {} | Name: {} | Joint: {} | Parent: {} | Mass: {} | Collision: {} | Visual: {}' .format(link, get_link_name(body, link), joint_name, get_link_name(body, get_link_parent(body, link)), get_mass(body, link), len(get_collision_data(body, link)), NULL_ID)) # len(get_visual_data(body, link))))
def link_from_name(body, name): from pybullet_planning.interfaces.robots.body import get_base_name if name == get_base_name(body): return BASE_LINK for link in get_joints(body): if get_link_name(body, link) == name: return link raise ValueError(body, name)
def is_rigid_body(body): for joint in get_joints(body): if is_movable(body, joint): return False return True