Opencascade hal component, display and interact with 3d stepfile models

More
30 Jun 2021 05:29 #213308 by Aciera
Cool! I notice the colors didn't work after all but mitsubishi robots are usually white anyway.

Joint Limits in respect to "home" position as depicted in the 'RV-&SDL-Dimensions' Document below:

J1 Waist: -170 .. 170°
J2 Shoulder: -92 .. 135°
J3 Ellbow: -129 .. 166
J4 Wrist twist: -160 .. 160°
J5 Wrist pitch: -120 .. 120°
J6 Wrist roll: -360 .. 360° (this is with hose or cable attached to the Hand. Mechanically there is no limit)


 
 
Attachments:
The following user(s) said Thank You: Grotius

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

  • Grotius
  • Grotius's Avatar Topic Author
  • Offline
  • Platinum Member
  • Platinum Member
More
01 Jul 2021 01:52 #213401 by Grotius
Hi Ariera,

Perfect info ! Will store this within the mitsubishi folder.
Today the robot was painted in original white colors, and it recieved a 25mm solid metal base plate.

The mitsubishi is happy with it's new gcode parser adapted from github, named gpr. The interfacing had to be coded. It's in the project now. It can read several syntaxes:
  1. RepRap
  2. LinuxCNC
  3. Vectric
  4. HAAS
  5. Mazak
 

We have to make a tiny plan to interact with the original linuxcnc gui. There are some offsets to handle.
I think to set up a tiny test with linuxcnc axis running a gcode. Connect some motors and then see what happens.

Would it be an idea to write a component based motion planner?
A planner for xyz moves? Something simple... How do you think about this?

Ok. have a nice day.



 
Attachments:
The following user(s) said Thank You: Aciera

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

More
01 Jul 2021 08:43 #213419 by Aciera
Looks good!

Would it be an idea to write a component based motion planner?
A planner for xyz moves? Something simple... How do you think about this?

You mean instead of using the built in motion planner? Why not, but really for a robot to be limited to xyz will be a severe limitation to it's usability.

How much effort would it be for a user to add an stl model of a gripper or other end effector to the flange?

 

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

  • Grotius
  • Grotius's Avatar Topic Author
  • Offline
  • Platinum Member
  • Platinum Member
More
01 Jul 2021 14:34 #213437 by Grotius
How much effort would it be for a user to add an stl model of a gripper or other end effector to the flange?
In the folder of the stepfiles, there is a freecad file wich contains the robot model assembly.
Just add the gripper in the freecad file to the robot flange. Then export joint 6 to stepfile "joint_6.step" containing the gripper.

+1 If you want to have a open or closed gripper, user can code this in the opencascade c++ project.
Then you load 2 stepfiles for joint_6. One stepfile containing open gripper, and one containing closed gripper.
Then you can simple hide or show one of the stepfile's by connecting it to a hal pin.

+1 If you want to have a animated gripper, connected to a float value for open-close gripper distance, you can code this also
in the opencascade c++ project. The open-close distance is then done by a Trsf (transform) matrix. Or by a quaternion matrix.
Ready to use functions of this are already present in the "draw_primitives.h" class.

A video with linuxcnc axis_mm as position controller for xyz moves :
user-images.githubusercontent.com/448801...5d1-66722a014bb7.mp4

The sequence for loading this in the axis_mm.ini file, we add 3 hal files only :
HALFILE = machine.hal (interface machine to axis_mm.ini)
HALFILE = mitsubishi_rv_6sdl/mitsubishi_rv_6sdl.hal (contains machinemodel parameters)
HALFILE = link.hal (connects kinematic.so to opencascade.so)

Then the most interesting one is the "machine.hal" file wich does all the work, mention axis_mm has already
the servo-thread loaded in a previous hal file :

loadrt opencascade stepfilepath=/machines/mitsubishi_rv_6sdl (load the opencascade.so and point to the stepfile path)
loadrt kinematic (load kinematic.so)
addf opencascade servo-thread
addf kinematic servo-thread

net sig_testx joint.0.pos-cmd kinematic.pin-cartx-in (connect a axis_mm pin to a kinematic input pin)
net sig_testy joint.1.pos-cmd kinematic.pin-carty-in
net sig_testz joint.2.pos-cmd kinematic.pin-cartz-in

You mean instead of using the built in motion planner? Why not, but really for a robot to be limited to xyz will be a severe limitation to it's usability.
It would include joint move.

What would be the real benefits if we have a component based motion planner?
This component then includes reading and executing a gcode file.

What would be the benefits if we have a c++ linuxcnc interface gui instead of a python coded one like axis ?

Now the project evolves, it looks like a component based program is a very clean solution to create realtime programs.
If we go on this way the program can look like loading a few components:

1. motion.so (motion planner + gcode reader)
2. kinematic.so (convert gcode, jog, etc, coordinates to your kinematic model)
3. opencascade.so (display it)
4. load the .hal hardware file.

This modular build up, give's you freedom. Currently it looks impossible to use a stand alone motion controller from hal.
Or a stand alone gcode reader.

If we have a c++ linuxcnc interface gui, we could load and connect component's from a selection list on the fly.
Or load a hal project. Then it's also possible to load multiple motion planners at the same time !
This make's it possible to create programs for a complex machine cascade. Just a idea.







 

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

More
01 Jul 2021 19:40 #213450 by Aciera
Yes I agree that using components would make a lot of sense simply because of it's modularity.
What I find unfortunate is the limitation of the motion planner to three axis XYZ. I understand that creating a 6 axis motion planner in a component is probably not an easy task but having a robot controller that only allows for coordinated moves on linear XYZ seems a bit beside the point. It seems strange that I would not be able to program a move along an edge of a cube at a certain angle and then roll the tool around the corner and continue along the next edge.
Is there a particular reason for this? I expected that, with the use of the opencascade kinematic, doing coordinated moves in all 6 axis XYZABC wouldn't be a problem.

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

  • Grotius
  • Grotius's Avatar Topic Author
  • Offline
  • Platinum Member
  • Platinum Member
More
02 Jul 2021 03:52 #213476 by Grotius
Hi Arciera,

Will build a multi axis motion planner component including the euler angles etc.
I have to be mentally prepared for this. I think within a few day's i am ready for this.

I expected that, with the use of the opencascade kinematic, doing coordinated moves in all 6 axis XYZABC wouldn't be a problem.
That is correct.

I know a way to link machines over the internet trough a component in a ultra secure way.
Later on i will provide a example about this technique.
The following user(s) said Thank You: Aciera

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

Time to create page: 0.100 seconds
Powered by Kunena Forum