Align the robot with a cart using April Tags
Description
This node is used to align the robot to a TF. The initial TF is usually generated using the apriltag_ros node (with a QR code tag placed on a cart) and a projected TF is generated using the tf_gen node, which is used as a middle man for the alignment process. The operation is done in four steps, using odometry, as follows –
- Start at point P1, rotate the robot so that the chosen camera (parameter: camera) points to a point in front of the tag. This point is P2 and it is generated by tf_gen node.
- Move the robot in a straight line from point P1 to point P2.
- At point P2, rotate the robot so that chosen camera points to the QR code tag.
- Move the robot in a straight line towards the tag for a fixed distance (parameter: move_distance_to_tag).
Examples
The following Demos/Flows make use of this node:
Input List
There are 7 parameters.
Port Name | Message type | Callback |
---|---|---|
gripper_feedback | Bool [std_msgs-ROS1/Subscriber] | align_to_cart_gripper_feedback.cb |
init | Init [movai_msgs-MovAI/Init] | align_to_cart_init.cb |
main_timer | Timer [movai_msgs-ROS1/Timer] | align_to_cart_main_timer.cb |
odom_feedback | Odometry [nav_msgs-ROS1/Subscriber] | align_to_cart_odom_feedback.cb |
start | Transition [movai_msgs-MovAI/TransitionTo] | place_holder.cb |
tf_sub | TF [movai_msgs-ROS1/TFSubscriber] | align_to_cart_tf_sub.cb |
timeout_timer | Timer [movai_msgs-ROS1/Timer] | align_to_cart_timeout_timer.cb |
Output List
There are 4 parameters.
Port Name | Message type |
---|---|
cmd_vel_pub | Twist [geometry_msgs-ROS1/Publisher] |
enable_tf_generator | Bool [std_msgs-ROS1/Publisher] |
success | Transition [movai_msgs-MovAI/TransitionFor] |
timeout | Transition [movai_msgs-MovAI/TransitionFor] |
Parameter List
There are 12 parameters.
Parameter | Description |
---|---|
camera | Camera to be used for tag detection (front or back). |
final_speed | Velocity (ms) for the last linear movement towards the tag. |
generated_tag_frame | TF frame name of the generated middle man TF. This is usually generated using the tf_gen node. |
max_vel_ang | Maximum angular velocity [radians]. squar brackets? GGG |
max_vel_lin | Maximum linear velocity (x axis) [ms] |
min_lin1 | Minimum distance to move in Step 2 [m/s] |
min_rot | Minimum rotation angle for Step 1 [rad] |
min_rot2 | Minimum rotation angle for Step 3 [rad] |
move_distance_to_cart | Maximum distance for linear movement in step 4 (m) |
move_vel1 | Linear velocity to move from P1 to P2 in step 1 [m/s] |
rot_w1 | Angular velocity for rotation in step 1 [rad/s] |
rot_w2 | Angular velocity for rotation in Step 3 [rad/s] |