Skip to content

Commit

Permalink
add grouping animation
Browse files Browse the repository at this point in the history
  • Loading branch information
rainorangelemon committed Nov 14, 2022
1 parent 5d9abe4 commit 41895ec
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 43 deletions.
95 changes: 59 additions & 36 deletions examples/grouping_robot.ipynb

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion robot/abstract_robot.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,10 @@
class AbstractRobot(MovableObject, ABC):

# An abstract robot
def __init__(self, limits_low, limits_high, **kwargs):
def __init__(self, limits_low, limits_high, collision_eps, **kwargs):
self.limits_low = limits_low
self.limits_high = limits_high
self.collision_eps = collision_eps
self.config_dim = len(self.limits_low)
super(AbstractRobot, self).__init__(**kwargs)

Expand Down
10 changes: 6 additions & 4 deletions robot/grouping.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ class RobotGroup(AbstractRobot):
Grouping multiple robots together into a meta-robot
'''

def __init__(self, robots, grouping_mask_fn=None, **kwargs):
def __init__(self, robots, grouping_mask_fn=None, collision_eps=None, **kwargs):
'''
grouping mask function aims to assign the collision mask to each robot
the argument to the function is an instance of the robot group
Expand All @@ -19,10 +19,12 @@ def __init__(self, robots, grouping_mask_fn=None, **kwargs):
assert np.all([isinstance(robot, IndividualRobot) for robot in robots])
self.robots = robots
self.grouping_mask_fn = grouping_mask_fn
self.collision_eps = min([robot.collision_eps for robot in self.robots])
if collision_eps is None:
collision_eps = min([robot.collision_eps for robot in self.robots])
limits_low, limits_high = self._get_limits()
super(RobotGroup, self).__init__(limits_low=limits_low,
limits_high=limits_high, **kwargs)
limits_high=limits_high,
collision_eps=collision_eps, **kwargs)

def _get_limits(self):
all_limits_low = []
Expand Down Expand Up @@ -55,7 +57,7 @@ def set_config(self, config, item_ids=None):

def no_collision(self):
p.performCollisionDetection()
if np.all([len(p.getContactPoints(item_id)) == 0] for item_id in self.item_ids):
if np.all([len(p.getContactPoints(item_id)) == 0 for item_id in self.item_ids]):
self.collision_check_count += 1
return True
else:
Expand Down
3 changes: 1 addition & 2 deletions robot/individual_robot.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,11 @@

class IndividualRobot(AbstractRobot, ABC):
# An individual robot
def __init__(self, base_position, base_orientation, urdf_file, collision_eps, **kwargs):
def __init__(self, base_position, base_orientation, urdf_file, **kwargs):
# for loading the pybullet
self.base_position = base_position
self.base_orientation = base_orientation

self.collision_eps = collision_eps
self.urdf_file = urdf_file

joints, limits_low, limits_high = self._get_joints_and_limits(self.urdf_file)
Expand Down

0 comments on commit 41895ec

Please sign in to comment.