pykin.planners package

Submodules

pykin.planners.planner module

class pykin.planners.planner.Planner(robot, obstacles)[source]

Bases: abc.ABC

Base Planner class

Parameters
  • robot (SingleArm or Bimanual) – The manipulator robot type is SingleArm or Bimanual

  • obstacles (dictionary) – The obstacles

abstract classmethod generate_path()[source]

write planner algorithm you want

abstract classmethod setup_start_goal_joint(current_q, goal_q, arm=None, transformation=None)[source]

Setup start joints and goal joints

Parameters
  • current_q (np.array or Iterable of floats) – current joint angle

  • goal_q (np.array or Iterable of floats) – target joint angle obtained through Inverse Kinematics

  • arm (str) – If Manipulator types is bimanul, must put the arm type.

  • init_transformation – Initial transformations

pykin.planners.rrt_star_planner module

class pykin.planners.rrt_star_planner.RRTStarPlanner(robot, obstacles, current_q=None, goal_q=None, delta_distance=0.5, epsilon=0.2, max_iter=3000, gamma_RRT_star=300)[source]

Bases: pykin.planners.planner.Planner

RRT star spath planning

Parameters
  • robot (SingleArm or Bimanual) – The manipulator robot type is SingleArm or Bimanual

  • obstacles (Obstacle) – The obstacles

  • current_q (np.array or Iterable of floats) – current joint angle

  • goal_q (np.array or Iterable of floats) – target joint angle obtained through Inverse Kinematics

  • delta_distance (float) – distance between nearest vertex and new vertex

  • epsilon (float) – 1-epsilon is probability of random sampling

  • max_iter (int) – maximum number of iterations

  • gamma_RRT_star (int) – factor used for search radius

collision_free(new_q, visible_name=False)[source]

Check collision free between robot and obstacles If visible name is True, return collision result and collision object names otherwise, return only collision result

Parameters
  • new_q (np.array) – new joint angles

  • visible_name (bool) –

Returns

If collision free, return True names(set of 2-tup): The set of pairwise collisions.

Return type

result(bool)

distance(pointA, pointB)[source]

Get distance from pointA to pointB

Parameters
  • pointA (np.array) –

  • pointB (np.array) –

Returns

Norm(float or ndarray)

find_path(tree)[source]

find path result from start index to goal index

Parameters

tree (Tree) – Trees obtained so far

Returns

path(list)

generate_path()[source]

Generate planner path

Returns

result path (from start joints to goal joints)

Return type

path(list)

get_minimum_cost_and_index(neighbor_indexes, new_q, min_cost, nearest_idx)[source]

Returns minimum cost and neer vertex index between neighbor vertices and new vertex in search radius

Parameters
  • neighbor_indexes – neighbor vertex’s index

  • new_q (int) – new joint angles

  • min_cost (np.array) – minimum cost

  • nearest_idx (np.array) – nearest index

Returns

min_cost(float) nearest_idx(int)

get_near_neighbor_indices(q)[source]

Returns all neighbor indices within the search radius from the new vertex

Parameters

q (np.array) – new joint angles

Returns

all neighbor indices

Return type

near_indexes(list)

get_new_cost(idx, pointA, pointB)[source]

Returns new cost

Parameters
  • idx (int) – neighbor vertex’s index

  • A (np.array) –

  • B (np.array) –

Returns

cost(float)

get_rrt_tree()[source]

Return obtained RRT Trees

Returns

verteices(list)

nearest_neighbor(random_q, tree)[source]

Find nearest neighbor vertex and index from random_q

Parameters
  • random_q (np.array) – sampled random joint angles

  • tree (Tree) – Trees obtained so far

Returns

nearest vertex(joint angles) nearest_idx(int): nearest index

Return type

nearest_vertex(np.array)

new_state(nearest_q, random_q)[source]

Get new point between nearest vertex and random vertex

Parameters
  • nearest_q (np.array) – nearest joint angles

  • random_q (np.array) – sampled random joint angles

Returns

new joint angles

Return type

new_q(np.array)

random_state()[source]

sampling joints in q space within joint limits If random probability is greater than the epsilon, return random joint angles oterwise, return goal joint angles

Returns

Return type

q_outs(np.array)

reach_to_goal(point)[source]

Check reach to goal If reach to goal, return True :param point: joint angles :type point: np.array

Returns

bool

rewire(neighbor_indexes, new_q, new_idx)[source]

Rewire a new vertex with a neighbor vertex with minimum cost

Parameters
  • neighbor_indexes – neighbor vertex’s index

  • new_q (int) – new joint angles

  • new_idx (np.array) – new joint angles’s index

setup_start_goal_joint(current_q, goal_q, arm=None, init_transformation=None)[source]

Setup start joints and goal joints

Parameters
  • current_q (np.array or Iterable of floats) – current joint angle

  • goal_q (np.array or Iterable of floats) – target joint angle obtained through Inverse Kinematics

  • arm (str) – If Manipulator types is bimanul, must put the arm type.

  • init_transformation – Initial transformations

pykin.planners.tree module

class pykin.planners.tree.Tree[source]

Bases: object

Tree class

add_edge(q_joints_idx)[source]

Add vertex indexes(parent, child) in edges

add_vertex(q_joints)[source]

Add q_joints in vertices

Module contents