diff --git a/.github/ISSUE_TEMPLATE/BUG.yml b/.github/ISSUE_TEMPLATE/BUG.yml index ab864385..aee5410c 100644 --- a/.github/ISSUE_TEMPLATE/BUG.yml +++ b/.github/ISSUE_TEMPLATE/BUG.yml @@ -1,24 +1,74 @@ name: 🐞 Bug title: "[Bug]: " -description: Something doesn't behave as it should. +description: A bug that requires attention. labels: ["bug"] body: - type: textarea id: current attributes: label: Current Behavior - placeholder: The car doesnt see a traffic light on Map1. + description: Describe the current, unexpected behavior. + placeholder: The car doesn’t detect the traffic light on Map1. - type: textarea id: expected attributes: label: Expected Behavior - placeholder: The car does see the traffic light on Map1. + description: Describe the expected, correct behavior. + placeholder: The car should detect the traffic light on Map1. - type: textarea id: reproduce attributes: - label: How to reproduce the issue + label: Steps to Reproduce + description: Provide steps to reproduce the issue. placeholder: | - * Start the simulation with Map1 - * after 600m the car won't stop at the traffic light. \ No newline at end of file + * Start simulation on Map1. + * After 600m, the car should stop at the traffic light. + + - type: textarea + id: definition_of_done + attributes: + label: Definition of Done + description: Criteria to consider this issue resolved. + placeholder: | + - The car detects traffic lights on Map1 correctly. + - The issue no longer occurs in similar scenarios. + + - type: input + id: effort_estimate + attributes: + label: Effort Estimate + description: Approximate effort required (e.g., hours). + placeholder: Enter effort estimate. + + - type: textarea + id: testability + attributes: + label: Testability + description: Describe how to test the fix. + placeholder: Describe testing steps for verification. + + - type: textarea + id: dependencies + attributes: + label: Dependencies + description: List any dependent tasks or issues. + placeholder: Link dependencies here (e.g., \#123). + + - type: markdown + attributes: + value: | + **Add Priority Label**: + - p1: Immediate attention + - p2: High priority + - p3: Standard priority + - p4: Low priority + + **Add Group Label**: + - perception: Related to sensor processing and scene understanding + - planning: Related to path planning and decision making + - acting: Related to vehicle control and actuation + - system: Related to the general behavior of the system + - research: Related to research and experimentation + - infrastructure: Related to system infrastructure and setup diff --git a/.github/ISSUE_TEMPLATE/FEATURE.yml b/.github/ISSUE_TEMPLATE/FEATURE.yml index 65b5c9a6..366bab21 100644 --- a/.github/ISSUE_TEMPLATE/FEATURE.yml +++ b/.github/ISSUE_TEMPLATE/FEATURE.yml @@ -1,20 +1,58 @@ name: 💡 Feature title: "[Feature]: " -description: Something we should implement. +description: A new feature to be implemented. labels: ["feature"] body: - type: textarea - id: desc + id: description attributes: - label: Description - description: Short description about what to do. - placeholder: The vehicle should detect traffic lights and it's states. + label: Feature Description + description: Provide a summary of the feature. + placeholder: The vehicle should detect traffic lights and their states. - type: textarea - id: dod + id: definition_of_done attributes: label: Definition of Done - description: What is required to mark the issue as done? + description: Completion criteria for the feature. placeholder: | - - 90% of the traffic lights are detected - - 90% of the traffic light states are detected correctly" \ No newline at end of file + - Detects 90% of traffic lights. + - Correctly identifies 90% of traffic light states. + + - type: input + id: effort_estimate + attributes: + label: Effort Estimate + description: Approximate effort required (e.g., hours). + placeholder: Enter effort estimate. + + - type: textarea + id: testability + attributes: + label: Testability + description: How will the feature be tested? + placeholder: Describe test cases and success criteria. + + - type: textarea + id: dependencies + attributes: + label: Dependencies + description: List any dependencies on other issues. + placeholder: Link dependencies here (e.g., \#456). + + - type: markdown + attributes: + value: | + **Add Priority Label**: + - p1: Immediate attention + - p2: High priority + - p3: Standard priority + - p4: Low priority + + **Add Group Label**: + - perception: Related to sensor processing and scene understanding + - planning: Related to path planning and decision making + - acting: Related to vehicle control and actuation + - system: Related to the general behavior of the system + - research: Related to research and experimentation + - infrastructure: Related to system infrastructure and setup diff --git a/.github/ISSUE_TEMPLATE/ISSUE.yml b/.github/ISSUE_TEMPLATE/ISSUE.yml index 0ebbfe5d..6ad88fbf 100644 --- a/.github/ISSUE_TEMPLATE/ISSUE.yml +++ b/.github/ISSUE_TEMPLATE/ISSUE.yml @@ -1,78 +1,55 @@ -name: "Issue Template" -description: "Template for creating issues" -labels: [] -assignees: [] +name: "General Issue" +title: "[General]: " +description: Template for general issues. +labels: ["general"] body: - - type: markdown - attributes: - value: | - ## Please fill out all relevant fields: - - type: textarea id: description attributes: - label: "Detailed Description" - description: "Describe the issue in detail" + label: Detailed Description + description: Describe the issue in detail. placeholder: | - Enter description here + Enter description here: - What is the problem? - - What is the expected behavior? - - What is the actual behavior? + - What is the expected outcome? - type: textarea id: definition_of_done attributes: - label: "Definition of Done" - description: "What needs to be completed for the task to be considered done?" + label: Definition of Done + description: Criteria for considering the task complete. placeholder: | - Example criteria: - - [ ] Implementation completed and tested - - [ ] Documentation updated - - [ ] Code review passed - - [ ] All tests passing + - Implementation completed and tested + - Documentation updated + - Code review passed + - All tests passing - type: input id: effort_estimate attributes: - label: "Effort Estimate" - description: "Estimate the effort required (e.g., in hours)" - placeholder: "Enter effort estimate here" + label: Effort Estimate + description: Approximate effort required (e.g., hours). + placeholder: Enter effort estimate. - type: textarea id: testability attributes: - label: "Testability" - description: "How can the implementation be tested?" - placeholder: "Enter testing methods here" + label: Testability + description: How to verify the issue's resolution. + placeholder: Enter test methods and validation criteria. - type: textarea id: dependencies attributes: - label: "Dependencies" - description: "Are there dependencies on other tasks or systems?" - placeholder: | - Enter dependencies here - - Task A must be completed before this task can start - - Link issues here with # + label: Dependencies + description: List dependencies, if any. + placeholder: Link dependencies here (e.g., the issue \#789). - type: markdown - id: prioritization attributes: value: | - Add a priority label to this issue (p1 to p4) based on the following criteria: - - p1: Critical issue that needs immediate attention - - p2: Important issue that should be addressed soon - - p3: Issue that should be addressed in the near future - - p4: Issue that can be addressed later - - - type: markdown - id: labels - attributes: - value: | - Add any relevant labels to this issue: - - standard labels: + **Add Standard Label**: - bug: Something isn't working - enhancement: New feature or request - help wanted: Extra attention is needed @@ -81,9 +58,16 @@ body: - question: Further information is requested - wontfix: This will not be worked on - project-specific labels: + **Add Priority Label**: + - p1: Immediate attention + - p2: High priority + - p3: Standard priority + - p4: Low priority + + **Add Group Label**: - perception: Related to sensor processing and scene understanding - planning: Related to path planning and decision making - acting: Related to vehicle control and actuation + - system: Related to the general behavior of the system - research: Related to research and experimentation - infrastructure: Related to system infrastructure and setup diff --git a/code/acting/launch/acting_debug.launch b/code/acting/launch/acting_debug.launch new file mode 100644 index 00000000..e0353b7c --- /dev/null +++ b/code/acting/launch/acting_debug.launch @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code/acting/src/acting/Acting_Debug_Node.py b/code/acting/src/acting/Acting_Debug_Node.py index b3289747..da6104c8 100755 --- a/code/acting/src/acting/Acting_Debug_Node.py +++ b/code/acting/src/acting/Acting_Debug_Node.py @@ -178,6 +178,17 @@ def __init__(self): self.__vehicle_steers = [] self.positions = [] + # Initialize agent position + self.x = 0 + self.y = 0 + self.z = 0 + + # For visual purposes we set the trajectory height to vehicle heigt. + # The trajectory z coordinated do not affect steering or else. + # There is quite some confusion about visual height an actual height + # This parameter might needs adustment + self.z_visual = 0 + # Generate Trajectory as selected in TRAJECTORY_TYPE self.path_msg = Path() self.path_msg.header.stamp = rospy.Time.now() @@ -286,7 +297,7 @@ def updated_trajectory(self, target_trajectory): pos.header.frame_id = "global" pos.pose.position.x = wp[0] pos.pose.position.y = wp[1] - pos.pose.position.z = 704 # needed for visuals + pos.pose.position.z = self.z_visual # currently not used therefore zeros pos.pose.orientation.x = 0 pos.pose.orientation.y = 0 diff --git a/doc/acting/acting_testing.md b/doc/acting/acting_testing.md index a5a67791..49bd88e7 100644 --- a/doc/acting/acting_testing.md +++ b/doc/acting/acting_testing.md @@ -2,26 +2,27 @@ **Summary:** This page shows ways to test and tune acting components and to verify that they work as intended. -- [How to test/tune acting components independedly](#how-to-testtune-acting-components-independedly) - - [Acting\_Debug\_Node](#acting_debug_node) - - [Setup for Testing with the Debug-Node](#setup-for-testing-with-the-debug-node) - - [Operating the Debug-Node](#operating-the-debug-node) +- [Acting\_Debug\_Node](#acting_debug_node) + - [Setup for Testing with the Debug-Node](#setup-for-testing-with-the-debug-node) + - [Operating the Debug-Node](#operating-the-debug-node) ## Acting_Debug_Node The [Acting_Debug_Node](../../code/acting/src/acting/Acting_Debug_Node.py) allows you to tune/test/verify all acting components independently of Planning-Inputs and also lets you easily output the data needed to plot/verify the tuning/testing you have done. +There is a dedicated [acting_debug.launch](../../code/acting/launch/acting_debug.launch) file which starts the acting component **as well as the necesarry perception components** automatically. It is recommended to first test the [Acting_Debug_Node](../../code/acting/src/acting/Acting_Debug_Node.py) +with an empty road scenario. The following guide provides instructions on how to launch this setup. + ### Setup for Testing with the Debug-Node -To use the [Acting_Debug_Node](../../code/acting/src/acting/Acting_Debug_Node.py) you first have to edit a few files in your current branch: +To use the [Acting_Debug_Node](../../code/acting/src/acting/Acting_Debug_Node.py) you first have to edit a few files in your current branch: \\ +**! Make sure to revert these changes when pushing your branch!** -- In the [acting.launch](../../code/acting/launch/acting.launch) file, you need to un-comment the ```Acting_Debug_Node```-node. -- Disable Planning from sending *trajectory*, *target_velocity*, *unstuck* or *emergency* Messages. -The easiest way to achieve this is to go to the [planning.launch](../../code/planning/launch/planning.launch) and just comment-out every active node. -- As the Perception-nodes use alot of processing power and ressources and you most likely do not need them, you can disable them, again commenting-out unwanted nodes in the [perception.launch](../../code/perception/launch/perception.launch) file. -**IMPORTANT:** As you need the **position_heading_publisher_node** and most likely the **kalman_filter** for the GNSS/IMU data, do keep those 2 active! -- There is a developer-enviroment ready to use, if you want to test your components on an empty road. -To switch to this, go to [docker_compose.yml](../../build/docker-compose.yml), where you will find which enviroment is currently chosen in lines 64-66. Uncomment the ```dev_launch``` and comment-out the ```leaderboard_evaluator``` if you want to use this developer-enviroment. +- In [dev.launch](../../code/agent/launch/dev.launch) the [agent.launch](../../code/agent/launch/agent.launch) file is included. Change this to include [acting_debug.launch](../../code/acting/launch/acting_debug.launch) from the **acting** package. +As mentioned above this includes everything we need. +- In [docker-compose.devroute.yaml](../../build/docker-compose.devroute.yaml) change the command to 'bash -c "sleep 10 && roslaunch agent/launch/dev.launch"' +- You can now 'docker compose up' the [docker-compose.devroute.yaml](../../build/docker-compose.devroute.yaml). + This should result in an empty road scenario with rviz and rqt. To now decide whether to work on noisy sensor data, with or without the kalman-filter, here is how to change this: @@ -30,6 +31,8 @@ To now decide whether to work on noisy sensor data, with or without the kalman-f If you want to test a component on ideal sensor data (position/heading/both), go to the [dev_objects.json](../../code/agent/config/dev_objects.json) and find the ```GNSS```(position) and the ```IMU```(heading) sensors (lines 142-173) and set their noise-attributes to 0. It is then also recommended to set the ```pos_filter``` and ```heading_filter``` of the **position_heading_publisher_node** to None (as filtering ideal sensor data will make them inaccurate again). +In [acting_debug.launch](../../code/acting/launch/acting_debug.launch) you can also set up different plot configurations for the rqt-window. + ### Operating the Debug-Node When you open the [Acting_Debug_Node](../../code/acting/src/acting/Acting_Debug_Node.py) you will see, that alot of Testing-Options are selectable via Global Variables. diff --git a/doc/assets/research_assets/drawio_legend/Loesungs_Vorschlag.jpg b/doc/assets/research_assets/drawio_legend/Loesungs_Vorschlag.jpg new file mode 100644 index 00000000..2146e7dc Binary files /dev/null and b/doc/assets/research_assets/drawio_legend/Loesungs_Vorschlag.jpg differ diff --git a/doc/assets/research_assets/drawio_legend/Problem.jpg b/doc/assets/research_assets/drawio_legend/Problem.jpg new file mode 100644 index 00000000..d05f15cb Binary files /dev/null and b/doc/assets/research_assets/drawio_legend/Problem.jpg differ diff --git a/doc/assets/research_assets/drawio_legend/Team.jpg b/doc/assets/research_assets/drawio_legend/Team.jpg new file mode 100644 index 00000000..92743423 Binary files /dev/null and b/doc/assets/research_assets/drawio_legend/Team.jpg differ diff --git a/doc/assets/research_assets/drawio_legend/Ziel.jpg b/doc/assets/research_assets/drawio_legend/Ziel.jpg new file mode 100644 index 00000000..48b73172 Binary files /dev/null and b/doc/assets/research_assets/drawio_legend/Ziel.jpg differ diff --git a/doc/assets/research_assets/drawio_legend/gemeinsames_Problem.jpg b/doc/assets/research_assets/drawio_legend/gemeinsames_Problem.jpg new file mode 100644 index 00000000..01ec28e0 Binary files /dev/null and b/doc/assets/research_assets/drawio_legend/gemeinsames_Problem.jpg differ diff --git a/doc/assets/research_assets/drawio_legend/generell.jpg b/doc/assets/research_assets/drawio_legend/generell.jpg new file mode 100644 index 00000000..9dd47446 Binary files /dev/null and b/doc/assets/research_assets/drawio_legend/generell.jpg differ diff --git a/doc/assets/research_assets/drawio_legend/two_teams_problem.jpg b/doc/assets/research_assets/drawio_legend/two_teams_problem.jpg new file mode 100644 index 00000000..79b917c0 Binary files /dev/null and b/doc/assets/research_assets/drawio_legend/two_teams_problem.jpg differ diff --git "a/doc/assets/research_assets/drawio_legend/\303\234bergeordnetes_Problem.jpg" "b/doc/assets/research_assets/drawio_legend/\303\234bergeordnetes_Problem.jpg" new file mode 100644 index 00000000..88862627 Binary files /dev/null and "b/doc/assets/research_assets/drawio_legend/\303\234bergeordnetes_Problem.jpg" differ diff --git a/doc/general/drawio_board.md b/doc/general/drawio_board.md new file mode 100644 index 00000000..1b866821 --- /dev/null +++ b/doc/general/drawio_board.md @@ -0,0 +1,53 @@ +# Drawio Board for planning future work + +**Summary:** This page provides an overview of the draw.io board usage and provides links to videos with general tips on how to work with draw.io + +- [Drawio Board for planning future work](#drawio-board-for-planning-future-work) + - [Link](#link) + - [Legend](#legend) + - [Tips](#tips) + +## Link + +To access the draw.io board, please click [here](https://drive.google.com/drive/folders/1dNyrnDdsj0m7kymDQUUqu2WinR4lQJpe) + +## Legend + +Please use the predefined nodes when working with the board. If you think something is missing, please contact Marcin Kuhnert (Discord: RoyaLxPole) for the PAF24. +Explanation: + +![Ziele](../assets/research_assets/drawio_legend/Ziel.jpg) + +This node is primarily for the software engineers who define the goals or sub-goals to be achieved for all teams. The goals should be defined as precisely as possible.These goals are added either in a separate graph or directly above the problems. + +![Team](../assets/research_assets/drawio_legend/Team.jpg) + +This node is for assigning the respective teams or a person from a team. Each team is assigned its own color. Green for Perception, Red for Acting, and Blue for Planning. + +![Uebergeordnetes Problem](../assets/research_assets/drawio_legend/Übergeordnetes_Problem.jpg) + +This node is used to describe a higher-level problem that cannot currently be defined in detail or can be broken down into smaller problems. As described in the previous node, each team has its own color. +If there is a problem that affects two teams, the color is determined by adding the colors in hexadecimal notation. + +![two teams prolbem](../assets/research_assets/drawio_legend/two_teams_problem.jpg) + +Example for problem that affects two teams (HEX: 00FFFF): + +![Problem](../assets/research_assets/drawio_legend/Problem.jpg)![gemeinsam](../assets/research_assets/drawio_legend/gemeinsames_Problem.jpg) + +This node is used to provide a description for an atomic problem that cannot be further simplified. The color coding for this node applies as described above. + +![Loesungs Vorschlag](../assets/research_assets/drawio_legend/Loesungs_Vorschlag.jpg) + +This node is used to describe the approach to the problem. If an issue has already been created on GitHub, the issue number should be included here. + +![generell](../assets/research_assets/drawio_legend/generell.jpg) +These nodes are used to describe problems that have not yet been assigned to a team or to describe problems that affect all teams equally. + +## Tips + +For effective work on the board, please watch the following video and read the blog posting. + +[Video](https://www.google.com/search?q=draw.io+mind+map+tutorial&rlz=1C1VDKB_deDE929DE929&oq=draw+io+mind&gs_lcrp=EgZjaHJvbWUqCAgDEAAYFhgeMggIABBFGCcYOzIGCAEQRRg5MgcIAhAAGIAEMggIAxAAGBYYHjIICAQQABgWGB4yCAgFEAAYFhgeMgYIBhBFGDwyBggHEEUYPdIBCDgyNzBqMGo3qAIAsAIA&sourceid=chrome&ie=UTF-8#fpstate=ive&vld=cid:6448d106,vid:mooBFL_jhxg,st:0) + +[Blog](https://drawio-app.com/blog/organization-charts-and-mind-maps-in-draw-io/)