* consolidate Node definition
* add base class for single agent planner
* add base class for single agent planner
* its working
* use single agent plotting util
* cleanup, bug fix, add some results to docs
* remove seeding from sta* - it happens in Node
* remove stale todo
* rename CA* and speed up plotting
* paper
* proper paper (ofc its csail)
* some cleanup
* update docs
* add unit test
* add logic for saving animation as gif
* address github bot
* Revert "add logic for saving animation as gif"
This reverts commit 639167795c.
* fix tests
* docs lint
* add gifs
* copilot review
* appease mypy
* feat: Add vehicle model rendering function and pause simulation function
* feat: Add support for reverse mode and related function adjustments
* feat: Add reverse mode test case
* feat: Limit the maximum steering angle to improve path tracking control
* feat: Add a newline for improved readability in plot_arrow function
* fix: Replace max/min with np.clip for steering angle limitation in pure pursuit control
This commit adds "Code Link" sections to documentation across various path planning modules, linking to relevant class and function APIs. Additionally, several class renaming changes were made, such as `Dijkstra` to `DijkstraPlanner` and `eta3_trajectory` to `Eta3SplineTrajectory`, to enhance naming consistency. Minor fixes include file restructuring and image renaming for the RRT module.
Added references to related Python functions in documentation for better navigation and usability. Corrected inconsistencies in module and test names to align with their respective directories and improve clarity.
This commit updates SLAM module documentation files to include direct code links for better navigation. It also adjusts imports in `test_iterative_closest_point.py` to reflect updated module structure and adds a safety check for the directory in `runtests.sh`.
* Refactor module links and improve code documentation.
Updated documentation to rename "API" sections to "Code Link" for clarity and consistency. Enhanced docstrings for `circle_fitting` and `kmeans_clustering` functions, improving parameter descriptions and adding return value details. Fixed typos in function and file names in the ray casting grid map module.
* Fix import typo in ray casting grid map test module.
Corrected the import statement in the test file by updating the module's name to `ray_casting_grid_map` for consistency with the source file. This ensures proper functionality of the test suite.
* build(deps): update cvxpy version from 1.5.3 to 1.6.5 in requirements
* Add ECOS solver and improve solver handling for stability
Added ECOS to requirements and enhanced compatibility with cvxpy solvers by specifying 'order' for matrix reshaping. Updated solver configurations in rocket landing and pendulum control for consistency and reliability. Improved test behavior by enforcing stricter warning handling in pytest.
* it works and is WAY faster than a*
* some bug fixes from testing different scenarios
* add some docs & address todos
* add sipp test
* spiff up comments
revert changes in speed-up
* explain what the removal is doing
* linting
* fix docs build
* docs formatting
* revert change to file (maybe linter did it?)
* point at gifs in gifs repo
* use raw githubusercontent gif links
* change formatting on planner results
* format output differently
* proper formatting final
* missing underline
* revert unintended change
* grammar + add descriptions for gifs
* missing ::
* add title to gifs section
* dont use sections for sub-sections
* constent a* spelling
* Update PathPlanning/TimeBasedPathPlanning/GridWithDynamicObstacles.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update tests/test_safe_interval_path_planner.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update docs/modules/5_path_planning/time_based_grid_search/time_based_grid_search_main.rst
Co-authored-by: Atsushi Sakai <asakai.amsl+github@gmail.com>
* Update PathPlanning/TimeBasedPathPlanning/SafeInterval.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* addressing comments
* revert np.full change
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Atsushi Sakai <asakai.amsl+github@gmail.com>
* speed up spacetime astar
* forgot to include hash impl on Position
* add condition to test on node expansions
* remove heuristic from Node __hash__ impl
* update rst with note about optimization
* add state machine
state_machine test
state_machine_update
* add state machine test/doc
* state machine update
* state machine generate_plantuml() can show diagram by using https://www.plantuml.com/plantuml/
* refactor: rename files and update references for inverted pendulum and path tracking modules
* refactor: rename inverted pendulum control files and update type check references
* refactor: update import statements to use consistent casing for InvertedPendulum module
* improve LQT steering and speed control
* improve LQT steering and speed control
* improve LQT steering and speed control doc
* improve LQT steering and speed control doc
* improve LQT steering and speed control doc
* improve LQT steering and speed control doc
* Update rrt_star_reeds_shepp.py to fix#550
Add step_size attribute to RRTStarReedsShepp, and a method set_random_seed() to set the random seed, with two test cases.
* Update rewire() of rrt_star.py
Update rewire() of rrt_star.py to fix#550. Since the old version didn't assign path_yaw of edge_node to near_node, the old rewire() doesn't fit rrt_star_reeds_shepp.py
* Update reeds_shepp_path_planning.py
Limit the range of phi for the sake of planning speed, and simplify the the calculation process in straight_left_straight().
* Update reeds_shepp_path_planning.py
* Remove unnecessary cost calculation
Cost of edge_node is calculated in line 221, and self.node_list[i] is replaced to edge_node, so no need to update.
* Update reeds_shepp_path_planning.py
* fix bugs in check a position inside the polygon
It is possible that the position `(iox, ioy)` to be checked with `iox == min_x`. This will cause a incorrect inside check.
* add a boundary condition for gridmap
* Add optional robot radius to RRT/RRTStar path planners.
* update __init__ and check_collision to include radius
* during animation, if a robot radius is given then it is drawn
* Add test for robot radius
* Correct import error
* Correct missing robot_radius errors
* Address "expected 2 blank lines, found 1" error
* Address "line too long" errors
* Add missing argument description.
* Remove collision_check_with_xy and replace with check_collision
* Fix "missing whitespace after ','" error
* Update PathPlanning/ClosedLoopRRTStar/closed_loop_rrt_star_car.py
Co-authored-by: Atsushi Sakai <asakai.amsl+github@gmail.com>
Co-authored-by: Atsushi Sakai <asakai.amsl+github@gmail.com>
* clean up clothoidal_paths.py
* add unit tests for clothoid_paths
* add unit tests for clothoid_paths
* add unit tests for clothoid_paths
* code clean up
* code clean up
* code clean up
* code clean up
* code clean up
* code clean up
* code clean up
* code clean up
* Add inverted_pendulum_lqr_control
* reorganize document of inverted pendulum control module
* Refactor inverted_pendulum_lqr_control.py
* Add doccument for inverted pendulum control
* Corrected inverted pedulum LQR control doccument
* Refactor inverted pendulum control by mpc and lqr
* Add unit test for inverted_pendulum_lqr_control.py
* Fix ModuleNotFoundError when executing test in the tests folder
Signed-off-by: Trung Kien <letrungkien.k53.hut@gmail.com>
* Improve model_predictive_speed_and_steer_control
- Fix typo
- Using @ for matrix multiplication instead of * with have been deprecated in CVXPY1.1
- Fix missing conftest module in test file
Signed-off-by: Trung Kien <letrungkien.k53.hut@gmail.com>
* Added speed limitation of the robot
* Removed leading underscores for global vars
* Added unit test for robot speed limitation
* Modified x/abs(x) to np.sign(x); fixed code style
* Removed 'random' from test func header comment
* Added Robot class for move to pose
* Revert
* Added Robot class for move to pose
* Added a type annotation for Robot class
* Fixed the annotaion comment
* Moved instance varaible outside of the Robot class
* Fixed code style Python 3.9 CI
* Removed whitespaces from the last line
* Applied PR #596 change requests
* Fixed typos
* Update Control/move_to_pose/move_to_pose_robot_class.py
Co-authored-by: Atsushi Sakai <asakai.amsl+github@gmail.com>
* Moved PathFinderController class to move_to_pose
* Fixed issue #600
* Added update_command() to PathFinderController
* Removed trailing whitespaces
* Updated move to pose doc
* Added code and doc comments
* Updated unit test
* Removed trailing whitespaces
* Removed more trailing whitespaces
Co-authored-by: Atsushi Sakai <asakai.amsl+github@gmail.com>
* Added speed limitation of the robot
* Removed leading underscores for global vars
* Added unit test for robot speed limitation
* Modified x/abs(x) to np.sign(x); fixed code style
* Removed 'random' from test func header comment
* Without equals sign, sometimes get points that are in the wrong direction - relative to the points before and after it- when change in x or change in y along path is 0
* Created test script for dubins path generator
* Made len == 0 it's own case, also changed 'l' to 'len' to appease travisCI
* More variable renaming to appease CI
* Broke == 0 into its own case in dubins planner, also Renaming files to appease CI
* Reverting some naming changes
* Turns out theres already a test for dubins.. not sure how I missed that
* Note to self: run the test cases on your own before throwing them at CI
* Added handling of length=0 case in generate_local_course()
* Missed reverting 'mode' back to 'm' in one spot
* Addressing style issues (line length)
* Mostly works, now just need to setup linear regression to solve for weights
* Re-arranged class
* Wrote DMP program and added tests file
* Styling fixes
* More styling
* Missed one indent
* Multi-dimension path learning (e.g. in x and y instead of just x)
* Added potential field obstacle avoidance
* Potential field working much better but has issues with reaching goal state
* Path ending to short not a result of obstacles, should be fix-able
* Mostly working! end won't go to goal
* split DMP and path following
* pretty close
* Okay this is working pretty well
* looks.. okay. was using the wrong vector before
* a plan to fix this mess
* Okay seriously going to pivot to the dubins approach im done with potential field lol
* Finished obstacle circle handling (and merging circles that are closer than their radii)
* Finished circle event finder function
* Some progress in preparing for dubins curves
* Finished angle finding algo, need to test
* Okay getting back to this, going to ignore the navigation and just focus on path generation since that's what DMP is for
* Moved DMP files to path planning
* changed folder name
* Made demo path cooler
* All working and added visualization tools (will remove
* Fixed unit test and handled TODOs
* not gonna handle this one
* demo now scales with data
* CI errors
* CI errors
* Fixing code style issues
* more styling
* fixing CI errors
* formatting
* Removed dead code
* removed unused imports
* removed uneccesary initialization
* Applying PR feedback
* fixing CI errors
* added description to header and removed unused variable
* fix dubins path length bug and clean up codes.
* fix line length CI error
* fix line length CI error
* fix line length CI error
* fix line length CI error
* fix line length CI error
* fix line length CI error
* fix line length CI error
* fix line length CI error