<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<tagfile>
  <compound kind="file">
    <name>bullet_solver.cpp</name>
    <path>/tmp/ws/src/rm_controllers/rm_gimbal_controllers/src/</path>
    <filename>bullet__solver_8cpp.html</filename>
    <includes id="bullet__solver_8h" name="bullet_solver.h" local="yes" imported="no">rm_gimbal_controllers/bullet_solver.h</includes>
    <namespace>rm_gimbal_controllers</namespace>
  </compound>
  <compound kind="file">
    <name>bullet_solver.h</name>
    <path>/tmp/ws/src/rm_controllers/rm_gimbal_controllers/include/rm_gimbal_controllers/</path>
    <filename>bullet__solver_8h.html</filename>
    <class kind="class">rm_gimbal_controllers::BulletSolver</class>
    <class kind="struct">rm_gimbal_controllers::Config</class>
    <namespace>rm_gimbal_controllers</namespace>
  </compound>
  <compound kind="file">
    <name>gimbal_base.cpp</name>
    <path>/tmp/ws/src/rm_controllers/rm_gimbal_controllers/src/</path>
    <filename>gimbal__base_8cpp.html</filename>
    <includes id="gimbal__base_8h" name="gimbal_base.h" local="yes" imported="no">rm_gimbal_controllers/gimbal_base.h</includes>
    <namespace>rm_gimbal_controllers</namespace>
  </compound>
  <compound kind="file">
    <name>gimbal_base.h</name>
    <path>/tmp/ws/src/rm_controllers/rm_gimbal_controllers/include/rm_gimbal_controllers/</path>
    <filename>gimbal__base_8h.html</filename>
    <includes id="bullet__solver_8h" name="bullet_solver.h" local="no" imported="no">rm_gimbal_controllers/bullet_solver.h</includes>
    <class kind="class">rm_gimbal_controllers::ChassisVel</class>
    <class kind="class">rm_gimbal_controllers::Controller</class>
    <class kind="struct">rm_gimbal_controllers::GimbalConfig</class>
    <namespace>rm_gimbal_controllers</namespace>
  </compound>
  <compound kind="class">
    <name>rm_gimbal_controllers::BulletSolver</name>
    <filename>classrm__gimbal__controllers_1_1BulletSolver.html</filename>
    <member kind="function">
      <type>void</type>
      <name>bulletModelPub</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>ac534c66048e1ace8ecc3d9a2a32f3be9</anchor>
      <arglist>(const geometry_msgs::TransformStamped &amp;odom2pitch, const ros::Time &amp;time)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>BulletSolver</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>a2765cf989ab65c8ac706e0f920393b0a</anchor>
      <arglist>(ros::NodeHandle &amp;controller_nh)</arglist>
    </member>
    <member kind="function">
      <type>double</type>
      <name>getGimbalError</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>a7f2544818b353c9c31d50d8bda827f98</anchor>
      <arglist>(geometry_msgs::Point pos, geometry_msgs::Vector3 vel, double yaw, double v_yaw, double r1, double r2, double dz, int armors_num, double yaw_real, double pitch_real, double bullet_speed)</arglist>
    </member>
    <member kind="function">
      <type>double</type>
      <name>getPitch</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>a93daaed51ef69d4411204d023df246d6</anchor>
      <arglist>() const</arglist>
    </member>
    <member kind="function">
      <type>double</type>
      <name>getResistanceCoefficient</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>ade1bf99f8252a28afe31d04ddda9923d</anchor>
      <arglist>(double bullet_speed) const</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>getSelectedArmorPosAndVel</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>a3e604edca7e438e32b928e9b96f5e84b</anchor>
      <arglist>(geometry_msgs::Point &amp;armor_pos, geometry_msgs::Vector3 &amp;armor_vel, geometry_msgs::Point pos, geometry_msgs::Vector3 vel, double yaw, double v_yaw, double r1, double r2, double dz, int armors_num)</arglist>
    </member>
    <member kind="function">
      <type>double</type>
      <name>getYaw</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>ac4383c51df74107d199fbdcd80b39213</anchor>
      <arglist>() const</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>identifiedTargetChangeCB</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>aebdfdca6fd28b6de33e7740ad4900415</anchor>
      <arglist>(const std_msgs::BoolConstPtr &amp;msg)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>judgeShootBeforehand</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>aa6c4671b30f414672120787a69f727cd</anchor>
      <arglist>(const ros::Time &amp;time)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>reconfigCB</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>a6637caa580d0e9c698c9c4314ce195ea</anchor>
      <arglist>(rm_gimbal_controllers::BulletSolverConfig &amp;config, uint32_t)</arglist>
    </member>
    <member kind="function">
      <type>bool</type>
      <name>solve</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>a038e0a3d61bd7ffe30c2e5328a46dc54</anchor>
      <arglist>(geometry_msgs::Point pos, geometry_msgs::Vector3 vel, double bullet_speed, double yaw, double v_yaw, double r1, double r2, double dz, int armors_num, double chassis_angular_vel_z)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>~BulletSolver</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>afc46a6c9801de5bd5d6bd2e61c864ae4</anchor>
      <arglist>()=default</arglist>
    </member>
    <member kind="variable" protection="private">
      <type>double</type>
      <name>bullet_speed_</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>af81e72a22bda0193fbe29c0d980be2bd</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>Config</type>
      <name>config_</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>ac9490159256e794d6da50298404c8a4a</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>realtime_tools::RealtimeBuffer&lt; Config &gt;</type>
      <name>config_rt_buffer_</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>ac4e718c72a996cb9a12232bd1623c4ce</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>int</type>
      <name>count_</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>a0bf9c085c5c120988bc064b23bb72830</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>dynamic_reconfigure::Server&lt; rm_gimbal_controllers::BulletSolverConfig &gt; *</type>
      <name>d_srv_</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>a6b4b0992049dbef1438dbb347d9d7ff8</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>bool</type>
      <name>dynamic_reconfig_initialized_</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>aba1ddf50cf6ec8b658093a8adcdae2ba</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>double</type>
      <name>fly_time_</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>a1241ed2367ef8558aa545d246b709ff9</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::shared_ptr&lt; realtime_tools::RealtimePublisher&lt; std_msgs::Float64 &gt; &gt;</type>
      <name>fly_time_pub_</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>af1a053f77ede933dfd471aefd76dfc5b</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>bool</type>
      <name>identified_target_change_</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>a6cddff438de8b8d644899ef60e1bba96</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>ros::Subscriber</type>
      <name>identified_target_change_sub_</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>a09a2a2627018e7acb0288131ba73cb97</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>bool</type>
      <name>is_in_delay_before_switch_</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>ac806c70a4ed8ce69edc79e10dd1c88a0</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>visualization_msgs::Marker</type>
      <name>marker_desire_</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>aba0f43d2cfc611d178fa0206fce90d11</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>visualization_msgs::Marker</type>
      <name>marker_real_</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>ae23813c99e7b4a2b0b1956d4165683e4</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>double</type>
      <name>max_track_target_vel_</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>a0a1936f6b7f21433efd87854d901d03a</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>double</type>
      <name>output_pitch_</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>add80589fb8980526fa05fedfcb267d24</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>double</type>
      <name>output_yaw_</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>a3c49a58d4ea1373aa4dc1279b80c4eab</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::shared_ptr&lt; realtime_tools::RealtimePublisher&lt; visualization_msgs::Marker &gt; &gt;</type>
      <name>path_desire_pub_</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>ae00b6d1838655e4e094f89eb6b81e484</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::shared_ptr&lt; realtime_tools::RealtimePublisher&lt; visualization_msgs::Marker &gt; &gt;</type>
      <name>path_real_pub_</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>af3c233d16591f4efa6be3d3d07592593</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>double</type>
      <name>resistance_coff_</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>acfd40b7de546cd7ea3eb3ce3a4318ed1</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>int</type>
      <name>selected_armor_</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>a9e9b618c300f521237212d25faa6c097</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>int</type>
      <name>shoot_beforehand_cmd_</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>a2aee1fa0c0834b8eeb454073ff5a03d0</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::shared_ptr&lt; realtime_tools::RealtimePublisher&lt; rm_msgs::ShootBeforehandCmd &gt; &gt;</type>
      <name>shoot_beforehand_cmd_pub_</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>a0a00b961dfde57fd3828a78420cee79e</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>ros::Time</type>
      <name>switch_armor_time_</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>ac79ab3b8f488b9fd892979d822c0abdd</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>geometry_msgs::Point</type>
      <name>target_pos_</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>a11fcbeaa53a5e6d59c3f083d234446f2</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>bool</type>
      <name>track_target_</name>
      <anchorfile>classrm__gimbal__controllers_1_1BulletSolver.html</anchorfile>
      <anchor>ac0d6ddd5f0a5f22186d19f7cd7b52976</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>rm_gimbal_controllers::ChassisVel</name>
    <filename>classrm__gimbal__controllers_1_1ChassisVel.html</filename>
    <member kind="function">
      <type></type>
      <name>ChassisVel</name>
      <anchorfile>classrm__gimbal__controllers_1_1ChassisVel.html</anchorfile>
      <anchor>a04c80d0adb919a0d5bb4e614bc7ff99a</anchor>
      <arglist>(const ros::NodeHandle &amp;nh)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>update</name>
      <anchorfile>classrm__gimbal__controllers_1_1ChassisVel.html</anchorfile>
      <anchor>a4733f81d33396c6d2a0455c4e980656e</anchor>
      <arglist>(double linear_vel[3], double angular_vel[3], double period)</arglist>
    </member>
    <member kind="variable">
      <type>std::shared_ptr&lt; Vector3WithFilter&lt; double &gt; &gt;</type>
      <name>angular_</name>
      <anchorfile>classrm__gimbal__controllers_1_1ChassisVel.html</anchorfile>
      <anchor>a14f94930411f253e6eeacdbddb2552a8</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::shared_ptr&lt; Vector3WithFilter&lt; double &gt; &gt;</type>
      <name>linear_</name>
      <anchorfile>classrm__gimbal__controllers_1_1ChassisVel.html</anchorfile>
      <anchor>abc188013ffb41bd8793f015eb043d7db</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::shared_ptr&lt; realtime_tools::RealtimePublisher&lt; geometry_msgs::Twist &gt; &gt;</type>
      <name>filtered_pub_</name>
      <anchorfile>classrm__gimbal__controllers_1_1ChassisVel.html</anchorfile>
      <anchor>a72dab4e2cc1d902cc542e5ec879807a3</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>bool</type>
      <name>is_debug_</name>
      <anchorfile>classrm__gimbal__controllers_1_1ChassisVel.html</anchorfile>
      <anchor>a3bb73f869347b2beae0f2b156106528c</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>int</type>
      <name>loop_count_</name>
      <anchorfile>classrm__gimbal__controllers_1_1ChassisVel.html</anchorfile>
      <anchor>a099e000fb46679470abfd0d1494871e5</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::shared_ptr&lt; realtime_tools::RealtimePublisher&lt; geometry_msgs::Twist &gt; &gt;</type>
      <name>real_pub_</name>
      <anchorfile>classrm__gimbal__controllers_1_1ChassisVel.html</anchorfile>
      <anchor>a8262cdcd191f8a3cc19e75238ba42948</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>rm_gimbal_controllers::Config</name>
    <filename>structrm__gimbal__controllers_1_1Config.html</filename>
    <member kind="variable">
      <type>double</type>
      <name>ban_shoot_duration</name>
      <anchorfile>structrm__gimbal__controllers_1_1Config.html</anchorfile>
      <anchor>a1f3d9fbad22294c3c0794dcb4bbf317b</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>double</type>
      <name>delay</name>
      <anchorfile>structrm__gimbal__controllers_1_1Config.html</anchorfile>
      <anchor>a7939dbc5b2bf1bb0c4651d09a31a9387</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>double</type>
      <name>dt</name>
      <anchorfile>structrm__gimbal__controllers_1_1Config.html</anchorfile>
      <anchor>acaa000f3a22c149d2529cdbcc3b8d418</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>double</type>
      <name>g</name>
      <anchorfile>structrm__gimbal__controllers_1_1Config.html</anchorfile>
      <anchor>a828c0fa05451306721b73b8ed021eeba</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>double</type>
      <name>gimbal_switch_duration</name>
      <anchorfile>structrm__gimbal__controllers_1_1Config.html</anchorfile>
      <anchor>aee032ca37f3888990d38cbe16b0b2313</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>double</type>
      <name>max_chassis_angular_vel</name>
      <anchorfile>structrm__gimbal__controllers_1_1Config.html</anchorfile>
      <anchor>a4bd83a4a43dbfeaef70011f80d33d6f1</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>double</type>
      <name>max_switch_angle</name>
      <anchorfile>structrm__gimbal__controllers_1_1Config.html</anchorfile>
      <anchor>a192ec77a115f7e2b588efd0a87feeab1</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>int</type>
      <name>min_fit_switch_count</name>
      <anchorfile>structrm__gimbal__controllers_1_1Config.html</anchorfile>
      <anchor>a00a8b6899634653b6a6a88b4f1089d8b</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>double</type>
      <name>min_switch_angle</name>
      <anchorfile>structrm__gimbal__controllers_1_1Config.html</anchorfile>
      <anchor>af8b80d487390baf0b47ad8005c6bf217</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>double</type>
      <name>resistance_coff_qd_10</name>
      <anchorfile>structrm__gimbal__controllers_1_1Config.html</anchorfile>
      <anchor>aa3c60a77234691575a48405c6981ac1b</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>double</type>
      <name>resistance_coff_qd_15</name>
      <anchorfile>structrm__gimbal__controllers_1_1Config.html</anchorfile>
      <anchor>a49669a6ceddda0d50c448e7476cdd170</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>double</type>
      <name>resistance_coff_qd_16</name>
      <anchorfile>structrm__gimbal__controllers_1_1Config.html</anchorfile>
      <anchor>ad80e3e49605196405769bc33cc670627</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>double</type>
      <name>resistance_coff_qd_18</name>
      <anchorfile>structrm__gimbal__controllers_1_1Config.html</anchorfile>
      <anchor>afed440d89320972bc0f903505efab494</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>double</type>
      <name>resistance_coff_qd_30</name>
      <anchorfile>structrm__gimbal__controllers_1_1Config.html</anchorfile>
      <anchor>ad7c5a01c4679cee336758501bae4c6d2</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>double</type>
      <name>timeout</name>
      <anchorfile>structrm__gimbal__controllers_1_1Config.html</anchorfile>
      <anchor>a823d5fb323a07bb9fd3e63b7cf79c680</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>double</type>
      <name>track_move_target_delay</name>
      <anchorfile>structrm__gimbal__controllers_1_1Config.html</anchorfile>
      <anchor>a660b17f115379827ded5c251cbfcc621</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>double</type>
      <name>track_rotate_target_delay</name>
      <anchorfile>structrm__gimbal__controllers_1_1Config.html</anchorfile>
      <anchor>a4a51a52f8a264fa3d2a4e43b86d6f181</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>rm_gimbal_controllers::Controller</name>
    <filename>classrm__gimbal__controllers_1_1Controller.html</filename>
    <base>MultiInterfaceController&lt; rm_control::RobotStateInterface, hardware_interface::ImuSensorInterface, hardware_interface::EffortJointInterface &gt;</base>
    <member kind="function">
      <type></type>
      <name>Controller</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>aa4b22e2e3d2b6263c167cdc4231d6711</anchor>
      <arglist>()=default</arglist>
    </member>
    <member kind="function">
      <type>bool</type>
      <name>init</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a74c7125a9d324e42fc2a9f2394792575</anchor>
      <arglist>(hardware_interface::RobotHW *robot_hw, ros::NodeHandle &amp;root_nh, ros::NodeHandle &amp;controller_nh) override</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>setDes</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a948a1a5eb069b4f1d5251b27a0a1c2f5</anchor>
      <arglist>(const ros::Time &amp;time, double yaw_des, double pitch_des)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>starting</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a55efdce41b48ede7facdd76e3a2b39a0</anchor>
      <arglist>(const ros::Time &amp;time) override</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>update</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a486e6bf7df505a427487a1d5df1bc016</anchor>
      <arglist>(const ros::Time &amp;time, const ros::Duration &amp;period) override</arglist>
    </member>
    <member kind="enumvalue" protection="private">
      <name>RATE</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a7db1a8a9dcc4041809416e7589b3e4c6a4f70dd26c65441a61c825d4b563c119b</anchor>
      <arglist></arglist>
    </member>
    <member kind="enumvalue" protection="private">
      <name>TRACK</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a7db1a8a9dcc4041809416e7589b3e4c6ab709396c483e32c4580887c7e0147af6</anchor>
      <arglist></arglist>
    </member>
    <member kind="enumvalue" protection="private">
      <name>DIRECT</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a7db1a8a9dcc4041809416e7589b3e4c6a66eaaacac136dc6ccc55c0b132c82f22</anchor>
      <arglist></arglist>
    </member>
    <member kind="enumvalue" protection="private">
      <name>DIRECT</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a7db1a8a9dcc4041809416e7589b3e4c6a66eaaacac136dc6ccc55c0b132c82f22</anchor>
      <arglist></arglist>
    </member>
    <member kind="enumvalue" protection="private">
      <name>RATE</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a7db1a8a9dcc4041809416e7589b3e4c6a4f70dd26c65441a61c825d4b563c119b</anchor>
      <arglist></arglist>
    </member>
    <member kind="enumvalue" protection="private">
      <name>TRACK</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a7db1a8a9dcc4041809416e7589b3e4c6ab709396c483e32c4580887c7e0147af6</anchor>
      <arglist></arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>commandCB</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>ae397f8dd91f68dd3b0a9daa0d6252881</anchor>
      <arglist>(const rm_msgs::GimbalCmdConstPtr &amp;msg)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>direct</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a76d87c794bcaaff0609db215defe1000</anchor>
      <arglist>(const ros::Time &amp;time)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>double</type>
      <name>feedForward</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a8efdd2f0cbab5b76f6c25c34df6f9f6e</anchor>
      <arglist>(const ros::Time &amp;time)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>moveJoint</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a4c58398b9d9b8f347d7e63ba60a54ede</anchor>
      <arglist>(const ros::Time &amp;time, const ros::Duration &amp;period)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>rate</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>aa8b23f563155481d0598b62bc3b54dee</anchor>
      <arglist>(const ros::Time &amp;time, const ros::Duration &amp;period)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>reconfigCB</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a67b2939e9362168a50c81cd8dcb6f968</anchor>
      <arglist>(rm_gimbal_controllers::GimbalBaseConfig &amp;config, uint32_t)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>bool</type>
      <name>setDesIntoLimit</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a908b75d3b1c4585a1f19965ee75388c6</anchor>
      <arglist>(double &amp;real_des, double current_des, double base2gimbal_current_des, const urdf::JointConstSharedPtr &amp;joint_urdf)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>track</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a9a5b68c6b937f7aae19efa7a75823e80</anchor>
      <arglist>(const ros::Time &amp;time)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>trackCB</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a22bd93c19f50ca62933b75b9f1c7d81f</anchor>
      <arglist>(const rm_msgs::TrackDataConstPtr &amp;msg)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>updateChassisVel</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>af702dab145e31c39fda024b6ea9f2d14</anchor>
      <arglist>()</arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::shared_ptr&lt; BulletSolver &gt;</type>
      <name>bullet_solver_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a2725f03cf5ff99e953a7bad906f2c5a6</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::shared_ptr&lt; ChassisVel &gt;</type>
      <name>chassis_vel_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a37ed44ceda24b37ca2f77333c8eed135</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>rm_msgs::GimbalCmd</type>
      <name>cmd_gimbal_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a36b49918a1dd44db5efc9f0b75f2d1e2</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>ros::Subscriber</type>
      <name>cmd_gimbal_sub_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a65db2f25f0e3ff8a079ac2876f9c9a00</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>realtime_tools::RealtimeBuffer&lt; rm_msgs::GimbalCmd &gt;</type>
      <name>cmd_rt_buffer_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a3535da0850b6dd0362b95ab61298bb14</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>GimbalConfig</type>
      <name>config_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a18fde0b508c5f95dcbe7e7b41aaa3d49</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>realtime_tools::RealtimeBuffer&lt; GimbalConfig &gt;</type>
      <name>config_rt_buffer_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a698114645b298d518ffd4f18e6e6e598</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>effort_controllers::JointVelocityController</type>
      <name>ctrl_pitch_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a5dc973ddf25b65283afedcea43259e63</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>effort_controllers::JointVelocityController</type>
      <name>ctrl_yaw_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>adf7cedd034f4e02ea2932334e7efe3c8</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>dynamic_reconfigure::Server&lt; rm_gimbal_controllers::GimbalBaseConfig &gt; *</type>
      <name>d_srv_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a86c653edc07d8c50d146ac86c87fde31</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>rm_msgs::TrackData</type>
      <name>data_track_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a90684481b3c18800bc02929d832e7393</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>ros::Subscriber</type>
      <name>data_track_sub_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>aece44ef114acd512213e0a1dd8185620</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>bool</type>
      <name>dynamic_reconfig_initialized_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>ac8e839fe2e1760640e5184a51c74b429</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>bool</type>
      <name>enable_gravity_compensation_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a058f25dc25cf90f8e30fe6aa42a24d3f</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::shared_ptr&lt; realtime_tools::RealtimePublisher&lt; rm_msgs::GimbalDesError &gt; &gt;</type>
      <name>error_pub_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a5b1c6239c109932a7e3b83c8c622f2e8</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::string</type>
      <name>gimbal_des_frame_id_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a1a495a7d65835d21228e520d83a788b5</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>double</type>
      <name>gravity_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>ab235e085afc41e52ff062c703a47d941</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>bool</type>
      <name>has_imu_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a32c86d022354efff109689e5360e0cbd</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::string</type>
      <name>imu_name_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a06c0f4bc68c5fb65826a649c612b384a</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>hardware_interface::ImuSensorHandle</type>
      <name>imu_sensor_handle_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a0dfd75c7d294f30dd91e8ed1d7b24e87</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>geometry_msgs::TransformStamped</type>
      <name>last_odom2base_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a520eddaec0f4528a6e46d8685fea6e62</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>ros::Time</type>
      <name>last_publish_time_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>abfde704af17c0c85228679a0bf724974</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>int</type>
      <name>loop_count_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a21b9be18437674bf6b8d41ba408a7461</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>geometry_msgs::Vector3</type>
      <name>mass_origin_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>aa8f659736ec740788ec09ba99ead9f99</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>geometry_msgs::TransformStamped</type>
      <name>odom2base_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a8e1a86698ab3080062cc82e28ee06899</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>geometry_msgs::TransformStamped</type>
      <name>odom2gimbal_des_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a0b31edca0064e53d95b01355075c9de2</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>geometry_msgs::TransformStamped</type>
      <name>odom2pitch_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a90700bca83a64932f50a505f67dea58e</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>control_toolbox::Pid</type>
      <name>pid_pitch_pos_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a30fa73812888a7ec0a2485671b2e614f</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>control_toolbox::Pid</type>
      <name>pid_yaw_pos_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a7433c8cf5726cf3458ad91b5e111d0f9</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>bool</type>
      <name>pitch_des_in_limit_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a37a3bb330380bb8f00d3f7512290dc9b</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>urdf::JointConstSharedPtr</type>
      <name>pitch_joint_urdf_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a4705712c112cb5f89a9068d9f667477e</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::unique_ptr&lt; realtime_tools::RealtimePublisher&lt; rm_msgs::GimbalPosState &gt; &gt;</type>
      <name>pitch_pos_state_pub_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a4224ea5ecab7e9c88cf0b1fc7c696171</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>double</type>
      <name>publish_rate_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>aafaf96461b7c9b5d78350f82f419bcbd</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>RampFilter&lt; double &gt; *</type>
      <name>ramp_rate_pitch_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>aee3c50708eeaea8797d45b23aa97e78e</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>RampFilter&lt; double &gt; *</type>
      <name>ramp_rate_yaw_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a97facec84691bab7e04dd1378bda6859</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>rm_control::RobotStateHandle</type>
      <name>robot_state_handle_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>aa4e3eca5dd73e5f3d52cba1155df720c</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>int</type>
      <name>state_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a281d474f56c3d73b4fd3c849e4f2ae49</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>bool</type>
      <name>state_changed_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a178e7761c9cc7088cb17b95df3bdbf66</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>realtime_tools::RealtimeBuffer&lt; rm_msgs::TrackData &gt;</type>
      <name>track_rt_buffer_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a9c02c2f9c8f586f9e14d2cf45418bfc6</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>bool</type>
      <name>yaw_des_in_limit_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>ab874cc08252f8c848eb68a03b5911f53</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>urdf::JointConstSharedPtr</type>
      <name>yaw_joint_urdf_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>ad3bddb9a2259f30c234cf5de94bf97d3</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::unique_ptr&lt; realtime_tools::RealtimePublisher&lt; rm_msgs::GimbalPosState &gt; &gt;</type>
      <name>yaw_pos_state_pub_</name>
      <anchorfile>classrm__gimbal__controllers_1_1Controller.html</anchorfile>
      <anchor>a0cbd3ecf40176999b5cedfd55da388ad</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>rm_gimbal_controllers::GimbalConfig</name>
    <filename>structrm__gimbal__controllers_1_1GimbalConfig.html</filename>
    <member kind="variable">
      <type>double</type>
      <name>accel_pitch_</name>
      <anchorfile>structrm__gimbal__controllers_1_1GimbalConfig.html</anchorfile>
      <anchor>ad27a516dc9e40d7e0b7e31c0fd88e299</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>double</type>
      <name>accel_yaw_</name>
      <anchorfile>structrm__gimbal__controllers_1_1GimbalConfig.html</anchorfile>
      <anchor>a061482b52d9f241ecfb3c2ba157e1301</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>double</type>
      <name>k_chassis_vel_</name>
      <anchorfile>structrm__gimbal__controllers_1_1GimbalConfig.html</anchorfile>
      <anchor>ac5891c638299658af6d25d617345f4f3</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>double</type>
      <name>pitch_k_v_</name>
      <anchorfile>structrm__gimbal__controllers_1_1GimbalConfig.html</anchorfile>
      <anchor>ac2a2bc047926fd6bb3daaa8633bf6f81</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>double</type>
      <name>yaw_k_v_</name>
      <anchorfile>structrm__gimbal__controllers_1_1GimbalConfig.html</anchorfile>
      <anchor>a9704bca0c516bbb1c130770cb9c4e54b</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="namespace">
    <name>rm_gimbal_controllers</name>
    <filename>namespacerm__gimbal__controllers.html</filename>
    <class kind="class">rm_gimbal_controllers::BulletSolver</class>
    <class kind="class">rm_gimbal_controllers::ChassisVel</class>
    <class kind="struct">rm_gimbal_controllers::Config</class>
    <class kind="class">rm_gimbal_controllers::Controller</class>
    <class kind="struct">rm_gimbal_controllers::GimbalConfig</class>
  </compound>
</tagfile>
