TinyRobotics
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Protected Attributes | List of all members
AirPlane< T, MotorMT, ServoMT > Class Template Reference

Simple fixed-wing airplane model with motor, rudder, elevator, and aileron control. More...

#include <AirPlane.h>

Inheritance diagram for AirPlane< T, MotorMT, ServoMT >:
Inheritance graph
[legend]
Collaboration diagram for AirPlane< T, MotorMT, ServoMT >:
Collaboration graph
[legend]

Public Types

enum  ControlSurface {
  Rudder = 0 , Elevator = 1 , AileronLeft = 2 , AileronRight = 3 ,
  NumSurfaces = 4
}
 

Public Member Functions

void setPinsMotor (int in1, int in2)
 
void setPinRudder (int pin)
 
void setPinElevator (int pin)
 
void setPinsAilerons (int leftPin, int rightPin)
 
void setPinServo (ControlSurface surface, int pin)
 
void setThrottle (int percent)
 
void setRudder (int angle)
 
void setElevator (int angle)
 
void setAilerons (int leftAngle, int rightAngle)
 
void end ()
 
bool isPinsSet () const
 Check if the necessary pins for the vehicle's actuators have been set (pure virtual).
 
void setPitch (int angle)
 
void setRoll (int angle)
 
void setYaw (int angle)
 
bool onMessage (const Message< float > &msg) override
 Handle an incoming message (pure virtual).
 
std::vector< MessageContent > getControls () const override
 
MotorMT & getMotor ()
 
ServoMT & getServo (ControlSurface surface)
 
std::vector< IMotor< T > * > getMotors () override
 
- Public Member Functions inherited from Vehicle< MotorT >
bool begin ()
 Initialize the vehicle.
 
virtual void end ()=0
 Reset the vehicle to a safe or neutral state (pure virtual).
 
virtual bool isPinsSet () const =0
 Check if the necessary pins for the vehicle's actuators have been set (pure virtual).
 
virtual std::vector< MessageContent > getControls () const =0
 
float getSpeedFactor () const
 Get the speed factor (scaling for speed commands).
 
void setSpeedFactor (float factor)
 Set the speed factor (scaling for speed commands).
 
virtual std::vector< IMotor< MotorT > * > getMotors ()=0
 
- Public Member Functions inherited from MessageHandler
virtual bool onMessage (const Message< float > &msg)=0
 Handle an incoming message (pure virtual).
 
virtual bool onMessage (const Message< Coordinate< float > > &msg)
 
virtual bool onMessage (const Message< GPSCoordinate > &msg)
 
virtual bool onMessage (const Message< MotionState3D > &msg)
 
- Public Member Functions inherited from MessageSource
void subscribe (MessageHandler &handler, MessageOrigin origin=MessageOrigin::Undefined, MessageContent content=MessageContent::Undefined)
 Subscribe a message handler to this source, with optional filtering.
 
void unsubscribeAll ()
 Remove all registered message handlers.
 
void sendMessage (Message< float > &msg)
 Publish a message to all registered handlers.
 
void sendMessage (const Message< Coordinate< float > > &msg)
 Publish a message to all registered handlers.
 
void sendMessage (const Message< GPSCoordinate > &msg)
 Publish a message to all registered handlers.
 
void sendMessage (const Message< MotionState3D > &msg)
 Overload for MotionState3D messages.
 

Protected Attributes

MotorMT motor_
 
std::vector< int > pins_ = std::vector<int>(NumSurfaces, -1)
 
std::vector< ServoMT > servos_ = std::vector<ServoMT>(NumSurfaces, ServoMT())
 
- Protected Attributes inherited from Vehicle< MotorT >
float speedFactor_ = 1.0f
 
- Protected Attributes inherited from MessageSource
std::vector< MessageHandlerEntrymessageHandlers_
 

Detailed Description

template<typename T = float, typename MotorMT = BrushedMotor<T>, typename ServoMT = ServoMotor<T>>
class tinyrobotics::AirPlane< T, MotorMT, ServoMT >

Simple fixed-wing airplane model with motor, rudder, elevator, and aileron control.

This class abstracts the control of a basic RC airplane:

Usage Example:

AirPlane plane;
// setup pins
plane.setPinsMotor(5, 6); // HBridge pins
plane.setPinRudder(10); // rudder servo
plane.setPinElevator(11); // elevator servo
plane.setPinsAilerons(12, 13); // aileron servos
// control airplane
plane.setThrottle(70); // 70% throttle
plane.setRudder(20); // 20 degrees left
plane.setElevator(-10); // 10 degrees down
plane.setAilerons(15, -15); // left up, right down
Simple fixed-wing airplane model with motor, rudder, elevator, and aileron control.
Definition: AirPlane.h:35
void setPinsAilerons(int leftPin, int rightPin)
Definition: AirPlane.h:69
void setPinElevator(int pin)
Definition: AirPlane.h:62
void setPinsMotor(int in1, int in2)
Definition: AirPlane.h:49
void setAilerons(int leftAngle, int rightAngle)
Definition: AirPlane.h:116
void setElevator(int angle)
Definition: AirPlane.h:107
void setRudder(int angle)
Definition: AirPlane.h:98
void setPinRudder(int pin)
Definition: AirPlane.h:55
void setThrottle(int percent)
Definition: AirPlane.h:87

Member Function Documentation

◆ end()

void end ( )
inlinevirtual

Reset state of all controls

Implements Vehicle< MotorT >.

◆ getControls()

std::vector< MessageContent > getControls ( ) const
inlineoverridevirtual

Implements Vehicle< MotorT >.

◆ getMotors()

std::vector< IMotor< T > * > getMotors ( )
inlineoverridevirtual

Implements Vehicle< MotorT >.

◆ isPinsSet()

bool isPinsSet ( ) const
inlinevirtual

Check if the necessary pins for the vehicle's actuators have been set (pure virtual).

Implements Vehicle< MotorT >.

◆ onMessage()

bool onMessage ( const Message< float > &  msg)
inlineoverridevirtual

Handle an incoming message (pure virtual).

This method should be implemented by derived classes to process messages.

Parameters
msgThe message to handle.
Returns
true if the message was handled successfully, false otherwise.

Implements MessageHandler.

◆ setAilerons()

void setAilerons ( int  leftAngle,
int  rightAngle 
)
inline

Set aileron angles (degrees, left and right)

◆ setElevator()

void setElevator ( int  angle)
inline

Set elevator angle (degrees, -30 to 30 typical)

◆ setPinElevator()

void setPinElevator ( int  pin)
inline

Attach the elevator servo.

◆ setPinRudder()

void setPinRudder ( int  pin)
inline

Attach the rudder servo.

◆ setPinsAilerons()

void setPinsAilerons ( int  leftPin,
int  rightPin 
)
inline

Attach the aileron servos.

◆ setPinsMotor()

void setPinsMotor ( int  in1,
int  in2 
)
inline

Attach the motor HBridge.

◆ setPitch()

void setPitch ( int  angle)
inline

Set pitch (degrees): positive = nose up, negative = nose down

◆ setRoll()

void setRoll ( int  angle)
inline

Set roll (degrees): positive = left wing up, negative = right wing up

◆ setRudder()

void setRudder ( int  angle)
inline

Set rudder angle (degrees, -30 to 30 typical)

◆ setThrottle()

void setThrottle ( int  percent)
inline

Set throttle (0-100%)

◆ setYaw()

void setYaw ( int  angle)
inline

Set yaw (degrees): positive = nose left, negative = nose right


The documentation for this class was generated from the following file: