[ros-users] multi_dof_joints parameter in arm_navigation stack
Felix Messmer
felix_messmer at web.de
Mon Feb 28 13:09:30 UTC 2011
Hello Sachin, hello Gil,
finally I find the time to get back to you!
Work with the multi_dof_joint goes fine so far...
There is just one more thing, that I have problems with:
I implemented a function for visualizing a trajectory (as in
move_arm_simple_action.cpp) pubishing on the 'display_path' topic.
I query the robot_state to fill the according field 'robot_state' of the
motion_planning_msgs/DisplayTrajectory.msg and I write the planned
trajectory for the arm into the 'trajectory' field of it, too. Since I
do "planning-before-moving", the platform is still in its initial
position although I set a multi_dof_joint PlatformPose to be used in the
planning process.
I also write that PlatformPose into the
'robot_state/multi_dof_joint_state' field of the DisplayTrajectory.msg.
This should place the robot to that new position while visualizing the
trajectory, right?
Unfortunately it doesn't!
Maybe this is because the multi_dof_joint_state (floating_trans_x/y/z,
floating_rot_x/y/z/w) is also already included within the
robot_state/joint_state and this overwrites the additionally given
robot_state/mutli_dof_joint_state.
Since it is only one position that I want to set and not a
multi_dof_joint_trajectory, I don't want to insert the PlatformPose in
the trajectory/multi_dof_joint_trajectory field.
There I only want to have the trajectory for the arm (model_id="arm").
Did you experienced this effect before? Maybe this case just hasn't been
considered yet.
Using the given robot_state/multi_dof_joint_state over the
multi_dof_joint_state-values in the robot_state/joint_state should fix
this problem.
Best regards,
Felix
On 2011-02-08 14:28, Sachin Chitta wrote:
> Hi Felix,
>
> (1) This statement is a warning:
> [ WARN] [1297153951.492886546, 276.592000000]: State violates goal
> constraints.
> You don't usually have to worry about it because it just says that the
> current state does not match the goal condition.
>
> (2) Can you check and make sure that the IK solution is within joint
limits.
> The joint limits should come from the urdf. If you have limits that
you want
> to specify that are different from the ones in the urdf, you can add them
> in a file pr2_arm_navigation_config/config/joint_limits.yaml. Could you
> please check the equivalent file that you have and make sure you have the
> right limits set.
>
> (3) Visualize the solutions - you can look at the pr2 kinematics or the
> tutorial for motion_planning_visualization to see how you can
visualize the
> entire robot state. This will help you debug errors as well.
>
> Send more questions if this is still not working.
>
> Regards,
> Sachin
>
>
> On Tue, Feb 8, 2011 at 12:55 AM, Felix Messmer <felix_messmer at web.de>
wrote:
>
> > Dear Gil, dear Sachin,
> >
> > thanks a lot for your help and the detailed explanation!
> > The Error referring to the floating_trans_x joint doesn't appear
> > anymore...thus, this seems to be fixed! Thanks!
> > However, I still get an Error message that says that the IK solution
> > doesn't obey the goal constraints and that joint limits are violated.
> > Although, the pose goal is right next to the care-o-bot and the (arm!)
> > IK-solution lies within the joint limits.
> >
> >
> >
____________________________________________________________________________________________________________________________________________
> >
> >
> > [ INFO] [1297153951.501037132, 276.596000000]: IK returned joint state
> > for goal that doesn't seem to be valid
> > [ WARN] [1297153951.501105392, 276.596000000]: IK solution doesn't obey
> > goal constraints
> > [ WARN] [1297153951.530798642, 276.603000000]: Joint limits violated.
> >
> > [ERROR] [1297153951.541223194, 276.603000000]: Will not plan to
> > requested joint goal since it violates joint limits constraints
> >
> >
______________________________________________________________________________________________________________________________________________
> >
> >
> > I couldn't look into it more closely, since I'm busy doing something
> > else first.
> > But it seems that this is due to the cob's ik_solver. It currently
> > doesn't support all the services that the pr2_kinematics stack
provides,
> > e.g. constraint_aware IK.
> > Maybe the planner expects some more information within the IK-response
> > that our ik_solver currently just doesn't provide.
> >
> > I'll have a look at that as soon as possible and then get back to you!
> >
> >
> > Best regards,
> > Felix
> >
> >
> >
> >
> >
> >
> >
> >
> > On 2011-02-04 18:15, Gil Jones wrote:
> > > Hi Felix,
> > >
> > > As Sachin said, the bug you were seeing should be fixed. By way of
> > > explanation, we were trying to accomplish a few things with the
> > multi-dof
> > > transform. The primary purpose is to supply a mechanism for a
> > world->robot
> > > transform that supplements the urdf, which doesn't and shouldn't
really
> > > supply information about how to transform between a fixed world frame
> > and a
> > > frame for the movable base. The world transform should be either be a
> > 3-dof
> > > Planar Joint with (x,y,th) or a 6-dof Floating Joint with a full
> > orientation
> > > matrix. We found on the PR2 that we had to use a floating joint
as there
> > > can occasionally be enough of a pitch and roll in our IMU such
that they
> > > need to be accounted for. It's entirely fine to do what you've done
> > below,
> > > which is to say that you essentially don't care about the fixed
> > transform
> > > and will always be planning based on the current base position of the
> > > robot. So that should be all you need to do.
> > >
> > > Having a fixed reference transform should allow two important
pieces of
> > > functionality - as you say, it should allow you to plan to move the
> > base,
> > > and it should also allow you to pose the robot some where else in the
> > world
> > > and plan based on that new pose - for instance, you might be
> > interested to
> > > know whether an object across the room from the robot's current
> > location can
> > > be picked up given a particular approach pose. By specifying a new
> > > multi-dof transform in the start_state message our system should
support
> > > such things, though it is not the case that our current planners
fully
> > > support the former use-case.
> > >
> > > The other purpose of the multi-dof joints is to equip the system to
> > use tf
> > > transforms instead of just joint_state messages to populate the
current
> > > position of the robot. The system is set up to first try to set
> > multi-dof
> > > joints from individually labeled entries in the joint state and then
> > to use
> > > tf to get a pose transform for the entire joint if it needs to. The
> > message
> > > you are seeing refers to one of the labeled single dofs -
> > 'floating_trans_x'
> > > - of the multi-dof joint 'base_joint'. The bug was that for the
> > purposes of
> > > checking joint limits the individually-labeled dofs were not being
> > mapped to
> > > the multi-dof joint.
> > >
> > > As arm_navigation matures we will try to do a better job of making
> > migration
> > > guides that explain new features and inform users what they need
to do
> > to
> > > adopt a new version. At this point we're focused on making relatively
> > large
> > > changes that we hope will make things work better and make it easier
> > to get
> > > our stacks working on other arms, but we still have a ways to go.
We're
> > > targeting e-turtle for a 0.9 or 1.0, at which point things should
> > stabilize
> > > a good deal.
> > >
> > > Please let us know if the bug fix doesn't work or if you have other
> > > problems.
> > >
> > > -Gil
> > >
> > > --
> > > E. Gil Jones (gjones at willowgarage.com)
> > > Research Engineer
> > > Willow Garage, Inc.
> > > 68 Willow Road
> > > Menlo Park, CA 94025
> > > 650.475.9772 <tel:+16504759772>
> > >
> > >
> > > On Fri, Feb 4, 2011 at 1:23 AM, Sachin Chitta
> > <sachinc at willowgarage.com>wrote:
> > >
> > > > Hi Felix,
> > > >
> > > > This should be fixed in motion_planning_common 0.3.5 (thanks to
Gil).
> > > > Can you try it out and let us know.
> > > >
> > > > Thanks,
> > > > Sachin
> > > >
> > > > On Wed, Feb 2, 2011 at 4:09 AM, "Felix Meßmer"
<Felix_Messmer at web.de>
> > > > wrote:
> > > > > Dear community,
> > > > >
> > > > > there is another feature in the unstable/diamondback version
of the
> > > > arm_navigation stack that I have problems with:
> > > > > the multi_dof_joints parameter-option!
> > > > >
> > > > > When I use our old launch file
> > > > (cob_arm_navigation/cob3_planning_environment.launch) that
loads the
> > > > collision_checks and planning_groups paramters to the parameter
> > server, I
> > > > get the following error message from both the trajectory_filter and
> > the
> > > > ompl_planning node:
> > > > >
> > > > > [ WARN] [1296646033.585385464]: No multi dof joints specified,
> > including
> > > > root to world conversion
> > > > > [ WARN] [1296646033.585623806]: Can't do anything without a root
> > > > transform
> > > > >
> > > > > I've adapted the planning_environment.launch file to also
load the
> > > > multi_dof_joints parameter (looking at the according pr2-config
> > files).
> > > > > But now planning reqest as in move_arm_simple_pose goal fail due
> > to the
> > > > following error message from the environment_server node and the
> > move_arm
> > > > action server node:
> > > > >
> > > > > [ WARN] [1296647088.916018038, 830.563000000]: No joint with name
> > > > floating_trans_x
> > > > > [ WARN] [1296647088.916446633, 830.563000000]: Joint limits
> > violated.
> > > > >
> > > > > [ERROR] [1296647088.925356070, 830.563000000]: Will not plan to
> > requested
> > > > joint goal since it violates joint limits constraints
> > > > >
> > > > >
> > > > > The multi_dof_joints.yaml file I use looks like this:
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > I guess the multi_dof_joint parameter is meant to introduce a
> > joint that
> > > > stands for the moving platform with 3 DoFs (trans_x, trans_y,
rot_z)
> > > > > Does that mean that if the pose goal is specified in a
world/global
> > > > coordinate system, the planner also considers and calculates a
> > possibly
> > > > necessary platform motion to reach the specied goal?
> > > > >
> > > > > Is there a parameter (use_multidof?) for the
environment_server to
> > > > deactivate multi_dof_joints?
> > > > > OR:
> > > > > What else do I have to add to use that feature?
> > > > >
> > > > >
> > > > > I hope you can give me a short explanation on that. Thanks a lot!
> > > > >
> > > > >
> > > > >
> > > > > Regards,
> > > > > Felix
> > > > > ___________________________________________________________
> > > > > WEB.DE DSL Doppel-Flat ab 19,99
> > _______________________________________________
> > ros-users mailing list
> > ros-users at code.ros.org
> > https://code.ros.org/mailman/listinfo/ros-users
> >
>
>
>
> --
> Sachin Chitta
> Research Scientist
> Willow Garage
> _______________________________________________
> ros-users mailing list
> ros-users at code.ros.org
> https://code.ros.org/mailman/listinfo/ros-users
>
More information about the ros-users
mailing list