87 lines
2.2 KiB
Python
87 lines
2.2 KiB
Python
|
"""
|
|||
|
视觉语言导航
|
|||
|
|
|||
|
测试导航算法的动态避障(Obstacle Detection and Avoidance, ODA)能力
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"""
|
|||
|
import os
|
|||
|
import pickle
|
|||
|
import time
|
|||
|
import random
|
|||
|
|
|||
|
import matplotlib.pyplot as plt
|
|||
|
import numpy as np
|
|||
|
|
|||
|
from robowaiter.scene.scene import Scene
|
|||
|
from robowaiter.utils import get_root_path
|
|||
|
|
|||
|
|
|||
|
|
|||
|
class SceneVLN(Scene):
|
|||
|
def __init__(self, robot):
|
|||
|
super().__init__(robot)
|
|||
|
# 在这里加入场景中发生的事件, (事件发生的时间,事件函数)
|
|||
|
# self.event_list = [
|
|||
|
# (5, self.create_chat_event("测试VLN:前往水台")),
|
|||
|
# ]
|
|||
|
|
|||
|
def _reset(self):
|
|||
|
'''
|
|||
|
设置场景 (添加行人...)
|
|||
|
'''
|
|||
|
# root_path = get_root_path()
|
|||
|
# map_file = os.path.join(root_path, 'robowaiter/algos/navigator/map_4.pkl')
|
|||
|
# with open(map_file, 'rb') as file:
|
|||
|
# map = pickle.load(file)
|
|||
|
# self.state['map']['2d'] = map
|
|||
|
|
|||
|
|
|||
|
# 角1:[480, 1300, 90]
|
|||
|
# 窗1:[230, 1200, 135]
|
|||
|
# 窗2:[65, 1000, 135.0]
|
|||
|
# 窗3:[-80, 850, 135]
|
|||
|
# 窗4:[-270, 520, 150]
|
|||
|
# 窗5:[-20, -220, -100]
|
|||
|
# 角2:[250, -240, -65]
|
|||
|
|
|||
|
|
|||
|
# 1. robot位置初始化
|
|||
|
self.walk_to(20, 20, velocity=150, dis_limit=10)
|
|||
|
|
|||
|
# 2. 添加行人
|
|||
|
self.clean_walker()
|
|||
|
self.add_walkers([[-60, 700], [-20, 680], [20, 300], [60, 300]])
|
|||
|
|
|||
|
# walker_0:
|
|||
|
self.control_walker([self.walker_control_generator(walkerID=0, autowalk=False, speed=30, X=-60, Y=0, Yaw=0)])
|
|||
|
|
|||
|
# walker_1:
|
|||
|
self.control_walker([self.walker_control_generator(walkerID=1, autowalk=False, speed=30, X=-20, Y=0, Yaw=0)])
|
|||
|
|
|||
|
# walker_2:
|
|||
|
self.control_walker([self.walker_control_generator(walkerID=2, autowalk=False, speed=30, X=20, Y=0, Yaw=0)])
|
|||
|
|
|||
|
# walker_3:
|
|||
|
self.control_walker([self.walker_control_generator(walkerID=3, autowalk=False, speed=30, X=60, Y=0, Yaw=0)])
|
|||
|
|
|||
|
# 3. 导航
|
|||
|
goal = (230, 1200)
|
|||
|
self.navigator.navigate(goal=goal, animation=False)
|
|||
|
|
|||
|
# self.walk_to(goal[0], goal[1], velocity=150, dis_limit=10)
|
|||
|
|
|||
|
|
|||
|
if __name__ == '__main__':
|
|||
|
import os
|
|||
|
from robowaiter.robot.robot import Robot
|
|||
|
|
|||
|
robot = Robot()
|
|||
|
|
|||
|
# create task
|
|||
|
task = SceneVLN(robot)
|
|||
|
task.reset()
|
|||
|
task.run()
|
|||
|
|