实现行为树执行器、任务协调和技能接口
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
"""Explicit integration fixture: BrainService -> Coordinator -> C++ simulation."""
|
||||
from robot_bt_coordinator.backends import DemoBackend
|
||||
from robot_bt_coordinator.plan import canonical
|
||||
from robot_bt_coordinator.plan_v2 import make_plan
|
||||
from .backends import FixtureBackend
|
||||
from .service import BrainService
|
||||
class BrainDemoBackend(DemoBackend):
|
||||
def __init__(self,executable,state_dir,site):
|
||||
super().__init__(executable,state_dir);self.site=site
|
||||
def fixture(request):
|
||||
g=request['input'];known=g['known_info']
|
||||
if 'items' not in known:
|
||||
missing=[k for k in ('target_name','source_location','destination') if not known.get(k)]
|
||||
if missing:return canonical({'missing_information':missing})
|
||||
known={'items':[{'target_name':known['target_name'],'source_location':known['source_location'],'quantity':known.get('quantity',1)}],'destination':known['destination']}
|
||||
if 'destination' not in known:return canonical({'missing_information':['destination']})
|
||||
return canonical(make_plan(g['instruction'],known,site['execution_route']))
|
||||
self.brain=BrainService(FixtureBackend(fixture),self.state_dir/'planning_records')
|
||||
def start_planning(self,t):
|
||||
self.plans.append(t)
|
||||
result=self.brain.plan(dict(task_id=t['task_id'],task_revision=t['task_revision'],planning_generation=t['planning_generation'],instruction=t['request']['instruction'],known_info=t['request']['known_info'],context=self.site,constraints={'schema_version':2,'route':self.site['execution_route']},timeout=10))
|
||||
event=dict(type='plan',task_id=t['task_id'],task_revision=t['task_revision'],planning_generation=t['planning_generation'],status=result['status'],error_code=result.get('error_code',''),planning_record_ref=result['record_ref'])
|
||||
if result['status']=='NEEDS_CLARIFICATION':event['questions']=result['plan']['missing_information']
|
||||
else:event['plan']=result.get('plan')
|
||||
self.emit(event)
|
||||
Reference in New Issue
Block a user