<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<tagfile>
  <compound kind="file">
    <name>ackermann_controller.cpp</name>
    <path>/tmp/ws/src/ackermann_controller/src/</path>
    <filename>ackermann__controller_8cpp</filename>
    <includes id="ackermann__controller_8h" name="ackermann_controller.h" local="no" imported="no">ackermann_controller/ackermann_controller.h</includes>
    <namespace>ackermann_controller</namespace>
  </compound>
  <compound kind="file">
    <name>ackermann_controller.h</name>
    <path>/tmp/ws/src/ackermann_controller/include/ackermann_controller/</path>
    <filename>ackermann__controller_8h</filename>
    <includes id="odometry_8h" name="odometry.h" local="no" imported="no">ackermann_controller/odometry.h</includes>
    <includes id="speed__limiter_8h" name="speed_limiter.h" local="no" imported="no">ackermann_controller/speed_limiter.h</includes>
    <includes id="joint_8h" name="joint.h" local="no" imported="no">ackermann_controller/joint.h</includes>
    <class kind="class">ackermann_controller::AckermannController</class>
    <class kind="struct">ackermann_controller::AckermannController::Commands</class>
    <namespace>ackermann_controller</namespace>
  </compound>
  <compound kind="file">
    <name>joint.h</name>
    <path>/tmp/ws/src/ackermann_controller/include/ackermann_controller/</path>
    <filename>joint_8h</filename>
    <class kind="struct">ackermann_controller::ActuatedJoint</class>
    <class kind="struct">ackermann_controller::ActuatedWheel</class>
    <class kind="struct">ackermann_controller::Joint</class>
    <class kind="struct">ackermann_controller::JointBase</class>
    <class kind="struct">ackermann_controller::Wheel</class>
    <class kind="struct">ackermann_controller::WheelBase</class>
    <namespace>ackermann_controller</namespace>
  </compound>
  <compound kind="file">
    <name>odometry.cpp</name>
    <path>/tmp/ws/src/ackermann_controller/src/</path>
    <filename>odometry_8cpp</filename>
    <includes id="odometry_8h" name="odometry.h" local="no" imported="no">ackermann_controller/odometry.h</includes>
    <namespace>ackermann_controller</namespace>
  </compound>
  <compound kind="file">
    <name>odometry.h</name>
    <path>/tmp/ws/src/ackermann_controller/include/ackermann_controller/</path>
    <filename>odometry_8h</filename>
    <includes id="joint_8h" name="joint.h" local="no" imported="no">ackermann_controller/joint.h</includes>
    <class kind="class">ackermann_controller::Odometry</class>
    <namespace>ackermann_controller</namespace>
  </compound>
  <compound kind="file">
    <name>speed_limiter.cpp</name>
    <path>/tmp/ws/src/ackermann_controller/src/</path>
    <filename>speed__limiter_8cpp</filename>
    <includes id="speed__limiter_8h" name="speed_limiter.h" local="no" imported="no">ackermann_controller/speed_limiter.h</includes>
    <namespace>ackermann_controller</namespace>
    <member kind="function">
      <type>T</type>
      <name>clamp</name>
      <anchorfile>speed__limiter_8cpp.html</anchorfile>
      <anchor>aacaa5293532b06cf5e062c8a7f97bb30</anchor>
      <arglist>(T x, T min, T max)</arglist>
    </member>
  </compound>
  <compound kind="file">
    <name>speed_limiter.h</name>
    <path>/tmp/ws/src/ackermann_controller/include/ackermann_controller/</path>
    <filename>speed__limiter_8h</filename>
    <class kind="class">ackermann_controller::SpeedLimiter</class>
    <namespace>ackermann_controller</namespace>
  </compound>
  <compound kind="class">
    <name>ackermann_controller::AckermannController</name>
    <filename>classackermann__controller_1_1AckermannController.html</filename>
    <base>MultiInterfaceController&lt; hardware_interface::VelocityJointInterface, hardware_interface::JointStateInterface, hardware_interface::PositionJointInterface &gt;</base>
    <class kind="struct">ackermann_controller::AckermannController::Commands</class>
    <member kind="function">
      <type></type>
      <name>AckermannController</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>a14d9c96ba310a0620ae3a0c395ee371e</anchor>
      <arglist>()</arglist>
    </member>
    <member kind="function">
      <type>bool</type>
      <name>init</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>acd6c42eebe7516564a2faab55a6bda52</anchor>
      <arglist>(hardware_interface::RobotHW *hw, ros::NodeHandle &amp;root_nh, ros::NodeHandle &amp;controller_nh)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>starting</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>add9235a4302af004eb1af8b97ab9bd48</anchor>
      <arglist>(const ros::Time &amp;time)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>stopping</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>a82283f18ce5f478c1cf7241e10351f97</anchor>
      <arglist>(const ros::Time &amp;)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>update</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>aedb9b6a5daa0d20683eb8f5d60d170f6</anchor>
      <arglist>(const ros::Time &amp;time, const ros::Duration &amp;period)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>brake</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>a7d75c3bd7bf0078c3d4d11a6f982811c</anchor>
      <arglist>()</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>cmdVelCallback</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>a242dd86d686cb3c139eb3add6c3b85ca</anchor>
      <arglist>(const geometry_msgs::Twist &amp;command)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>std::vector&lt; std::string &gt;</type>
      <name>getJointNames</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>a48afe734ed1c5a41bb1c702f2be9d365</anchor>
      <arglist>(ros::NodeHandle &amp;controller_nh, const std::string &amp;param)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>boost::shared_ptr&lt; urdf::ModelInterface &gt;</type>
      <name>getURDFModel</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>a035d31d067b2133cef4f6ac8c8521ec6</anchor>
      <arglist>(const ros::NodeHandle &amp;nh)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>bool</type>
      <name>initParams</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>a532bffe8d9b857c41a618679d3d95f91</anchor>
      <arglist>(ros::NodeHandle &amp;controller_nh)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>moveRobot</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>a9b7abe407b026feec903838ba2cae039</anchor>
      <arglist>(const ros::Time &amp;time, const ros::Duration &amp;period)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>setOdomPubFields</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>aeb7fcab931b1279ac286a91cbf386b7e</anchor>
      <arglist>(ros::NodeHandle &amp;root_nh, ros::NodeHandle &amp;controller_nh)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>updateOdometry</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>a2c16790c341ab0412d423673fad7fdca</anchor>
      <arglist>(const ros::Time &amp;time, const ros::Duration &amp;period)</arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::string</type>
      <name>base_frame_id_</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>adf42cdcbc00164d2aa81aa60d7217a7a</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::string</type>
      <name>base_link_</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>a0c7b5d93dc54be004d0712d749a5a2ca</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>double</type>
      <name>cmd_vel_timeout_</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>ab6e0df75983a4b7a438f7e3bdf2cf671</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>realtime_tools::RealtimeBuffer&lt; Commands &gt;</type>
      <name>command_</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>a1633fed49eaaf88e3246be8e50321bd3</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>Commands</type>
      <name>command_struct_</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>a14826dac5e6c482a09f554b37e17bbec</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>bool</type>
      <name>enable_odom_tf_</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>aa1ebb67a88f5aecead293af8ca1e4ba2</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>Commands</type>
      <name>last0_cmd_</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>ae19b29c4ee8190fa281bf4db0f12a3f0</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>Commands</type>
      <name>last1_cmd_</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>a2326d9d949dcc6e0af92350d59aa5b8f</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>ros::Time</type>
      <name>last_state_publish_time_</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>a203d2e576098d22b6d504fc05eb07dc9</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>ackermann_controller::SpeedLimiter</type>
      <name>limiter_</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>ac06aedc773f2c1355af3e89273bc8972</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::string</type>
      <name>name_</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>ac294f44a5748eec5c074eb78141ebe70</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::string</type>
      <name>odom_frame_id_</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>a680cdcd2780709535c2a064ad3a681f5</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>boost::shared_ptr&lt; realtime_tools::RealtimePublisher&lt; nav_msgs::Odometry &gt; &gt;</type>
      <name>odom_pub_</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>a53a7b05651d5f568ab6d30064f3c13f4</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>ackermann_controller::Odometry</type>
      <name>odometry_</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>a8748661cdf5bb90310192bb4b2488cac</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::vector&lt; Wheel &gt;</type>
      <name>odometry_joints_</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>ab68e661cef0f7351c501ff212c681335</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>bool</type>
      <name>open_loop_</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>adbbf1c8085c9eb143c88855fbca8d046</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>ros::Duration</type>
      <name>publish_period_</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>a523b41393a55d5c7940f9b93ba2b0327</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::vector&lt; ActuatedWheel &gt;</type>
      <name>spinning_joints_</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>a94055989b8ae147e3d92bc5a288f00ae</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>bool</type>
      <name>steering_angle_instead_of_angular_speed_</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>a2529cd18a14852a20d44489450d99e37</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::vector&lt; ActuatedJoint &gt;</type>
      <name>steering_joints_</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>a571178926834cd1d256a7223f5b8148b</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>ros::Subscriber</type>
      <name>sub_command_</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>a82cad57b3e6d34abde92dd6b6c848d4d</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>boost::shared_ptr&lt; realtime_tools::RealtimePublisher&lt; tf::tfMessage &gt; &gt;</type>
      <name>tf_odom_pub_</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>a59890ac643cbc5895b057b14a7b85107</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>int</type>
      <name>velocity_rolling_window_size_</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>a337a2183094f7a14ed621fd7bf59c425</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>double</type>
      <name>wheelbase_</name>
      <anchorfile>classackermann__controller_1_1AckermannController.html</anchorfile>
      <anchor>a3fbe3041c205c65f720ac4d94a6cc877</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>ackermann_controller::ActuatedJoint</name>
    <filename>structackermann__controller_1_1ActuatedJoint.html</filename>
    <base>ackermann_controller::JointBase</base>
    <member kind="function">
      <type></type>
      <name>ActuatedJoint</name>
      <anchorfile>structackermann__controller_1_1ActuatedJoint.html</anchorfile>
      <anchor>a672ffa5e6a4ccc84b590c65d2ef67b59</anchor>
      <arglist>(const std::string &amp;name, const std::string &amp;base_link_name, boost::shared_ptr&lt; urdf::ModelInterface &gt; model, hardware_interface::JointHandle handle)</arglist>
    </member>
    <member kind="function" virtualness="virtual">
      <type>virtual double</type>
      <name>getPosition</name>
      <anchorfile>structackermann__controller_1_1ActuatedJoint.html</anchorfile>
      <anchor>ad6b103c284f7b8d4434d6f2b630adfd7</anchor>
      <arglist>() const </arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>setCommand</name>
      <anchorfile>structackermann__controller_1_1ActuatedJoint.html</anchorfile>
      <anchor>a8f16ec13a888cb02fa1210a03e796a3a</anchor>
      <arglist>(double command)</arglist>
    </member>
    <member kind="variable">
      <type>hardware_interface::JointHandle</type>
      <name>handle_</name>
      <anchorfile>structackermann__controller_1_1ActuatedJoint.html</anchorfile>
      <anchor>a39206aaad6fb94c70e70bf89fa168ade</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>ackermann_controller::ActuatedWheel</name>
    <filename>structackermann__controller_1_1ActuatedWheel.html</filename>
    <base>ackermann_controller::ActuatedJoint</base>
    <base>ackermann_controller::WheelBase</base>
    <member kind="function">
      <type></type>
      <name>ActuatedWheel</name>
      <anchorfile>structackermann__controller_1_1ActuatedWheel.html</anchorfile>
      <anchor>a054aa827883ead485fc911160013b6ea</anchor>
      <arglist>(const std::string &amp;name, const std::string &amp;base_link_name, boost::shared_ptr&lt; urdf::ModelInterface &gt; model, hardware_interface::JointHandle handle)</arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>ackermann_controller::AckermannController::Commands</name>
    <filename>structackermann__controller_1_1AckermannController_1_1Commands.html</filename>
    <member kind="function">
      <type></type>
      <name>Commands</name>
      <anchorfile>structackermann__controller_1_1AckermannController_1_1Commands.html</anchorfile>
      <anchor>a259c9aa1bb4929f73b30a91216972496</anchor>
      <arglist>()</arglist>
    </member>
    <member kind="variable">
      <type>double</type>
      <name>ang</name>
      <anchorfile>structackermann__controller_1_1AckermannController_1_1Commands.html</anchorfile>
      <anchor>a2e2ca61f4f771aeb0abca32af6172fe5</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>double</type>
      <name>lin</name>
      <anchorfile>structackermann__controller_1_1AckermannController_1_1Commands.html</anchorfile>
      <anchor>a9c900fdc49e10f71552f82a3e815c0cd</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>ros::Time</type>
      <name>stamp</name>
      <anchorfile>structackermann__controller_1_1AckermannController_1_1Commands.html</anchorfile>
      <anchor>ae7778c9f70258782203c0a455a493b08</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>ackermann_controller::Joint</name>
    <filename>structackermann__controller_1_1Joint.html</filename>
    <base>ackermann_controller::JointBase</base>
    <member kind="function" virtualness="virtual">
      <type>virtual double</type>
      <name>getPosition</name>
      <anchorfile>structackermann__controller_1_1Joint.html</anchorfile>
      <anchor>a719961110fda735f835ecf42f157fd02</anchor>
      <arglist>() const </arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>Joint</name>
      <anchorfile>structackermann__controller_1_1Joint.html</anchorfile>
      <anchor>a1919ee4ef0c0409f395e8871bd1cb568</anchor>
      <arglist>(const std::string &amp;name, const std::string &amp;base_link_name, boost::shared_ptr&lt; urdf::ModelInterface &gt; model, hardware_interface::JointStateHandle handle)</arglist>
    </member>
    <member kind="variable">
      <type>hardware_interface::JointStateHandle</type>
      <name>handle_</name>
      <anchorfile>structackermann__controller_1_1Joint.html</anchorfile>
      <anchor>ae9f1d75b5bd3c1260b04a21836f3e3af</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>ackermann_controller::JointBase</name>
    <filename>structackermann__controller_1_1JointBase.html</filename>
    <member kind="function">
      <type></type>
      <name>JointBase</name>
      <anchorfile>structackermann__controller_1_1JointBase.html</anchorfile>
      <anchor>a4553682964597661a94a42028487e335</anchor>
      <arglist>(const std::string &amp;name, const std::string &amp;base_link_name, boost::shared_ptr&lt; urdf::ModelInterface &gt; model)</arglist>
    </member>
    <member kind="variable">
      <type>hardware_interface::JointStateHandle</type>
      <name>handle_</name>
      <anchorfile>structackermann__controller_1_1JointBase.html</anchorfile>
      <anchor>afda1ed457c1a8c5b6478170ca5233cce</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>boost::shared_ptr&lt; const urdf::Joint &gt;</type>
      <name>joint_</name>
      <anchorfile>structackermann__controller_1_1JointBase.html</anchorfile>
      <anchor>a93f962f9942a585b2c0dd3bb4a367089</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>double</type>
      <name>lateral_deviation_</name>
      <anchorfile>structackermann__controller_1_1JointBase.html</anchorfile>
      <anchor>a94ee0db8dc83046f812fe0579b5f998b</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>std::string</type>
      <name>name_</name>
      <anchorfile>structackermann__controller_1_1JointBase.html</anchorfile>
      <anchor>ac1701acb4a1c88057744f8c2afdd2b46</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>ackermann_controller::Odometry</name>
    <filename>classackermann__controller_1_1Odometry.html</filename>
    <member kind="typedef">
      <type>boost::function&lt; void(double, double)&gt;</type>
      <name>IntegrationFunction</name>
      <anchorfile>classackermann__controller_1_1Odometry.html</anchorfile>
      <anchor>a0b6459eb88d27dba125ef166fe5f7e04</anchor>
      <arglist></arglist>
    </member>
    <member kind="function">
      <type>double</type>
      <name>getAngular</name>
      <anchorfile>classackermann__controller_1_1Odometry.html</anchorfile>
      <anchor>a9d179b375b2e2d2cdfff30c1229fdf1b</anchor>
      <arglist>() const </arglist>
    </member>
    <member kind="function">
      <type>double</type>
      <name>getHeading</name>
      <anchorfile>classackermann__controller_1_1Odometry.html</anchorfile>
      <anchor>a368857ba8cfc9690e019d4844da33a0f</anchor>
      <arglist>() const </arglist>
    </member>
    <member kind="function">
      <type>double</type>
      <name>getLinear</name>
      <anchorfile>classackermann__controller_1_1Odometry.html</anchorfile>
      <anchor>a795b573bb297791311337eecec0764ec</anchor>
      <arglist>() const </arglist>
    </member>
    <member kind="function">
      <type>double</type>
      <name>getX</name>
      <anchorfile>classackermann__controller_1_1Odometry.html</anchorfile>
      <anchor>a5c8a496a083e9cbb15df959534ce5e86</anchor>
      <arglist>() const </arglist>
    </member>
    <member kind="function">
      <type>double</type>
      <name>getY</name>
      <anchorfile>classackermann__controller_1_1Odometry.html</anchorfile>
      <anchor>a5636e7292e9049349a90bd86e71f72b3</anchor>
      <arglist>() const </arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>init</name>
      <anchorfile>classackermann__controller_1_1Odometry.html</anchorfile>
      <anchor>ab61e4a69678a56897d5c2965716ea809</anchor>
      <arglist>(const ros::Time &amp;time)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>Odometry</name>
      <anchorfile>classackermann__controller_1_1Odometry.html</anchorfile>
      <anchor>af6a7f0c244b7ef88136ca7c269b73e7c</anchor>
      <arglist>(size_t velocity_rolling_window_size=10)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>setVelocityRollingWindowSize</name>
      <anchorfile>classackermann__controller_1_1Odometry.html</anchorfile>
      <anchor>a910a1c714fcec1ef6b8c1ea4ac657d2d</anchor>
      <arglist>(size_t velocity_rolling_window_size)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>setWheelbase</name>
      <anchorfile>classackermann__controller_1_1Odometry.html</anchorfile>
      <anchor>aeadf64ce9e6479490a358436bbd35355</anchor>
      <arglist>(double wheelbase)</arglist>
    </member>
    <member kind="function">
      <type>bool</type>
      <name>update</name>
      <anchorfile>classackermann__controller_1_1Odometry.html</anchorfile>
      <anchor>acb679f5dfe3d40866fe838434a620bb4</anchor>
      <arglist>(const std::vector&lt; ActuatedJoint &gt; &amp;steering_joints, const std::vector&lt; Wheel &gt; &amp;odometry_joints, const ros::Time &amp;time)</arglist>
    </member>
    <member kind="function">
      <type>void</type>
      <name>updateOpenLoop</name>
      <anchorfile>classackermann__controller_1_1Odometry.html</anchorfile>
      <anchor>adef11a49bf9345d3b31d570d4c971dad</anchor>
      <arglist>(double linear, double angular, const ros::Time &amp;time)</arglist>
    </member>
    <member kind="typedef" protection="private">
      <type>bacc::accumulator_set&lt; double, bacc::stats&lt; bacc::tag::rolling_mean &gt; &gt;</type>
      <name>RollingMeanAcc</name>
      <anchorfile>classackermann__controller_1_1Odometry.html</anchorfile>
      <anchor>a74bb9b7f21558efea5962063f5ccea6f</anchor>
      <arglist></arglist>
    </member>
    <member kind="typedef" protection="private">
      <type>bacc::tag::rolling_window</type>
      <name>RollingWindow</name>
      <anchorfile>classackermann__controller_1_1Odometry.html</anchorfile>
      <anchor>ab4bc75017377b6cd6e8fffe844f2e8b6</anchor>
      <arglist></arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>integrateExact</name>
      <anchorfile>classackermann__controller_1_1Odometry.html</anchorfile>
      <anchor>a36b0701d3c1bfb7bf9711e9f15b01170</anchor>
      <arglist>(double linear, double angular)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>integrateRungeKutta2</name>
      <anchorfile>classackermann__controller_1_1Odometry.html</anchorfile>
      <anchor>a6ff51fb7c14a6d684453cf2404f210ac</anchor>
      <arglist>(double linear, double angular)</arglist>
    </member>
    <member kind="function" protection="private">
      <type>void</type>
      <name>resetAccumulators</name>
      <anchorfile>classackermann__controller_1_1Odometry.html</anchorfile>
      <anchor>a35f162a321b1194b791eee7189e1dac2</anchor>
      <arglist>()</arglist>
    </member>
    <member kind="variable" protection="private">
      <type>double</type>
      <name>angular_</name>
      <anchorfile>classackermann__controller_1_1Odometry.html</anchorfile>
      <anchor>a07432acce7ddc8a6c86d06439a7370c3</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>RollingMeanAcc</type>
      <name>angular_acc_</name>
      <anchorfile>classackermann__controller_1_1Odometry.html</anchorfile>
      <anchor>a759521d6e908fc46552f948e60c9471d</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>double</type>
      <name>heading_</name>
      <anchorfile>classackermann__controller_1_1Odometry.html</anchorfile>
      <anchor>a9bde039842ef5c2a244b65a963190cb8</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>IntegrationFunction</type>
      <name>integrate_fun_</name>
      <anchorfile>classackermann__controller_1_1Odometry.html</anchorfile>
      <anchor>a9e96bee1483c544352130dd087a7eac4</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>double</type>
      <name>linear_</name>
      <anchorfile>classackermann__controller_1_1Odometry.html</anchorfile>
      <anchor>aeddcfeab4605563aa85af571981a84c4</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>RollingMeanAcc</type>
      <name>linear_acc_</name>
      <anchorfile>classackermann__controller_1_1Odometry.html</anchorfile>
      <anchor>a24b56f979788648092ffb519bedbb30e</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>ros::Time</type>
      <name>timestamp_</name>
      <anchorfile>classackermann__controller_1_1Odometry.html</anchorfile>
      <anchor>a3efe91ae756d31bdb23ee35fed5a0358</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>size_t</type>
      <name>velocity_rolling_window_size_</name>
      <anchorfile>classackermann__controller_1_1Odometry.html</anchorfile>
      <anchor>a06f2f7c9b9c27df3609853867152672a</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>double</type>
      <name>wheelbase_</name>
      <anchorfile>classackermann__controller_1_1Odometry.html</anchorfile>
      <anchor>a48398fd40b6d20a34b1b9de4f3ef6ab3</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>std::map&lt; std::string, double &gt;</type>
      <name>wheels_old_pos_</name>
      <anchorfile>classackermann__controller_1_1Odometry.html</anchorfile>
      <anchor>afbc452d83480051001e31536d7ab80c0</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>double</type>
      <name>x_</name>
      <anchorfile>classackermann__controller_1_1Odometry.html</anchorfile>
      <anchor>a44f9353b01f6b16b173d03c61419f403</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable" protection="private">
      <type>double</type>
      <name>y_</name>
      <anchorfile>classackermann__controller_1_1Odometry.html</anchorfile>
      <anchor>a28fb06c0012b92d127c0a8cd913ef996</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="class">
    <name>ackermann_controller::SpeedLimiter</name>
    <filename>classackermann__controller_1_1SpeedLimiter.html</filename>
    <member kind="function">
      <type>double</type>
      <name>limit</name>
      <anchorfile>classackermann__controller_1_1SpeedLimiter.html</anchorfile>
      <anchor>a6cc5b18c129e1eb999157c6d7133f45f</anchor>
      <arglist>(double &amp;v, double v0, double v1, double dt)</arglist>
    </member>
    <member kind="function">
      <type>double</type>
      <name>limit_acceleration</name>
      <anchorfile>classackermann__controller_1_1SpeedLimiter.html</anchorfile>
      <anchor>abe3703a181980cea46cecd1df7d33d83</anchor>
      <arglist>(double &amp;v, double v0, double dt)</arglist>
    </member>
    <member kind="function">
      <type>double</type>
      <name>limit_jerk</name>
      <anchorfile>classackermann__controller_1_1SpeedLimiter.html</anchorfile>
      <anchor>a1eed9d29398c727426e9a94eaaefcae6</anchor>
      <arglist>(double &amp;v, double v0, double v1, double dt)</arglist>
    </member>
    <member kind="function">
      <type>double</type>
      <name>limit_velocity</name>
      <anchorfile>classackermann__controller_1_1SpeedLimiter.html</anchorfile>
      <anchor>a1348d5aac6bb541ad14be7e89d036e5b</anchor>
      <arglist>(double &amp;v)</arglist>
    </member>
    <member kind="function">
      <type></type>
      <name>SpeedLimiter</name>
      <anchorfile>classackermann__controller_1_1SpeedLimiter.html</anchorfile>
      <anchor>a6f46b9993b397b3266ee47af99802b96</anchor>
      <arglist>(bool has_velocity_limits=false, bool has_acceleration_limits=false, bool has_deceleration_limits=false, bool has_jerk_limits=false, double min_velocity=0.0, double max_velocity=0.0, double min_acceleration=0.0, double max_acceleration=0.0, double min_deceleration=0.0, double max_deceleration=0.0, double min_jerk=0.0, double max_jerk=0.0)</arglist>
    </member>
    <member kind="variable">
      <type>bool</type>
      <name>has_acceleration_limits</name>
      <anchorfile>classackermann__controller_1_1SpeedLimiter.html</anchorfile>
      <anchor>a17423f0351a6e331fb19f13178e8f522</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>bool</type>
      <name>has_deceleration_limits</name>
      <anchorfile>classackermann__controller_1_1SpeedLimiter.html</anchorfile>
      <anchor>a1351c7e8432142d89c5d33f3e2fa7867</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>bool</type>
      <name>has_jerk_limits</name>
      <anchorfile>classackermann__controller_1_1SpeedLimiter.html</anchorfile>
      <anchor>a27be8d5ff6098036d8a9419e00a38a97</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>bool</type>
      <name>has_velocity_limits</name>
      <anchorfile>classackermann__controller_1_1SpeedLimiter.html</anchorfile>
      <anchor>a238cb71a24b062485a4b76a89cf17230</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>double</type>
      <name>max_acceleration</name>
      <anchorfile>classackermann__controller_1_1SpeedLimiter.html</anchorfile>
      <anchor>a8f6517cb9fea354f66e63ab755f5c1b8</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>double</type>
      <name>max_deceleration</name>
      <anchorfile>classackermann__controller_1_1SpeedLimiter.html</anchorfile>
      <anchor>aaf3e3485c89a8aead2415a627619737a</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>double</type>
      <name>max_jerk</name>
      <anchorfile>classackermann__controller_1_1SpeedLimiter.html</anchorfile>
      <anchor>a72b8dde1e0de84480f491296df7e2e67</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>double</type>
      <name>max_velocity</name>
      <anchorfile>classackermann__controller_1_1SpeedLimiter.html</anchorfile>
      <anchor>a06efe2e6783fd351c2f301ad94b406f7</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>double</type>
      <name>min_acceleration</name>
      <anchorfile>classackermann__controller_1_1SpeedLimiter.html</anchorfile>
      <anchor>acdb450104e43613ffd74ebac6af777a3</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>double</type>
      <name>min_deceleration</name>
      <anchorfile>classackermann__controller_1_1SpeedLimiter.html</anchorfile>
      <anchor>abd1d840de116fff014e73a8ce4c1de70</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>double</type>
      <name>min_jerk</name>
      <anchorfile>classackermann__controller_1_1SpeedLimiter.html</anchorfile>
      <anchor>a25dc44b1789167e9a6c68d42fb885eeb</anchor>
      <arglist></arglist>
    </member>
    <member kind="variable">
      <type>double</type>
      <name>min_velocity</name>
      <anchorfile>classackermann__controller_1_1SpeedLimiter.html</anchorfile>
      <anchor>ae58e9050675c1352daf4170df14712ca</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>ackermann_controller::Wheel</name>
    <filename>structackermann__controller_1_1Wheel.html</filename>
    <base>ackermann_controller::Joint</base>
    <base>ackermann_controller::WheelBase</base>
    <member kind="function">
      <type></type>
      <name>Wheel</name>
      <anchorfile>structackermann__controller_1_1Wheel.html</anchorfile>
      <anchor>a2faff2aaf31ceb1f2f631cbaf24c02c8</anchor>
      <arglist>(const std::string &amp;name, const std::string &amp;base_link_name, boost::shared_ptr&lt; urdf::ModelInterface &gt; model, hardware_interface::JointStateHandle handle)</arglist>
    </member>
  </compound>
  <compound kind="struct">
    <name>ackermann_controller::WheelBase</name>
    <filename>structackermann__controller_1_1WheelBase.html</filename>
    <member kind="function">
      <type></type>
      <name>WheelBase</name>
      <anchorfile>structackermann__controller_1_1WheelBase.html</anchorfile>
      <anchor>adb94469be4beba57edac16609c5ab411</anchor>
      <arglist>(const std::string &amp;child_link_name, boost::shared_ptr&lt; urdf::ModelInterface &gt; model)</arglist>
    </member>
    <member kind="variable">
      <type>double</type>
      <name>radius_</name>
      <anchorfile>structackermann__controller_1_1WheelBase.html</anchorfile>
      <anchor>a58989cc73ea0f67733688f45091e698a</anchor>
      <arglist></arglist>
    </member>
  </compound>
  <compound kind="namespace">
    <name>ackermann_controller</name>
    <filename>namespaceackermann__controller.html</filename>
    <class kind="class">ackermann_controller::AckermannController</class>
    <class kind="struct">ackermann_controller::ActuatedJoint</class>
    <class kind="struct">ackermann_controller::ActuatedWheel</class>
    <class kind="struct">ackermann_controller::Joint</class>
    <class kind="struct">ackermann_controller::JointBase</class>
    <class kind="class">ackermann_controller::Odometry</class>
    <class kind="class">ackermann_controller::SpeedLimiter</class>
    <class kind="struct">ackermann_controller::Wheel</class>
    <class kind="struct">ackermann_controller::WheelBase</class>
  </compound>
</tagfile>
