Using Moveit! to control robot joints , to achieve a given task

813 views
Skip to first unread message

sanjeev mk

unread,
Jan 9, 2016, 9:50:34 PM1/9/16
to MoveIt! Users
Hi,

I have a reinforcement learning project, and I want to know if Moveit! is the right platform to use for it. I have a few beginner questions, please bear with me..

This is the project:
I want to "teach" a biped humanoid to climb a set of stairs. I would be controlling the biped's joints to make it walk and climb the stairs.
My learning agent would use some algorithm to figure out how much to rotate each joint to achieve the desired motion. The calculated rotation angles would then be fed to the biped , to be executed.
When it does so, the state of the biped will change and I need to sense the physic's environment's feedback to make use of that change. For example, if the biped rotates its joints in a wrong manner, then it'd fall off the stairs.
My agent will know that the biped is about to fall, by sensing the physics environment , and then the agent would take some corrective measures to prevent the fall or, figure out a new way of climbing the stairs.

So there is this action-feedback loop - action by the agent, feedback from the Moveit! environment.  All of this in real time.

I was looking at Gazebo, and ran into Moveit! I thought Moveit! has a direct API for what I need to do.

1. Is something like this possible to do using Moveit! ?

I have followed the complete installation steps for Moveit and am ready to start. But I don't know where to start, which components to pick.
Ideally, I'd prefer to spend less time on building the robot and its environment and focus more on the control algorithm part.

I was going through this tutorial:
http://docs.ros.org/indigo/api/pr2_moveit_tutorials/html/planning/src/doc/move_group_interface_tutorial.html

I executed the launch file given at the end, with roslaunch and it worked nicely!

I want to use an existing biped and write similar stuff for it.
At the beginning of this tutorial page - http://moveit.ros.org/documentation/tutorials/  - it says that " It is assumed that you have already configured MoveIt! for your robot" .

2. I want to use an existing Biped robot, that is already configured for Moveit! , and then start with the tutorials. How can I achieve this?
The tutorial hasn't mentioned steps to use an existing robot directly.

On the robots page - http://moveit.ros.org/bdi-atlas/ - only BDI ATLAS has instructions on how to install the robot package.

3. How do I install the other robots?

I installed the robots package with - sudo apt-get install ros-groovy-moveit-robots , and it came with the BDI Atlas package..

4. How to use the installed robot package, and start controlling it using the API?

If someone could give a broad overview of steps , it'd be really helpful to get my project started.

Thanks for reading through!


Shawn Schaerer

unread,
Jan 11, 2016, 10:47:23 AM1/11/16
to MoveIt! Users
Hi Sanjeev,

I am not sure if moveit is the right package for you.
Is there a reason that you want to use ROS and MoveIt?

If you want to use the ROS ecosystem and Gazebo, I would suggest starting a simulated NAO robot

Or DarwinOP

you can start with those two robots and if successful in simulation, you can transfer to the real-hardware.

Shawn 

sanjeev mk

unread,
Jan 11, 2016, 11:38:57 AM1/11/16
to MoveIt! Users
Thanks Shawn, yes I plan to use one of these simulated robots.

I'm not going to actually build a hardware robot, just need something to test my algorithms, so I think these will work.

What I'm looking for, is an API (preferably simple to use), to control the joints of the robot. For example, if I rotate the knee joint, then everything below the knee joint in the robot's hierarchy should also be rotated.

For example, if I want to simply make this robot walk and climb stairs, I need to rotate the joints of the legs in some specific manner. The manner of rotation will be given by my control algorithm, I just need to execute the action and get feedback on the physics.
If the robot takes a misstep while climbing the stairs, it will fall (because its body might lean, and then gravity would kick in and make it fall). Learning from this misstep, my control algorithm can think of better strategies. So the feedback is important.

I'd prefer to use a high level API to rotate the joints. Gazebo + ROS looks like a complicated setup..I'm not sure. But I looked at the Moveit! first tutorial, and it seems like I can do these high level operations without getting into the lower level details.
In the first tutorial, the robot moves its arm to and fro. I'd like to do similar stuff with the legs. So it seems for me, Moveit is better than Gazebo...

The tutorial however, directly starts with this line:
moveit::planning_interface::MoveGroup group("right_arm");

I'd like to know the steps before that. "right_arm" of which robot? How do I tell move it which robot to operate on?

Thanks!

Shawn Schaerer

unread,
Jan 11, 2016, 12:18:55 PM1/11/16
to sanjeev mk, MoveIt! Users
Hi Sanjeev,

from my experience with humanoids its a little more complicated than just rotating a knee and having the additional joints move with it and hope that the robot does not fall over.

Yes MoveIt will allow you to move groups of joints and it does the kinematic calculations for you.
I have not applied this to humanoids only industrial robot arms.  Perhaps there are others on here who have done what you are asking with MoveIt.

Do you have your own gait generator?  
 




sanjeev mk

unread,
Jan 11, 2016, 12:30:53 PM1/11/16
to MoveIt! Users, sanjee...@gmail.com
The project is actually to build a gait generator given a simple task (like say, walking). Its okay if the robot falls, my algorithm will learn from the fall and try to figure out better gaits.

I only need to give specific commands like "rotate knee-joint" to the robot, and sense whenever the robot is about to fall, using the sensor feedback.

I guess, since the robot parts are in a hierarchy forward kinematics will work and groups of joints will be rotated if the parent joint is rotated too..?

I have the moveit configurations for certain robots like Aldebaran Romeo. Can you tell me how to run the tutorials using this specific robot? the tutorials don't mention that..

Shawn Schaerer

unread,
Jan 11, 2016, 2:47:49 PM1/11/16
to MoveIt! Users, sanjee...@gmail.com
Hi,
look for the launch files for the robot you want to use.  
Session 3 will show you how to run on a UR5 industrial robot arm using MoveIt.

Yes If you rotate one joint it will move the entire chain after it. Those joints will stay in the same position.  you would have to command the arm (or leg) to move to a target or a predefined position / state
Reply all
Reply to author
Forward
0 new messages