ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Hmm, that sounds a bit like my problem. As soon as I try to use real robot data the warehouse viewer crashes. Are you using an installation with the newest deb? Maybe there is a bug in that one.

Have you tried the suggestions in this post yet? http://answers.ros.org/question/28163/error-when-using-real-robot-data-for

Hmm, that sounds a bit like my problem. As soon as I try to use real robot data the warehouse viewer crashes. Are you using an installation with the newest deb? Maybe there is a bug in that one.

Have you already tried the suggestions in this post yet? post? http://answers.ros.org/question/28163/error-when-using-real-robot-data-for

Hmm, that sounds a bit like my problem. As soon as I try to use real robot data the warehouse viewer crashes. Are you using an installation with the newest deb? Maybe there is a bug in that one.

Have you already tried the suggestions in this post? http://answers.ros.org/question/28163/error-when-using-real-robot-data-for

/update

I got the warehouse viewer running for me now. Maybe the below solves your problem, too.

Digging deeper using gdb I found the troublemaker in PlanningSceneEditor::jointStateCallback in move_arm_utils.cpp. In this function the assumption is made, that the velocity array of the joint_state message has the same size as the position array. This is not the case for our robot (we don't publish velocities, only positions). Hence, I changed the code as shown below and the warehouse viewer runs smoothly now.

Original:

//message already been validated in kmsm
for(unsigned int i = 0; i < joint_state->position.size(); ++i)
{
  joint_state_map[joint_state->name[i]] = joint_state->position[i];
  joint_velocity_map[joint_state->name[i]] = joint_state->velocity[i];
}

New:

//message already been validated in kmsm
if ( joint_state->velocity.size() == joint_state->position.size() )
{
  for(unsigned int i = 0; i < joint_state->position.size(); ++i)
  {
    joint_state_map[joint_state->name[i]] = joint_state->position[i];
    joint_velocity_map[joint_state->name[i]] = joint_state->velocity[i];
  }
}
else
{
  for(unsigned int i = 0; i < joint_state->position.size(); ++i)
  {
    joint_state_map[joint_state->name[i]] = joint_state->position[i];
    joint_velocity_map[joint_state->name[i]] = 0.0;
  }
}

PS: I tried attaching the patch to this post, but keep getting the error "TypeError: data is undefined".