0
$\begingroup$

Rosanswers logo

I followed the Moveit Setup Assistant Tutorial to configure a manipulator for use with MoveIt. I did

  • load the URDF/Xacro file
  • set the virtual joint
  • add a planning group
  • define a robot pose
  • generate the configuration files without problems.

I left out the end effector part, because I do not have a real end effector. The manipulator has three DOF.

Now, when I start the demo.launch file rviz starts up, but the robot geometry is broken. The position of every link under "MotionPlanning->Scene Robot" is [0,0,0] and its orientation is set to some obviously incorrect value. Metaphorically speaking, the robot in rviz consists of a heap of links (robot parts).

Furthermore, I am missing the interactive markers. Searching the web the missing markers relate to the message No active joints or end effectors found for group ''. which I receive during the launch of rviz and which I cannot get rid of.

I have tested my xacro file with gazebo and it works flawlessly.

Here my updated and simplified SRDF file:

<?xml version="1.0" ?>
<robot name="mugator_manip">
    <group name="manipulator">
        <chain base_link="rotatory_base" tip_link="rotatory_drive" />
    </group>
    <group_state name="home" group="manipulator">
        <joint name="q0" value="0" />
    </group_state>
    <virtual_joint name="virtual_joint" type="fixed" parent_frame="world" child_link="footprint" />
    <disable_collisions link1="rotatory_base" link2="rotatory_drive" reason="Adjacent" />
</robot>

And the relevant output during launch of rviz:

[ INFO] [1510658130.699292603]: MoveGroup context using planning plugin ompl_interface/OMPLPlanner
[ INFO] [1510658130.699318489]: MoveGroup context initialization complete

You can start planning now!

libpng warning: iCCP: known incorrect sRGB profile
[ INFO] [1510658134.100829824]: Loading robot model 'mugator_manip'...
[ INFO] [1510658134.548891308]: Starting scene monitor
[ INFO] [1510658134.554074274]: Listening to '/move_group/monitored_planning_scene'
[ INFO] [1510658134.875040587]: No active joints or end effectors found for group ''. Make sure you have defined an end effector in your SRDF file and that kinematics.yaml is loaded in this node's namespace.
[ INFO] [1510658134.875249162]: No active joints or end effectors found for group 'manipulator'. Make sure you have defined an end effector in your SRDF file and that kinematics.yaml is loaded in this node's namespace.
[ INFO] [1510658134.876849619]: No active joints or end effectors found for group 'manipulator'. Make sure you have defined an end effector in your SRDF file and that kinematics.yaml is loaded in this node's namespace.
[ INFO] [1510658134.877298190]: Constructing new MoveGroup connection for group 'manipulator' in namespace ''
[ INFO] [1510658136.007301565]: Ready to take commands for planning group manipulator.
[ INFO] [1510658136.007387218]: Looking around: no
[ INFO] [1510658136.007429894]: Replanning: no

Any help is appreciated.

Edit: Screen shot of rviz: RViz GUI with broken geometry

Edit: Screen shot of the Displays area of rviz. Displays area of rviz

Edit: Simplified URDF file which still shows a broken geometry:

<?xml version="1.0" ?>
<robot name="mugator_manip" xmlns:xacro="http://www.ros.org/wiki/xacro">
  <gazebo>
    <static>false</static>
    <plugin filename="libgazebo_ros_control.so" name="gazebo_ros_control">
      <robotNamespace>/mugator_manip</robotNamespace>
    </plugin>
  </gazebo>

  <link name="footprint"/>

  <joint name="p_joint" type="fixed">
    <parent link="footprint"/>
    <origin rpy="0 0 0" xyz="0 0 0.19"/>
    <child link="rotatory_base"/>
  </joint>

  <link name="rotatory_base">
    <inertial>
      ...
    </inertial>
  </link>

  <joint name="q0" type="revolute">
    <parent link="rotatory_base"/>
    <child link="rotatory_drive"/>
    <origin rpy="1.57079632679 0 1.57079632679" xyz="0.07 0 0"/>
    <axis xyz="0 0 1"/>
    <!-- joint range >= 2*PI leads to problems at least in simulation -->
    <limit effort="30" lower="-3.11017672705" upper="3.11017672705" velocity="0.314159265359"/>
  </joint>

  <transmission name="manipulator_swivel_trans">
    <type>transmission_interface/SimpleTransmission</type>
    <joint name="q0">
      <hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
    </joint>
    <actuator name="manipulator_swivel_motor">
      <mechanicalReduction>100</mechanicalReduction>
    </actuator>
  </transmission>

  <link name="rotatory_drive">
    <inertial>
      ...
    </inertial>
  </link>
</robot>

Edit: I stripped down the URDF file to the follwing content:

<?xml version="1.0" ?>
<robot name="mugator_manip" xmlns:xacro="http://www.ros.org/wiki/xacro">

  <link name="rotatory_base">
    <visual name="visual">
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry>
        <cylinder length="0.14" radius="0.065" />
        <!--mesh filename="package://mugator_manip_description/meshes/base.dae"/-->
      </geometry>
    </visual>
  </link>

  <joint name="q0" type="revolute">
    <parent link="rotatory_base"/>
    <child link="rotatory_drive"/>
    <origin rpy="1.57079632679 0 1.57079632679" xyz="0.07 0 0"/>
    <axis xyz="0 0 1"/>
    <limit effort="30" lower="-3.11017672705" upper="3.11017672705" velocity="0.314159265359"/>
  </joint>

  <link name="rotatory_drive">
    <visual>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry>
        <box size="0.05 0.05 0.05"/>
        <!--mesh filename="package://mugator_manip_description/meshes/rotor.stl"/-->
      </geometry>
    </visual>
  </link>
</robot>

When not using meshes, but primitives like cylinders or boxes I am not able to see their 3d representation in rviz, but in the Display area I can see their entries. When using primitives, the values for orientation and position in the Scene Robot section are correct. As soon as I start using meshes (no matter if .stl or .dae) orientation and position are wrong. Orientation and position is faulty anyway.

I am on Ubuntu 17.04. I am using lunar loggerhead and RViz is version 1.12.13 (lunar). Compiled against Qt version 5.7.1 and OGRE version 1.9.0 (Ghadamon).


Originally posted by bas on ROS Answers with karma: 231 on 2017-11-14

Post score: 0


Original comments

Comment by gvdhoorn on 2017-11-14:\

<chain base_link="Rotatory Base" tip_link="Cutter Drive" />

Suggestion: remove all spaces from your link and joint names and try again.

I don't believe it's made explicit, but TF frames should also follow ROS Naming conventions. Support for whitespace is spotty.

Comment by bas on 2017-11-14:
Thanks for your advice regarding ROS Naming conventions. I removed the spaces. Unfortunately it did not change anything. Geometry is still broken :(

Comment by gvdhoorn on 2017-11-14:
You removed the spaces from your urdf, recreated the moveit config pkg and then rebuilt your workspace?

Comment by gvdhoorn on 2017-11-14:
The 'broken geometry' is a sign of missing TF frames. This can happen if robot_state_publisher isn't started, joint_state_publisher isn't started, they can't find each other or MoveIt cannot work with your URDF.

Without your urdf this may be difficult to debug.

Comment by gvdhoorn on 2017-11-14:
If you could include a screenshot of your RViz window that could maybe help.

Comment by bas on 2017-11-14:
I removed the spaces. To be honest, i did not think about recompiling, but to make sure I deleted the moveit config pkg, recreated it again and recompiled the whole workspace with catkin_make. No change. The geometry is still broken.

Comment by gvdhoorn on 2017-11-14:
Please make the Displays area a little larger. I'm mostly interested in the Fixed Frame field and those around it.

If you add a Robot Model display to RViz, does it also not show your robot correctly?

Comment by gvdhoorn on 2017-11-14:\

To be honest, i did not think about recompiling

I did not write 'compiling', but 'rebuilding'. The former is for code, the latter is to update your workspace with info about the new MoveIt config pkg that you created.

Comment by gvdhoorn on 2017-11-14:
Could you please also update your question with the new content of your SRDF? And if possible, make (a simplified version of) your urdf available (on github or something). Leave out all visual and collision elements fi (but leave the joints and links in there).

Comment by bas on 2017-11-15:
The RobotModel plugin shows the correct geometry.

Comment by rfn123 on 2017-11-16:
I recently solved the problem with the missing interactive marker by changing the settings in Rviz: MotionPlanning --> Planning Request --> Interactive Marker Size and changing the value to something bigger than 0 (I used 0.2 for instance) but I guess this would be the next step for you.

Comment by gvdhoorn on 2017-11-16:
I've just tried the URDF you posted in your GH issue and created a MoveIt cfg for it: everything worked.

Two observations: a) as there are only 3 dof, IK solvers don't work too well, b) the interactive marker is 'inside' the last link, as the pointer link is the last one and its origin is ..

Comment by gvdhoorn on 2017-11-16:
.. at the back end (ie: where it's connected to lever_arm). Might want to add a 'tool frame' (or something like that) there.

re: your problem: without the meshes I'm having a hard time helping you as I cannot reproduce what you are seeing.

Comment by bas on 2017-11-17:
@gvdhoorn: Good to hear that my simplified version works at your end. Which version of ROS are you running and which operating system. I found a GH issue here which reports missing visuals like I am experiencing when using primitives ...

Comment by bas on 2017-11-17:
... (not meshes). The person who opened the issue is using Ubuntu 17.04 and Ros Lunar like me. I do not know if there are issues with orientation and position of links and joints. Furthermore, with my urdf posted on GH the link orientation and position are no longer ok.

Comment by gvdhoorn on 2017-11-17:
I'm running Indigo on Trusty.

re: primitives not visible: I doubt that has anything to do with 'orientation and position of links and joints'.

Furthermore, with my urdf posted on GH the link orientation and position are no longer ok.

I tested the one you posted on GH, not the one here.

Comment by gvdhoorn on 2017-11-17:
If you could perhaps make your moveit config and description pkg available (on GH fi), we could start testing those.

Comment by bas on 2017-11-17:
I am not sure what exactly you mean with "GH fi", sorry. As far as I know GH FI is some kind of local installation of GH for corporates.

Comment by gvdhoorn on 2017-11-17:
GH == github (you use that acronym yourself two comments up) fi == for instance.

Comment by bas on 2017-11-17:
Ok, i uploaded the moveit configuration pkg with the urdf to GH: https://github.com/dbasa/moveit-test.git

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

I investigated this issue further and found a bug in ros/urdfdom_headers/urdf_model/include/urdf_model/pose.h. In pose.h std::stod is used to parse floating point values from a urdf file. std::stod's parsing bahaviour is depending on your locale. With my german locale std:stod expected a comma instead of a dot as a decimal delimiter. This way e.g. pi/2 is parsed to 1.

The easiest workaround is to set the locale LC_NUMERIC to "en_US.UTF-8". This can be done temporarily for each shell by issuing

export LC_NUMERIC="en_US.UTF-8"

in the shell or permanently for all shells e.g. in .bashrc.


Originally posted by bas with karma: 231 on 2017-11-20

This answer was ACCEPTED on the original site

Post score: 1


Original comments

Comment by gvdhoorn on 2017-11-20:
Reported in ros/urdfdom_headers#41.

Comment by bas on 2017-11-20:
@gvdhoorn Thank you for your enormous support. THUMBS_UP

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.