NODE manipulation_unit
manipulator high-level motion planning
This is node has been ment, in the RCL#2 project, to act as a communication mean between the ROSPlan framework and the real manipulation controller, but since the RCL#3 project doesn’t require (so far) a explicit manipulation capability from ROSPlan, the node has here another function: managing the movement of the arm during the exploration of the environment.
To be more precise, this new version of the manipulation uit, when turned on, makes the robotic manipulator to assume a pose randomly choosen while the robot is moving. This enables the robot to get also hints that, with a more deterministic movement of the camera, could be missed since the robot acts always in the same way. There are some unluky cases, but most of times it seems to work fine.
- Authors
Francesco Ganci
- Version
v1.0
Note
This implementation supports the develop mode: waitey, debug print
Defines
-
NODE_NAME
-
LOGSQUARE(str)
-
OUTLABEL
-
TLOG(msg)
-
TWARN(msg)
-
TERR(msg)
-
DEVELOP_MODE
-
DEVELOP_PRINT
-
WTLOG(msg)
-
WTWARN(msg)
-
WTERR(msg)
-
DEVELOP_WAIKEY
-
WAITKEY
-
SS(chr)
-
SSS(el)
-
SERVICE_ROBOPLAN_MANIP
-
SERVICE_MANIP
-
TOPIC_MARMERS
-
TOPIC_MANIP_ASYNC
-
SERVICE_RANDOM_ARM_SWITCH
-
POSE_HOME
-
POSE_CAM_LEFT
-
POSE_CAM_RIGHT
-
POSE_CAM_BACK
-
POSE_CAM_LOW
-
POSE_CAM_LOW_LEFT
-
POSE_CAM_LOW_BACK
-
POSE_CAM_LOW_RIGHT
-
POSE_HOME_LOW
-
class node_manipulation_unit
Public Functions
-
inline node_manipulation_unit()
node constructor
-
inline void spin()
spin function: send a new pose each 5 seconds
When activated, the unit sends a new pose, randomly taken from the set of the valid ones, to the manipulation controller, and makes it running asynchronosly.
Note
currently the manipulation controller in asynchronous mode doesn’t implement a check for the progress, so the node sends a new position with a regular time interval which is assumed to be large enough to complete the transition from one position to another.
-
inline bool cbk_auto_manip_switch(std_srvs::SetBool::Request &req, std_srvs::SetBool::Response &res)
switch the automatic manipulation
the service allows to switch on and off the random automatic movements of the arm.
Private Members
-
ros::NodeHandle nh
ROS node handle.
-
ros::ServiceClient cl_manip
manipulation controller client
-
ros::Publisher pub_motion_async
subscription for the async motion
-
ros::ServiceServer srv_auto_manip_switch
switch for the authomatic manipulation
-
bool auto_manip_active = false
automatic manipulation on? (default: not active)
-
inline node_manipulation_unit()