Is there a possibility to simulate a trajectory in joint space as opposed to Cartesian space with the Robot Workbench?
I can "move" the robot by giving its joints' values and then create a waypoint but this waypoint is saved as Cartesian co-ordinates of the TCP.
Trajectory in joint space with the Robot Workbench
Forum rules
and Helpful information
and Helpful information
IMPORTANT: Please click here and read this first, before asking for help
Also, be nice to others! Read the FreeCAD code of conduct!
Also, be nice to others! Read the FreeCAD code of conduct!
-
- Posts: 436
- Joined: Wed Sep 15, 2010 9:38 am
Re: Trajectory in joint space with the Robot Workbench
No, the trajectory is only Cartesian...
Stop whining - start coding!
Re: Trajectory in joint space with the Robot Workbench
the question is interesting though; could you perhaps tell us where to look in the source code to use the tool coordinate system rather than the cartesian?
i'd like to look into this...
i'd like to look into this...
Re: Trajectory in joint space with the Robot Workbench
I didn't work much with the robot module so far but I think the code you're interested in is the method Robot6Axis::setTo() under src/Mod/Robot/App/Robot6Axis.cpp line 235.
As argument this method accepts a placement (which is basically a rotation and translation) and here it uses the KDL classes ChainIkSolverVel_pinv and ChainIkSolverPos_NR_JL to convert the Cartesian placement information into joint space.
For the usage of Robot6Axis see also into RobotObject.cpp and Simulation.cpp.
I hope this helps you.
Cheers
As argument this method accepts a placement (which is basically a rotation and translation) and here it uses the KDL classes ChainIkSolverVel_pinv and ChainIkSolverPos_NR_JL to convert the Cartesian placement information into joint space.
For the usage of Robot6Axis see also into RobotObject.cpp and Simulation.cpp.
I hope this helps you.
Cheers
Re: Trajectory in joint space with the Robot Workbench
What he ment is not the Tool (which is defined in the 6AxisRobotObject), rather to define a trajectory in joint space which mean to give each point in time and space
by the position of all 6 Robot axis. Thats clearer (cause every Cartesian position has potentially 6 solutions in joint position) but makes the
trajectory robot and position Dependant (whats no good)....
by the position of all 6 Robot axis. Thats clearer (cause every Cartesian position has potentially 6 solutions in joint position) but makes the
trajectory robot and position Dependant (whats no good)....
Stop whining - start coding!
-
- Posts: 436
- Joined: Wed Sep 15, 2010 9:38 am
Re: Trajectory in joint space with the Robot Workbench
Actually, in the general case, the inverse kinematics of robots with 6 axes have a maximum of 16 solutions, in non-singular positions. Robots of type 6R (6 revolution axes) with 3 intersecting revolute axes have a maximum of 8 solutions (this is the case of common industrial robots with a wrist).
For non-singular positions, it would be nice to have the possibility to choose between the available solutions. Are they available when using KDL?
A trajectory defined in joint space allows a full control over the situation of the robot. A robot with more or less than 6 axes could also be simulated in this way.
Werner, what do you think of the idea to implement a new type of object for this situation, named for example "Robot::JointSpaceTrajectory"? I would be glad to give a hand.
For non-singular positions, it would be nice to have the possibility to choose between the available solutions. Are they available when using KDL?
A trajectory defined in joint space allows a full control over the situation of the robot. A robot with more or less than 6 axes could also be simulated in this way.
Werner, what do you think of the idea to implement a new type of object for this situation, named for example "Robot::JointSpaceTrajectory"? I would be glad to give a hand.
Re: Trajectory in joint space with the Robot Workbench
KDL uses a newton solver for IK. That gives you only the next best position but allows simulation of any type kinemematik.For non-singular positions, it would be nice to have the possibility to choose between the available solutions. Are they available when using KDL?
Stop whining - start coding!