allenai / allenai/ai2thor

is it possible to get the shortest path for drone?

Aperta
#1,078 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
C#
Stelle
1.8k
Fork
296
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

Dear developers of AI2THOR, thank you very much for providing this tool to the community. It is really helpful in embodied AI research.

I have a problem regarding the get_shortest_path_to_point function. **I want to get the shortest path for the drone to navigate between positions, ignoring obstacles on the ground and navigating at a certain height level.** However, I found that the generated shortest path always has "y" value close to 0 even when the initial_position and the target_position have values around 1.7. Also, the generated shortest path always circumvent objects on the ground like sofa, tables and so on.

I want to ask if you know whether I can get the shortest path at a certain height level? Thank you in advance!

the code to reproduce the results are:
```python
from ai2thor.controller import Controller

kitchens = [f"FloorPlan{i}" for i in range(1, 31)]
living_rooms = [f"FloorPlan{200 + i}" for i in range(1, 31)]
bedrooms = [f"FloorPlan{300 + i}" for i in range(1, 31)]
bathrooms = [f"FloorPlan{400 + i}" for i in range(1, 31)]

scenes = kitchens + living_rooms + bedrooms + bathrooms

controller = Controller(
agentMode="drone",
visibilityDistance=1.5,
scene="FloorPlan1",
gridSize=0.1,
snapToGrid=False,
movementGaussianSigma=0,
rotateStepDegrees=15,
rotateGaussianSigma=0,
renderDepthImage=True,
renderClassImage=True,
renderInstanceSegmentation=True,
width=1080,
height=720,
fieldOfView=90
)

positions = controller.step(
action="GetReachablePositions"
).metadata["actionReturn"]

# set the drone to certain height
tmp = positions[0]
new_pos = dict(x=tmp['x'], y=tmp['y'] + 1.5, z=tmp['z'])
event = controller.step(
action="Teleport",
position=new_pos,
rotation=dict(x=0, y=0, z=0),
horizon=0
)

from ai2thor.util.metrics import (
get_shortest_path_to_point
)
position = controller.last_event.metadata["agent"]["position"]

target_position = dict(x=position["x"]+0.25, y=position["y"], z=position["z"]+0.25)
path = get_shortest_path_to_point(controller=controller, initial_position=position, target_position=target_position)

print(path)
```

you can see that all positions in path have "y" values around zero.

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.