I am using a Pure Pursuit control system which can be seen here (we are 2502)
The code for our implementation of Pure Pursuit is here: (along with several other scattered classes) https://github.com/Team-2502/RobotCode2018/blob/master/src/com/team2502/robot2018/trajectory/PurePursuitMovementStrategy.java
Speeds for given waypoints are set by the user. Then, the control system tells the robot to have
- Time-based motion profiling for accelerating i.e. v = a *t (where a is constant)
- Distance-based motion profiling for decelerating i.e. v = sqrt(vf^2 - 2ax)
We are planning on using a higher-degree equation with continuous jerk in the future.
The problem is I am not a big fan of time-based acceleration (I believed 254 was distance-based for acceleration and deceleration in 2017). If there is an obstacle, the robot might become confused if acceleration is time-based.
However, if I use distance-based acceleration and have a waypoint where v = 0 for d = 0, I will always be stuck at d = 0 (where v is velocity and d is distance). Is there any better way to do this?