Skip to content

Commit

Permalink
Changed docs to adhere to new markdown linting
Browse files Browse the repository at this point in the history
  • Loading branch information
JulianTrommer committed Oct 8, 2024
1 parent 6c9b3da commit 87178de
Show file tree
Hide file tree
Showing 25 changed files with 1,068 additions and 921 deletions.
14 changes: 7 additions & 7 deletions doc/02_development/templates/template_wiki_page.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Josef Kircher

VSCode Extensions:

* Markdown All in One by Yu Zhang (for TOC)
- Markdown All in One by Yu Zhang (for TOC)

---

Expand Down Expand Up @@ -74,9 +74,9 @@ Ordered List
---
Unordered List

* First item
* Second item
* Third item
- First item
- Second item
- Third item

---
Code
Expand Down Expand Up @@ -142,10 +142,10 @@ Strikethrough

Task List

* [x] Write the press release
* [ ] Update the website
- [x] Write the press release
- [ ] Update the website

* [ ] Contact the media
- [ ] Contact the media

---

Expand Down
18 changes: 10 additions & 8 deletions doc/02_development/templates/template_wiki_page_empty.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,20 @@ Josef Kircher

VSCode Extensions:

* Markdown All in One by Yu Zhang (for TOC)
- Markdown All in One by Yu Zhang (for TOC)

---

<!-- TOC -->
* [Title of wiki page](#title-of-wiki-page)
* [Author](#author)
* [Date](#date)
* [Prerequisite](#prerequisite)
* [Some Content](#some-content)
* [more Content](#more-content)
* [Sources](#sources)
- [Title of wiki page](#title-of-wiki-page)
- [Author](#author)
- [Date](#date)
- [Prerequisite](#prerequisite)
- [Some Content](#some-content)
- [more Content](#more-content)
- [Sources](#sources)
<!-- TOC -->

## Some Content

## more Content
Expand Down
100 changes: 50 additions & 50 deletions doc/03_research/01_acting/01_basics_acting.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,38 +19,38 @@ Gabriel Schwald, Julian Graf

The job of this domain is to translate a preplanned trajectory into actual steering controls for the vehicle.

* safety:
* never exceeding vehicle limits
* never exceeding speed limits
* never leaf path
* driving comfort?
- safety:
- never exceeding vehicle limits
- never exceeding speed limits
- never leaf path
- driving comfort?

## Solutions from old PAF projects

### [Paf 20/1](https://github.com/ll7/psaf1/tree/master/psaf_ros/psaf_steering)

* [carla_ackermann_control](https://carla.readthedocs.io/projects/ros-bridge/en/latest/carla_ackermann_control/) modified for [twist-msgs](http://docs.ros.org/en/noetic/api/geometry_msgs/html/msg/Twist.html)
* input: [twist-msgs](http://docs.ros.org/en/noetic/api/geometry_msgs/html/msg/Twist.html) (for velocity)
* velocity control: PID
* lateral control: PD (heading error)
- [carla_ackermann_control](https://carla.readthedocs.io/projects/ros-bridge/en/latest/carla_ackermann_control/) modified for [twist-msgs](http://docs.ros.org/en/noetic/api/geometry_msgs/html/msg/Twist.html)
- input: [twist-msgs](http://docs.ros.org/en/noetic/api/geometry_msgs/html/msg/Twist.html) (for velocity)
- velocity control: PID
- lateral control: PD (heading error)

### [Paf 21/1](https://github.com/ll7/paf21-1/wiki/Vehicle-Controller)

* input: waypoints
* curve detection: returns distance to next curve
* calculation of max curve speed as sqrt(friction_coefficient x gravity_accel x radius)
* in Curve: [naive Controller](###Pure_Pursuit)
* on straights: [Stanley Controller](###Stanley)
* interface to rosbridge
- input: waypoints
- curve detection: returns distance to next curve
- calculation of max curve speed as sqrt(friction_coefficient x gravity_accel x radius)
- in Curve: [naive Controller](###Pure_Pursuit)
- on straights: [Stanley Controller](###Stanley)
- interface to rosbridge

### [Paf 20/2](https://github.com/ll7/psaf2) and [Paf 21/2](https://github.com/ll7/paf21-2/tree/main/paf_ros/paf_actor#readme)

* input: odometry(position and velocity with uncertainty), local path
* lateral: [Stanley Controller](###Stanley)
* speed controller: pid
* ACC (Adaptive Cruise Control): (speed, distance) -> PID
* Unstuck-Routine (drive backwards)
* Emergency Modus: fastest possible braking ([Tests](https://github.com/ll7/paf21-2/blob/main/docs/paf_actor/backwards/braking.md) -> handbrake with throttle, 30° steering and reverse)
- input: odometry(position and velocity with uncertainty), local path
- lateral: [Stanley Controller](###Stanley)
- speed controller: pid
- ACC (Adaptive Cruise Control): (speed, distance) -> PID
- Unstuck-Routine (drive backwards)
- Emergency Modus: fastest possible braking ([Tests](https://github.com/ll7/paf21-2/blob/main/docs/paf_actor/backwards/braking.md) -> handbrake with throttle, 30° steering and reverse)

## Lateral control

Expand Down Expand Up @@ -87,11 +87,11 @@ $$
\delta(t) = arctan(2L*\frac{sin(\alpha)}{K_d*v})
$$

* simple controller
* ignores dynamic forces
* assumes no-slip condition
* possible improvement: vary the look-ahead distance based on vehicle velocity
* not really suited for straights, because ICR moves towards infinity this case
- simple controller
- ignores dynamic forces
- assumes no-slip condition
- possible improvement: vary the look-ahead distance based on vehicle velocity
- not really suited for straights, because ICR moves towards infinity this case

### Stanley

Expand All @@ -118,7 +118,7 @@ The basic idea of MPC is to model the future behavior of the vehicle and compute
![MPC Controller](../../00_assets/research_assets/mpc.png)
*source: [[5]](https://dingyan89.medium.com/three-methods-of-vehicle-lateral-control-pure-pursuit-stanley-and-mpc-db8cc1d32081)*

* cost function can be designed to account for driving comfort
- cost function can be designed to account for driving comfort

### [SMC](https://en.wikipedia.org/wiki/Sliding_mode_control) (sliding mode control)

Expand All @@ -128,10 +128,10 @@ Real implementations of sliding mode control approximate theoretical behavior wi
![chattering](../../00_assets/research_assets/chattering.gif)
*source: [[9]](https://ieeexplore.ieee.org/document/1644542)*

* simple
* robust
* stabile
* disadvantage: chattering -> controller is ill-suited for this application
- simple
- robust
- stabile
- disadvantage: chattering -> controller is ill-suited for this application

Sources:

Expand All @@ -155,20 +155,20 @@ PID: already implemented in [ROS](http://wiki.ros.org/pid) (and [CARLA](https://

Further information:

* <https://www.ri.cmu.edu/pub_files/pub3/coulter_r_craig_1996_1/coulter_r_craig_1996_1.pdf>
- <https://www.ri.cmu.edu/pub_files/pub3/coulter_r_craig_1996_1/coulter_r_craig_1996_1.pdf>

## Interface

**subscribes** to:

* current position
- current position
([nav_msgs/Odometry Message](http://docs.ros.org/en/noetic/api/nav_msgs/html/msg/Odometry.html)) from Perception?
* path ([nav_msgs/Path Message](https://docs.ros.org/en/api/nav_msgs/html/msg/Path.html)) or target point ([geometry_msgs/Pose.msg](https://docs.ros.org/en/api/geometry_msgs/html/msg/Pose.html))
* (maximal) velocity to drive
* (distance and speed of vehicle to follow)
* (commands for special routines)
* (Distance to obstacles for turning/min turning radius)
* (Road conditions)
- path ([nav_msgs/Path Message](https://docs.ros.org/en/api/nav_msgs/html/msg/Path.html)) or target point ([geometry_msgs/Pose.msg](https://docs.ros.org/en/api/geometry_msgs/html/msg/Pose.html))
- (maximal) velocity to drive
- (distance and speed of vehicle to follow)
- (commands for special routines)
- (Distance to obstacles for turning/min turning radius)
- (Road conditions)

**publishes**:
[CarlaEgoVehicleControl.msg](https://carla.readthedocs.io/projects/ros-bridge/en/latest/ros_msgs/#carlaegovehiclecontrolmsg) or [ackermann_msgs/AckermannDrive.msg](https://docs.ros.org/en/api/ackermann_msgs/html/msg/AckermannDrive.html)
Expand All @@ -177,10 +177,10 @@ Further information:

In the [CarlaEgoVehicleInfo.msg](https://carla.readthedocs.io/projects/ros-bridge/en/latest/ros_msgs/#carlaegovehicleinfomsg) we get a [CarlaEgoVehicleInfoWheel.msg](https://carla.readthedocs.io/projects/ros-bridge/en/latest/ros_msgs/#carlaegovehicleinfowheelmsg) which provides us with

* tire_friction (a scalar value that indicates the friction of the wheel)
* max_steer_angle (the maximum angle in degrees that the wheel can steer)
* max_brake_torque (the maximum brake torque in Nm)
* max_handbrake_torque (the maximum handbrake torque in Nm)
- tire_friction (a scalar value that indicates the friction of the wheel)
- max_steer_angle (the maximum angle in degrees that the wheel can steer)
- max_brake_torque (the maximum brake torque in Nm)
- max_handbrake_torque (the maximum handbrake torque in Nm)

The max curve speed can be calculated as sqrt(**friction_coefficient** *gravity_accel* curve_radius).

Expand All @@ -193,12 +193,12 @@ For debugging purposes the vehicles path can be visualized using [carlaviz](http

## Additional functionality (open for discussion)

* ACC (Adaptive Cruise Control): reduces speed to keep set distance to vehicle in front (see also [cruise control technology review](https://www.sciencedirect.com/science/article/pii/S004579069700013X),
- ACC (Adaptive Cruise Control): reduces speed to keep set distance to vehicle in front (see also [cruise control technology review](https://www.sciencedirect.com/science/article/pii/S004579069700013X),
[a comprehensive review of the development of adaptive cruise control systems](https://www.researchgate.net/publication/245309633_A_comprehensive_review_of_the_development_of_adaptive_cruise_control_systems),
[towards an understanding of adaptive cruise control](https://www.sciencedirect.com/science/article/pii/S0968090X0000022X), [Encyclopedia of Systems and Control](https://dokumen.pub/encyclopedia-of-systems-and-control-2nd-ed-2021-3030441830-9783030441838.html))
* emergency braking: stops the car as fast as possible
* emergency braking assistant: uses Lidar as proximity sensor and breaks if it would come to a collision without breaking
* parallel parking: executes [fixed parking sequence](https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=5705869) to parallel park vehicle in given parking space
* U-Turn: performs u-turn
* Driving backwards: might a need different controller configuration
* Unstuck routine: performs fixed routine (e.g. driving backwards) if the car hasn't moved in a while
- emergency braking: stops the car as fast as possible
- emergency braking assistant: uses Lidar as proximity sensor and breaks if it would come to a collision without breaking
- parallel parking: executes [fixed parking sequence](https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=5705869) to parallel park vehicle in given parking space
- U-Turn: performs u-turn
- Driving backwards: might a need different controller configuration
- Unstuck routine: performs fixed routine (e.g. driving backwards) if the car hasn't moved in a while
56 changes: 28 additions & 28 deletions doc/03_research/01_acting/02_implementation_acting.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@ Gabriel Schwald
---

<!-- TOC -->
* [Requirements and challenges for an acting implementation](#requirements-and-challenges-for-an-acting-implementation)
* [Authors](#authors)
* [Date](#date)
* [Planned basic implementation of the Acting domain](#planned-basic-implementation-of-the-acting-domain)
* [List of basic functions](#list-of-basic-functions)
* [List of Inputs/Outputs](#list-of-inputsoutputs)
* [Challenges](#challenges)
* [Next steps](#next-steps)
- [Requirements and challenges for an acting implementation](#requirements-and-challenges-for-an-acting-implementation)
- [Authors](#authors)
- [Date](#date)
- [Planned basic implementation of the Acting domain](#planned-basic-implementation-of-the-acting-domain)
- [List of basic functions](#list-of-basic-functions)
- [List of Inputs/Outputs](#list-of-inputsoutputs)
- [Challenges](#challenges)
- [Next steps](#next-steps)
<!-- TOC -->

This document sums up all functions already agreed upon in [#24](https://github.com/ll7/paf22/issues/24) regarding [acting](../01_acting/01_acting.md), that could be implemented in the next sprint.
Expand All @@ -36,34 +36,34 @@ These goals lead to the following requirements:

## List of basic functions

* Longitudinal control
* PID controller
* Lateral control
* Pure Pursuit controller
* Stanley controller
- Longitudinal control
- PID controller
- Lateral control
- Pure Pursuit controller
- Stanley controller

## List of Inputs/Outputs

* Subscribes to:
* [nav_msgs/Odometry Message](http://docs.ros.org/en/noetic/api/nav_msgs/html/msg/Odometry.html) : to get the current position and heading
* [nav_msgs/Path Message](https://docs.ros.org/en/api/nav_msgs/html/msg/Path.html) : to get the current trajectory
* emergency breaking msg : to initiate emergency breaking
* speed limit msg : to get the maximum velocity
* Publishes:
* [CarlaEgoVehicleControl.msg](https://carla.readthedocs.io/projects/ros-bridge/en/latest/ros_msgs/#carlaegovehiclecontrolmsg) : to actually control the vehicles throttle, steering, ...
- Subscribes to:
- [nav_msgs/Odometry Message](http://docs.ros.org/en/noetic/api/nav_msgs/html/msg/Odometry.html) : to get the current position and heading
- [nav_msgs/Path Message](https://docs.ros.org/en/api/nav_msgs/html/msg/Path.html) : to get the current trajectory
- emergency breaking msg : to initiate emergency breaking
- speed limit msg : to get the maximum velocity
- Publishes:
- [CarlaEgoVehicleControl.msg](https://carla.readthedocs.io/projects/ros-bridge/en/latest/ros_msgs/#carlaegovehiclecontrolmsg) : to actually control the vehicles throttle, steering, ...

## Challenges

A short list of challenges for the implementation of a basic acting domain and how they these could be tackled based on the requirements mentioned above.

* The vehicle needs to know its own position => [nav_msgs/Odometry Message](http://docs.ros.org/en/noetic/api/nav_msgs/html/msg/Odometry.html) or [GNSS](https://carla.readthedocs.io/en/latest/ref_sensors/#gnss-sensor) sensor
* The vehicle needs to know its own velocity => can be calculated from last/current position and time or the [speedometer](https://leaderboard.carla.org/#map-track) pseudosensor can be used
* The vehicle needs to know its planned trajectory => [nav_msgs/Path Message](https://docs.ros.org/en/api/nav_msgs/html/msg/Path.html) this trajectory may need to be updated to accommodate obstacles
* Longitudinal control => a simple PID controller should suffice
* lateral control => Pure Pursuit as well as Stanley controller should be implemented, following tests can show, where to use each controller.
* additional features:
* emergency breaking => this command is supposed to bypass longitudinal and lateral controllers (and should use the bug discoverd by [paf21-2](https://github.com/ll7/paf21-2/tree/main/paf_ros/paf_actor#bugabuses))
* additional functionality mostly should be added here ...
- The vehicle needs to know its own position => [nav_msgs/Odometry Message](http://docs.ros.org/en/noetic/api/nav_msgs/html/msg/Odometry.html) or [GNSS](https://carla.readthedocs.io/en/latest/ref_sensors/#gnss-sensor) sensor
- The vehicle needs to know its own velocity => can be calculated from last/current position and time or the [speedometer](https://leaderboard.carla.org/#map-track) pseudosensor can be used
- The vehicle needs to know its planned trajectory => [nav_msgs/Path Message](https://docs.ros.org/en/api/nav_msgs/html/msg/Path.html) this trajectory may need to be updated to accommodate obstacles
- Longitudinal control => a simple PID controller should suffice
- lateral control => Pure Pursuit as well as Stanley controller should be implemented, following tests can show, where to use each controller.
- additional features:
- emergency breaking => this command is supposed to bypass longitudinal and lateral controllers (and should use the bug discoverd by [paf21-2](https://github.com/ll7/paf21-2/tree/main/paf_ros/paf_actor#bugabuses))
- additional functionality mostly should be added here ...

## Next steps

Expand Down
30 changes: 15 additions & 15 deletions doc/03_research/01_acting/03_paf21_1_acting.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,34 +2,34 @@

## Inputs

* waypoints of the planned route
* general odometry of the vehicle
- waypoints of the planned route
- general odometry of the vehicle

## Curve Detection

* Can detect curves on the planned trajectory
* Calculates the speed in which to drive the detected Curve
- Can detect curves on the planned trajectory
- Calculates the speed in which to drive the detected Curve
![Curve](../../00_assets/research_assets/curve_detection_paf21_1.png)

## Speed Control

* [CARLA Ackermann Control](https://carla.readthedocs.io/projects/ros-bridge/en/latest/carla_ackermann_control/)
* Speed is forwarded to the CARLA vehicle via Ackermann_message, which already includes a PID controller for safe driving/accelerating etc.
* no further controlling needed -> speed can be passed as calculated
- [CARLA Ackermann Control](https://carla.readthedocs.io/projects/ros-bridge/en/latest/carla_ackermann_control/)
- Speed is forwarded to the CARLA vehicle via Ackermann_message, which already includes a PID controller for safe driving/accelerating etc.
- no further controlling needed -> speed can be passed as calculated

## Steering Control

### Straight Trajectories

* **Stanley Steering Controller**
* Calculates steering angle from offset and heading error
* includes PID controller
- **Stanley Steering Controller**
- Calculates steering angle from offset and heading error
- includes PID controller
![Stanley Controller](../../00_assets/research_assets/stanley_paf21_1.png)

### Detected Curves

* **Naive Steering Controller** (close to pure pursuit)
* uses Vehicle Position + Orientation + Waypoints
* Calculate direction to drive to as vector
* direction - orientation = Steering angle at each point in time
* speed is calculated in Curve Detection and taken as is
- **Naive Steering Controller** (close to pure pursuit)
- uses Vehicle Position + Orientation + Waypoints
- Calculate direction to drive to as vector
- direction - orientation = Steering angle at each point in time
- speed is calculated in Curve Detection and taken as is
Loading

0 comments on commit 87178de

Please sign in to comment.