Generating G-code for multi-axis robot

More
19 Mar 2019 22:25 #129013 by cogzoid
I've been working on a drink making robot. You can get an idea of what it can do here:


We're able to use some custom software in Touch Designer and generate the g-code. However, it's currently a bit of a tedious process and I'd love to make it easier for someone to create more emotive motions to really bring out the personality of the robot.

Here is a description of the robot:

3 Joints make up the main Arm, as well as a pneumatic gripper and wrist rotation. The motion is all in a 2D plane.
The Ferriswheel can spin, and the Tipper can pour a shot from a bottle.
There's also a "Shaker" that will shake up the drink. It's got a pneumatic top to hold onto the cup.
Finally there is a leaning feature to the robot's eye and a spinning bowtie, both of which do not impact the practicality of making a drink.

I'd love to make a simulator where the user can drag a simulated cartoon cup and the arm follows with realistic speeds/acceleration limits. From that simulation we could output the actual g-code that we'll send to the robot. We'd have to make sure we have a proper understanding of the motion planner's behavior so the actual robot output perfectly matches our simulation.

Are there g-code generators that I should be looking at? Any strategies for handling the timing issues we'll face? If you have any other input or suggestions I'm all ears.

Thanks.
The following user(s) said Thank You: tommylight

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

More
19 Mar 2019 22:31 - 19 Mar 2019 22:33 #129014 by tommylight
There is a script for memorising coordinates for Linuxcnc that is something like the teaching feature in Kuka robots, but i never used it and can not find it. Maybe someone else can chime in.
That would make programming a lot easier.

Almost forgot,
That is an amazing piece of engineering/art/bartender/the thing responsible for your divorce/etc.
Last edit: 19 Mar 2019 22:33 by tommylight.

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

More
19 Mar 2019 22:52 #129015 by cogzoid
Yeah, it's exactly that sort of program that I'm looking for. The robot only has steppers, and there's no encoder feedback to utilize. Meaning we use a lot of trial and error to hit the sensitive points (picking up a cup, etc). But those points don't move so we only have to find them once.

If we concoct an accurate simulation of our robot we can churn out different personalities. Imagine if he danced while making a drink, maybe the robot is drunk, maybe he falls in love with the customer, etc. You get the idea. This is when the robot starts to get really fun.

This project has been almost 2 years of effort for me, and I'm more surprised than anyone else that it's turned out this well. It's also my first robot. I've done some basic cnc machining before this, but I'm really in over my head now.

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

More
19 Mar 2019 23:00 #129017 by tommylight
Thinking about it, i use a lot the last_position file in my configs as where i live there are power outs occasionally, so that remembers the last position the machine was on.
It would not take much to make a vcp button that when pressed would write all the current positions into a file.
Afterwards, open that file and press play !

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

More
20 Mar 2019 18:04 - 20 Mar 2019 18:57 #129087 by Grotius
Daniel,

I told it before, the EO branche can do this for you. We can do this real time.


We can make easely a gcode program for this. But g code is not what we want if we want to follow a pointer real time.

You need a short strong component with interpolation model based on EO branche. Then you can make money for
the navy if you want to. And it has many option's the navy don't have at this moment. It come's closer to the red button.

I'd love to make a simulator where the user can drag a simulated cartoon cup and the arm follows with realistic speeds/acceleration limits.
If you look at qt, you can make a android phone app for example. If you have a leazy sunday you can look some youtube video's about this. You can combine this with hard c code in a c++ project, i tested this, and it go's good.
I prefer to write interpolation models in c because of the basic logic's that are used over 20 year's. Python is not logical enough to me.
If it is to you, start with python. But you can write amazing things for your robot, that's for sure. And keep in mind. Linux is open source. It can adapt vision system's too without any comparisment. So if you have a camera you can do vision related action's. Linux is power to the max.
Last edit: 20 Mar 2019 18:57 by Grotius.

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

More
20 Mar 2019 21:22 #129116 by cogzoid
I see that the external offsets can be a great tool for real time stuff with the robot, however, I don't think we need real time stuff yet. At first we just need some "canned" g-code programs that can run repeatably when a button is pressed. I want a way to easily generate those g-code programs, and I'm looking to see if anyone else has something I can utilize before writing my own. I'm painfully slow with programming so I'm hoping to avoid it. Or at least I'd love to see someone else's algorithm so I know I'm going down the right path.

I'll look into the EO branch though... Thanks!

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

More
20 Mar 2019 22:04 #129119 by Grotius
Okey, if you go to try EO stop right now. There is a version for you that can move like backward's. If you don't have this version
with your robot you miss a pointer. The combi version is Reverse Adaptive Feed + integrated Externall Offsets. And there is one place on the planet to get it.


If you have some drawings and dimension's of point's and joint's we can look at the interpolation model quite nice !

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

More
21 Mar 2019 00:32 #129128 by tommylight

The combi version is Reverse Adaptive Feed + integrated Externall Offsets. And there is one place on the planet to get it.

Here
forum.linuxcnc.org/plasma-laser/35449-an...ma-component?start=0
Either way, i think that you can make everything work with the normal version, as it seems that you need to do different movement for different drinks, you just need to do O subs and call them as needed or depending on what button you press, or depending on the temperature ( warning you do need a temperature sensor and an analogue input, now most people will say that there is no analogue input on a PC, but there are at least 2 always! Sound card! ), or whatever you can think off.
The temperature thing was just an example.

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

More
21 Mar 2019 07:01 #129142 by pl7i92
if you build the mashine the way to stay all axis in rotation points
many CAM systems are able to use TCP as a stuff
no offsets needed
like here
Attachments:

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

More
22 Mar 2019 20:57 #129289 by Grotius
This is i think the only version available :
github.com/grotius-cnc/stable
It has reverse_feed and external_offset's in one version.

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

Time to create page: 0.273 seconds
Powered by Kunena Forum