Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
wiki:tutorials:introduction [2019/11/18 12:43]
simon
wiki:tutorials:introduction [2020/10/21 11:10] (current)
simon [Offered Interfaces]
Line 105: Line 105:
  
 === Action Server Interface === === Action Server Interface ===
-The action server listens to ''/​giskardpy/​command''​ and accepts goals of type ''​giskard_msgs/​MoveAction'',​ here you can see ''​giskard_msgs/​MoveGoal'':​+The action server listens to ''/​giskard/​command''​ and accepts goals of type ''​giskard_msgs/​MoveAction'':​
  
 <​code>​ <​code>​
-uint8 UNDEFINED=0 +# goal 
-uint8 PLAN_AND_EXECUTE=1 + 
-uint8 PLAN_ONLY=2 +# definitions of possible values to use as type 
-uint8 type +# the following types can be added to create new combinations. e.g. PLAN_AND_EXECUTE = PLAN_ONLY + EXECUTE 
-giskard_msgs/​MoveCmd[] cmd_seq +int64 UNDEFINED=0 
-  giskard_msgs/​Constraint[] constraints +int64 PLAN_ONLY=1  
-    ​string type +int64 CHECK_REACHABILITY=2 # don't use on its own! Different planning parameters that speed up planning but don't create nice trajectories,​ don't use with execute! 
-    ​string parameter_value_pair +int64 EXECUTE=4 # don't use on its own! Result gets send to the robot 
-  ​giskard_msgs/​JointConstraint[] joint_constraints +int64 SKIP_FAILURES=8 # don't use on its own! If there are multiple move commands, failures are skipped. 
-    ​string UNDEFINED+int64 CUT_OFF_SHAKING=16 # don't use on its own! If endless shaking is detected, the size of the detection window is cut off from the trajectory and it is executed anyway 
-    ​string JOINT=JointPositionList + 
-    ​string type +# predefined combinations 
-    ​sensor_msgs/​JointState goal_state +int64 PLAN_AND_CHECK_REACHABILITY=3 
-      ​std_msgs/​Header header +int64 PLAN_AND_EXECUTE=5 
-        ​uint32 seq +int64 PLAN_AND_SKIP_FAILURES=9 
-        time stamp +int64 PLAN_AND_EXECUTE_AND_SKIP_FAILURES=13 
-        ​string frame_id +int64 PLAN_AND_EXECUTE_AND_CUT_OFF_SHAKING=21 
-      ​string[] name + 
-      ​float64[] position +# use one of the above constants to indicate the goal type 
-      ​float64[] velocity +int64 type 
-      ​float64[] effort + 
-  ​giskard_msgs/​CartesianConstraint[] cartesian_constraints +# sequence of movement commands to execute 
-    ​string UNDEFINED+giskard_msgs/​MoveCmd[] cmd_seq ​  
-    ​string TRANSLATION_3D=CartesianPosition +--- 
-    ​string ROTATION_3D=CartesianOrientationSlerp +# result 
-    ​string POSE_6D=CartesianPose + 
-    ​string type +# definition of possible error code values 
-    ​string root_link +int64 SUCCESS=0 
-    ​string tip_link +int64 ERROR=1 # if no code fits 
-    ​geometry_msgs/​PoseStamped goal + 
-      ​std_msgs/​Header header +# solver exceptions 
-        ​uint32 seq +int64 QP_SOLVER_ERROR=10 # if no solver code fits 
-        time stamp +int64 MAX_NWSR_REACHED=11 # increasing NWSR in config file might fix this 
-        ​string frame_id +int64 OUT_OF_JOINT_LIMITS=12 
-      ​geometry_msgs/​Pose pose +int64 HARD_CONSTRAINTS_VIOLATED=13 # conflicting hard constraints,​ probably because of collision avoidance 
-        ​geometry_msgs/​Point position + 
-          ​float64 x +# world state exceptions 
-          ​float64 y +int64 WORLD_ERROR=20 # if no world error fits 
-          ​float64 z +int64 UNKNOWN_OBJECT=21 
-        ​geometry_msgs/Quaternion orientation + 
-          ​float64 x +# error during motion problem building phase 
-          ​float64 y +int64 CONSTRAINT_ERROR=30 # if no constraint code fits 
-          ​float64 z +int64 UNKNOWN_CONSTRAINT=31 
-          ​float64 w +int64 CONSTRAINT_INITIALIZATION_ERROR=32 
-  ​giskard_msgs/​CollisionEntry[] collisions +int64 INVALID_GOAL=33 
-    uint8 AVOID_COLLISION=0 + 
-    uint8 ALLOW_COLLISION=1 +# errors during planning 
-    uint8 AVOID_ALL_COLLISIONS=2 +int64 PLANNING_ERROR=40 # if no planning code fits 
-    uint8 ALLOW_ALL_COLLISIONS=3 +int64 SHAKING=41 # Planning was stopped because the trajectory contains a shaky velocity profile. Detection parameters can be tuned in config file 
-    ​string ALL= +int64 UNREACHABLE=42 # if reachability check fails 
-    uint8 type + 
-    ​float64 min_dist +# errors during execution 
-    ​string[] robot_links +int64 EXECUTION_ERROR=50 # if no execution code fits 
-    ​string body_b +int64 PREEMPTED=51 # goal got cancled via action server interface 
-    ​string[] link_bs+ 
 +# error codes and messages for each command 
 +int64[] error_codes 
 + 
 +string[] error_messages 
 + 
 +# planned trajectory 
 +trajectory_msgs/JointTrajectory trajectory 
 +--- 
 +# feedback 
 + 
 +# definitions of possible action phases 
 +int64 UNDEFINED=0 
 +int64 PLANNING=1 
 +int64 EXECUTION=2 
 + 
 +# cmd that is currenlty being planned 
 +int64 cmd_id 
 + 
 +# value between 0.0 and 1.0 to report progress ​ 
 +# only published during phases EXECUTION 
 +float64 progress 
 </​code>​ </​code>​
  
-Each goal has composed of a list of ''​giskard_msgs/​MoveCmd'',​ where each entry is a single goal. If it contains multiple items, Giskard will plan a trajectory that executes all of them in a sequence. The different items do not influence each other besides the fact that the end state from move command ''​x'' ​will be the initial ​state of move command ''​x+1''​.+Each goal is composed of a list of ''​giskard_msgs/​MoveCmd'',​ where each entry is a single goal. If it contains multiple items, Giskard will plan a trajectory that executes all of them in a sequence. The different items do not influence each other besides the fact that the end state of the previous motion ​will be the start state for the next.
 Each move command contains a list of ''​giskard_msgs/​Constraint'',​ ''​giskard_msgs/​JointConstraint'',​ ''​giskard_msgs/​CartesianConstraint''​ and ''​giskard_msgs/​CollisionEntry''​. Each move command contains a list of ''​giskard_msgs/​Constraint'',​ ''​giskard_msgs/​JointConstraint'',​ ''​giskard_msgs/​CartesianConstraint''​ and ''​giskard_msgs/​CollisionEntry''​.
 The first three are constraints that are used to specify the goal of your motion. Joint constraints and cartesian constraints are just special cases of constraints with a more convenient interface. Click on [[wiki:​tutorials:​single-arm-joint-move-python|joint]] and [[wiki:​tutorials:​single-arm-cartesian-move-python|cartesian]] constraints to find examples. ''​giskard_msgs/​Constraint''​ can be used to call more advanced or your on constraints. The first three are constraints that are used to specify the goal of your motion. Joint constraints and cartesian constraints are just special cases of constraints with a more convenient interface. Click on [[wiki:​tutorials:​single-arm-joint-move-python|joint]] and [[wiki:​tutorials:​single-arm-cartesian-move-python|cartesian]] constraints to find examples. ''​giskard_msgs/​Constraint''​ can be used to call more advanced or your on constraints.
Line 171: Line 193:
 Move commands also contain a list of ''​giskard_msgs/​CollisionEntry'',​ that can be used to modify the collision avoidance. ​ Move commands also contain a list of ''​giskard_msgs/​CollisionEntry'',​ that can be used to modify the collision avoidance. ​
 Find more information [[wiki:​tutorials:​collision_avoidance|here]]. Find more information [[wiki:​tutorials:​collision_avoidance|here]].
 +
 +The result will contain an error code and message for each ''​MoveCmd''​.