Skip to content
This repository has been archived by the owner on Feb 3, 2023. It is now read-only.

Pure Pursuit #127

Open
Octogonapus opened this issue Jul 31, 2018 · 6 comments
Open

Pure Pursuit #127

Octogonapus opened this issue Jul 31, 2018 · 6 comments
Labels
enhancement New feature or request help wanted Extra attention is needed

Comments

@Octogonapus
Copy link
Member

Octogonapus commented Jul 31, 2018

I would really like to have pure pursuit available for the initial release. It"s a flashy and useful feature that should attract attention to the project. There is an excellent paper here which describes the algorithm: https://www.ri.cmu.edu/pub_files/pub3/coulter_r_craig_1992_1/coulter_r_craig_1992_1.pdf

Additionally, this introduction to differential drive kinematics will be helpful: http://rossum.sourceforge.net/papers/DiffSteer/DiffSteer.html

I am not sure if the appropriate controller architecture is in place for this, but I think it"s time to start trying to implement it.

@Octogonapus Octogonapus added enhancement New feature or request help wanted Extra attention is needed needs docs This issue needs documentation in the pros-docs repo. labels Jul 31, 2018
@Octogonapus Octogonapus added this to the Version 3.1.0 milestone Jul 31, 2018
@baylessj
Copy link
Member

This is also a good resource for Pure Pursuit: https://github.com/AtsushiSakai/PythonRobotics/tree/master/PathTracking/pure_pursuit

@Octogonapus
Copy link
Member Author

Update: Since #143 is merged, the architecture is in place for this. A pure pursuit controller should subclass AsyncMotionProfileController and override the executeSinglePath() method.

@Octogonapus Octogonapus removed this from the Version 3.1.0 milestone Aug 6, 2018
@Octogonapus Octogonapus added this to the Version 3.4.0 milestone Sep 22, 2018
@Octogonapus
Copy link
Member Author

Blocked by #213.

@Octogonapus Octogonapus removed the needs docs This issue needs documentation in the pros-docs repo. label Jan 13, 2020
@Octogonapus Octogonapus removed this from the Version 4.1.0 milestone Jan 13, 2020
@dcieslak19973
Copy link
Contributor

I"d like to take a stab at this. I think I may have seen @theol0403 have a reference to lib7842 which may have a Pure Pursuit implementation. How suitable/worthwhile would adapting that implementation be?

@Octogonapus
Copy link
Member Author

I am not familiar with that implementation but I know that Theo"s controls generally work well, so I have no reason to doubt their implementation.

@theol0403
Copy link
Member

Unfortunately, I am opposed to adding my (unreleased) pure pursuit implementation to okapilib. I am of the opinion that including advanced motion controls in a black box (like pathfinder) is detrimental to VRC.

Given the fact that the large majority of programmers in VEX cannot implement or understand such algorithms, it creates an unfair and non-educational situation where programmers are forced to use libraries and code they do not understand to stay competitive, and the teams who do make their own code lose their competitive edge.

Instead of taking the small gradual steps motivated by increased competitiveness that eventually bring the capacity to write advanced code, programmers skip the effort of learning, yet still achieve the desired result, demotivating them to write anything themselves. The teams that wish to make everything themselves are punished as it takes years of experience to write anything that rivals a well-built robot running pathfinder (or pure pursuit).

Teams cannot learn the fundamentals of motion algorithms by studying okapilib source code, written in modern (and to their eyes arcane) C++. Teams are not motivated to learn the fundamentals through research if they can use okapilib and move on.

I believe Salmon disagrees with me on this topic, so I will also say that the other reason I don"t want to include pure pursuit is that it will take significant development effort to include, write documentation, and support all the teams who see it as a shortcut to success while not having the knowledge to tune and debug - ultimately taking their time away from making something else, which may perform worse but grants them experience and a competitive edge proportional to their skill.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

4 participants