ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
Not an answer but I can confirm that moveGroup.setEndEffectorLink() is probably not working right.
Consolde output from moveGroup says it is using frame 'leap_motion_on_robot':
Attempting to follow 1 waypoints for link 'leap_motion_on_robot'...
moveGroup.getCurrentPose() always returns a base in the /base_link frame.
I set it to use a different EE frame:
moveGroup.setEndEffectorLink("camera_ee_link");
Similar to what you did, I get the current pose. I've then tried converting the current pose to different frames and commanding them as the new EE pose. I expect it to report back that it's already at that pose within specified tolerances. Instead, it moves to a completely new pose. For example,
currentPose=moveGroup.getCurrentPose(); // always returns in the base_link frame
// Remove the leading '/' for tf2
if ( currentPose.header.frame_id.at(0)== '/' )
currentPose.header.frame_id.erase(0,1);
transform it to "leap_motion_on_robot"... too lengthy to paste the code
send the robot to that new pose... too lengthy to paste the code
The 3 frames I have tried are base_link
, leap_motion_on_robot
, and camera_ee_link
. Basically, any frame that makes any sense whatsoever. It moves to 3 different poses, but none of them is the current pose. I don't see any Github issue... I guess I should make one.
2 | No.2 Revision |
Not an answer but I can confirm that moveGroup.setEndEffectorLink() is probably not working right.
Consolde output from moveGroup says it is using frame 'leap_motion_on_robot':
Attempting to follow 1 waypoints for link 'leap_motion_on_robot'...
moveGroup.getCurrentPose() always returns a base pose in the /base_link frame.
I set it to use a different EE frame:
moveGroup.setEndEffectorLink("camera_ee_link");
Similar to what you did, I get the current pose. I've then tried converting the current pose to different frames and commanding them as the new EE pose. I expect it to report back that it's already at that pose within specified tolerances. Instead, it moves to a completely new pose. For example,
currentPose=moveGroup.getCurrentPose(); // always returns in the base_link frame
// Remove the leading '/' for tf2
if ( currentPose.header.frame_id.at(0)== '/' )
currentPose.header.frame_id.erase(0,1);
transform it to "leap_motion_on_robot"... too lengthy to paste the code
send the robot to that new pose... too lengthy to paste the code
The 3 frames I have tried are base_link
, leap_motion_on_robot
, and camera_ee_link
. Basically, any frame that makes any sense whatsoever. It moves to 3 different poses, but none of them is the current pose. I don't see any Github issue... I guess I should make one.
3 | No.3 Revision |
Not an answer but I can confirm that moveGroup.setEndEffectorLink() moveGroup.setEndEffectorLink()
is probably not working right.
Consolde output from moveGroup says it is using frame 'leap_motion_on_robot':
Attempting to follow 1 waypoints for link 'leap_motion_on_robot'...
moveGroup.getCurrentPose() moveGroup.getCurrentPose()
always returns a pose in the /base_link frame.
I set it to use a different EE frame:
moveGroup.setEndEffectorLink("camera_ee_link");
Similar to what you did, I get the current pose. I've then tried converting the current pose to different frames and commanding them as the new EE pose. I expect it to report back that it's already at that pose within specified tolerances. Instead, it moves to a completely new pose. For example,
currentPose=moveGroup.getCurrentPose(); // always returns in the base_link frame
// Remove the leading '/' for tf2
if ( currentPose.header.frame_id.at(0)== '/' )
currentPose.header.frame_id.erase(0,1);
transform it to "leap_motion_on_robot"... too lengthy to paste the code
send the robot to that new pose... too lengthy to paste the code
The 3 frames I have tried are base_link
, leap_motion_on_robot
, and camera_ee_link
. Basically, any frame that makes any sense whatsoever. It moves to 3 different poses, but none of them is the current pose. I don't see any Github issue... I guess I should make one.
4 | No.4 Revision |
Not an answer but I can confirm that moveGroup.setEndEffectorLink()
is probably not working right.
Consolde Console output from moveGroup says it is using frame 'leap_motion_on_robot':
Attempting to follow 1 waypoints for link 'leap_motion_on_robot'...
moveGroup.getCurrentPose()
always returns a pose in the /base_link frame.
I set it to use a different EE frame:
moveGroup.setEndEffectorLink("camera_ee_link");
Similar to what you did, I get the current pose. I've then tried converting the current pose to different frames and commanding them as the new EE pose. I expect it to report back that it's already at that pose within specified tolerances. Instead, it moves to a completely new pose. For example,
currentPose=moveGroup.getCurrentPose(); // always returns in the base_link frame
// Remove the leading '/' for tf2
if ( currentPose.header.frame_id.at(0)== '/' )
currentPose.header.frame_id.erase(0,1);
transform it to "leap_motion_on_robot"... too lengthy to paste the code
send the robot to that new pose... too lengthy to paste the code
The 3 frames I have tried are base_link
, leap_motion_on_robot
, and camera_ee_link
. Basically, any frame that makes any sense whatsoever. It moves to 3 different poses, but none of them is the current pose. I don't see any Github issue... I guess I should make one.
5 | No.5 Revision |
Not an answer but I can confirm that moveGroup.setEndEffectorLink()
is probably not working right.
Console output from moveGroup says it is using frame 'leap_motion_on_robot':
Attempting to follow 1 waypoints for link 'leap_motion_on_robot'...
moveGroup.getCurrentPose()
always returns a pose in the /base_link frame.
I set it to use a different EE frame:
moveGroup.setEndEffectorLink("camera_ee_link");
Similar to what you did, I get the current pose. I've then tried converting the current pose to different frames and commanding them as the new EE pose. I expect it to report back that it's already at that pose within specified tolerances. Instead, it moves to a completely new pose. For example,
currentPose=moveGroup.getCurrentPose(); // always returns in the base_link frame
// Remove the leading '/' for tf2
if ( currentPose.header.frame_id.at(0)== '/' )
currentPose.header.frame_id.erase(0,1);
transform it to "leap_motion_on_robot"... too lengthy to paste the code
send the robot to that new pose... too lengthy to paste the code
The 3 frames I have tried are base_link
, leap_motion_on_robot
, and camera_ee_link
. Basically, any frame that makes any sense whatsoever. It moves to 3 different poses, but none of them is the current pose. I don't see any pose.
Github issue... I guess I should make one.
6 | No.6 Revision |
Not an answer but I can confirm that moveGroup.setEndEffectorLink()
is probably not working right.
Console output from moveGroup says it is using frame 'leap_motion_on_robot':
Attempting to follow 1 waypoints for link 'leap_motion_on_robot'...
moveGroup.getCurrentPose()
always returns a pose in the /base_link frame.
I set it to use a different EE frame:
moveGroup.setEndEffectorLink("camera_ee_link");
Similar to what you did, I get the current pose. I've then tried converting the current pose to different frames and commanding them as the new EE pose. I expect it to report back that it's already at that pose within specified tolerances. Instead, it moves to a completely new pose. For example,
currentPose=moveGroup.getCurrentPose(); // always // Current pose in base_link
currentPose = moveGroup.getCurrentPose(); // Always returns in the base_link frame
base_link
ROS_INFO_STREAM( "Current pose from moveGroup: " << currentPose );
// Current pose in camera_ee_link
// Remove the leading '/' "/" for tf2
if ( currentPose.header.frame_id.at(0)== currentPose.header.frame_id.at(0) == '/' )
currentPose.header.frame_id.erase(0,1);
transform listener.waitForTransform( "camera_ee_link", currentPose.header.frame_id, ros::Time(0), ros::Duration(10.0) );
try{
geometry_msgs::TransformStamped tf_to_camera_ee_link_frame = tfBuffer.lookupTransform("camera_ee_link", currentPose.header.frame_id, ros::Time(0), ros::Duration(1.0) );
tf2::doTransform(currentPose, currentPose, tf_to_camera_ee_link_frame);
}
catch(tf2::TransformException ex){
ROS_ERROR("%s",ex.what());
return false;
}
ROS_INFO_STREAM( "Current pose in camera_ee_link: " << currentPose );
// Current pose in leap_motion_on_robot
// Remove the leading "/" for tf2
if ( currentPose.header.frame_id.at(0) == '/' )
currentPose.header.frame_id.erase(0,1);
listener.waitForTransform( "leap_motion_on_robot", currentPose.header.frame_id, ros::Time(0), ros::Duration(10.0) );
try{
geometry_msgs::TransformStamped tf_to_leap_motion_frame = tfBuffer.lookupTransform("leap_motion_on_robot", currentPose.header.frame_id, ros::Time(0), ros::Duration(1.0) );
tf2::doTransform(currentPose, currentPose, tf_to_leap_motion_frame);
}
catch(tf2::TransformException ex){
ROS_ERROR("%s",ex.what());
return false;
}
ROS_INFO_STREAM( "Current pose in leap_motion_on_robot: " << currentPose );
// Test with currentPose:
waypoints.clear();
waypoints.push_back(currentPose.pose); // Sending it to "leap_motion_on_robot"... too lengthy to paste the code
send the robot to that new pose... too lengthy to paste the code
in base_link. leap_motion_on_robot, and camera_ee_link both fail.
fraction = move_base_to_manip::cartesian_motion(waypoints, trajectory, moveGroup, nh);
ROS_INFO("Cartesian path: %.2f%% achieved", fraction * 100.);
moveGroup.move();
The 3 frames I have tried are base_link
, leap_motion_on_robot
, and camera_ee_link
. Basically, any frame that makes any sense whatsoever. It moves to 3 different poses, but none of them is the current pose.
Github issue: https://github.com/ros-planning/moveit/issues/522
7 | No.7 Revision |
Not an answer but I can confirm that moveGroup.setEndEffectorLink()
is probably not working right.
Console output from moveGroup says it is using frame 'leap_motion_on_robot':
Attempting to follow 1 waypoints for link 'leap_motion_on_robot'...
moveGroup.getCurrentPose()
always returns a pose in the /base_link frame.
I set it to use a different EE frame:
moveGroup.setEndEffectorLink("camera_ee_link");
Similar to what you did, I get the current pose. I've then tried converting the current pose to different frames and commanding them as the new EE pose. I expect it to report back that it's already at that pose within specified tolerances. Instead, it moves to a completely new pose. For example,
// Current pose in base_link
currentPose = moveGroup.getCurrentPose(); // Always returns in base_link
ROS_INFO_STREAM( "Current pose from moveGroup: " << currentPose );
// Current pose in camera_ee_link
// Remove the leading "/" for tf2
if ( currentPose.header.frame_id.at(0) == '/' )
currentPose.header.frame_id.erase(0,1);
listener.waitForTransform( "camera_ee_link", currentPose.header.frame_id, ros::Time(0), ros::Duration(10.0) );
try{
geometry_msgs::TransformStamped tf_to_camera_ee_link_frame = tfBuffer.lookupTransform("camera_ee_link", currentPose.header.frame_id, ros::Time(0), ros::Duration(1.0) );
tf2::doTransform(currentPose, currentPose, tf_to_camera_ee_link_frame);
}
catch(tf2::TransformException ex){
ROS_ERROR("%s",ex.what());
return false;
}
ROS_INFO_STREAM( "Current pose in camera_ee_link: " << currentPose );
// Current pose in leap_motion_on_robot
// Remove the leading "/" for tf2
if ( currentPose.header.frame_id.at(0) == '/' )
currentPose.header.frame_id.erase(0,1);
listener.waitForTransform( "leap_motion_on_robot", currentPose.header.frame_id, ros::Time(0), ros::Duration(10.0) );
try{
geometry_msgs::TransformStamped tf_to_leap_motion_frame = tfBuffer.lookupTransform("leap_motion_on_robot", currentPose.header.frame_id, ros::Time(0), ros::Duration(1.0) );
tf2::doTransform(currentPose, currentPose, tf_to_leap_motion_frame);
}
catch(tf2::TransformException ex){
ROS_ERROR("%s",ex.what());
return false;
}
ROS_INFO_STREAM( "Current pose in leap_motion_on_robot: " << currentPose );
// Test with currentPose:
waypoints.clear();
waypoints.push_back(currentPose.pose); // Sending it in base_link. leap_motion_on_robot, and camera_ee_link both fail.
fraction = move_base_to_manip::cartesian_motion(waypoints, trajectory, moveGroup, nh);
ROS_INFO("Cartesian path: %.2f%% achieved", fraction * 100.);
moveGroup.move();
The 3 frames I have tried are base_link
, leap_motion_on_robot
, and camera_ee_link
. Basically, any frame that makes any sense whatsoever. It moves to 3 different poses, but none of them is the current pose.
Github issue: https://github.com/ros-planning/moveit/issues/522
8 | No.8 Revision |
Not an answer but I can confirm that moveGroup.setEndEffectorLink()
is probably not working right.
Console output from moveGroup says it is using frame 'leap_motion_on_robot':
Attempting to follow 1 waypoints for link 'leap_motion_on_robot'...
moveGroup.getCurrentPose()
always returns a pose in the /base_link frame.
I set it to use a different EE frame:
moveGroup.setEndEffectorLink("camera_ee_link");
Similar to what you did, I get the current pose. I've then tried converting the current pose to different frames and commanding them as the new EE pose. I expect it to report back that it's already at that pose within specified tolerances. Instead, it moves to a completely new pose. For example,
// Current pose in base_link
currentPose = moveGroup.getCurrentPose(); // Always returns in base_link
ROS_INFO_STREAM( "Current pose from moveGroup: " << currentPose );
// Current pose in camera_ee_link
// Remove the leading "/" for tf2
if ( currentPose.header.frame_id.at(0) == '/' )
currentPose.header.frame_id.erase(0,1);
listener.waitForTransform( "camera_ee_link", currentPose.header.frame_id, ros::Time(0), ros::Duration(10.0) );
try{
geometry_msgs::TransformStamped tf_to_camera_ee_link_frame = tfBuffer.lookupTransform("camera_ee_link", currentPose.header.frame_id, ros::Time(0), ros::Duration(1.0) );
tf2::doTransform(currentPose, currentPose, tf_to_camera_ee_link_frame);
}
catch(tf2::TransformException ex){
ROS_ERROR("%s",ex.what());
return false;
}
ROS_INFO_STREAM( "Current pose in camera_ee_link: " << currentPose );
// Test with currentPose:
waypoints.clear();
waypoints.push_back(currentPose.pose); // Sending it in base_link. leap_motion_on_robot, and camera_ee_link both all fail.
fraction = move_base_to_manip::cartesian_motion(waypoints, trajectory, moveGroup, nh);
ROS_INFO("Cartesian path: %.2f%% achieved", fraction * 100.);
moveGroup.move();
The 3 frames I have tried are base_link
, leap_motion_on_robot
, and camera_ee_link
. Basically, any frame that makes any sense whatsoever. It moves to 3 different poses, but none of them is the current pose.
Github issue: https://github.com/ros-planning/moveit/issues/522