This package is the one dealing with all commander related stuff.
It is composed of only one node, which runs separately the arm commander and the tool commander.

Commander node

The ROS Node is made to interact with:
  • The arm through MoveIt!
  • The tools through the tool controller.
All commands are firstly received on the actionlib server which:
  • Handles concurrent requests.
  • Checks if the command can’t be processed due to other factors (ex: learning mode).
  • Validates parameters.
  • Calls required controllers and returns appropriate status and message.

It belongs to the ROS namespace: /niryo_robot_arm_commander/.

Parameters - Commander

Commander’s Parameters
Name Description
Reference frame used by MoveIt! for moveP.
Default : ‘world’
move_group_commander_name Name of the group that MoveIt is controlling. By default: “arm”
jog_timer_rate_sec Publish rate for jog controller
simu_gripper If you are using the simulated Gripper and want to control the Gripper

Action Server - Commander

Commander Package Action Servers
Name Message Type Description
robot_action RobotMove Command the arm and tools through an action server

Services - Commander

Commander Package Services
Name Message Type Description
is_active GetBool Indicate whereas a command is actually running or not
stop_command Trigger Stop the actual command
set_max_velocity_scaling_factor SetInt Set a percentage of maximum speed
/niryo_robot/kinematics/forward GetFK Compute a Forward Kinematic
/niryo_robot/kinematics/inverse GetIK Compute a Inverse Kinematic

Messages - Commander

Commander Package Messages
Name Description
ArmMoveCommand Message to command the arm
ShiftPose Message for shifting pose
PausePlanExecution Pause movement execution

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

Action files - Commander


# goal
niryo_robot_arm_commander/ArmMoveCommand cmd
# result
int32 status
string message
# feedback
niryo_robot_msgs/RobotState state

Services files - Commander


float32[] joints
niryo_robot_msgs/RobotState pose


niryo_robot_msgs/RobotState pose
bool success
float32[] joints


int32 JOINTS_SHIFT = 1
int32 POSE_SHIFT = 2

int32 cmd

float32[] shift_values

int32 status
string message

Messages files - Commander


int32 JOINTS = 0            # uses joints 
int32 POSE = 1              # uses position and rpy 
int32 POSITION = 2          # uses position
int32 RPY = 3               # uses rpy
int32 POSE_QUAT = 4         # uses position and orientation
int32 LINEAR_POSE = 5       # uses position and rpy
int32 SHIFT_POSE = 6        # uses shift
int32 SHIFT_LINEAR_POSE = 7 # uses shift
int32 EXECUTE_TRAJ = 8      # uses dist_smoothing, list_poses
int32 DRAW_SPIRAL = 9
int32 DRAW_CIRCLE = 10

int32 cmd_type

float64[] joints
geometry_msgs/Point position
niryo_robot_msgs/RPY rpy
geometry_msgs/Quaternion orientation
niryo_robot_arm_commander/ShiftPose shift

geometry_msgs/Pose[] list_poses
float32 dist_smoothing

trajectory_msgs/JointTrajectory trajectory

float64[] args


int8 STANDBY = 0
int8 PLAY = 1
int8 PAUSE = 2
int8 RESUME = 3
int8 CANCEL = 4

float64 PAUSE_TIMEOUT = 30.0

int8 state


int32 axis_number
float64 value