ASCO Aerial Autonomy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
pick_place_states_actions.h
Go to the documentation of this file.
1 #pragma once
7 #include <aerial_autonomy/arm_events.h>
8 #include <boost/msm/front/euml/operator.hpp>
9 #include <boost/msm/front/functor_row.hpp>
10 
16 template <class LogicStateMachineT>
18  : VisualServoingStatesActions<LogicStateMachineT> {
19 
25  template <class Sequence>
26  using bActionSequence = boost::msm::front::ActionSequence_<Sequence>;
27  template <class G1, class G2>
28  using bAnd = boost::msm::front::euml::And_<G1, G2>;
29 
38 
39  // Pre takeoff, land states
52  // PickPlace State
57  // PrePickPlace State
62  // Transition Actions
88  boost::mpl::vector<typename usa::UAVControllerAbort, ArmRightFold>>;
94  boost::mpl::vector<typename usa::UAVControllerAbort, ArmFold>>;
98  using PickTransitionAction = bActionSequence<boost::mpl::vector<
105  using PrePickTransitionAction = bActionSequence<boost::mpl::vector<
111  using ArmPowerOnFold =
118  boost::mpl::vector<typename usa::UAVControllerAbort, AbortArmController>>;
119  // Guards
130  // Explicitly defined manual Control state
137  struct ManualControlArmState : public msmf::state<> {
139  : boost::mpl::vector<
140  msmf::Internal<
141  InternalTransitionEvent,
142  ManualControlArmInternalActionFunctor_<LogicStateMachineT>,
143  msmf::none>,
144  msmf::Internal<arm_events::PowerOn, ArmPowerOn, msmf::none>,
145  msmf::Internal<arm_events::PowerOff, ArmPowerOff, msmf::none>,
146  msmf::Internal<arm_events::Fold, ArmFold, msmf::none>,
147  msmf::Internal<uav_basic_events::Abort, msmf::none, msmf::none>,
148  msmf::Internal<arm_events::RightAngleFold, ArmRightFold,
149  msmf::none>> {};
150  };
151 };
Power on the arm.
Definition: arm_functors.h:60
Logic to grab an object, sleep for few seconds Abort UAV, Arm controllers.
Definition: pick_place_functors.h:19
VisualServoingTransitionActionFunctor_< LogicStateMachineT > VisualServoingTransitionAction
Action to take when starting visual servoing.
Definition: visual_servoing_states_actions.h:24
Abort arm controller.
Definition: arm_functors.h:91
bActionSequence< boost::mpl::vector< typename usa::UAVControllerAbort, ArmRightFold >> AbortUAVControllerArmRightFold
Action sequence to abort UAV controller and move arm to right angle.
Definition: pick_place_states_actions.h:88
Base state for all states in logic state machine.
Definition: base_state.h:24
action to fold arm
Definition: arm_functors.h:18
State that uses position control functor to reach a desired goal prior to picking.
Definition: pick_place_functors.h:112
bActionSequence< boost::mpl::vector< typename vsa::VisualServoingTransitionAction, VisualServoingArmTransitionActionFunctor_< LogicStateMachineT, 1 >>> PickTransitionAction
Set goal for visual servoing and also arm controller.
Definition: pick_place_states_actions.h:100
bActionSequence< boost::mpl::vector< typename usa::UAVControllerAbort, AbortArmController >> AbortUAVArmController
Action sequence to abort UAV controller and arm controller angle.
Definition: pick_place_states_actions.h:118
VisualServoingTransitionGuardFunctor_< LogicStateMachineT > VisualServoingTransitionGuard
Check whether visual servoing is feasible currently.
Definition: visual_servoing_states_actions.h:29
action to move arm to right angle
Definition: arm_functors.h:32
bAnd< typename vsa::VisualServoingTransitionGuard, ArmEnabledGuardFunctor_< LogicStateMachineT >> PickTransitionGuard
Guard to stop pick place if arm is not powered or vision is not working.
Definition: pick_place_states_actions.h:125
Power off arm.
Definition: arm_functors.h:46
bActionSequence< boost::mpl::vector< typename usa::UAVControllerAbort, ArmFold >> AbortUAVControllerArmFold
Action sequence to abort UAV controller and move arm to right angle.
Definition: pick_place_states_actions.h:94
Class to provide typedefs for all basic uav states and actions.
Definition: uav_states_actions.h:14
Same state as above. Used to distinguish between landing and takeoff.
Definition: arm_functors.h:165
Class to provide typedefs for all basic uav states and actions.
Definition: pick_place_states_actions.h:17
Set arm goal and set grip to false to start with.
Definition: pick_place_functors.h:85
Class to provide typedefs for all basic uav states and actions.
Definition: visual_servoing_states_actions.h:12
bActionSequence< boost::mpl::vector< typename vsa::VisualServoingTransitionAction, VisualServoingArmTransitionActionFunctor_< LogicStateMachineT, 0 >>> PrePickTransitionAction
Set goal for visual servoing and also arm controller for positioning arm for pick.
Definition: pick_place_states_actions.h:107
State that checks arm status along with regular manual control state.
Definition: pick_place_states_actions.h:137
Same state as above. Used to distinguish between landing and takeoff.
Definition: arm_functors.h:172
boost::msm::front::ActionSequence_< Sequence > bActionSequence
Action sequence to chain multiple actions together.
Definition: pick_place_states_actions.h:26
boost::msm::front::euml::And_< G1, G2 > bAnd
Definition: pick_place_states_actions.h:28
bActionSequence< boost::mpl::vector< ArmPowerOn, ArmFold >> ArmPowerOnFold
Action to take when starting folding arm before takeoff.
Definition: pick_place_states_actions.h:112
Check arm is enabled before picking objects.
Definition: arm_functors.h:74