Niryo_robot_poses_handlers¶
This package is in charge of dealing with transforms, workspace, grips and trajectories.
Poses handlers node¶
Description - Poses handlers¶
The ROS Node is made of several services to deal with transforms, workspace, grips and trajectories.
It belongs to the ROS namespace: /niryo_robot_poses_handlers/
.
Workspaces¶
A workspace is defined by 4 markers that form a rectangle. With the help of the robot’s calibration tip, the marker positions are learned. The camera returns poses (x, y, yaw) relative to the workspace. We can then infer the absolute object pose in robot coordinates.
Grips¶
When we know the object pose in robot coordinates, we can’t directly send this pose to the robot because we specify the target pose of the tool_link and not of the actual TCP (tool center point). Therefore we introduced the notion of grip. Each end effector has its own grip that specifies where to place the robot with respect to the object.
Currently, the notion of grip is not part of the python/tcp/blockly interface because it would add an extra layer of complexity that is not really necessary for the moment.
Therefore we have a default grip for all tools that is selected automatically based on the current tool id. However, everything is ready if you want to define custom grips, e.g. for custom tools or for custom grip positions.
The vision pick loop¶
- The camera detects objects relative to markers and sends xrel, yrel, yawrel.
- The object is placed on the workspace, revealing the object pose in robot coordinates x, y, z, roll, pitch, yaw.
- The grip is applied on the absolute object pose and gives the pose the robot should move to.
Poses & trajectories¶
List of poses
Parameters - Poses handlers¶
Name | Description |
---|---|
workspace_dir |
Path to the Workspace storage mother folder |
grip_dir |
Path to the Grip storage mother folder |
poses_dir |
Path to the Poses storage mother folder |
dynamic_frame_dir |
Path to the dynamic frames storage mother folder |
Services - Poses handlers¶
Name | Message Type | Description |
---|---|---|
manage_workspace |
ManageWorkspace | Save/Delete a workspace |
get_workspace_ratio |
GetWorkspaceRatio | Get ratio of a workspace |
get_workspace_list |
GetNameDescriptionList | Get list of workspaces name & description |
get_workspace_poses |
GetWorkspaceRobotPoses | Get workspace’s robot poses |
get_workspace_points |
GetWorkspacePoints | Get workspace’s robot points |
get_workspace_matrix_poses |
GetWorkspaceMatrixPoses | Get workspace’s robot matrix poses |
get_target_pose |
GetTargetPose | Get saved programs name |
manage_pose |
ManagePose | Save/Delete a Pose |
get_pose |
GetPose | Get Pose |
get_pose_list |
GetNameDescriptionList | Get list of poses name & description |
manage_dynamic_frame |
ManageDynamicFrame | Save/Edit/Delete a dynamic frame |
get_dynamic_frame_list |
GetNameDescriptionList | Get list of dynamic frame |
get_dynamic_frame |
GetDynamicFrame | Get dynamic frame |
get_transform_pose |
GetTransformPose | Get transform between two frames |
All these services are available as soon as the node is started.
Dependencies - Poses handlers¶
Services & messages files - Poses handlers¶
GetDynamicFrame (Service)¶
string name
---
int32 status
string message
niryo_robot_poses_handlers/DynamicFrame dynamic_frame
GetPose (Service)¶
string name
---
int32 status
string message
niryo_robot_poses_handlers/NiryoPose pose
GetTargetPose (Service)¶
string workspace
float32 height_offset
float32 x_rel
float32 y_rel
float32 yaw_rel
---
int32 status
string message
niryo_robot_msgs/RobotState target_pose
GetTransformPose (Service)¶
string source_frame
string local_frame
geometry_msgs/Point position
niryo_robot_msgs/RPY rpy
---
int32 status
string message
geometry_msgs/Point position
niryo_robot_msgs/RPY rpy
GetWorkspaceMatrixPoses (Service)¶
string name
---
int32 status
string message
geometry_msgs/Point[] matrix_position
geometry_msgs/Quaternion[] matrix_orientation
GetWorkspacePoints (Service)¶
string name
---
int32 status
string message
geometry_msgs/Point[] points
GetWorkspaceRatio (Service)¶
string workspace
---
int32 status
string message
float32 ratio # width/height
GetWorkspaceRobotPoses (Service)¶
string name
---
int32 status
string message
niryo_robot_msgs/RobotState[] poses
ManageDynamicFrame (Service)¶
int32 SAVE = 1
int32 SAVE_WITH_POINTS = 2
int32 EDIT = 3
int32 DELETE = -1
int32 cmd
niryo_robot_poses_handlers/DynamicFrame dynamic_frame
---
int32 status
string message
ManagePose (Service)¶
int32 cmd
int32 SAVE = 1
int32 DELETE = -1
niryo_robot_poses_handlers/NiryoPose pose
---
int32 status
string message
ManageWorkspace (Service)¶
int32 SAVE = 1
int32 SAVE_WITH_POINTS = 2
int32 DELETE = -1
int32 cmd
niryo_robot_poses_handlers/Workspace workspace
---
int32 status
string message
NiryoPose (Message)¶
string name
string description
float64[] joints
geometry_msgs/Point position
niryo_robot_msgs/RPY rpy
geometry_msgs/Quaternion orientation
Workspace (Message)¶
string name # maximum lenght of workspace's name is 30 characters
string description
geometry_msgs/Point[] points
niryo_robot_msgs/RobotState[] poses