Add a feature to make the path continuous

This commit is contained in:
Astatin3
2024-04-16 17:56:10 -06:00
parent 162d75eddb
commit e54086e86f
2 changed files with 33 additions and 2 deletions
+8
View File
@@ -3,19 +3,25 @@
(WIP) An auto creation tool for Ridgebotics 2024
### Install
```shell
git clone https://github.com/astatin3/autoPlanner
cd autoPlanner
pip install -r requirements.txt
python3 ./main.py
```
### Usage:
##### "Path Editor" Tab:
- Click to add nodes
- Click on specific points to manipulate paths and nodes
- Double click on nodes to delete them
- Double click on control points to make path, and robot movment continuous, while keeping the node clicked the at the same location
##### "Button editor" Tab:
- Click on specific frames on the timeline to change to that position
- When selected on a frame, the robot's position in that time should show up.
- Drag positional keyframes around to speed up and speed down the robot's travel between nodes
@@ -23,8 +29,10 @@ python3 ./main.py
- In button mode select buttons on the driver and operator controllers.
##### "Export" Tab:
- Click export, and save to a file
### Known Bugs:
- Because the variables don't get transferred over yet, you must click on the button editor tab before exporting.
- The driver controller's movement stick is rotated by 90 degrees (Maybe)
+23
View File
@@ -101,6 +101,26 @@ def points2rad(center, pos):
diffY = center[1] - pos[1]
return -math.atan2(diffY, diffX) - (math.pi/2)
def smoothPoints(index: int):
for i in range(index+1, len(curveEditPoints)):
controlPointPos = curveEditPoints[i-1]
nodePos = nodes[i]
curveEditPoints[i] = (
2*nodePos[0] - controlPointPos[0],
2*nodePos[1] - controlPointPos[1]
)
for i in range(0, index):
controlPointPos = curveEditPoints[index-i]
nodePos = nodes[index-i]
curveEditPoints[index-i-1] = (
2*nodePos[0] - controlPointPos[0],
2*nodePos[1] - controlPointPos[1]
)
class pathEditor:
name = "Path Editor"
@@ -149,6 +169,9 @@ class pathEditor:
clickType, clickIndex = getElemAt(pos)
if clickType == -1:
pass
elif clickType == 1:
smoothPoints(clickIndex)
refresh()
elif clickType == 0:
if clickIndex > 0:
if clickIndex < len(nodes)-1: