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.

The namespace used is: /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 introduce 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

  1. Camera detects object relative to markers and sends x<sub>rel</sub>, y<sub>rel</sub>, yaw<sub>rel</sub>.
  2. The object is placed on the workspace, revealing the object pose in robot coordinates x, y, z, roll, pitch, yaw.
  3. 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

Poses Handlers’ Parameters
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
trajectories_dir Path to the Trajectory storage mother folder

Services - Poses handlers

Poses Handlers’ Services
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_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_trajectory ManageTrajectory Save/Delete a Trajectory
get_trajectory GetTrajectory Get Trajectory
get_trajectory_list GetNameDescriptionList Get list of trajectories name & description

All these services are available as soon as the node is started.

Dependencies - Poses handlers

Services & messages files - Poses handlers

GetPose (Service)

string name
---
int32 status
string message
niryo_robot_poses_handlers/NiryoPose pose

GetTargetPose (Service)

string GRIP_AUTO = auto

string workspace
string grip
int32 tool_id           # Used if grip_name = GRIP_AUTO
float32 height_offset
float32 x_rel
float32 y_rel
float32 yaw_rel
---
int32 status
string message
niryo_robot_msgs/RobotState target_pose

GetTrajectory (Service)

string name
---
int32 status
string message
geometry_msgs/Pose[] list_poses

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

ManagePose (Service)

int32 cmd
int32 SAVE = 1
int32 DELETE = -1

niryo_robot_poses_handlers/NiryoPose pose
---
int32 status
string message

ManageTrajectory (Service)

int32 cmd
int32 SAVE = 1
int32 DELETE = -1

string name
string description

geometry_msgs/Pose[] poses
---
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

Trajectory (Message)

string name
geometry_msgs/Pose[] poses

Workspace (Message)

string name
string description

geometry_msgs/Point[] points
niryo_robot_msgs/RobotState[] poses