twins-planner issueshttps://code.research.uts.edu.au/bigprint/twins-planner/-/issues2021-02-14T21:03:40+11:00https://code.research.uts.edu.au/bigprint/twins-planner/-/issues/67Zone blocking2021-02-14T21:03:40+11:00Jayant KhatkarZone blockingimplement a zone blocking-esque algorithm for comparison with greedy and decmcts.
NOTE: Zone blocking only works for two arms.
NOTE: not sure if we can call it zone blocking since zone blocking can get smarter than the simple method we...implement a zone blocking-esque algorithm for comparison with greedy and decmcts.
NOTE: Zone blocking only works for two arms.
NOTE: not sure if we can call it zone blocking since zone blocking can get smarter than the simple method we will implement.
- [x] assign contours by the starting position
- [x] greedy algo but with each arm only picking contours from it's available contoursPaper submissionJayant KhatkarJayant Khatkarhttps://code.research.uts.edu.au/bigprint/twins-planner/-/issues/65Add random and weighted random rollout options (needed for Dec-MCTS optimalit...2021-02-05T17:41:34+11:00Jayant KhatkarAdd random and weighted random rollout options (needed for Dec-MCTS optimality guarantee)Dec-MCTS schedulingJayant KhatkarJayant Khatkarhttps://code.research.uts.edu.au/bigprint/twins-planner/-/issues/62CominedScheduler should only add plans to one arm if thats the most efficient2021-02-05T16:51:20+11:00Jayant KhatkarCominedScheduler should only add plans to one arm if thats the most efficient- [ ] if the wait time makes the start time greater than the other arm, skip and try adding to the other arm.
- [ ] keep track of start times
- [ ] compare to old (current) logic- [ ] if the wait time makes the start time greater than the other arm, skip and try adding to the other arm.
- [ ] keep track of start times
- [ ] compare to old (current) logicDec-MCTS schedulingJayant KhatkarJayant Khatkarhttps://code.research.uts.edu.au/bigprint/twins-planner/-/issues/61Improve Dec-MCTS to real plan logic2021-02-04T12:00:42+11:00Jayant KhatkarImprove Dec-MCTS to real plan logicCurrent logic lines up with the cs plan pretty poorly, even when the cs plan uses a large safety in it's time ranges and slow between trajectory movement.
- [x] Check regularly instead of waiting a set time
- [x] check at smaller interv...Current logic lines up with the cs plan pretty poorly, even when the cs plan uses a large safety in it's time ranges and slow between trajectory movement.
- [x] Check regularly instead of waiting a set time
- [x] check at smaller intervals
- [ ] Wait time should be based on wait time relative to other arm in COmbinedSchedule, not simply the CombinedSchedule wait time.Dec-MCTS schedulingJayant KhatkarJayant Khatkarhttps://code.research.uts.edu.au/bigprint/twins-planner/-/issues/58Align planning parameters with true hardware2021-02-03T13:11:17+11:00Jayant KhatkarAlign planning parameters with true hardwareSome of the planning parameters used do not match the real hardware.
This issue is to link to any of those types of changes.
- [x] #57
- [x] Slicer config
- [x] Orientation at approach should be different for each arm - depending on th...Some of the planning parameters used do not match the real hardware.
This issue is to link to any of those types of changes.
- [x] #57
- [x] Slicer config
- [x] Orientation at approach should be different for each arm - depending on the arm's orientation
- [ ] List others as noticed below3D planning env setup and Greedy SchedulingJayant KhatkarJayant Khatkarhttps://code.research.uts.edu.au/bigprint/twins-planner/-/issues/49Dec-MCTS to real plan2021-02-01T13:42:04+11:00Jayant KhatkarDec-MCTS to real plan- [x] DecMCTS inputs
- [x] ~~DecMCTS allows for offset starting times~~
- [x] main Dec-MCTS loop
- [x] DecMCTS joint scheduler check for correctness with visualisations
- [x] get best rollout
- [x] force add contours to real plan (need w...- [x] DecMCTS inputs
- [x] ~~DecMCTS allows for offset starting times~~
- [x] main Dec-MCTS loop
- [x] DecMCTS joint scheduler check for correctness with visualisations
- [x] get best rollout
- [x] force add contours to real plan (need wait logic if fails)
- [x] visualise real plan executed
- [ ] ~~compare usage ratio with greedy for the same contours~~ (leaving for comparison later during paper)Dec-MCTS schedulingJayant KhatkarJayant Khatkarhttps://code.research.uts.edu.au/bigprint/twins-planner/-/issues/57Measure print head and change shape of it's collision object in planning2021-01-27T13:28:52+11:00Jayant KhatkarMeasure print head and change shape of it's collision object in planning- [x] Measure print head dimensions
- [x] update urdf collision object shape for print head
- [ ] ~~update plans~~- [x] Measure print head dimensions
- [x] update urdf collision object shape for print head
- [ ] ~~update plans~~3D planning env setup and Greedy SchedulingJayant KhatkarJayant Khatkarhttps://code.research.uts.edu.au/bigprint/twins-planner/-/issues/53Add buffer time for joint scheduler2021-01-23T20:17:13+11:00Jayant KhatkarAdd buffer time for joint schedulerif there is a collision at the extremities of the trajectory pair time offsets, add buffer because collision will likely still be there immediately before and after.
- [x] to do in traj_collision_pair or in jointScheduler?
- [x] impleme...if there is a collision at the extremities of the trajectory pair time offsets, add buffer because collision will likely still be there immediately before and after.
- [x] to do in traj_collision_pair or in jointScheduler?
- [x] implement as function of desired buffer time.Dec-MCTS schedulingJayant KhatkarJayant Khatkarhttps://code.research.uts.edu.au/bigprint/twins-planner/-/issues/59Restrict Dec-MCTS to one Traj per contour2021-01-17T21:36:38+11:00Jayant KhatkarRestrict Dec-MCTS to one Traj per contourIn order to reduce search space, but also to keep the arm configured in a sensible way for real life execution, only use the JTraj which is closest to the home position.
This isn't really necessary for greedy since it is unlikely to go ...In order to reduce search space, but also to keep the arm configured in a sensible way for real life execution, only use the JTraj which is closest to the home position.
This isn't really necessary for greedy since it is unlikely to go to other trajectories (only when all closest to home ones are not possible).Dec-MCTS schedulingJayant KhatkarJayant Khatkarhttps://code.research.uts.edu.au/bigprint/twins-planner/-/issues/50Make time for between-contour-trajectories realistic2021-01-13T13:01:35+11:00Jayant KhatkarMake time for between-contour-trajectories realisticCurrently, between contour trajectories use a fixed timestep for each waypoint in the trajectory. Change this to a realistic time based off distance in c-space.
- [ ] Get time steps by a multiple of distance in space
- [ ] Use large mul...Currently, between contour trajectories use a fixed timestep for each waypoint in the trajectory. Change this to a realistic time based off distance in c-space.
- [ ] Get time steps by a multiple of distance in space
- [ ] Use large multiplier with real hardware and decrease until fast but safe speed for movement
- [ ] Use this as the default multiplier for planning3D planning env setup and Greedy SchedulingJayant KhatkarJayant Khatkarhttps://code.research.uts.edu.au/bigprint/twins-planner/-/issues/46Create test plans for hardware testing for one arm2021-01-11T11:16:47+11:00Jayant KhatkarCreate test plans for hardware testing for one arm- [x] plan 1: home to contour start, and then back home (no contour)
- [x] plan 2: home to contour, do contour, return home
- [x] plan 3: multiple contours, one layer
- [x] Get another STL and gcode for remaining prints
- [x] plan 4: mul...- [x] plan 1: home to contour start, and then back home (no contour)
- [x] plan 2: home to contour, do contour, return home
- [x] plan 3: multiple contours, one layer
- [x] Get another STL and gcode for remaining prints
- [x] plan 4: multiple contours, multiple layers
- [ ] ~~plan 5: full print for single arm~~ (plan too long)
Depends on #45 for plan 4+3D planning env setup and Greedy SchedulingJayant KhatkarJayant Khatkarhttps://code.research.uts.edu.au/bigprint/twins-planner/-/issues/54JTraj for contours are not always executable2021-01-06T14:09:39+11:00Jayant KhatkarJTraj for contours are not always executableSometimes the contour has multiple t=0 time stamps which makes them impossible ROS JointTrajectories.
- [x] if time stamp is same as previous and ik solutions is same as previous, remove the point since it doesn't add anything to the JT...Sometimes the contour has multiple t=0 time stamps which makes them impossible ROS JointTrajectories.
- [x] if time stamp is same as previous and ik solutions is same as previous, remove the point since it doesn't add anything to the JTraj (implement in contour_trajs)3D planning env setup and Greedy SchedulingJayant KhatkarJayant Khatkarhttps://code.research.uts.edu.au/bigprint/twins-planner/-/issues/45Collision check against completed layers2020-12-27T22:35:56+11:00Jayant KhatkarCollision check against completed layersWhen a layer is complete, there is a risk of colliding with it when planning the next layer (especially for many layers up). This will only really happen between contours, not during them (not true - can happen during contours or higher ...When a layer is complete, there is a risk of colliding with it when planning the next layer (especially for many layers up). This will only really happen between contours, not during them (not true - can happen during contours or higher up layers),
Ideas:
- when planning between contours, move 5mm up, plan to 5mm above next contour, move 5mm down.
- during the trajectory motion planning, add collision object which includes the space of the print up to the *highest layer that is currently in progress*,
- during contour planning, collision objects include the print space up to the *highest layer which has been completed*
Tasks:
- [x] add SimEnv interface to add and remove collision cubes for the pybullet environment
- [x] method to get width and length from contour data (height will vary as layers are being drawn).
- [x] keep track of completed layers in greedy and update a permanent collision object representing completed layers.
- [ ] Change motion planning between contours to include moving up and down (n)mm
- [ ] ~~add another collision object above completed layers for layers in progress to avoid during motion planning~~3D planning env setup and Greedy SchedulingJayant KhatkarJayant Khatkarhttps://code.research.uts.edu.au/bigprint/twins-planner/-/issues/48Plan fails when there are impossible contours2020-12-26T01:00:12+11:00Jayant KhatkarPlan fails when there are impossible contoursSometimes a contour is impossible due to corresponding ik solutions not existing at every waypoint.
Options:
- ignore contour and keep going until can't go anymore (current behavior)
- exit plan so far
- take deeper dive into ik because...Sometimes a contour is impossible due to corresponding ik solutions not existing at every waypoint.
Options:
- ignore contour and keep going until can't go anymore (current behavior)
- exit plan so far
- take deeper dive into ik because the ik solutions should exist - ikfast only giving 4 solutions instead of 8
- [x] Check ikfast is returning sufficient solutions
- [x] fix ikfast if necessary
- [x] Check if the error is caused by a 360 degree wrap around leading to large angle differences
- [x] fix if necessary
- [ ] Pre-compute contour trajectories by both arms for contours and output how many contours are impossible
- [ ] if ignore=True, mark these as complete and keep printing, else stop immidiately if there are any impossible contours3D planning env setup and Greedy SchedulingJayant KhatkarJayant Khatkarhttps://code.research.uts.edu.au/bigprint/twins-planner/-/issues/47plan fails when gcode waypoints are too wide apart2020-12-21T00:16:00+11:00Jayant Khatkarplan fails when gcode waypoints are too wide apartinterpolate waypoints to max of x cm apart to prevent contour trajectory failling to find nearby solutions.interpolate waypoints to max of x cm apart to prevent contour trajectory failling to find nearby solutions.3D planning env setup and Greedy SchedulingJayant KhatkarJayant Khatkarhttps://code.research.uts.edu.au/bigprint/twins-planner/-/issues/25Greedy 3 arm test2020-12-18T07:38:25+11:00Jayant KhatkarGreedy 3 arm test- [x] create 3 arm env description
- [x] run and visulaise on single gcode file
- [x] speed test collision checking with 3 arms- [x] create 3 arm env description
- [x] run and visulaise on single gcode file
- [x] speed test collision checking with 3 armsPaper submissionJayant KhatkarJayant Khatkarhttps://code.research.uts.edu.au/bigprint/twins-planner/-/issues/44Use calibrated arm and tip positions2020-12-18T07:33:30+11:00Jayant KhatkarUse calibrated arm and tip positions- [x] function to read calibration files
- [x] create env_desc object out of them and visualise
- [x] apply and transformations as necessary to get more sensible results- [x] function to read calibration files
- [x] create env_desc object out of them and visualise
- [x] apply and transformations as necessary to get more sensible results3D planning env setup and Greedy SchedulingJayant KhatkarJayant Khatkarhttps://code.research.uts.edu.au/bigprint/twins-planner/-/issues/36greedy arm caught2020-12-16T13:17:04+11:00Jayant Khatkargreedy arm caughtwhen planning flexirex for 60 contours, greedy gets caught in impossible to go home or impossible to stay position which shoudn't be possible.when planning flexirex for 60 contours, greedy gets caught in impossible to go home or impossible to stay position which shoudn't be possible.3D planning env setup and Greedy SchedulingJayant KhatkarJayant Khatkarhttps://code.research.uts.edu.au/bigprint/twins-planner/-/issues/41save a plan and load it2020-12-16T13:13:43+11:00Jayant Khatkarsave a plan and load it- [x] Pickle a plan
- [x] unpickle it and display- [x] Pickle a plan
- [x] unpickle it and display3D planning env setup and Greedy SchedulingJayant KhatkarJayant Khatkarhttps://code.research.uts.edu.au/bigprint/twins-planner/-/issues/33handoff for executing plan on hardware2020-12-16T11:07:09+11:00Jayant Khatkarhandoff for executing plan on hardware- [x] unpickle plan in py2 for hardware
- [x] simple plan object without extra pybullet env stuff- [x] unpickle plan in py2 for hardware
- [x] simple plan object without extra pybullet env stuff3D planning env setup and Greedy SchedulingJayant KhatkarJayant Khatkar