From 3ed38ce8a6370bb006c2a5bf1dedca43e6629b79 Mon Sep 17 00:00:00 2001 From: Andrei Moraru Date: Mon, 12 Jun 2023 22:50:59 +0300 Subject: [PATCH 01/20] Update README.md --- README.md | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2b8fc36..3e1e780 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,31 @@ -# NeedForScenes -Need For Scenes - Point Cloud Pursuit +# Need For Scenes - Point Cloud Pursuit + +A Multi Object Tracking (MOT) via Sensor Fusion 3D interactive simulation using PCL + +![game](https://github.com/AndreiMoraru123/NeedForScenes/assets/81184255/a20df907-f54c-448d-b955-c4319bab677c) + +The Ego (player controller) car is designed using a 2D kinematic model accelerated with four states: x-position, y-position, velocity, and steering angle. +These states are governed by the following equations implemented in the code: + +$x(t + \Delta t) = x(t) + v(t) \cdot \cos(\theta(t)) \cdot \Delta t$ + +$y(t + \Delta t) = y(t) + v(t) \cdot \sin(\theta(t)) \cdot \Delta t$ + +$v(t + \Delta t) = v(t) + a(t) \cdot \Delta t - r \cdot v(t)$ if $a(t) = 0$ + +$\theta(t + \Delta t) = \theta(t) + v(t) \cdot s(t) \cdot \frac{\Delta t}{d}$ + +where: + +- $x(t)$, $y(t)$ are the x and y coordinates of the car at time $t$. +- $v(t)$ is the velocity of the ego car at time $t$. +- $\theta(t)$ is the steering angle of the car at time $t$. +- $a(t)$ is the acceleration of the ego car at time $t$. +- $s(t)$ is the steering angle of the car's wheels at time $t$. +- $\Delta t$ is the time interval between state updates. +- $d$ is the distance between the front of the car and its center. +- $r$ is a rolling resistance constant that is applied when no acceleration is applied. + ## Work in progress From 4e88ee848fc6c0572dedb6c25ef416ae501309b4 Mon Sep 17 00:00:00 2001 From: Andrei Moraru Date: Mon, 12 Jun 2023 22:52:53 +0300 Subject: [PATCH 02/20] Delete .github/workflows directory --- .github/workflows/cmake.yml | 53 ------------------------------------- 1 file changed, 53 deletions(-) delete mode 100644 .github/workflows/cmake.yml diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml deleted file mode 100644 index 8f62e42..0000000 --- a/.github/workflows/cmake.yml +++ /dev/null @@ -1,53 +0,0 @@ -name: CMake - -on: - push: - branches: [ "master" ] - pull_request: - branches: [ "master" ] - -env: - BUILD_TYPE: Release - -jobs: - build: - runs-on: windows-latest - - steps: - - uses: actions/checkout@v3 - - - name: Install vcpkg - run: | - git clone https://github.com/microsoft/vcpkg.git - .\vcpkg\bootstrap-vcpkg.bat - - - name: Update vcpkg repository - working-directory: vcpkg - run: | - git fetch --all --prune - git checkout master - git pull - - - name: Update vcpkg ports - run: | - .\vcpkg\vcpkg.exe update - - - name: Install PCL - run: | - .\vcpkg\vcpkg.exe install pcl:x64-windows - - - name: Clean up vcpkg buildtrees, downloads, and packages - run: | - Remove-Item -Path .\vcpkg\buildtrees\* -Recurse -Force - Remove-Item -Path .\vcpkg\downloads\* -Recurse -Force - Remove-Item -Path .\vcpkg\packages\* -Recurse -Force - - - name: Configure CMake - run: cmake -B ${{github.workspace}}/build -S ${{github.workspace}} -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake - - - name: Build - run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} - - - name: Test - working-directory: ${{github.workspace}}/build - run: ctest -C ${{env.BUILD_TYPE}} From 23805ae9bc4906f4fdfd61b6e68c039a16c5f78e Mon Sep 17 00:00:00 2001 From: Andrei Moraru Date: Mon, 12 Jun 2023 22:53:05 +0300 Subject: [PATCH 03/20] Create cmake.yml --- .github/workflows/cmake.yml | 53 +++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 .github/workflows/cmake.yml diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml new file mode 100644 index 0000000..8f62e42 --- /dev/null +++ b/.github/workflows/cmake.yml @@ -0,0 +1,53 @@ +name: CMake + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + +env: + BUILD_TYPE: Release + +jobs: + build: + runs-on: windows-latest + + steps: + - uses: actions/checkout@v3 + + - name: Install vcpkg + run: | + git clone https://github.com/microsoft/vcpkg.git + .\vcpkg\bootstrap-vcpkg.bat + + - name: Update vcpkg repository + working-directory: vcpkg + run: | + git fetch --all --prune + git checkout master + git pull + + - name: Update vcpkg ports + run: | + .\vcpkg\vcpkg.exe update + + - name: Install PCL + run: | + .\vcpkg\vcpkg.exe install pcl:x64-windows + + - name: Clean up vcpkg buildtrees, downloads, and packages + run: | + Remove-Item -Path .\vcpkg\buildtrees\* -Recurse -Force + Remove-Item -Path .\vcpkg\downloads\* -Recurse -Force + Remove-Item -Path .\vcpkg\packages\* -Recurse -Force + + - name: Configure CMake + run: cmake -B ${{github.workspace}}/build -S ${{github.workspace}} -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake + + - name: Build + run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} + + - name: Test + working-directory: ${{github.workspace}}/build + run: ctest -C ${{env.BUILD_TYPE}} From b0a3f98ed1047c2b69ca6d3c26e078338522d834 Mon Sep 17 00:00:00 2001 From: Andrei Moraru Date: Mon, 12 Jun 2023 23:07:18 +0300 Subject: [PATCH 04/20] Update README.md --- README.md | 116 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 114 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3e1e780..1e3667d 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,13 @@ # Need For Scenes - Point Cloud Pursuit -A Multi Object Tracking (MOT) via Sensor Fusion 3D interactive simulation using PCL +A Multi Object Tracking (MOT) via Sensor Fusion 3D interactive simulation using the awesome Point Cloud Library (PCL). ![game](https://github.com/AndreiMoraru123/NeedForScenes/assets/81184255/a20df907-f54c-448d-b955-c4319bab677c) -The Ego (player controller) car is designed using a 2D kinematic model accelerated with four states: x-position, y-position, velocity, and steering angle. +## The Ego Car +The green player-controlled car's motion models is designed using a 2D kinematic model accelerated with four states: +- x-position, y-position, velocity, and steering angle. + These states are governed by the following equations implemented in the code: $x(t + \Delta t) = x(t) + v(t) \cdot \cos(\theta(t)) \cdot \Delta t$ @@ -26,6 +29,115 @@ where: - $d$ is the distance between the front of the car and its center. - $r$ is a rolling resistance constant that is applied when no acceleration is applied. +## Enemy Cars + - These are autonomous vehicles in the game that act as dynamic obstacles for the player-controlled ego car. + - Unlike the ego car, these adversary agent cars are not controlled by the user in real-time. + - Instead, their movements are governed by predefined action vectors and encoded control laws that dictate their behavior throughout the game. + - Action Vectors: + - These vectors consist of a sequence of control inputs, including acceleration and steering commands, associated with specific time points. + - They are designed to create various motion patterns for the adversary agent cars. + - Encoded Control Laws: + - These laws serve to implement the action vectors, translating the acceleration and steering commands into changes in the car's states based on the same physics-based kinematic model used for the ego car. + - They also consider factors such as rolling resistance when the car is not being accelerated, mimicking the natural behavior of cars. + - Adversary Agent Car Behavior: + - They provide a dynamic and challenging environment for the player, who must carefully navigate the ego car while avoiding collisions with these moving obstacles. + - Despite their autonomous nature, the adversary agent cars do not possess advanced decision-making capabilities or the ability to react to the player's actions. + - Visualization Elements: + - Green Sphere and Green Arrow: + - The green sphere represents the estimated position of the adversary car, calculated by a Kalman filter as a tracking algorithm. + - The green arrow represents the estimated velocity vector of the adversary car, also derived from the Kalman filter. + - Red Sphere: + - The red sphere represents the actual position of the adversary car, derived from the predefined action vectors and encoded control laws, but subject to a certain level of noise from simulated LIDAR measurement. + - Pink/Magenta Arrow: + - The pink/magenta arrow illustrates the radar measurement from the ego car to the adversary car. + +## Parking Spots: + - Parking spots are designated areas that are static, meaning they do not move or change position throughout the game. + - They are strategically placed in the 3D environment and serve as the ultimate objective for the player. + - The main goal of the player is to safely and efficiently maneuver the ego car into these parking spots. + +## Obstacles: + - Obstacles are also static elements in the game that are randomly positioned in the 3D environment. + - Their main function is to add complexity to the navigation task. + - The player must skillfully maneuver the ego car around these obstacles to prevent collisions, which can impede the car's progress or result in game failure. + +## Fictional Parking Spots and Obstacles: + - These objects are unique elements that visually resemble real parking spots and obstacles but have no gameplay implications. + - They do not interact with or affect the movement of the ego car. + - Instead, their primary role is to enhance the visual complexity of the scene, adding another level of depth to the game's 3D environment. + - Their presence contributes to providing a more immersive and challenging experience for the player. + +## Game Scenario + +In the game environment, the encapsulation of the entire simulation domain is represented by the Scene class. This class is responsible for managing and coordinating all entities present in the game, including the adversary cars, obstacles, and parking spots. All these components are individually modeled objects using their respective classes: Car, Obstacle, and ParkingSpot. + +The Scene class is designed to provide several key functionalities: + +1. Scene Creation and Initialization: + - The creation and configuration of the scene take place within the constructor of the class. + - It initializes the random number generator used for the random placement of obstacles and parking spots in the 3D environment. + - Additionally, it creates three adversary cars, setting their initial positions, dimensions, colors, and other parameters. + - The constructor also associates a Tracker object with each car based on the values from the TrackCars matrix. + +2. Scene Progression/Advancement: + - The Scene class has a function responsible for progressing the state of the game environment. + - It adjusts the position of each entity based on their velocities and the elapsed time. + - As part of its operation, this function also checks for collisions between the player-controlled ego car and other entities in the game. + - In case a collision is detected, the function takes corrective measures by bringing the ego car's velocity to zero and slightly adjusting its position to resolve the collision. + +3. Collision Checks: + - The Scene class includes a collision detection function that checks for any collisions between the ego car and any adversary car in the game environment. + - This function returns a boolean value to indicate whether a collision has occurred. + +4. Car Tracking: + - If a car is set to be tracked, the scene advancement function utilizes both lidar and radar sensors to determine the position and velocity of the car. + - This data is then passed to the associated Tracker object. + - The function also calculates the actual position and velocity of the car as well as the estimated position and velocity from the tracking device. + - These values are then used to calculate the Root Mean Square Error (RMSE) to evaluate the tracking accuracy. + +5. Accuracy Evaluation: + - The RMSE values are evaluated against predefined thresholds to determine the tracking accuracy. + - If the RMSE values exceed these thresholds, indicating a tracking error beyond acceptable limits, a failure message is displayed to the user. + +6. Car Control: + - The control of each adversary car is determined by a sequence of control objects. + - These objects specify the speed and steering angle of the car for specific periods. + - The Car class has a control function used to set these controls. + + +## ___Painless___ installation of the Point Cloud Library on Windows +### (if you want to try out this code): + +* Install vcpkg, Microsoft's unofficial C++ package manager + +```bash +> git clone https://github.com/microsoft/vcpkg +> .\vcpkg\bootstrap-vcpkg.bat +``` + +There is a lot more info to be found at the original [repo](https://github.com/microsoft/vcpkg), but really, this is all you need + +* Install PCL x64 + +```bash +> vcpkg install pcl[vtk]:x64-windows --featurepackages --recurse +``` + +> **Warning** +> If you do not explicitly declare an x64 build, vcpkg will default it to x86 and cmake will probably fail. + +* Next you need to specify the toolchain path to the cmake file + +``` +-DCMAKE_TOOLCHAIN_FILE=C:\Path\vcpkg.cmake +``` + +* If you are on a Windows machine, vcpckg will also default your toolchain to MSVC, so you will have to download Visual Studio and use it as the compiler + +It looks like this for me (CLion): + +![image](https://user-images.githubusercontent.com/81184255/197364009-78660d22-a0e9-4105-8327-9405d300993e.png) + ## Work in progress From b84c6ea4caf60f33412d4232b8b9b09a604da8a0 Mon Sep 17 00:00:00 2001 From: Andrei Moraru Date: Mon, 12 Jun 2023 23:07:53 +0300 Subject: [PATCH 05/20] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1e3667d..87ec350 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Need For Scenes - Point Cloud Pursuit -A Multi Object Tracking (MOT) via Sensor Fusion 3D interactive simulation using the awesome Point Cloud Library (PCL). +A Multi Object Tracking (MOT) via Sensor Fusion 3D interactive simulation using the awesome Point Cloud Library. ![game](https://github.com/AndreiMoraru123/NeedForScenes/assets/81184255/a20df907-f54c-448d-b955-c4319bab677c) From 444bf4594e456159db6a18d471377e9be954e957 Mon Sep 17 00:00:00 2001 From: Andrei Moraru Date: Mon, 12 Jun 2023 23:08:13 +0300 Subject: [PATCH 06/20] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 87ec350..e0df6a4 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Need For Scenes - Point Cloud Pursuit -A Multi Object Tracking (MOT) via Sensor Fusion 3D interactive simulation using the awesome Point Cloud Library. +#### A Multi Object Tracking (MOT) via Sensor Fusion 3D interactive simulation using the awesome Point Cloud Library. ![game](https://github.com/AndreiMoraru123/NeedForScenes/assets/81184255/a20df907-f54c-448d-b955-c4319bab677c) From ebccd44b6e61e130312d15b82d72d3e5ff4372df Mon Sep 17 00:00:00 2001 From: Andrei Moraru Date: Mon, 12 Jun 2023 23:08:30 +0300 Subject: [PATCH 07/20] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index e0df6a4..0fa489a 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ #### A Multi Object Tracking (MOT) via Sensor Fusion 3D interactive simulation using the awesome Point Cloud Library. +## Demo + ![game](https://github.com/AndreiMoraru123/NeedForScenes/assets/81184255/a20df907-f54c-448d-b955-c4319bab677c) ## The Ego Car From 6b56bf9289d2b8739235087e86ecb84dd28b9bd4 Mon Sep 17 00:00:00 2001 From: Andrei Moraru Date: Mon, 12 Jun 2023 23:15:11 +0300 Subject: [PATCH 08/20] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0fa489a..9a19b14 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ where: - Despite their autonomous nature, the adversary agent cars do not possess advanced decision-making capabilities or the ability to react to the player's actions. - Visualization Elements: - Green Sphere and Green Arrow: - - The green sphere represents the estimated position of the adversary car, calculated by a Kalman filter as a tracking algorithm. + - The green sphere represents the estimated position of the adversary car, calculated by an Unscented Kalman filter as a tracking algorithm. - The green arrow represents the estimated velocity vector of the adversary car, also derived from the Kalman filter. - Red Sphere: - The red sphere represents the actual position of the adversary car, derived from the predefined action vectors and encoded control laws, but subject to a certain level of noise from simulated LIDAR measurement. From 7094a752dc3de113bca832d6cfff37f7b60a0f31 Mon Sep 17 00:00:00 2001 From: Andrei Moraru Date: Mon, 12 Jun 2023 23:16:09 +0300 Subject: [PATCH 09/20] Update README.md --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 9a19b14..3195e3d 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,6 @@ #### A Multi Object Tracking (MOT) via Sensor Fusion 3D interactive simulation using the awesome Point Cloud Library. -## Demo - ![game](https://github.com/AndreiMoraru123/NeedForScenes/assets/81184255/a20df907-f54c-448d-b955-c4319bab677c) ## The Ego Car From 61381b9e12607403adb91e4e4881c00b613ad2f6 Mon Sep 17 00:00:00 2001 From: Andrei Moraru Date: Mon, 12 Jun 2023 23:22:48 +0300 Subject: [PATCH 10/20] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3195e3d..67e25a2 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Need For Scenes - Point Cloud Pursuit -#### A Multi Object Tracking (MOT) via Sensor Fusion 3D interactive simulation using the awesome Point Cloud Library. +#### A Multi Object Tracking (MOT) via Sensor Fusion 3D interactive simulation using the awesome [Point Cloud Library](https://pointclouds.org/). ![game](https://github.com/AndreiMoraru123/NeedForScenes/assets/81184255/a20df907-f54c-448d-b955-c4319bab677c) From 971f316f696ce10c820d84735ab24736dbc03b88 Mon Sep 17 00:00:00 2001 From: Andrei Moraru Date: Mon, 12 Jun 2023 23:27:07 +0300 Subject: [PATCH 11/20] Update README.md --- README.md | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/README.md b/README.md index 67e25a2..dc150a0 100644 --- a/README.md +++ b/README.md @@ -104,6 +104,45 @@ The Scene class is designed to provide several key functionalities: - These objects specify the speed and steering angle of the car for specific periods. - The Car class has a control function used to set these controls. +## Unscented Kalman Filter (UKF) + +In this project, the Unscented Kalman Filter (UKF) serves as the primary tool for state estimation under the simulation's non-linear circumstances. + +### Estimated State + +The tracked state of the car in this code includes: + +1. **Position** (x and y): This is the current 2D position of the vehicle. Both lidar and radar measurements can provide information on position. The lidar provides a direct measurement in Cartesian coordinates, while the radar provides a measurement in polar coordinates that can be converted to Cartesian. + +2. **Velocity** (v): This is the magnitude of the 2D velocity. While the lidar does not directly measure velocity, radar can provide the radial velocity of the vehicle (the component of the velocity towards or away from the radar sensor). + +3. **Yaw Angle** (ψ): This is the orientation of the vehicle in the 2D plane, relative to the positive x-axis. + +4. **Yaw Rate** (ψ_dot): This is the rate of change of the yaw angle, which describes how quickly the vehicle is changing its orientation. + + +### Prediction Step + +1. **Sigma Point Generation**: The UKF starts by generating sigma points from the current state estimate and its covariance. The process includes adding and subtracting a scaled square root of the covariance matrix from the state estimate. This step produces a cloud of points that encapsulates the possible states the system could be in, considering the uncertainty. + +2. **Sigma Point Propagation**: Each generated sigma point is then propagated through the non-linear system dynamics. The specific dynamics depend on the system being modeled. For a mobile robot, it might be a kinematic bicycle model, for instance. + +3. **Mean and Covariance Estimation**: Once propagated, the sigma points are recombined to form a new predicted state estimate and covariance. The combination process involves taking a weighted sum of the sigma points, where the weights depend on the chosen sigma point generation method. + +### Update Step + +1. **Sigma Point Generation for the Measurement**: Just like in the prediction step, sigma points are generated but this time, these sigma points are transformed into the measurement space using the measurement function. + +2. **Cross-Correlation Matrix Calculation**: The cross-correlation matrix is calculated using the difference between the mean of the predicted sigma points and each predicted sigma point in the state space, and the difference between the mean of the transformed sigma points and each transformed sigma point in the measurement space. + +3. **Kalman Gain Calculation**: The Kalman gain is calculated using the cross-correlation matrix and the covariance matrix of the predicted sigma points in the measurement space. + +4. **State Update**: The final step is to calculate the residual (the difference between the actual measurement and the transformed mean of the sigma points), multiply it with the Kalman gain and add this to the predicted state to obtain the updated state. + +5. **Covariance Update**: Similarly, the covariance is updated by subtracting the Kalman gain times the covariance of the predicted sigma points in the measurement space times the transpose of the Kalman gain from the predicted covariance. + +This process repeats in a loop for each incoming measurement, continuously refining the state estimate in response to new data. Thus, the UKF allows our system to maintain an accurate state representation despite working under non-linear conditions. + ## ___Painless___ installation of the Point Cloud Library on Windows ### (if you want to try out this code): From a73b69c623e311c7eeed7cf99e1a957bebb031d5 Mon Sep 17 00:00:00 2001 From: Andrei Moraru Date: Mon, 12 Jun 2023 23:51:18 +0300 Subject: [PATCH 12/20] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index dc150a0..7794903 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Need For Scenes - Point Cloud Pursuit +# 🎮 Need For Scenes - Point Cloud Pursuit 🎮 #### A Multi Object Tracking (MOT) via Sensor Fusion 3D interactive simulation using the awesome [Point Cloud Library](https://pointclouds.org/). @@ -48,8 +48,8 @@ where: - The green arrow represents the estimated velocity vector of the adversary car, also derived from the Kalman filter. - Red Sphere: - The red sphere represents the actual position of the adversary car, derived from the predefined action vectors and encoded control laws, but subject to a certain level of noise from simulated LIDAR measurement. - - Pink/Magenta Arrow: - - The pink/magenta arrow illustrates the radar measurement from the ego car to the adversary car. + - Magenta Arrow: + - The magenta arrow illustrates the radar measurement from the ego car to the adversary car. ## Parking Spots: - Parking spots are designated areas that are static, meaning they do not move or change position throughout the game. From b66e4d70de44d125081f3c659f8550bd2305cd6f Mon Sep 17 00:00:00 2001 From: Andrei Moraru Date: Mon, 12 Jun 2023 23:53:00 +0300 Subject: [PATCH 13/20] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7794903..fe74716 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ ![game](https://github.com/AndreiMoraru123/NeedForScenes/assets/81184255/a20df907-f54c-448d-b955-c4319bab677c) -## The Ego Car +## The Ego Car 🏎️ The green player-controlled car's motion models is designed using a 2D kinematic model accelerated with four states: - x-position, y-position, velocity, and steering angle. From 115044c969074219d7342954ca38c25625fc1d70 Mon Sep 17 00:00:00 2001 From: Andrei Moraru Date: Mon, 12 Jun 2023 23:53:56 +0300 Subject: [PATCH 14/20] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fe74716..d28bc3b 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ ![game](https://github.com/AndreiMoraru123/NeedForScenes/assets/81184255/a20df907-f54c-448d-b955-c4319bab677c) ## The Ego Car 🏎️ -The green player-controlled car's motion models is designed using a 2D kinematic model accelerated with four states: +The green player-controlled car's motion model is designed using a 2D kinematic model accelerated with four states: - x-position, y-position, velocity, and steering angle. These states are governed by the following equations implemented in the code: From 87f700f47d231e4ca2f1887471a02a81b401db44 Mon Sep 17 00:00:00 2001 From: Andrei Moraru Date: Mon, 12 Jun 2023 23:54:09 +0300 Subject: [PATCH 15/20] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d28bc3b..d98c3c0 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ ![game](https://github.com/AndreiMoraru123/NeedForScenes/assets/81184255/a20df907-f54c-448d-b955-c4319bab677c) -## The Ego Car 🏎️ +## The Ego Car The green player-controlled car's motion model is designed using a 2D kinematic model accelerated with four states: - x-position, y-position, velocity, and steering angle. From 80e701728e52ff7a4848790623d2bc79c5c0aa82 Mon Sep 17 00:00:00 2001 From: Andrei Moraru Date: Tue, 13 Jun 2023 00:08:49 +0300 Subject: [PATCH 16/20] Delete .github/workflows directory --- .github/workflows/cmake.yml | 53 ------------------------------------- 1 file changed, 53 deletions(-) delete mode 100644 .github/workflows/cmake.yml diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml deleted file mode 100644 index 8f62e42..0000000 --- a/.github/workflows/cmake.yml +++ /dev/null @@ -1,53 +0,0 @@ -name: CMake - -on: - push: - branches: [ "master" ] - pull_request: - branches: [ "master" ] - -env: - BUILD_TYPE: Release - -jobs: - build: - runs-on: windows-latest - - steps: - - uses: actions/checkout@v3 - - - name: Install vcpkg - run: | - git clone https://github.com/microsoft/vcpkg.git - .\vcpkg\bootstrap-vcpkg.bat - - - name: Update vcpkg repository - working-directory: vcpkg - run: | - git fetch --all --prune - git checkout master - git pull - - - name: Update vcpkg ports - run: | - .\vcpkg\vcpkg.exe update - - - name: Install PCL - run: | - .\vcpkg\vcpkg.exe install pcl:x64-windows - - - name: Clean up vcpkg buildtrees, downloads, and packages - run: | - Remove-Item -Path .\vcpkg\buildtrees\* -Recurse -Force - Remove-Item -Path .\vcpkg\downloads\* -Recurse -Force - Remove-Item -Path .\vcpkg\packages\* -Recurse -Force - - - name: Configure CMake - run: cmake -B ${{github.workspace}}/build -S ${{github.workspace}} -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake - - - name: Build - run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} - - - name: Test - working-directory: ${{github.workspace}}/build - run: ctest -C ${{env.BUILD_TYPE}} From 486e2d51d0b47bbdfc0666e32b948a3c5be4e2dd Mon Sep 17 00:00:00 2001 From: Andrei Moraru Date: Tue, 13 Jun 2023 00:09:04 +0300 Subject: [PATCH 17/20] Create cmake.yml --- .github/workflows/cmake.yml | 53 +++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 .github/workflows/cmake.yml diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml new file mode 100644 index 0000000..8f62e42 --- /dev/null +++ b/.github/workflows/cmake.yml @@ -0,0 +1,53 @@ +name: CMake + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + +env: + BUILD_TYPE: Release + +jobs: + build: + runs-on: windows-latest + + steps: + - uses: actions/checkout@v3 + + - name: Install vcpkg + run: | + git clone https://github.com/microsoft/vcpkg.git + .\vcpkg\bootstrap-vcpkg.bat + + - name: Update vcpkg repository + working-directory: vcpkg + run: | + git fetch --all --prune + git checkout master + git pull + + - name: Update vcpkg ports + run: | + .\vcpkg\vcpkg.exe update + + - name: Install PCL + run: | + .\vcpkg\vcpkg.exe install pcl:x64-windows + + - name: Clean up vcpkg buildtrees, downloads, and packages + run: | + Remove-Item -Path .\vcpkg\buildtrees\* -Recurse -Force + Remove-Item -Path .\vcpkg\downloads\* -Recurse -Force + Remove-Item -Path .\vcpkg\packages\* -Recurse -Force + + - name: Configure CMake + run: cmake -B ${{github.workspace}}/build -S ${{github.workspace}} -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake + + - name: Build + run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} + + - name: Test + working-directory: ${{github.workspace}}/build + run: ctest -C ${{env.BUILD_TYPE}} From 7ad7dee8cd141cfb31d7129c679c5da002a1a1e8 Mon Sep 17 00:00:00 2001 From: Andrei Moraru Date: Tue, 13 Jun 2023 00:16:58 +0300 Subject: [PATCH 18/20] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index d98c3c0..03feb6c 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ ![game](https://github.com/AndreiMoraru123/NeedForScenes/assets/81184255/a20df907-f54c-448d-b955-c4319bab677c) -## The Ego Car +## Ego Car The green player-controlled car's motion model is designed using a 2D kinematic model accelerated with four states: - x-position, y-position, velocity, and steering angle. @@ -51,17 +51,17 @@ where: - Magenta Arrow: - The magenta arrow illustrates the radar measurement from the ego car to the adversary car. -## Parking Spots: +## Parking Spots - Parking spots are designated areas that are static, meaning they do not move or change position throughout the game. - They are strategically placed in the 3D environment and serve as the ultimate objective for the player. - The main goal of the player is to safely and efficiently maneuver the ego car into these parking spots. -## Obstacles: +## Obstacles - Obstacles are also static elements in the game that are randomly positioned in the 3D environment. - Their main function is to add complexity to the navigation task. - The player must skillfully maneuver the ego car around these obstacles to prevent collisions, which can impede the car's progress or result in game failure. -## Fictional Parking Spots and Obstacles: +## Fictional Parking Spots and Obstacles - These objects are unique elements that visually resemble real parking spots and obstacles but have no gameplay implications. - They do not interact with or affect the movement of the ego car. - Instead, their primary role is to enhance the visual complexity of the scene, adding another level of depth to the game's 3D environment. From 31b4a147de0e837925f2af9ba82220b6af7ee1dc Mon Sep 17 00:00:00 2001 From: Andrei Moraru Date: Thu, 15 Jun 2023 20:16:34 +0300 Subject: [PATCH 19/20] Update cmake.yml --- .github/workflows/cmake.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 8f62e42..220c07e 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -2,9 +2,9 @@ name: CMake on: push: - branches: [ "master" ] + branches: [ "main" ] pull_request: - branches: [ "master" ] + branches: [ "main" ] env: BUILD_TYPE: Release From 45a5dc89e98dd8c53d1674e77cd04fa06a1941d5 Mon Sep 17 00:00:00 2001 From: Andrei Moraru Date: Thu, 15 Jun 2023 22:53:19 +0300 Subject: [PATCH 20/20] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 03feb6c..54f349c 100644 --- a/README.md +++ b/README.md @@ -180,4 +180,6 @@ It looks like this for me (CLion): ## Work in progress +vroom vroom + ![stewie2](https://user-images.githubusercontent.com/81184255/236611184-109bb765-766f-44a5-9f36-193eed3291d9.png)