diff --git a/robot_state_publisher/src/robot_state_publisher.cpp b/robot_state_publisher/src/robot_state_publisher.cpp index 798090f..a59b1c5 100644 --- a/robot_state_publisher/src/robot_state_publisher.cpp +++ b/robot_state_publisher/src/robot_state_publisher.cpp @@ -59,7 +59,6 @@ RobotStatePublisher::RobotStatePublisher(const Tree& tree) // advertise tf message NodeHandle n; tf_publisher_ = n.advertise("/tf", 5); - tf_msg_.transforms.resize(tree.getNrOfSegments()-1); // get the 'real' root segment of the tree, which is the first child of "root" SegmentMap::const_iterator root = tree.getRootSegment(); @@ -76,6 +75,11 @@ bool RobotStatePublisher::publishTransforms(const map& joint_pos // calculate transforms form root to every segment in tree map link_poses; solver_->JntToCart(joint_positions, link_poses); + if (link_poses.size() < 2){ + ROS_ERROR("Could not compute link poses. The tree or the state is invalid."); + return false; + } + tf_msg_.transforms.resize(link_poses.size()-1); // publish the transforms to tf, converting the transforms from "root" to the 'real' root geometry_msgs::TransformStamped trans; diff --git a/robot_state_publisher/src/treefksolverposfull_recursive.cpp b/robot_state_publisher/src/treefksolverposfull_recursive.cpp index c8f3621..bfa7665 100644 --- a/robot_state_publisher/src/treefksolverposfull_recursive.cpp +++ b/robot_state_publisher/src/treefksolverposfull_recursive.cpp @@ -58,7 +58,7 @@ void TreeFkSolverPosFull_recursive::addFrameToMap(const map& q_i if (this_segment->second.segment.getJoint().getType() != Joint::None){ map::const_iterator jnt_pos = q_in.find(this_segment->second.segment.getJoint().getName()); if (jnt_pos == q_in.end()){ - printf("Could not find value for joint %s\n", this_segment->first.c_str()); + printf("Warning: TreeFKSolverPosFull Could not find value for joint '%s'. Skipping this tree branch\n", this_segment->first.c_str()); return; } jnt_p = jnt_pos->second; diff --git a/robot_state_publisher/test/pr2.urdf b/robot_state_publisher/test/pr2.urdf index c19ab6c..de8f6ed 100644 --- a/robot_state_publisher/test/pr2.urdf +++ b/robot_state_publisher/test/pr2.urdf @@ -1,12 +1,14 @@ - + - - - + + + + @@ -14,6 +16,13 @@ + + + true + 1000.0 + + + true @@ -42,6 +51,7 @@ + @@ -62,6 +72,15 @@ + + + @@ -74,23 +93,24 @@ - - - + + + - - - - - + + + + + - + @@ -101,44 +121,22 @@ - - - + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - @@ -156,25 +154,25 @@ - + - + - + - + - -75.05 + -75.0676691729 @@ -189,17 +187,17 @@ - + - + - + - + @@ -222,7 +220,7 @@ - 75.05 + 75.0676691729 @@ -237,17 +235,17 @@ - + - + - + - + @@ -270,7 +268,7 @@ - -75.05 + -75.0676691729 @@ -288,25 +286,25 @@ - + - + - + - + - -75.05 + -75.0676691729 @@ -321,17 +319,17 @@ - + - + - + - + @@ -354,7 +352,7 @@ - 75.05 + 75.0676691729 @@ -369,17 +367,17 @@ - + - + - + - + @@ -402,7 +400,7 @@ - -75.05 + -75.0676691729 @@ -420,25 +418,25 @@ - + - + - + - + - -75.05 + -75.0676691729 @@ -453,17 +451,17 @@ - + - + - + - + @@ -486,7 +484,7 @@ - 75.05 + 75.0676691729 @@ -501,17 +499,17 @@ - + - + - + - + @@ -534,7 +532,7 @@ - -75.05 + -75.0676691729 @@ -552,25 +550,25 @@ - + - + - + - + - -75.05 + -75.0676691729 @@ -585,17 +583,17 @@ - + - + - + - + @@ -618,7 +616,7 @@ - 75.05 + 75.0676691729 @@ -633,17 +631,17 @@ - + - + - + - + @@ -666,8 +664,9 @@ - -75.05 + -75.0676691729 + base_link_geom 100.0 @@ -678,12 +677,13 @@ - - - + + + + base_link true 100.0 @@ -695,16 +695,16 @@ 0 0 0 - + true 100.0 - plug_magnet - plug_magnet_pose_ground_truth + plug_holder + plug_holder_pose_ground_truth 0.01 map 0 0 0 0 0 0 - + @@ -714,8 +714,8 @@ 0.0 0.0 0.0 false - -100 - 100 + -135 + 135 0.05 10.0 @@ -731,9 +731,37 @@ - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -749,6 +777,7 @@ + @@ -759,22 +788,48 @@ - - + - + + - + + + torso_lift_link_geom + 100.0 + + true + 100.0 + torso_lift_bumper + + + + + + + true + 100.0 + torso_lift_link + imu_data + 0.01 + map + 0 0 0 + 0 0 0 + + + -52143.33 + @@ -820,7 +875,7 @@ - + @@ -927,18 +982,18 @@ - + - + - + - + @@ -956,24 +1011,24 @@ - + - + - + - + - B8G8R8 + R8G8B8 2448 2050 45 0.1 @@ -982,11 +1037,11 @@ true 20.0 - /prosilica/cam_info - /prosilica/image - /prosilica/image_rect - /prosilica/cam_info_service - /prosilica/poll + prosilica/cam_info + prosilica/image + prosilica/image_rect + prosilica/cam_info_service + prosilica/poll hight_def_optical_frame 1224.5 1224.5 @@ -1144,65 +1199,7 @@ - - - - - - - 640 480 - L8 - 90 - 0.1 - 100 - 20.0 - - true - 20.0 - wide_stereo/left_image - wide_stereo_l_stereo_camera_frame - - - - - - - 640 480 - L8 - 90 - 0.1 - 100 - 20.0 - - true - 20.0 - wide_stereo/right_image - wide_stereo_r_stereo_camera_frame - - - - - - - true - 20.0 - wide_stereo_l_sensor - wide_stereo_r_sensor - wide_stereo/raw_stereo - wide_stereo_optical_frame - 320 - 320 - 240 - 320 - 0 - 0 - 0 - 0 - 0 - -0.09 - - - + @@ -1314,7 +1311,67 @@ - + + + + + + + + + 640 480 + L8 + 90 + 0.1 + 100 + 20.0 + + true + 20.0 + wide_stereo/left_image + wide_stereo_l_stereo_camera_frame + + + + + + + 640 480 + L8 + 90 + 0.1 + 100 + 20.0 + + true + 20.0 + wide_stereo/right_image + wide_stereo_r_stereo_camera_frame + + + + + + + true + 20.0 + wide_stereo_l_sensor + wide_stereo_r_sensor + wide_stereo/raw_stereo + wide_stereo_optical_frame + 320 + 320 + 240 + 320 + 0 + 0 + 0 + 0 + 0 + -0.09 + + + @@ -1322,7 +1379,7 @@ 640 480 L8 - 90 + 45 0.1 100 20.0 @@ -1339,7 +1396,7 @@ 640 480 L8 - 90 + 45 0.1 100 20.0 @@ -1363,7 +1420,7 @@ 320 320 240 - 320 + 772.55 0 0 0 @@ -1372,15 +1429,13 @@ -0.09 - - - + - + @@ -1438,7 +1493,6 @@ - @@ -1456,11 +1510,11 @@ 0.05 10.0 0.01 - 20.0 + 40.0 0.005 true - 20.0 + 40.0 tilt_scan laser_tilt_link @@ -1794,7 +1848,6 @@ - true @@ -1931,9 +1984,31 @@ + + + + + + + + + + + + + + + + + + + + + + - + @@ -1966,22 +2041,20 @@ - - + - + - + - - + @@ -2077,7 +2150,7 @@ - + @@ -2108,7 +2181,7 @@ - + @@ -2132,7 +2205,7 @@ - + @@ -2154,7 +2227,7 @@ - + @@ -2172,12 +2245,12 @@ - + - + - + @@ -2195,9 +2268,9 @@ - + - + true @@ -2218,13 +2291,13 @@ - + - + true @@ -2279,7 +2352,18 @@ map - + + true + 100.0 + r_gripper_tool_frame + r_gripper_tool_frame_pose_ground_truth + 0 0 0 + 0 0 0 + 0.0 + /map + + + true @@ -2613,7 +2697,6 @@ - true @@ -2750,9 +2833,31 @@ + + + + + + + + + + + + + + + + + + + + + + - + @@ -2785,22 +2890,20 @@ - - + - + - + - - + @@ -2896,7 +2999,7 @@ - + @@ -2927,7 +3030,7 @@ - + @@ -2951,7 +3054,7 @@ - + @@ -2973,7 +3076,7 @@ - + @@ -2991,12 +3094,12 @@ - + - + - + @@ -3014,9 +3117,9 @@ - + - + true @@ -3037,13 +3140,13 @@ - + - + true @@ -3098,7 +3201,18 @@ map - + + true + 100.0 + l_gripper_tool_frame + l_gripper_tool_frame_pose_ground_truth + 0 0 0 + 0 0 0 + 0.0 + /map + + + true @@ -3110,7 +3224,153 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 640 480 + L8 + 90 + 0.1 + 100 + 20.0 + + true + 20.0 + l_forearm_cam/image + l_forearm_cam_frame + + + + true + PR2/Blue + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 640 480 + L8 + 90 + 0.1 + 100 + 20.0 + + true + 20.0 + r_forearm_cam/image + r_forearm_cam_frame + + + + true + PR2/Blue + + true + + +