5.0.0
Description
Abstract
This pull request introduces the change of removing any traffic lights functionality from EntityManager
class and encapsulating it inside the new TrafficLights
class.
The responsibility of managing traffic lights have been moved to the API.
The change got rid of simulation_api_schema
proto messages from traffic_simulator
and transitioned to using ROS messages only. Proto messages are now used exclusively in simple_sensor_simulator
.
The general goal of this PR is to divide scenario_simulator_v2 into smaller modules with some specific functionality and responsibilities. Apart from module dividing, some code has been refactored to make it cleaner, simpler and easier to read.
Background
This pull request is one of many that aim to modularize the scenario_simulator_v2.
Details
The traffic lights functionality has been aggregated in one master TrafficLights
class. This way, all components that make up traffic lights are grouped together and managed by one resource. This master class - along with the responsibility - has been moved to the API. Although the EntityManager
does hold a reference to TrafficLights
, which is needed by NPCs.
Newly developed classTrafficLights
and its components contain some additional functionality that has been spread throughout the whole scenario_simulator_v2 codebase, like the member functionisRequiredStopTrafficLightState
or getConventionalTrafficLightsComposedState
.
The new traffic lights classes encapsulated by TrafficLights
are designed in such a way, that they do not share the underlying TrafficLight
object, but act as a middleman modifying the TrafficLight
object as needed:
Some additional traffic light message type conversions have been developed in order to get rid of the simulation_api_schema
dependency in traffic_simulator
and make message managing easier. Also, the traffic lights are now responsible for generating the messages:
Additionally, a dedicated message publisher has been developed for simple_sensor_simulator
:
Please note that this PR removes all tests for TrafficLightManager
as these tests have no purpose with the new TrafficLights
implementation.
New tests have been developed on this branch (here is a diff), but they have not been added to this PR, as this is a large PR by itself as is now.
We are planning to cast a new PR with just the tests. However, if the reviewer would like to have the tests included in this PR as well, we can do that, just please let us know.
Please just note, that then (with tests included) this PR will become very large with over 2000 additions (tests alone have 1000 additions).
Additional note: many of the changes are restructuring, so the code is changed only a little, if at all, but it has been moved to some other places like for example this has been moved here.
Likewise, these type conversions have been moved from publish
member functions to appropriate traffic lights functions, which use cast conversions defined here.
References
INTERNAL LINK
PREVIOUS INTERNAL LINK
Regression tests
Regression report
Local tests with deeper regression investigation (no regression confirmed)
Destructive Changes
None
Known Limitations
None