Aruna
aruna::movement::ActuatorSet Class Reference

#include <ActuatorSet.h>

Inheritance diagram for aruna::movement::ActuatorSet:
Collaboration diagram for aruna::movement::ActuatorSet:

Classes

struct  transform_t
 

Public Member Functions

 ActuatorSet (transform_t *transform, size_t transform_size)
 put diffrent drivers in a driver set to allow them to cooperate and transform into a different axis when turned on together More...
 
- Public Member Functions inherited from aruna::movement::Actuator
 Actuator (axis_mask_t axis=axis_mask_t::NONE)
 Actuator object, used by the movement module for vehicle movement. More...
 
virtual ~Actuator ()
 
err_t set_axis (axis_mask_t new_axis)
 Set the axis that this Actuator is capable in moving in. More...
 
axis_mask_t get_axis ()
 get the movement modes that this driver supports. More...
 
err_t set (axis_mask_t axisMask, int16_t speed)
 Set the speed of the motors directly. More...
 
uint16_t get_speed ()
 Get the current speed of Actuator. More...
 

Private Member Functions

err_t _set (axis_mask_t axisMask, int16_t speed) override
 Implementation of axis movement, this function is called from set(...). More...
 
axis_mask_t compute_axis ()
 Get alle the axis from all inside the set and put them together. More...
 
err_t err_check ()
 

Private Attributes

transform_ttransform
 
const size_t transform_size
 

Static Private Attributes

static aruna::log::channel_t log
 

Additional Inherited Members

- Public Attributes inherited from aruna::movement::Actuator
err_t startup_error = err_t::NOT_STARTED
 error when constructing gets put here, read before usage. More...
 
- Static Protected Member Functions inherited from aruna::movement::Actuator
static double convert_range (uint16_t input, float range_max=100.f, float range_min=0.f)
 Convert uint16 to a new range. More...
 

Detailed Description

Definition at line 13 of file ActuatorSet.h.

Constructor & Destructor Documentation

◆ ActuatorSet()

aruna::movement::ActuatorSet::ActuatorSet ( transform_t transform,
size_t  transform_size 
)

put diffrent drivers in a driver set to allow them to cooperate and transform into a different axis when turned on together

Parameters
transformarray of transform_t
transform_sizesize of array

Definition at line 13 of file ActuatorSet.cpp.

15 
18  }
err_t set_axis(axis_mask_t new_axis)
Set the axis that this Actuator is capable in moving in.
Definition: Actuator.cpp:40
Actuator(axis_mask_t axis=axis_mask_t::NONE)
Actuator object, used by the movement module for vehicle movement.
Definition: Actuator.cpp:12
axis_mask_t compute_axis()
Get alle the axis from all inside the set and put them together.
Definition: ActuatorSet.cpp:43
err_t startup_error
error when constructing gets put here, read before usage.
Definition: Actuator.h:45
Here is the call graph for this function:

Member Function Documentation

◆ _set()

err_t aruna::movement::ActuatorSet::_set ( axis_mask_t  axisMask,
int16_t  speed 
)
overrideprivatevirtual

Implementation of axis movement, this function is called from set(...).

Only gets called when axisMask match axis of Actuator.

Parameters
axisMaskaxis (can be multiple) to set speed to.
speeddesired speed.
Returns
err_t::OK if successful, others when not...

Implements aruna::movement::Actuator.

Definition at line 20 of file ActuatorSet.cpp.

20  {
21  err_t err = err_t::OK;
22  err_t last_failure = err;
23  for (int i = 0; i < transform_size; ++i) {
24  if ((uint8_t) transform[i].transform_to & (uint8_t) axisMask) {
25  int32_t adjusted_speed = ((float) speed * (transform[i].speed_percentage / (float) 100.0));
26  adjusted_speed = transform[i].flip_direction ? adjusted_speed * -1: adjusted_speed;
27  adjusted_speed = fmax(adjusted_speed, INT16_MIN);
28  adjusted_speed = fmin(adjusted_speed, INT16_MAX);
29  log.verbose("setting driver transformed: %i, axis: 0x%X, speed:%i", i, transform[i].axis,
30  adjusted_speed);
31  err = transform[i].driver->set(transform[i].axis, (int16_t) adjusted_speed);
32  } else {
33  log.verbose("setting driver: %i, axis: 0x%X, speed:%i", i, axisMask, speed);
34  err = transform[i].driver->set(axisMask, speed);
35  }
36  if ((uint8_t) err) {
37  last_failure = err;
38  }
39  }
40  return last_failure;
41  }
static aruna::log::channel_t log
Definition: ActuatorSet.h:57
err_t set(axis_mask_t axisMask, int16_t speed)
Set the speed of the motors directly.
Definition: Actuator.cpp:20
Actuator * driver
pointer to driver
Definition: ActuatorSet.h:21
int verbose(const char *format,...)
log verbose message
Definition: log.cpp:38
bool flip_direction
flip direction on transform?
Definition: ActuatorSet.h:31
Here is the call graph for this function:

◆ compute_axis()

axis_mask_t aruna::movement::ActuatorSet::compute_axis ( )
private

Get alle the axis from all inside the set and put them together.

Returns
axis mask of all actuators in the set.

Definition at line 43 of file ActuatorSet.cpp.

43  {
45  for (int i = 0; i < transform_size; ++i) {
46  axis = (axis_mask_t) ((uint8_t) axis | (uint8_t) transform[i].driver->get_axis() |
47  (uint8_t) transform[i].transform_to);
48  }
49  return axis;
50  }
Link * driver
stores the driver.
Definition: comm.cpp:45
Here is the caller graph for this function:

◆ err_check()

err_t aruna::movement::ActuatorSet::err_check ( )
private

Definition at line 53 of file ActuatorSet.cpp.

53  {
54  err_t err = err_t::OK;
55  err_t last_failure = err;
56  for (int i = 0; i < transform_size; ++i) {
57  err = transform[i].driver->startup_error;
58  if ((uint8_t) err) {
59  last_failure = err;
60  }
61  }
62  return last_failure;
63  }
Actuator * driver
pointer to driver
Definition: ActuatorSet.h:21
err_t startup_error
error when constructing gets put here, read before usage.
Definition: Actuator.h:45
Here is the caller graph for this function:

Member Data Documentation

◆ log

log::channel_t aruna::movement::ActuatorSet::log
staticprivate

Definition at line 57 of file ActuatorSet.h.

◆ transform

transform_t* aruna::movement::ActuatorSet::transform
private

Definition at line 55 of file ActuatorSet.h.

◆ transform_size

const size_t aruna::movement::ActuatorSet::transform_size
private

Definition at line 56 of file ActuatorSet.h.


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