facebookresearch / EgoTV

EgoTV Egocentric Task Verification from Natural Language Task Descriptions
Other
27 stars 4 forks source link

No such file or directory: 'layouts/FloorPlan1-objects.json' #5

Closed SiyuanHuang95 closed 1 year ago

SiyuanHuang95 commented 1 year ago

Hi,

thanks for sharing!

when try to use

python scripts/generate_trajectories.py --save_path ~/data/ --split_type train 

it raises the error:

FileNotFoundError: [Errno 2] No such file or directory: 'layouts/FloorPlan1-objects.json'

what should I do now?

RishiHazra commented 1 year ago

@SiyuanHuang95 Hi, since you're trying to generate new data, before you run that command, you would need to download the pre-built layouts and the task pddl files.

You can download the pre-built layouts from the following link: https://www.dropbox.com/s/11cvvvcm4v7c5xg/layouts.zip?dl=0 and save it to the path: alfred/gen/layouts

The task pddl files can be downloaded from the link: https://www.dropbox.com/s/yd50ruzqasq6idm/domains.zip?dl=0 and save them to the path: alfred/gen/planner/domains

We have updated the README to reflect the same

FYI, our EgoTV data can be downloaded from this link: https://www.dropbox.com/s/6ac5yslze5mct1k/EgoTV.zip?dl=0

SiyuanHuang95 commented 1 year ago

Hi @RishiHazra,

thanks for your reply and informative update.

I have a follow-up question:

After reading your paper, I found that you use Fast Forward to generate the plans given the pre-defined tasks PDDL. So how to ensure the generated results are feasible plans, do you use the simulator to give a check or involve the human effort? Also, could you give any insights about the generation quality?

If I want to use your code base to generate new data, but only focus on the interaction and manipulation ones, what should I do? (since I only have one fixed base robotic)

Best

RishiHazra commented 1 year ago

do you use the simulator to give a check or involve the human effort? We randomly picked some plans for each task during data generation and viewed the corresponding task execution videos (recorded for each plan) for a sanity check.

Also, could you give any insights about the generation quality? The generation quality is reasonably good, however, there are certain minor things that might require you to write additional lines of code. For instance, for "heating in a stove burner", the flames on the stovetop are often obscure. Similarly, opening and closing a tap is not evident and can only be perceived from the water flowing from it. Is that what you mean by generation quality?

If I want to use your code base to generate new data, but only focus on the interaction and manipulation ones, what should I do? (since I only have one fixed base robotic) For a fixed system, if you don't wish to alter the layouts, you could just focus on manipulation tasks like "CleanObject", "HeatObject" which require the agent and the objects to be at the same location (check domains/all_goals.pddl from the download link above). You could choose to record only that part of the trajectory. However, for more complex cases, you would have to define your own tasks (pddl files) with high-level actions (see HeatObject action) such that the robot can execute a sequence of actions without having to move. With the pre-built layouts, that should still be possible (to execute complex tasks in a sequence without the Teleport action) -- the planner would fail otherwise.

I hope that answers your question.

SiyuanHuang95 commented 1 year ago

Great thanks for your reply! @RishiHazra Appreciate it!

For Q1: clear.

For Q2: Okay, got it. But since the flames and taps are all in the simulator, how can we use additional lines to improve it? Also, what you mention is related to the simulator, how about the generated plans? I guess it has been covered in Q1.

For Q3: Got it, thanks!

RishiHazra commented 1 year ago

@SiyuanHuang95 Sorry about the confusion. To clarify, you may have to use the crouch action controller.step(action="Crouch") or change the camera viewpoint to visualize the flames if they're occluded. However, it seems there may be no solution to the tap issue.

As for the ff-planner, the plans for each task are generated based on the corresponding pddl task definitions. You'll observe that every task is associated with a unique pddl file, a result of their unique ordering constraints. For instance, heat_then_clean would have the postconditions of heat in the preconditions of clean -- - this information is documented in the pddl files. Hence the generated plans should be feasible. Nonetheless, as we define our own high-level actions, such as HeatObject, we ensure that the heating process aligns with our expected outcome from corresponding videos.

SiyuanHuang95 commented 1 year ago

Aha, thanks for your reply!

Seems that the pre-post conditions definition is quite import when use FF planner to generate a task.