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

Motor boat with 1 drive motor and 1 rudder servo. More...

#include <MotorBoat.h>

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

Public Member Functions

void setPins (int in1, int in2, int rudderPin)
 Set the pins for the drive motor and rudder servo.
 
void setSpeed (float percent)
 Set the speed as a percentage (-100 to 100). Positive = forward. This applies the speed scaling factor (speedFactor) before setting throttle.
 
void setThrottle (float percent)
 Set throttle (percent, -100 to 100). Positive = forward.
 
void setRudder (float angle)
 Set rudder angle (degrees, left positive, right negative).
 
void setRudder (Angle angle)
 
void end ()
 Reset the vehicle to a safe or neutral state (pure virtual).
 
bool isPinsSet () const
 Check if the necessary pins for the vehicle's actuators have been set (pure virtual).
 
bool onMessage (const Message< float > &msg) override
 Handle an incoming message (pure virtual).
 
std::vector< MessageContent > getControls () const override
 
MotorMT & getMotor ()
 
ServoMT & getServo ()
 
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_
 
ServoMT rudder_
 
- 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::MotorBoat< T, MotorMT, ServoMT >

Motor boat with 1 drive motor and 1 rudder servo.

This class abstracts a simple motor boat:

Usage Example:

MotorBoat boat;
boat.setPins(5, 6, 9); // in1, in2, rudderPin
boat.setThrottle(70); // 70% throttle
boat.setRudder(20); // 20 degrees left
boat.stop(); // brake
Motor boat with 1 drive motor and 1 rudder servo.
Definition: MotorBoat.h:28
void setThrottle(float percent)
Set throttle (percent, -100 to 100). Positive = forward.
Definition: MotorBoat.h:56
void setRudder(float angle)
Set rudder angle (degrees, left positive, right negative).
Definition: MotorBoat.h:67
void setPins(int in1, int in2, int rudderPin)
Set the pins for the drive motor and rudder servo.
Definition: MotorBoat.h:39

Member Function Documentation

◆ end()

void end ( )
inlinevirtual

Reset the vehicle to a safe or neutral state (pure virtual).

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.

◆ setPins()

void setPins ( int  in1,
int  in2,
int  rudderPin 
)
inline

Set the pins for the drive motor and rudder servo.

Parameters
in1HBridge IN1
in2HBridge IN2
pwmHBridge PWM
rudderPinServo pin for rudder

◆ setSpeed()

void setSpeed ( float  percent)
inline

Set the speed as a percentage (-100 to 100). Positive = forward. This applies the speed scaling factor (speedFactor) before setting throttle.

Parameters
percentSpeed percentage (-100 to 100)

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