RoboWaiter/robowaiter/behavior_lib/_base/Behavior.py

127 lines
3.6 KiB
Python
Raw Normal View History

import py_trees as ptree
from typing import Any
import enum
2023-11-09 16:07:02 +08:00
from py_trees.common import Status
# _base Behavior
class Bahavior(ptree.behaviour.Behaviour):
2023-11-19 21:55:42 +08:00
2023-11-08 15:28:01 +08:00
can_be_expanded = False
num_params = 0
valid_params='''
None
'''
scene = None
2023-11-08 15:28:01 +08:00
print_name_prefix = ""
2023-11-17 18:56:58 +08:00
tables_for_placement = {'Bar', 'Bar2', 'WaterTable', 'CoffeeTable', 'Table1', 'Table2', 'Table3',"BrightTable6"}
2023-11-16 21:05:54 +08:00
all_object = {'Coffee', 'Water', 'Dessert', 'Softdrink', 'BottledDrink', 'Yogurt', 'ADMilk', 'MilkDrink', 'Milk',
'VacuumCup'}
2023-11-16 21:37:18 +08:00
2023-11-17 18:56:58 +08:00
# BrightTable5 = Table4
tables_for_guiding = {"QuietTable1","QuietTable2",
"BrightTable1","BrightTable2","BrightTable3","BrightTable4","BrightTable5","BrightTable6"
'CoffeeTable','WaterTable','Table1', 'Table2', 'Table3'}
2023-11-16 21:05:54 +08:00
# all_place = {'Bar', 'WaterTable', 'CoffeeTable'}
2023-11-15 12:04:49 +08:00
# all_object = {'Coffee', 'Water', 'Dessert', 'Softdrink', 'Yogurt'}
2023-11-16 21:05:54 +08:00
# all_object = {'Coffee', 'Water'}
# all_object = set()
# all_place=set()
2023-11-20 00:01:33 +08:00
num_of_obj_on_place={
'Bar': 0, # (247.0, 520.0, 100.0)
'Bar2': 0,
'WaterTable': 0,
'CoffeeTable': 0,
'Table1': 0,
'Table2': 0,
'Table3': 0,
'BrightTable6': 0,
}
2023-11-14 12:09:53 +08:00
place_xyz_dic={
2023-11-19 16:47:52 +08:00
'Bar': (247.0, 520.0, 100.0), #(247.0, 520.0, 100.0)
'Bar2': (240.0, 40.0, 100.0),
2023-11-14 12:09:53 +08:00
'WaterTable':(-70.0, 500.0, 107),
2023-11-14 23:16:48 +08:00
'CoffeeTable':(250.0, 310.0, 100.0),
2023-11-16 23:05:11 +08:00
'Table1': (340.0, 900.0, 99.0),
2023-11-14 12:09:53 +08:00
'Table2': (-55.0, 0.0, 107),
2023-11-17 18:56:58 +08:00
'Table3':(-55.0, 150.0, 107),
'BrightTable6': (5, -315, 116.5),
2023-11-19 21:48:02 +08:00
}
place_xy_yaw_dic={
2023-11-20 15:48:03 +08:00
'Bar': (247.0, 520.0, 180), # (247.0, 520.0, 100.0)
2023-11-19 21:48:02 +08:00
'Bar2': (240.0, 40.0, 100.0),
'WaterTable': (-70.0, 500.0, 107),
'CoffeeTable': (250.0, 310.0, 100.0),
'Table1': (340.0, 900.0, 99.0),
'Table2': (-55.0, 0.0, 107),
'Table3': (-55.0, 150.0, 107),
'BrightTable6': (5, -315, 116.5),
2023-11-17 18:56:58 +08:00
'QuietTable1':(480,1300,90),
'QuietTable2':(250,-240,-65),
'BrightTable1':(230,1200,-135),
2023-11-17 18:56:58 +08:00
'BrightTable2': (65, 1000, 135),
'BrightTable3': (-80, 850, 135),
'BrightTable4': (-270, 520, 150),
'BrightTable5': (-270, 420, -135)
2023-11-14 12:09:53 +08:00
}
container_dic={
'Coffee':'CoffeeCup',
'Water': 'Glass',
'Dessert':'Plate'
}
2023-11-16 17:57:27 +08:00
2023-11-14 12:09:53 +08:00
@classmethod
def get_ins_name(cls,*args):
name = cls.__name__
if len(args) > 0:
ins_name = f'{name}({",".join(list(args))})'
else:
ins_name = f'{name}()'
return ins_name
def __init__(self,*args):
2023-11-14 20:08:54 +08:00
ins_name = self.__class__.get_ins_name(*args)
self.args = args
2023-11-14 20:08:54 +08:00
super().__init__(ins_name)
def _update(self) -> ptree.common.Status:
print("this is just a _base behavior node.")
return Status.INVALID
2023-11-08 15:28:01 +08:00
@property
def print_name(self):
return f'{self.print_name_prefix}{self.get_ins_name(*self.args)}'
2023-11-08 15:28:01 +08:00
# let behavior node interact with the scene
2023-11-19 16:35:37 +08:00
def set_scene(self, scene=None):
if scene:
self.scene = scene
self.robot = scene.robot
def setup(self, **kwargs: Any) -> None:
return super().setup(**kwargs)
def initialise(self) -> None:
return super().initialise()
def update(self) -> Status:
re = self._update()
return re
def terminate(self, new_status: Status) -> None:
return super().terminate(new_status)
2023-11-09 08:47:57 +08:00
@property
def arg_str(self):
return ",".join(self.args)