I have the following setup:
I want to move the "Drill" frame to "Target1" with the opposite Z axis direction. I have calculated translation between "Target1" and "Robot_base". How could I calculate the rotation I need to complete that movement?
From what you've said here, the goal pose relative to the robot_base
frame has the following properties:
drill
and adds the transform up to target_1
target_1
and then applies some other rotation to itIt's not clear exactly what that rotation is (you haven't said), so I'll just assume that since it's a drill you want it pointing straight down. If this is the case, your goal is to apply a rotation to the target orientation. We can apply rotations to transforms and/or quaternions by multiplying them (see this similar question).
From that question, assuming your rotations are held in some standard Quaternion implementation (such as tf2):
tf2::Quaternion rotation, approachOrientation;
rotation.setRPY(0, M_PI, 0) // assuming we want to flip around pitch by 180 degrees
approachOrientation = targetOrientation * rotation;
approachOrientation.normalize();
See the related question for more detail.