Generating Parallel 3RPS robot model

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Generating Parallel 3RPS robot model

ljminti
Hello everybody,

in my current work i have to handle with parallel robots, like the stewart platform. Now i want to generate in the first step a 3RPS parallel robot. Due to i can't find an example of parallel robots i tried to start myself. Beginning with the base_plate i added the three legs, which consists of a lower part with the revolute joint. Then the upper part of the leg is connected with a slider joint to the lower part. Then i only set the prismatic (slider) joints on enable because all other joints are passiv. Up to this step everything is fine. Now i added the mobile upper_plate in the coordinate system of the first leg.  OK. To connect the mobile plate with the three legs i have to use spherical joints. As i could see in the balljoint.kinbody.xml i add the following code to my robot.xml file:

<Joint name="s1" type="spherical" enable="false">
  <body>cylinder1_rod</body>
  <body>top_plate</body>
  <offsetfrom>cylinder1_rod</offsetfrom>
</Joint>
<Joint name="s2" type="spherical" enable="false">
  <body>cylinder2_rod</body>
  <body>top_plate</body>
  <offsetfrom>cylinder2_rod</offsetfrom>
</Joint>
<Joint name="s3" type="spherical" enable="false">
  <body>cylinder3_rod</body>
  <body>top_plate</body>
  <offsetfrom>cylinder3_rod</offsetfrom>
</Joint>

But if i then load my robot enviroment i get the message that the robot has an incomplete kinematics an that the top_plate has no link to the base_plate.

Is there a problem with such a robot kinematic or what did i wrong?

Julien

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Generating Parallel 3RPS robot model

Rosen Diankov
Administrator
hi julien,

please attach your robot file so we can debug it.
also keep in mind that even if you were to perfectly model your robot,
you would need to solve the forward kinematic equations due to the
closed linkages. once you solve them, you could enter the equations
inside the mimic joints and get everything working. check out the
bobcat.robot.xml at

https://openrave.svn.sourceforge.net/svnroot/openrave/trunk/test/testdata

for an interesting closed linkage.
note that openrave's ikfast does not have an easy-to-use interface for
 solving forward kinematics of closed links... although it is possible

rosen,

2012/8/16 ljminti <[hidden email]>:

> Hello everybody,
>
> in my current work i have to handle with parallel robots, like the stewart
> platform. Now i want to generate in the first step a 3RPS parallel robot.
> Due to i can't find an example of parallel robots i tried to start myself.
> Beginning with the base_plate i added the three legs, which consists of a
> lower part with the revolute joint. Then the upper part of the leg is
> connected with a slider joint to the lower part. Then i only set the
> prismatic (slider) joints on enable because all other joints are passiv. Up
> to this step everything is fine. Now i added the mobile upper_plate in the
> coordinate system of the first leg.  OK. To connect the mobile plate with
> the three legs i have to use spherical joints. As i could see in the
> balljoint.kinbody.xml i add the following code to my robot.xml file:
>
>
>
> But if i then load my robot enviroment i get the message that the robot has
> an incomplete kinematics an that the top_plate has no link to the
> base_plate.
>
> Is there a problem with such a robot kinematic or what did i wrong?
>
> Julien
>
>
>
>
>
> --
> View this message in context: http://openrave-users-list.185357.n3.nabble.com/Generating-Parallel-3RPS-robot-model-tp4025337.html
> Sent from the OpenRAVE Users List mailing list archive at Nabble.com.
>
> ------------------------------------------------------------------------------
> Live Security Virtual Conference
> Exclusive live event will cover all the ways today's security and
> threat landscape has changed and how IT managers can respond. Discussions
> will include endpoint security, mobile security and the latest in malware
> threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
> _______________________________________________
> Openrave-users mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/openrave-users

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Generating Parallel 3RPS robot model

ljminti
hello rosen,

i attached my robot model for debugging.
I would be very thankful if you could look at this model. Up to now i never used mimic joints because i can't find an easy obsured tutorial for appling it.

Relating to the forward and inverse kinematics, i use the matlab interface and only want to set the value of the prismatic joints. All other joint values (relvoulte and spherical) addict due to the parallel kinematics.  Because of that i don't think that i have to use the kinematic solver of Openrave.

Julien

hydraulic_3rps.zip
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Generating Parallel 3RPS robot model

ljminti
Hello,

after checking the model a second time i detect that it seems that there is a problem with the spherical joints. After replacing the spherical joints with hinges the position of every body is displayed correctly. In my opinion this points to a not correct implemented ball joint.
The second aspect is that in a parallel kinematics the angles of all three ball joints changes their values (in all axis) depending on the change of one prismatic joint.
As i figured out, the mimic joints allows a relation with only one axis. In my 3rps kinematics i have the problem, that i need a relation from one prismatic joint to every ball joint. For all chains of my kinematics i have 9 indipendent connections.

Is there any solution to fix this problem?

Julien
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Generating Parallel 3RPS robot model

Rosen Diankov
Administrator
hi Julien,

sorry for the late reply. we tested your file, and it errored on the
ball-and-socket joint. unfortunately, ball-and-socket joints are not
fully supported in openrave; for example, velocities are not computed
correctly. especially having the ball and socket joint orientation
determined from the computation of the parallel links is currently not
possible with openrave.

you were right to convert them all to hinges, except now you have to
compute the correct hinge angles to product the correct orientation
from whatever inverse kinematics function you have. this will also be
very difficult.

in the future we do plan to support parallel links with passive
ball-and-socket joints whose orientations are determined from the
closed linkage kinematics; however, this is still a year or two away
from getting implemented. we opened up a ticket here, you can add
yourself on the cc list to get a notification when it gets done:

https://sourceforge.net/apps/trac/openrave/ticket/309

for completeness of the ticket, can we attach the hydraulic_3rps.zip
you sent in it?

finally, you are always welcome to dive under the hood of openrave and
see if you can add this functionality yourself. it might be fun ;0)

rosen,

2012/8/21 ljminti <[hidden email]>:

> Hello,
>
> after checking the model a second time i detect that it seems that there is
> a problem with the spherical joints. After replacing the spherical joints
> with hinges the position of every body is displayed correctly. In my opinion
> this points to a not correct implemented ball joint.
> The second aspect is that in a parallel kinematics the angles of all three
> ball joints changes their values (in all axis) depending on the change of
> one prismatic joint.
> As i figured out, the mimic joints allows a relation with only one axis. In
> my 3rps kinematics i have the problem, that i need a relation from one
> prismatic joint to every ball joint. For all chains of my kinematics i have
> 9 indipendent connections.
>
> Is there any solution to fix this problem?
>
> Julien
>
>
>
> --
> View this message in context: http://openrave-users-list.185357.n3.nabble.com/Generating-Parallel-3RPS-robot-model-tp4025337p4025373.html
> Sent from the OpenRAVE Users List mailing list archive at Nabble.com.
>
> ------------------------------------------------------------------------------
> Live Security Virtual Conference
> Exclusive live event will cover all the ways today's security and
> threat landscape has changed and how IT managers can respond. Discussions
> will include endpoint security, mobile security and the latest in malware
> threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
> _______________________________________________
> Openrave-users mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/openrave-users

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Generating Parallel 3RPS robot model

ljminti
Hi Rosen,

thanks for your feedback and your plan to implement a passive ball-joint in combination with parallel kinematics.
For the Ticket, you're welcome to use the file i attached.

Julien



Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Generating Parallel 3RPS robot model

arismendi
In reply to this post by Rosen Diankov
Hi Rosen,

I'm trying to add spherical joints to my robot's base. But I get:


terminate called after throwing an instance of 'OpenRAVE::openrave_exception'
  what():  openrave (Assert): [virtual void OpenRAVE::KinBody::SetDOFVelocities(const std::vector<double>&, const Vector&, const Vector&, uint32_t):884] joint 2147483651 not supported for querying velocities

I know that spherical joints doesn't support velocities but I'm not doing that. I'm just setting velocities to my hinge wheels. The problem can be reproduce with the example ormulticontrol in src/cppexamples/ when I change spherical wheels to hinge everything works just fine but wheels cross the floor.

Is there any solution to fix these problems or what did i do wrong?
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Generating Parallel 3RPS robot model

lily89
In reply to this post by ljminti
Hi,
hydraulic_3rps.rar
  I think the support for passive spherical joints has been done for openrave 0.8.2 so no need to use 3 intersecting hinge joints but why do i still see the following when i give EQUAL angles using robot.SetDOFValues() for the 3 slider joints
1)The spherical joints are broken(without physics engine).Why do they break?


2)And with physics engine turned on the ABOVE happens momentarily and then its back to its original orientation,so effectively the top_plate does not move at all.


What changes are needed to move the top plate as expected and make it stay there?

3)I intend to feed (x,y,z,rl,yw,pt) to the ik and get  Also when generating ik using Transformation3D i get the following error:

Traceback (most recent call last):
  File "/usr/bin/openrave.py", line 126, in <module>
    database.run(args=args)
  File "/usr/lib/python2.7/dist-packages/openravepy/_openravepy_0_8/databases/inversekinematics.py", line 934, in run
    InverseKinematicsModel.RunFromParser(*args,**kwargs)
  File "/usr/lib/python2.7/dist-packages/openravepy/_openravepy_0_8/databases/inversekinematics.py", line 906, in RunFromParser
    model = DatabaseGenerator.RunFromParser(Model=Model,parser=parser,robotatts=robotatts,args=args,**kwargs)
  File "/usr/lib/python2.7/dist-packages/openravepy/_openravepy_0_8/databases/__init__.py", line 224, in RunFromParser
    options,model = DatabaseGenerator.InitializeFromParser(Model,parser,orgenv,args,robotatts,defaultviewer,allowkinbody)
  File "/usr/lib/python2.7/dist-packages/openravepy/_openravepy_0_8/databases/__init__.py", line 205, in InitializeFromParser
    model = Model(robot=robot)
  File "/usr/lib/python2.7/dist-packages/openravepy/_openravepy_0_8/databases/inversekinematics.py", line 902, in <lambda>
    Model = lambda robot: InverseKinematicsModel(robot=robot,iktype=iktype,forceikfast=True)
  File "/usr/lib/python2.7/dist-packages/openravepy/_openravepy_0_8/databases/inversekinematics.py", line 207, in __init__
    for link in self.robot.GetChain(self.manip.GetBase().GetIndex(),self.manip.GetEndEffector().GetIndex(),returnjoints=False)[1:]:
AttributeError: 'NoneType' object has no attribute 'GetBase'

Help appreciated.
Loading...