Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement Shared Knowledge Between Vehicles #349

Open
Rom-1T opened this issue Nov 6, 2024 · 3 comments
Open

Implement Shared Knowledge Between Vehicles #349

Rom-1T opened this issue Nov 6, 2024 · 3 comments

Comments

@Rom-1T
Copy link

Rom-1T commented Nov 6, 2024

Hello,

For my research, I want to implement a form of "shared knowledge" between vehicles. As a first step, I aim to create shared knowledge that represents ground truth information, including position, speed, detected objects, etc., for each vehicle.

After reviewing the code, I thought that using the GlobalEnvironmentModel might be a potential solution. However, I'm having trouble determining the best approach. My questions are:

What is the easiest way to retrieve information from all vehicles?
Is using the GlobalEnvironmentModel a good approach for this purpose?
Thank you!

@riebl
Copy link
Owner

riebl commented Nov 6, 2024

Hi @Rom-1T,

I think the GlobalEnvironmentModel is a good starting point for the global state of physical properties.
By design, the overall state of OMNeT++ simulations is spread among its modules, i.e. the sum of all module entities builds up the simulation state at a particular time.
Thus, you may need to traverse the module tree to collect more or other data.

If you don't need the ground truth at runtime, you can also do the analysis afterwards. For example, each vehicle may contribute its "real" positions over time to an OMNeT++ result vector. If you also log the "assumed" positions derived by others, you can calculate the error margin in a post-processing step.

@Rom-1T
Copy link
Author

Rom-1T commented Nov 7, 2024

Hello,

After running some simulations, I understand that vehicle modules are appended to the network, which can make it difficult to collect data. I considered using the GlobalEnvironmentModel to access the vehicle modules, like a pointer, but it doesn't seem to align with the architecture of OMNeT++. However, in a fork of Artery, I saw a modification of the EnvironmentModelObject that included a VehicleDataProvider variable, enabling the collection of dynamic data via the GlobalEnvironmentModel. But I don't find that solution very efficient.

On the other hand, I thought of relying on a module inside each vehicle to update the "shared knowledge" based on their LocalEnvironmentModel, which may better match a real-world implementation. However, pedestrians and non-connected vehicles would not update the shared knowledge, making it difficult to evaluate the efficiency of this shared knowledge in Collective Perception.

I'll continue searching for a proper solution. Thank you for your response.

@riebl
Copy link
Owner

riebl commented Nov 7, 2024

If the tracked EnvironmentModelObject is a TraCI vehicle, you can cast its pointer to TraCIEnvironmentModelObject. This class gives you access to the object's VehicleDataProvider.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants