{"action":"created","issue":{"url":"https://api.github.com/repos/MarlinFirmware/Marlin/issues/10373","repository_url":"https://api.github.com/repos/MarlinFirmware/Marlin","labels_url":"https://api.github.com/repos/MarlinFirmware/Marlin/issues/10373/labels{/name}","comments_url":"https://api.github.com/repos/MarlinFirmware/Marlin/issues/10373/comments","events_url":"https://api.github.com/repos/MarlinFirmware/Marlin/issues/10373/events","html_url":"https://github.com/MarlinFirmware/Marlin/pull/10373","id":313134496,"number":10373,"title":"[2.0.x] 6th-order jerk-controlled motion planning in real-time for AVR","user":{"login":"ejtagle","id":831601,"avatar_url":"https://avatars2.githubusercontent.com/u/831601?v=4","gravatar_id":"","url":"https://api.github.com/users/ejtagle","html_url":"https://github.com/ejtagle","followers_url":"https://api.github.com/users/ejtagle/followers","following_url":"https://api.github.com/users/ejtagle/following{/other_user}","gists_url":"https://api.github.com/users/ejtagle/gists{/gist_id}","starred_url":"https://api.github.com/users/ejtagle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ejtagle/subscriptions","organizations_url":"https://api.github.com/users/ejtagle/orgs","repos_url":"https://api.github.com/users/ejtagle/repos","events_url":"https://api.github.com/users/ejtagle/events{/privacy}","received_events_url":"https://api.github.com/users/ejtagle/received_events","type":"User","site_admin":false},"labels":[{"id":92052497,"url":"https://api.github.com/repos/MarlinFirmware/Marlin/labels/PR:%20Improvement","name":"PR: Improvement","color":"c2e0c6","default":false}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":30,"created_at":"2018-04-11T00:34:57Z","updated_at":"2018-05-16T17:19:29Z","closed_at":"2018-04-11T23:13:43Z","author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/MarlinFirmware/Marlin/pulls/10373","html_url":"https://github.com/MarlinFirmware/Marlin/pull/10373","diff_url":"https://github.com/MarlinFirmware/Marlin/pull/10373.diff","patch_url":"https://github.com/MarlinFirmware/Marlin/pull/10373.patch"},"body":"This pull request implements the 6th 6th-order jerk-controlled motion planner for the AVR target. Lots of thought on this and several ASM routines. \r\nI have to make a request: Please, someone test this in actual hardware! . I have an Arduino Mega2560 so i was able to execute, debug and make sure the routines return exactly the values expected for each possible argument and value, but my RAMPs board was converted a long time ago to be able plug it into an Arduino Due, so i canno´t plug it into the Mega2560. So, this code should work, but i´d like someone to try it in a real 3d printer\r\n\r\n@thinkyhead : I was able to reduce the cycle count of the coefficient estimator even more, it takes 216 cycles to execute, and produces bit exact results (i wrote an Arduino sketch just to test all those ASM functions, and compare the values returned with generic ones written in C. There was no difference at all for all possible input values"},"comment":{"url":"https://api.github.com/repos/MarlinFirmware/Marlin/issues/comments/389598168","html_url":"https://github.com/MarlinFirmware/Marlin/pull/10373#issuecomment-389598168","issue_url":"https://api.github.com/repos/MarlinFirmware/Marlin/issues/10373","id":389598168,"user":{"login":"ejtagle","id":831601,"avatar_url":"https://avatars2.githubusercontent.com/u/831601?v=4","gravatar_id":"","url":"https://api.github.com/users/ejtagle","html_url":"https://github.com/ejtagle","followers_url":"https://api.github.com/users/ejtagle/followers","following_url":"https://api.github.com/users/ejtagle/following{/other_user}","gists_url":"https://api.github.com/users/ejtagle/gists{/gist_id}","starred_url":"https://api.github.com/users/ejtagle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ejtagle/subscriptions","organizations_url":"https://api.github.com/users/ejtagle/orgs","repos_url":"https://api.github.com/users/ejtagle/repos","events_url":"https://api.github.com/users/ejtagle/events{/privacy}","received_events_url":"https://api.github.com/users/ejtagle/received_events","type":"User","site_admin":false},"created_at":"2018-05-16T17:19:29Z","updated_at":"2018-05-16T17:19:29Z","author_association":"CONTRIBUTOR","body":"@Sebastianv650 : LA is a very complex thing on Bezier, but mostly doable. Yes, the only way to properly perform it is to evaluate the formulas at the stepper ISR. Luckily, the formulas can be translated to a difference equation of the form\r\n\r\nadvance = (acceleration[-1] - acceleration[0]) * advance factor. And the advance factor is just an 8bit multiplication. I estimate 20 cycles on AVR to compute it.\r\n\r\nYes, on Bezier interpolation, the acceleration limit is not stricly enforced. The mean acceleration of each phase of the trapezoidal shape is less or equal to the maximum acceleration allowed for the movement.\r\n\r\nThat´s the problem with Bezier: Machine resonances are less excited, so you should get less ringing. Try the ubiquitous calibration cube (that shows ringing in the lateral faces along the numbers. And increase printing speed as much as you can 👍 "}}
{"actor":{"display_login":"ejtagle"}}