New Trajectory Planner - Testers/programs wanted

More
08 Jan 2014 08:20 - 26 Mar 2014 00:24 #42469 by skunkworks
EDIT::: Rob has now pushed his work to git.linuxcnc.org. The directions for getting his build has now changed. This build also includes a lot of changes regarding segment blending. It is a very impresssive improvement.

there should be debs building in the near future for this branch.

A linuxcnc developer has made some impressive improvements to linuxcnc trajectory planner. At this point we think it may be stable enough to have a wider group test it.

Some history.
Currently the trajectory planner in linuxcnc uses parabolic blends to transition between segments. It also has the limitation that it has to be able to stop by the end of the next segment. (effectively making have 1 segment look-ahead.) For most things - this isn't a problem. As you get into higher speeds like routing and such - the limitation starts to show itself.

Robert (the developer working on this) has added circular blending to the TP. This allows him to calculate what is need to look further ahead in the programmed path. (As I understand it - the math is harder with parabolic blends). He has not solved for every segment-segment transition. Currently he has look-ahead working for

Line-line transitions
Tangent line-arc transitions
Tangent arc-arc transitions

He hopes to study other transitions and add them in the future. His main plan was getting line-line transitions working as that is what a lot of 3d tool paths out of cam software produces. Any unhanded transitions fall back to parabolic blends. (so it still blend but has to slow back down to current TP performance)

Here is an example of the performance increase - this config is 500ipm - 30in/sec^2 (sorry - pretty crappy video)



The current tp peaks somewhere around 100ipm(first run) - the new tp peaks over 400ipm(second run)

To test this you need to build the rip version of linuxcnc.

These are the basic steps..
You will want to get familiar with this
wiki.linuxcnc.org/cgi-bin/wiki.pl?Instal..._to_compile_LinuxCNC

The basic steps in terminal
git clone git://git.linuxcnc.org/git/linuxcnc.git linuxcnc-rc3
cd linuxcnc-rc3
git branch --track circular-blend-arc-rc3 origin/circular-blend-arc-rc3
git checkout circular-blend-arc-rc3
cd src
./autogen.sh
./configure --enable-run-in-place
make
sudo make setuid
cd ..
. ./scripts/rip-environment
linuxcnc

^ that should launch the run in place version linuxcnc with the new TP...
It is basically the same as the wiki link except it is also pulling the patches from Robs branch.

You are almost done... There are some changes to the ini file

In the [TRAJ] section you need to add a few lines
ARC_BLEND_ENABLE = 1
ARC_BLEND_FALLBACK_ENABLE = 0
ARC_BLEND_OPTIMIZATION_DEPTH = 50
ARC_BLEND_GAP_CYCLES = 4
ARC_BLEND_RAMP_FREQ = 20

So - to run the RIP version
Open terminal

cd linuxcnc-rc3
. ./scripts/rip-environment
linuxcnc

This is still pretty new - so be careful and let us know of any issues..

Also - if you have some gcode programs that you think would be a good test for the new tp - please post them.

sam
Last edit: 26 Mar 2014 00:24 by skunkworks.
The following user(s) said Thank You: Rick G

Please Log in or Create an account to join the conversation.

More
09 Jan 2014 02:02 #42513 by Todd Zuercher
After the 4th step in the above, I recieved this error.

digital4@digital4-cnc:~/linuxcnc-beta$ git fetch github-robE
fatal: 'github.com/robEllenberg/linuxcnc-mirror.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

Please Log in or Create an account to join the conversation.

More
09 Jan 2014 02:22 #42514 by skunkworks
The message board stripped the https:// - I re-edited the original post.

So to fix this problem do a
git remote rm github-robE
git remote add github-robE https://github.com/robEllenberg/linuxcnc-mirror.git
git fetch github-robE
git checkout -b 3d-blend-arc-techdemo github-robE/circular-blend-arc-beta

and so on... as above..

Thanks for testing!!

Please Log in or Create an account to join the conversation.

More
09 Jan 2014 02:56 #42516 by Todd Zuercher
I am using a standard live CD build of Linuxcnc 2.5.
Now I made it down to:
./configure --enable-run-in-place

and recieved the error:
checking for libmodbus3... no
configure: error: libmodbus3 not found!
install with "sudo apt-get install libmodbus-dev" or disable with
"configure --without-libmodbus"

I followed those instructions, then did ./configure --enable-run-in-place again.
It went a bit further and stopped with this error.

checking whether the Boost::Python headers are available... no
configure: error: boost::python is required to build LinuxCNC

I used synaptic to install the Boost.Python Library, then tried the ./configure --enable-run-in-place again and it finished.

The rest seemed to work without a hitch.

Please Log in or Create an account to join the conversation.

More
09 Jan 2014 03:09 #42517 by skunkworks
That is how I find out what is missing most of the time (which isn't probably the best way ;) )

This is the correct way of finding missing dependance..
wiki.linuxcnc.org/cgi-bin/wiki.pl?Instal...g_build_dependencies

sam

Please Log in or Create an account to join the conversation.

More
09 Jan 2014 03:46 #42522 by skunkworks
One thing to note. There has been a slight change to G64 with the new TP

Currently if you specify G64P0.005 this means the same as G64P0.005Q0.005

P is how far from path the planner can go Q uses a naive cam detector to combine lines within the given tolerance.

In the new TP if you specify G64P0.005 it is now the same as G64P0.005Q0

so as an example - if you had a program that specified G65P0.005 to compare apples to apples you would want in the new TP to specify G65P0.005Q.005

Clear as mud?

sam
The following user(s) said Thank You: JZHA1985

Please Log in or Create an account to join the conversation.

More
09 Jan 2014 04:23 #42524 by Todd Zuercher
I think you guys working on this are defonately on the right track. It can offer a significant improvement depending on the code used.
I wish that it would be possible to easily extend this to other axis beyond XYZ.
Several of the routers we use have double vertical axis with 2 spindles using Z and W. The new traj planner shaved a min off running the code included (went from 4.5 to 3.5) That was nearly a 25% improvement.

Using the G64P0.005 vs G64P0.005Q0.005 difference was less significant on the new planner run times were, 3:37 vs. 3:30.

PS The same carving with the W code (W is identical to Z) takes about 6 minuts using either planner.

Maybe I need to try harder to build a ZZ configuration that will work for us.

Thanks again I will be playing with this some more.
Attachments:

Please Log in or Create an account to join the conversation.

More
09 Jan 2014 04:43 #42528 by skunkworks
Sure - this is just the start. it does circular blending for xyz at the moment. He hopes to do abcuvw.

sam

Please Log in or Create an account to join the conversation.

More
09 Jan 2014 23:15 #42547 by Todd Zuercher
I know that the axis A-W don't are not included in the new planner (yet). But I did notice some sort of bug there.
When running with the new traj, planner installed and using the the Z and W axis, the W was over shooting some of it's moves.
See the attached pictures.

Picture of Z carving Old on left, New on right.


Picture of W carving Old on left, New on right.


Both W and Z were carved at the same time using the same code on the same machine, new planner first old planner second. Both runs took approximately the same amount of time
Attachments:

Please Log in or Create an account to join the conversation.

More
09 Jan 2014 23:40 #42549 by skunkworks
awesome! well - not awesome but this is the stuff we are looking for.

Is the program you posted above exhibiting this issue?

sam

Please Log in or Create an account to join the conversation.

Time to create page: 0.238 seconds
Powered by Kunena Forum