Re: Playing with hanoi example

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Re: Playing with hanoi example

Rosen Diankov
Administrator
Hi Akram,

These are excellent questions. In fact, I think many people in the
beginning struggle to understand the openrave architecture. The
documentation is still a work in progress, and we are working on a set
of tutorials, but for now the examples are the best resource to see
openrave in action.

If you care about picking up objects and placing them somewhere, then
you should take a look at the graspplanning example, it is pretty well
tested and considers both initial and destination positions when
choosing where to grasp th object.

All planners are provided through the PlannerBase interface. These
planners are then created by other modules using
Environment.CreatePlanners. There are also 'problem interfaces' that
help expose a small set of related functions to users. The
basemanipulation interface is the most useful for manipulation tasks.
And the python BaseManipulation class wraps this interface up. You can
find the entire set of interfaces offered here:

http://openrave.programmingvision.com/ordocs/sphinx/sphinx-docs/index.html

In order to create a planner, you would need to create an openrave
plugin and provide a PlannerBase interface. Here is a tutorial on
creating plugins:

http://openrave.programmingvision.com/ordocs/en/html/writing_plugins.html

Here is the beginnings of a tutorial on openrave planners and the
PlannerParameters structure:

http://openrave.programmingvision.com/ordocs/en/html/arch_planner.html

Every interface has a particular name used for creation. This name is
what you pass into the 'plannername' field in BaseManipulation. If you
look at the basemanipulation implementation (in
plugins/rmanipulation/basemanipulation.h), you'll see where it
initializes the planners.

There are several implemented planners in openrave whose usage you
will find scattered throughout. The basemanipulation interface offers
a lot of wrappers to useful functions like MoveToHandPosition or
MoveActive. It is recommended for people beginning  with openrave to
just use these functions as is, and slowly start to explore the
inner-workings when they need to modify them.

Until we get better tutorials, I think this list is the best source
for random questions you might have. Every question you have, is
probably a question 10 others have, so getting a discussion going
about it will be very helpful. It also lets the developers know what
areas are difficult to understand and still lacking (like
documentation for using/creating planners)

If you are just starting out in planning, then just use openrave until
you get the demo you are satisfied working. OpenRAVE is designed to
make this process easy (for experienced users). ROS is really helpful
when you actually try to run your stuff on a real robot, with real
sensors, and real issues ;0)

rosen,


2010/8/11 Akram Helou <[hidden email]>:

> Hello,
>
>
>
> So in order to better understand OpenRave, I’ve been going through the brief
> tutorials and trying to modify the supplied examples.
>
>
>
> Right now, I want to modify the hanoi.py example by using a different robot
> and a different planner. I am struggling with the latter task. The comments
> in the hanoi.py example mention: “The default planner used is the rBiRRT,
> you can easily change it to a different planner by changing the arguments to
> the BaseManipulation problem.” Also, the BaseManipulation has
> __init__(self,robot,plannername=None,maxvelmult=None).
>
>
>
> Given the above information I’m not sure how to proceed:
>
> 1)      Inspecting BaseManipulation.py I don’t see where rBiRRT is
> initialized as the default planner. BaseManipulation is not documented.
>
> 2)      Are there any implemented planners in openrave that I can just use
> to help me learn what is going on? If so are they documented somewhere?
>
> 3)      How would I go about to implement my own planner so that I can use
> it in openrave?
>
>
>
> On a different subject, I am finding it a bit overwhelming understanding
> openrave. OpenRave does have documentation but it seems to be dispersed here
> and there. Tutorials are brief. Rosen, would you mind explaining how to best
> use http://openrave.programmingvision.com/index.php/Main_Page to learn
> openrave efficiently? Of course, it would help if I told you what I plan to
> use openrave for. Briefly, I plan to use openrave with ROS for motion
> planning to implement a simple robot planning task (like putting blocks on
> top of each other) and visualize it in gazebo (although I really like qtcoin
> and I’m doubting if ROS needs to play any role in this).
>
>

------------------------------------------------------------------------------
This SF.net email is sponsored by

Make an app they can't live without
Enter the BlackBerry Developer Challenge
http://p.sf.net/sfu/RIM-dev2dev 
_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users
Reply | Threaded
Open this post in threaded view
|

Re: Playing with hanoi example

Rosen Diankov
Administrator
hi akram,

what i recommend to do in this case is do your robot in urdf and use
the collada_urdf package to export it to collada.

http://www.ros.org/wiki/collada_urdf/Tutorials/Exporting%20URDF%20to%20COLLADA

OpenRAVE can open the geometry and kinematics info of collada files.
After that, you should create a tiny openrave xml wrapper to define
the manipulators and sensor locations. there was a discussion on the
openrave-users list here:

http://openrave-users-list.185357.n3.nabble.com/Re-Robot-files-for-the-pR2-td839774.html#a1016025

there's also files attached to show you the details

rosen,

2010/8/19 Akram Helou <[hidden email]>:

> Hi Rosen,
>
> In the e-mail below you mentioned that:
> " If you are just starting out in planning, then just use openrave until you
> get the demo you are satisfied working. OpenRAVE is designed to make this
> process easy (for experienced users). ROS is really helpful when you
> actually try to run your stuff on a real robot, with real sensors, and real
> issues ;0)"
>
> I suggested to my advisor that I move to exclusively working in openrave for
> the time being as per your suggestion above but I was met with a little bit
> of resistance on his part. He wants as much done in ros as opposed to
> openrave (for instance he wants the robot model written in urdf, use kfl for
> FK/IK, and visualize in gazebo). On the other hand, motion planning should
> be done in openrave. His rational is that ros provides a lot of facilities
> that could be useful down the road.
> The issue is that as far as I understand it, I cannot use openrave for
> motion planning without having a kinematics model of the robot written in a
> format that can be understood by openrave (I mean can openrave somehow
> access and use a urdf file?). At the same time, I qill have a urdf model of
> the robot lying around so I can visualize the robot in gazebo and use ros
> packages that require a urdf robot model. This seems redundant to me.
>
> So the ultimate question is what am I practically losing by forgoing of
> modeling the robot in urdf and visualizing it in ros? BTW, please let me
> know if this question is better asked in the ros mailing list.
>
> Hopefully the answer to the above question is "nothing too important". If
> that is the case then I can simply use
> http://openrave.programmingvision.com/index.php/ROS:ControllingRobots to
> move one with the ros/openrave integration. That seems to me the right thing
> to do.
>
> Thanks,
> Akram
>
> -----Original Message-----
> From: [hidden email] [mailto:[hidden email]] On Behalf Of Rosen
> Diankov
> Sent: Wednesday, August 11, 2010 7:16 PM
> To: [hidden email]
> Cc: [hidden email]
> Subject: Re: Playing with hanoi example
>
> Hi Akram,
>
> These are excellent questions. In fact, I think many people in the beginning
> struggle to understand the openrave architecture. The documentation is still
> a work in progress, and we are working on a set of tutorials, but for now
> the examples are the best resource to see openrave in action.
>
> If you care about picking up objects and placing them somewhere, then you
> should take a look at the graspplanning example, it is pretty well tested
> and considers both initial and destination positions when choosing where to
> grasp th object.
>
> All planners are provided through the PlannerBase interface. These planners
> are then created by other modules using Environment.CreatePlanners. There
> are also 'problem interfaces' that help expose a small set of related
> functions to users. The basemanipulation interface is the most useful for
> manipulation tasks.
> And the python BaseManipulation class wraps this interface up. You can find
> the entire set of interfaces offered here:
>
> http://openrave.programmingvision.com/ordocs/sphinx/sphinx-docs/index.html
>
> In order to create a planner, you would need to create an openrave plugin
> and provide a PlannerBase interface. Here is a tutorial on creating plugins:
>
> http://openrave.programmingvision.com/ordocs/en/html/writing_plugins.html
>
> Here is the beginnings of a tutorial on openrave planners and the
> PlannerParameters structure:
>
> http://openrave.programmingvision.com/ordocs/en/html/arch_planner.html
>
> Every interface has a particular name used for creation. This name is what
> you pass into the 'plannername' field in BaseManipulation. If you look at
> the basemanipulation implementation (in
> plugins/rmanipulation/basemanipulation.h), you'll see where it initializes
> the planners.
>
> There are several implemented planners in openrave whose usage you will find
> scattered throughout. The basemanipulation interface offers a lot of
> wrappers to useful functions like MoveToHandPosition or MoveActive. It is
> recommended for people beginning  with openrave to just use these functions
> as is, and slowly start to explore the inner-workings when they need to
> modify them.
>
> Until we get better tutorials, I think this list is the best source for
> random questions you might have. Every question you have, is probably a
> question 10 others have, so getting a discussion going about it will be very
> helpful. It also lets the developers know what areas are difficult to
> understand and still lacking (like documentation for using/creating
> planners)
>
> If you are just starting out in planning, then just use openrave until you
> get the demo you are satisfied working. OpenRAVE is designed to make this
> process easy (for experienced users). ROS is really helpful when you
> actually try to run your stuff on a real robot, with real sensors, and real
> issues ;0)
>
> rosen,
>
>
> 2010/8/11 Akram Helou <[hidden email]>:
>> Hello,
>>
>>
>>
>> So in order to better understand OpenRave, I’ve been going through the
>> brief tutorials and trying to modify the supplied examples.
>>
>>
>>
>> Right now, I want to modify the hanoi.py example by using a different
>> robot and a different planner. I am struggling with the latter task.
>> The comments in the hanoi.py example mention: “The default planner
>> used is the rBiRRT, you can easily change it to a different planner by
>> changing the arguments to the BaseManipulation problem.” Also, the
>> BaseManipulation has
> __init__(self,robot,plannername=None,maxvelmult=None).
>>
>>
>>
>> Given the above information I’m not sure how to proceed:
>>
>> 1)      Inspecting BaseManipulation.py I don’t see where rBiRRT is
>> initialized as the default planner. BaseManipulation is not documented.
>>
>> 2)      Are there any implemented planners in openrave that I can just
>> use to help me learn what is going on? If so are they documented
> somewhere?
>>
>> 3)      How would I go about to implement my own planner so that I can
>> use it in openrave?
>>
>>
>>
>> On a different subject, I am finding it a bit overwhelming
>> understanding openrave. OpenRave does have documentation but it seems
>> to be dispersed here and there. Tutorials are brief. Rosen, would you
>> mind explaining how to best use
>> http://openrave.programmingvision.com/index.php/Main_Page to learn
>> openrave efficiently? Of course, it would help if I told you what I
>> plan to use openrave for. Briefly, I plan to use openrave with ROS for
>> motion planning to implement a simple robot planning task (like
>> putting blocks on top of each other) and visualize it in gazebo (although
> I really like qtcoin and I’m doubting if ROS needs to play any role in
> this).
>>
>>
>
>

------------------------------------------------------------------------------
This SF.net email is sponsored by

Make an app they can't live without
Enter the BlackBerry Developer Challenge
http://p.sf.net/sfu/RIM-dev2dev 
_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users