import numpy as np
import pytest
from common.dataclasses.cage_state import CageState
from common.utils import generate_box_product
from stacking_algorithm.configuration import StackingAlgorithmConfigurations
from stacking_algorithm.robots.kuka_robot.configuration import RobotConfiguration
from stacking_algorithm.robots.kuka_robot.robot import KukaRobot
@pytest.fixture(scope="class")
def setup_product_left_front():
conf_robot = RobotConfiguration(wall_safety_margin=0.02, sideways_move=0.02)
robot = KukaRobot(conf_robot)
box_dimensions = np.array([0.3,0.3,0.3])
product = generate_box_product(box_dimensions)
bb = product.bounding_box()
product.transformation.pos[:] = - bb[0, :]
conf = StackingAlgorithmConfigurations()
cage_state = CageState(x=conf.CAGE_WIDTH, y=conf.CAGE_LENGTH, z=conf.CAGE_HEIGHT, products=[])
yield robot, product, cage_state, conf_robot, box_dimensions
@pytest.fixture(scope="class")
def setup_product_right_front(setup_product_left_front):
robot, product, cage_state, conf_robot, box_dimensions = setup_product_left_front
product.transformation.pos[0] += cage_state.x - box_dimensions[0]
yield robot, product, cage_state, conf_robot, box_dimensions
@pytest.fixture(scope="class")
def get_poses_left_front(setup_product_left_front):
robot, product, cage_state, conf_robot, box_dimensions = setup_product_left_front
robot_pickup_poses, robot_drop_poses, robot_strategy, product_drop_state = robot.compute_robot_poses_and_strategy(product, cage_state)
yield robot_pickup_poses, robot_drop_poses, robot_strategy, product_drop_state, robot, product, cage_state, conf_robot, box_dimensions
@pytest.fixture(scope="class")
def get_poses_right_front(setup_product_right_front):
robot, product, cage_state, conf_robot, box_dimensions = setup_product_right_front
robot_pickup_poses, robot_drop_poses, robot_strategy, product_drop_state = robot.compute_robot_poses_and_strategy(product, cage_state)
yield robot_pickup_poses, robot_drop_poses, robot_strategy, product_drop_state, robot, product, cage_state, conf_robot, box_dimensions
class TestRobotPosesLeftFront:
def test_sanity(self, get_poses_left_front):
robot_pickup_poses, robot_drop_poses, robot_strategy, product_drop_state, robot, product, cage_state, conf_robot, box_dimensions = get_poses_left_front
for pose in robot_drop_poses:
bb = robot.bounding_box(pose)
# Check that the drop poses are not entering the margin zones
assert bb[0, 0] >= conf_robot.wall_safety_margin
assert bb[1, 0] = conf_robot.wall_safety_margin
assert bb[1, 0]
Wenn ich mich den obigen Code ansiehst, kann ich sehen, dass er nicht gut geschrieben ist. TestrobotPosesLeftfront
, und ich schreibe das explizit und lade es für jeden dieser Tests explizit, was wie eine schlechte Übung erscheint. Ich sehe jedoch keinen guten Weg. Weg?
Betrachten Sie das folgende Code -Beispiel: < /p> [code]import numpy as np import pytest
from common.dataclasses.cage_state import CageState from common.utils import generate_box_product from stacking_algorithm.configuration import StackingAlgorithmConfigurations from stacking_algorithm.robots.kuka_robot.configuration import RobotConfiguration from stacking_algorithm.robots.kuka_robot.robot import KukaRobot
class TestRobotPosesLeftFront: def test_sanity(self, get_poses_left_front): robot_pickup_poses, robot_drop_poses, robot_strategy, product_drop_state, robot, product, cage_state, conf_robot, box_dimensions = get_poses_left_front for pose in robot_drop_poses: bb = robot.bounding_box(pose) # Check that the drop poses are not entering the margin zones assert bb[0, 0] >= conf_robot.wall_safety_margin assert bb[1, 0] = conf_robot.wall_safety_margin assert bb[1, 0] Wenn ich mich den obigen Code ansiehst, kann ich sehen, dass er nicht gut geschrieben ist. TestrobotPosesLeftfront [/code], und ich schreibe das explizit und lade es für jeden dieser Tests explizit, was wie eine schlechte Übung erscheint. Ich sehe jedoch keinen guten Weg. Weg?