SkidSteeringModelLimits.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #pragma once
  9. #include <AzCore/RTTI/TypeInfo.h>
  10. #include <AzCore/Serialization/SerializeContext.h>
  11. #include <VehicleDynamics/VehicleModelLimits.h>
  12. namespace ROS2Controllers::VehicleDynamics
  13. {
  14. //! A structure holding limits of skid-steering robot.
  15. class SkidSteeringModelLimits : public VehicleModelLimits
  16. {
  17. public:
  18. AZ_RTTI(SkidSteeringModelLimits, "{23420EFB-BB62-48C7-AD37-E50580A53C39}", VehicleModelLimits);
  19. SkidSteeringModelLimits() = default;
  20. SkidSteeringModelLimits(
  21. const float linearLimit, const float angularLimit, const float linearAcceleration, const float angularAcceleration);
  22. static void Reflect(AZ::ReflectContext* context);
  23. // VehicleModelLimits overrides
  24. VehicleInputs LimitState(const VehicleInputs& inputState) const;
  25. VehicleInputs GetMaximumState() const;
  26. float GetLinearAcceleration() const;
  27. float GetAngularAcceleration() const;
  28. float GetLinearSpeedLimit() const;
  29. float GetAngularSpeedLimit() const;
  30. private:
  31. float m_linearLimit = 2.0f; //!< [m/s] Maximum travel velocity.
  32. float m_angularLimit = 3.5f; //!< [Rad/s] Maximum rotation speed.
  33. float m_linearAcceleration = 3.5f; //!< [m*s^(-2)] Linear acceleration limit
  34. float m_angularAcceleration = 2.0f; //!< [rad*s^(-2)] Angular acceleration limit
  35. };
  36. } // namespace ROS2Controllers::VehicleDynamics