ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
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
2 | No.2 Revision |
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
3 | added a bug fix |
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".