NODE manipulation controller

controller for performig the manipulation

In a nutshell, this node implements a very simple service able to communicate with moveit in order to perform a manipulation with the RoboCLuedo hunter manipulator. The robot comes with a set of predefined poses, that the controller can call under request.

Todo:

implement a form of asynchronous movement

Authors

Francesco Ganci

Version

v1.2

Todo:

introduce cartesian planning and a clear end effector

Todo:

the way the node uses moveit is a bit raw … it would deserve a review.

Defines

NODE_NAME
LOGSQUARE(str)
OUTLABEL
TLOG(msg)
TWARN(msg)
TERR(msg)
SS(chr)
SSS(el)
ARM_PLANNING_GROUP
SERVICE_MANIP
POSE_HOME
POSE_EXTENDED
POSE_LOW
POSE_FRONT_LOW
POSE_FRONT_HIGH
POSE_NAME_HOME
POSE_NAME_EXTENDED
POSE_NAME_LOW
POSE_NAME_FRONT_LOW
POSE_NAME_FRONT_HIGH

Functions

void shut_msg(int sig)
int main(int argc, char *argv[])
class node_manipulation_controller

Public Functions

inline node_manipulation_controller()

class constructor

the class constructor performs the initialisation of the move group interface, then sets up some parameters, and finally mves the arm in the home position.

When launched, the node first of all puts the robotic manipulator in a known state, which is the home position.

inline void spin()

simple spin (wait for shutdown)

inline bool cbk_manip(robocluedo_movement_controller_msgs::ManipulatorPosition::Request &req, robocluedo_movement_controller_msgs::ManipulatorPosition::Response &res)

sybchronous manipulation

given a poture, the service sets it and moves the robotic manipulator until it hasn’t achieved that.

Parameters
  • req – the posture to be set

  • res – if the motion planning succeeded or not

Private Members

ros::NodeHandle nh

ROS node handle.

std::string planning_group

moveIt group name

moveit::planning_interface::MoveGroupInterface mgi

planning interface

moveit::planning_interface::MoveGroupInterface::Plan plan

previously generated plan

ros::ServiceServer srv_manip

moveit service