PerCollECT - CameraCopse
This tree facilitates the analysis of cause and effect chain in the signal processing of automotive camera sensors. Visualization of the tree can be found under https://percollect.github.io/CameraCopse/.
PerCollECT aims to collect and systematically order cause and effect chains of automotive environment perception sensors, like radar, lidar camera and ultrasonic. Because of the sheer complexity of the cause and effect relationships, this can only be compiled collaboratively by the whole community. To achieve a high approval rate in the community and ensure a scientific style, every cause and effect chain is referenced to a scientific publication or a measurement showing the effect.
As an effect, we define the deviation from the originally existing information about the environment in the signal or data. Effects are marked as gray rectangles in the tree. For example, an error in the measured distance to an object resulting from limited range resolution would be an effect in the signal processing of the sensor. An effect can have multiple causes but also a cause can lead to multiple effects. Consequently, a cause-effect chain can induce a subsequent effect in the signal or data. Every condition leading to a deviation in the information is defined as the cause for an effect. A cause can be a property of the emission unit's hardware, like the physics of the antenna design of a radar, it can be located in the propagation path, like weather conditions, or in the signal processing, like the resolution of AD-conversion. We distinguish between system independent causes (marked in green) and system design parameters (marked in purple).
Each node in the tree, effect or cause, contains a name, a unique identifier, and an assignment to a block of the functional decomposition of the signal processing of the sensor. Additionally, every line between two nodes describes a cause-effect relationship. These relationships are always referenced with a scientific publication in the child node.
PerCollECT is based on a directed acyclic graph. All nodes is represented in the data.json file. Relations between nodes (called links) are set by adding the IDs of the parent nodes to the child node. In addition, the references for the links are set in the field "references"
The following shows a simple example of relations between node 18 (child) and node 19 and node 20 (parents):
data.json
example
{
"id": "18",
"parentIds": ["19","20"],
"title": "Aliasing",
"decomBlock": "Pre-processing",
"description":"Aliasing effects in FFTs leading to ambiguous measurements",
"references": "[19, Holder et al., Modeling and Simulation of Radar Sensor Artifacts for Virtual Testing of Autonomous Driving,https://mediatum.ub.tum.de/doc/1535151/1535151.pdf, Aliasing, p.2][20, Holder et al., Modeling and Simulation of Radar Sensor Artifacts for Virtual Testing of Autonomous Driving,https://mediatum.ub.tum.de/doc/1535151/1535151.pdf, Aliasing, p.2]",
"nodeType": "designParameter"
}
A node always contains the following attributes:
id
of the nodes is a consecutive integer.parentIds
list all parent nodes.title
is a very short description of the effect or cause, that will be displayed directly in the visualization.decomBlock
refers to the associated decomposition block Emission, Signal propagation, Reception, Pre-processing, Detection identification, Feature identification or Object identification.description
contains a more detailed explanation of the effect or cause.references
contains for every parent the first author, the title and the link to the literature item. Optionally a short note about the reference e.q. the page number of interest can be added.nodeType
states, if the node is an effect, a designParameter or systemIndependent.
- Create a new branch in the repository
- Open the
data.json
file - Add a comma after the last node
- Add your new node with all the aforementiones attributes
Note: After editing the data source you'll need to empty the session storage (e.g. by closing the active tab) to see the changes!
Visualization of the tree can be found under https://percollect.github.io/CameraCopse/. It is supported by the following Browser: Chrome, Edge, Firefox, Opera and Safari.
content.js
basically operates as a controller. It manages parsing the data, initializing the model as well as rendering the matching content.
The parsed and prepared data is always stored in the SessionStorage
of the browser tab! It is loaded once at the beginning!
model.js
manages the parsed data by providing getter functions for certain attributes.
sidenav.js
provides an interface to fill the side bar navigation with links based on the parsed graph.
The visualization is a directed acyclic graph based on d3 DAG with a Sugiyama base layout. It is controlled in dag.js
- Install VS Code
- Install the Live Server plugin
- Start a server by using the Go Live button
- Open a browser and navigate to localhost:PORT
Note: Once you work locally the code also uses the local data files.
Backend
-
How to switch to a database: The existing data needs to be transfered to a database. If a database exists the javascript webpage can fetch data from it. One possible implementation to fetch the data is using Ajax database. Example ajax fetch from database, ajax-php database. To manipulate the data from javascript it probably needs a brigde between javascript and php. Php handles the server-side actions (e.g. database query), JS handles the client-side actions (e.g. UI). Example php-ajax brige.
-
How to properly validate the data: Once the data set is getting larger a comprehensive validation might be needed. First the code should validate against a json schema. After that it might be a good idea to also validate the node attribute values (especially
id
,decomBlock
,references
). GitHub Actions can also help to avoid a non running page.
I cannot see the changes made on the data set:
After editing the data source you'll need to empty the session storage (e.g. by closing the active tab) to see the changes.
The PerCollECT method is based on the following publication which has to be cited if referring to PerCollECT:
C. Linnhoff, P. Rosenberger, S. Schmidt, L. Elster, R. Stark, and H. Winner, “Towards Serious Perception Sensor Simulation for Safety Validation of Automated Driving - A Collaborative Method to Specify Sensor Models,” submitted to the 24th International Conference on Intelligent Transportation Systems (ITSC), Indianapolis, IN, USA, 2021
A video presentation of the percollect method can be found here.
The work received initial funding from SET Level and VVM of the PEGASUS project family, promoted by the German Federal Ministry for Economic Affairs and Energy based on a decision of the Deutsche Bundestag.