mars-sim / mars-sim

Mars Simulation Project Official Codebase
https://mars-sim.com
GNU General Public License v3.0
101 stars 36 forks source link

EVA suits disappearing #741

Closed mokun closed 1 year ago

mokun commented 1 year ago

Describe the bug

Expected and unexpected behavior

Java classes involved List out possible Java classes/methods that are behaving incorrectly.

Screenshots Zero quantity of EVA suits in Monitor Tool. image

No EVA suits in Settlement Unit Window's Good tab. image

No one has an EVA suit in their procession. image

The two vehicles have empty inventory and don't have EVA suits image

It seems to have nothing to do with the EVA airlock since no one is trapped inside. image

Stacktrace 01-Adir-09:003.286 (Config) MasterClock : - - - - - - - - - - - - - - Sol 9 - - - - - - - - - - - - - - 01-Adir-09:151.187 (Info) Read [x4] : [MuskVille] Jose Brooks - Started reading on biology. 01-Adir-09:177.189 (Info) Teach [x7] : [MuskVille] GardenBot 001 - Teaching Julie Gonzalez on 'Tending crops'. 01-Adir-09:259.626 (Warning) Equipment : [MuskVille] EVA Suit 006 - Could not be transferred from 'MuskVille to 'Julie Gonzalez'. 01-Adir-09:377.086 (Warning) Equipment : EVA Suit 006 could not be retrieved from MuskVille. 01-Adir-09:430.670 (Warning) ResourceProcess [x2] : [MuskVille] Case A. Used up all 'Carbon Dioxide' input to start 'Low Temperature Plasma CO2 Decomposition'. Required: 0.194 kg. Remaining: 0.153 kg in storage. 01-Adir-09:495.770 (Warning) InventoryUtil : [MuskVille] Julie Gonzalez - Could not find any EVA suits in MuskVille. 01-Adir-09:495.770 (Warning) ExitAirlock : [MuskVille - EVA Airlock 1] Julie Gonzalez - Could not find a working EVA suit and needed to wait. 01-Adir-09:495.770 (Warning) Walk : [MuskVille] Julie Gonzalez - Could not exit EVA Airlock 1 01-Adir-09:495.770 (Severe) EVAOperation : [MuskVille] Julie Gonzalez - Cannot walk to outside site. 01-Adir-09:517.456 (Info) Read [x2] : [MuskVille] Jose Brooks - Started reading on mechanics. 01-Adir-09:556.476 (Warning) InventoryUtil [x21] : [MuskVille] Julie Gonzalez - Could not find any EVA suits in MuskVille. 01-Adir-09:604.162 (Warning) InventoryUtil [x37] : [MuskVille] Julie Gonzalez - Could not find any EVA suits in MuskVille. 01-Adir-09:638.900 (Info) BotTaskManager : [MuskVille] MakerBot 001 - Forcing to be recharged due to low power. 01-Adir-09:647.683 (Warning) InventoryUtil [x10] : [MuskVille] Julie Gonzalez - Could not find any EVA suits in MuskVille.

Specifications (please complete the following information):

Additional context

mokun commented 1 year ago

@bevans2000

I wonder if you have seen this already.

It's still happening as we speak.

bevans2000 commented 1 year ago

No I haven't seen it but it's probably a problem with the EVA not being returned

mokun commented 1 year ago

This is still a critical issue that's not supposed to happen.

Do you mind artificially create a console command to test the transfer of an equipment from person/settlement/vehicle to person/settlement/vehicle in various locations (settlement, vehicle and outside) ?

May be this would help validating if the changes in transfer() is good enough.

bevans2000 commented 1 year ago

We could but I dont think it will help us. We need to create UnitTests to cover the different transfer scenarios and prove them outside of a running Simulation. I think this problem relates to a particular scenario. The Equipment will still exist and be referenced in the Unitmanager so maybe we need a way to dump the contents.

mokun commented 1 year ago

I just have a simulation in which on Sol 6, New Plymouth has issues with both EVA Suit 011 and 013

01-Adir-06:477.471 (Warning) Equipment : [New Plymouth] EVA Suit 011 - Could not be stored into John Morgan'.
01-Adir-06:477.471 (Warning) Equipment : [New Plymouth] EVA Suit 011 - Just stored back into New Plymouth'.
...
01-Adir-06:621.557 (Warning) Equipment : [New Plymouth] EVA Suit 011 - Could not be stored into John Morgan'.
01-Adir-06:621.557 (Warning) Equipment : [New Plymouth] EVA Suit 011 - Just stored back into New Plymouth'.
01-Adir-06:621.557 (Warning) Equipment : [New Plymouth] EVA Suit 013 - Could not be stored into Gregory Martin'.
01-Adir-06:621.557 (Warning) Equipment : [New Plymouth] EVA Suit 013 - Just stored back into New Plymouth'.
...
01-Adir-07:054.006 (Warning) Equipment : [7.4292 N 27.3029 W - Artemis] EVA Suit 011 - Could not be stored into John Morgan'.
01-Adir-07:054.006 (Warning) Equipment : [7.4292 N 27.3029 W - Artemis] EVA Suit 011 - Just stored back into Artemis'.

The Settlement Unit Window's Inventory Tab doesn't have these two EVA Suits.

image

Unfortunately, Gregory Martin doesn't have EVA Suit 013.

image

John Morgan, already dead, doesn't have EVA Suit 011 either.

image

image

mokun commented 1 year ago

It turns out EVA Suit 013 is on the rover Artemis

image

bevans2000 commented 1 year ago

So the actual problem maybe earlier. What does the transfer back logic do?

mokun commented 1 year ago

What does the transfer back logic do?

In the simulation session above, it seems that after the last commit, the transfer logic now works.

It's supposed to automatically put the equipment back to its original owner if the transfer was unsuccessful.

bevans2000 commented 1 year ago

OK, so I've debugged one instance of this problem. An EVA suit fails to be assigned to a Person correctly when they are Egressing from a Settlement via EVA. The reason is the Person does not have spare carrying capacity to take the suit on. The reason why is the Person is carrying a Bag full of Ice that contains 30kg and hence has nothing spare. The Person did a Dig Local Ice earlier. So it appears that Persons are not always releasing their Bag when they return to a Settlement

bevans2000 commented 1 year ago

Found the problem. Sequence is:

  1. DigLocal phase is WalkToBin phase with a full container of resources
  2. There is no usable Bin so the Task is ended whilst the Person is outside
  3. DigLocal.clearDown method only returns the Bag if the person is not outside.
  4. Person returns inside vi a new Task and this does not return the Bag which they contain to carry around

There are a number of fixes

  1. The clearDown method should ALWAYS return the container as a fallback otherwise the Person keeps hold of the container
  2. Person should not be unloading to a Bin if there is no present
  3. DigLocal should not be relying on the naming convention to find a Bin

Will fix these

mokun commented 1 year ago

There is no usable Bin so the Task is ended whilst the Person is outside Person should not be unloading to a Bin if there is no present

So if bin is NOT available, then in the default bin location in EVAOperation should be set to workshop or whatever building that has manufacturing function. Is this good ?

bevans2000 commented 1 year ago

I've the logic as it stands currently. Just doing some tests. But yes we should choose the bin according to if it can store the resource being collected, not the name. A bin is a Building with STORAGE function but no LIFESUPPORT, so its outside. If it can't find a bin with that criteria should the Person just return to the Settlement and unload there? At the moment, the logic fails when a Settlement has no bins defined.

mokun commented 1 year ago

If it can't find a bin with that criteria should the Person just return to the Settlement and unload there?

I'd say that, logistically speaking, it should turn in the ice or regolith at a outside bin that's also built into lander hab.

It doesn't make sense to drag heavy loads of regolith via the airlock that will certainly pollute the airlock. Right ?

bevans2000 commented 1 year ago

OK, so if a lander hab has STORAGE function it can be used instead? Would the walk logic try to take the Person inside? I'll check. If we base the bin search on the resources it can hold then there is no longer a need for one resource per bin, a bin could store multiple resources

mokun commented 1 year ago

OK, so if a lander hab has STORAGE function it can be used instead?

Yes but the thing is that all lander habs have manufacturing functions.

That's because for a 4-person settlement, it usually only has a lander hab, a inflatable greenhouse and an airlock.

mokun commented 1 year ago

Would the walk logic try to take the Person inside?

So far, the walk logic for dropping off resources would only take a person between a digging site and a spot that's next to a storage bin.

mokun commented 1 year ago

If we base the bin search on the resources it can hold then there is no longer a need for one resource per bin, a bin could store multiple resources

If I recall correctly, the storage function currently has issues. It's supposed to provide both specific resource storage capacity for each supported resource as well as the general cargo storage capacity for any resources.

However, it seems that only the specific resource storage capacity for each supported resource is working

The general cargo storage doesn't work because it's difficult to implement under microinventory. And I'm not sure how to fix that properly without introducing potentially new problems. It was mentioned in some old threads such as here.

bevans2000 commented 1 year ago

Ok, I'll have a look

bevans2000 commented 1 year ago

I've commit the fixes but left the Storage selection logic based on name the same but corrected. For changing the selection I've create #776 I think we can close this issue now ?

mokun commented 1 year ago

I'm still getting this :

01-Adir-03:730.590 (Warning) InventoryUtil : [21.1861 N 47.9162 W - Ariane] Niilo Korhonen - Could not find any EVA suits in Ariane.
01-Adir-03:730.590 (Warning) ExitAirlock : [21.1861 N 47.9162 W - Ariane] Niilo Korhonen - Could not find a working EVA suit and needed to wait.
01-Adir-03:730.590 (Warning) ExitAirlock : [21.1861 N 47.9162 W - Ariane] Niilo Korhonen - Ariane for Mineral Exploration #14. No working EVA suit, awaiting response for rescue.
01-Adir-03:730.590 (Warning) ExitAirlock : [21.1861 N 47.9162 W - Ariane] Niilo Korhonen - Ariane for Mineral Exploration #14. Will try to repair an EVA suit.
...
01-Adir-03:756.502 (Info) OperateVehicle [x145] : [1.4003 S 20.5000 E] Dust Bowl - Reducing speed from 13.056 kph  to 7.853 kph. Deceleration: -0.894 m/s2. Force: -1834.337 N.
01-Adir-03:757.106 (Warning) InventoryUtil [x3] : [21.1861 N 47.9162 W - Ariane] Niilo Korhonen - Could not find any EVA suits in Ariane.
01-Adir-03:757.106 (Warning) ExitAirlock [x3] : [21.1861 N 47.9162 W - Ariane] Niilo Korhonen - Could not find a working EVA suit and needed to wait.
01-Adir-03:757.106 (Warning) ExitAirlock [x3] : [21.1861 N 47.9162 W - Ariane] Niilo Korhonen - Ariane for Mineral Exploration #14. No working EVA suit, awaiting response for rescue.
01-Adir-03:757.106 (Warning) ExitAirlock [x3] : [21.1861 N 47.9162 W - Ariane] Niilo Korhonen - Ariane for Mineral Exploration #14. Will try to repair an EVA suit.
...
01-Adir-03:758.305 (Warning) TaskManager : [21.1861 N 47.9162 W - Ariane] Niilo Korhonen - Cannot find pending task called RepairInsideMalfunction
...
01-Adir-03:758.596 (Warning) InventoryUtil [x7] : [21.1861 N 47.9162 W - Ariane] Niilo Korhonen - Could not find any EVA suits in Ariane.
...
01-Adir-03:802.857 (Warning) InventoryUtil [x3] : [21.1861 N 47.9162 W - Ariane] Niilo Korhonen - Could not find any EVA suits in Ariane.
01-Adir-03:802.857 (Warning) ExitAirlock [x10] : [21.1861 N 47.9162 W - Ariane] Niilo Korhonen - Could not find a working EVA suit and needed to wait.
01-Adir-03:802.857 (Warning) ExitAirlock [x10] : [21.1861 N 47.9162 W - Ariane] Niilo Korhonen - Ariane for Mineral Exploration #14. No working EVA suit, awaiting response for rescue.
01-Adir-03:802.857 (Warning) ExitAirlock [x10] : [21.1861 N 47.9162 W - Ariane] Niilo Korhonen - Ariane for Mineral Exploration #14. Will try to repair an EVA suit.
01-Adir-03:802.857 (Warning) TaskManager [x4] : [21.1861 N 47.9162 W - Ariane] Niilo Korhonen - Cannot find pending task called RepairInsideMalfunction
01-Adir-03:804.406 (Warning) InventoryUtil [x3] : [21.1861 N 47.9162 W - Ariane] Niilo Korhonen - Could not find any EVA suits in Ariane.
01-Adir-03:804.406 (Warning) TaskManager [x3] : [21.1861 N 47.9162 W - Ariane] Niilo Korhonen - Cannot find pending task called RepairInsideMalfunction

It turns out Niilo is in the rover Ariane and he already has EVA suit 026 on himself. See this : image

I suppose EVA suit 026 is malfunctioned and that's why he's also trying to call RepairInsideMalfunction to repair it ?

Question : what's the best way to show player that EVA suit 026 may be defective ?

mokun commented 1 year ago

In that same session, Lenna couldn't find an usable EVA suit in rover Sakit as follows:

01-Adir-02:417.243 (Warning) InventoryUtil : [20.0181 N 50.0681 W - Sakit] Lenna Saar - Could not find any EVA suits in Sakit.
01-Adir-02:417.243 (Warning) ExitAirlock : [20.0181 N 50.0681 W - Sakit] Lenna Saar - Could not find a working EVA suit and needed to wait.
01-Adir-02:417.243 (Warning) ExitAirlock : [20.0181 N 50.0681 W - Sakit] Lenna Saar - Sakit for Ice Prospecting #13. No working EVA suit, awaiting response for rescue.
01-Adir-02:417.243 (Warning) ExitAirlock : [20.0181 N 50.0681 W - Sakit] Lenna Saar - Sakit for Ice Prospecting #13. Will try to repair an EVA suit.
01-Adir-02:417.243 (Warning) TaskManager : [20.0181 N 50.0681 W - Sakit] Lenna Saar - Cannot find pending task called RepairInsideMalfunction
...
01-Adir-02:429.578 (Warning) InventoryUtil : [20.0181 N 50.0681 W - Sakit] Lenna Saar - Could not find any EVA suits in Sakit.
01-Adir-02:429.578 (Warning) ExitAirlock : [20.0181 N 50.0681 W - Sakit] Lenna Saar - Could not find a working EVA suit and needed to wait.
01-Adir-02:429.578 (Warning) TaskManager : [20.0181 N 50.0681 W - Sakit] Lenna Saar - Cannot find pending task called RepairInsideMalfunction
01-Adir-02:430.930 (Info) ExploreSite : [43.5204 N 102.5762 W] Haeun Kil - Exploring site at 43.5204 N 102.5762 W. # of estimation made: 1.
01-Adir-02:431.518 (Info) EnterAirlock : [0.0151 N 0.0647 W - Martian Escape] Mariana Jesus - All chambers are occupied in Martian Escape. Could not enter.
01-Adir-02:431.810 (Warning) InventoryUtil : [20.0181 N 50.0681 W - Sakit] Lenna Saar - Could not find any EVA suits in Sakit.
01-Adir-02:431.810 (Warning) TaskManager : [20.0181 N 50.0681 W - Sakit] Lenna Saar - Cannot find pending task called RepairInsideMalfunction
...
01-Adir-02:446.635 (Warning) InventoryUtil : [20.0181 N 50.0681 W - Sakit] Lenna Saar - Could not find any EVA suits in Sakit.
01-Adir-02:446.635 (Warning) ExitAirlock : [20.0181 N 50.0681 W - Sakit] Lenna Saar - Could not find a working EVA suit and needed to wait.
01-Adir-02:446.635 (Warning) ExitAirlock [x5] : [20.0181 N 50.0681 W - Sakit] Lenna Saar - Sakit for Ice Prospecting #13. No working EVA suit, awaiting response for rescue.
01-Adir-02:446.635 (Warning) ExitAirlock [x5] : [20.0181 N 50.0681 W - Sakit] Lenna Saar - Sakit for Ice Prospecting #13. Will try to repair an EVA suit.
01-Adir-02:446.635 (Warning) TaskManager : [20.0181 N 50.0681 W - Sakit] Lenna Saar - Cannot find pending task called RepairInsideMalfunction
...
01-Adir-02:639.877 (Warning) ExitAirlock [x3] : [20.0181 N 50.0681 W - Sakit] Lenna Saar - Sakit for Ice Prospecting #13. No working EVA suit, awaiting response for rescue.
01-Adir-02:639.877 (Warning) ExitAirlock [x3] : [20.0181 N 50.0681 W - Sakit] Lenna Saar - Sakit for Ice Prospecting #13. Will try to repair an EVA suit.
01-Adir-02:639.877 (Warning) TaskManager : [20.0181 N 50.0681 W - Sakit] Lenna Saar - Cannot find pending task called RepairInsideMalfunction

Interestingly, at 01-Adir-02:446.63, it said it "Will try to repair an EVA suit."

However, it also said "Cannot find pending task called RepairInsideMalfunction".

bevans2000 commented 1 year ago

Looks to me like somewhere we are trying to create a pending task for the repair by the old name. I have an idea about this so I'll look into it. But the problem is localised to Vehicles now