Skip to content

Environmental effectors

Manos Tsardoulias edited this page Feb 4, 2021 · 23 revisions

Notes:

  • The below devices are declared in the env_devices section
  • All effectors can be placed on a pan-tilt effector. In order to do so, you must declare host: XXX, where XXX is the name of the pan-tilt (which must be manually assigned since it must be known in configuration time.
  • Even though all effectors can be placed on a pan-tilt, it is meaningless, since none of the current effectors is directional!
  • Concerning communication base topics we follow this template: <host_type.host.category.class.subclass.name.id.call>

Humidifier

Configuration example:

pose: {x: 100, y: 100, theta: 0} # theta is optional, default is None
name: hum_X
mode: mock # mock, simulation, real
place: "office" # or "gym.bathroom" for nested
humidity: 70 # out of 100%
range: 50

Communication:

redis::RPCService <world.office.actuator.env.humidifier.hum_X.enable>
redis::RPCService <world.office.actuator.env.humidifier.hum_X.disable>
redis::RPCService <world.office.actuator.env.humidifier.hum_X.set>
redis::RPCService <world.office.actuator.env.humidifier.hum_X.get>

Light

Configuration example:

pose: {x: 100, y: 100, theta: 0} # theta is optional, default is None
name: light_X
range: 100
mode: mock # mock, simulation, real
place: "office" # or "gym.bathroom" for nested

Communication:

redis::RPCService <world.office.actuator.visual.light.light_X.enable>
redis::RPCService <world.office.actuator.visual.light.light_X.disable>
redis::RPCService <world.office.actuator.visual.light.light_X.set>
redis::RPCService <world.office.actuator.visual.light.light_X.get>

Pan tilt

Configuration example:

pose: {x: 100, y: 100, theta: 0} # theta is optional, default is None
name: pan_tilt_X
mode: mock # mock, simulation, real
place: "office" # or "gym.bathroom" for nested
limits:
  pan:
    min: -90
    max: 90
  tilt:
    min: -90
    max: 90
operation: sinus
operation_parameters: # only for mock operation
  sinus:
    step: 0.01
    hz: 3

Communication:

redis::RPCService <world.office.actuator.servo_motor.pan_tilt.pan_tilt_X.enable>
redis::RPCService <world.office.actuator.servo_motor.pan_tilt.pan_tilt_X.disable>
redis::Subscriber <world.office.actuator.servo_motor.pan_tilt.pan_tilt_X.set>
redis::Publisher <world.office.actuator.servo_motor.pan_tilt.pan_tilt_X.data>
redis::RPCService <world.office.actuator.servo_motor.pan_tilt.pan_tilt_X.get>
redis::RPCService <world.office.actuator.servo_motor.pan_tilt.pan_tilt_X.set_mode>

Relay

Configuration example:

pose: {x: 100, y: 100, theta: 0} # theta is optional, default is None
name: relay_X
mode: mock # mock, simulation, real
states: [0, 1] # allowed states
initial_state: 0 # initial state
place: "office" # or "gym.bathroom" for nested

Communication:

redis::RPCService <world.office.actuator.switch.relay.relay_X.enable>
redis::RPCService <world.office.actuator.switch.relay.relay_X.disable>
redis::RPCService <world.office.actuator.switch.relay.relay_X.set>
redis::RPCService <world.office.actuator.switch.relay.relay_X.get>

Speaker

Configuration example:

pose: {x: 100, y: 100, theta: 0} # theta is optional, default is None
name: speaker_X
place: office
mode: mock # mock, simulation, real

Communication:

redis::ActionServer <world.office.actuator.audio.speaker.speaker_X.play>
redis::ActionServer <world.office.actuator.audio.speaker.speaker_X.speak>
redis::RPCService <world.office.actuator.audio.speaker.speaker_X.enable>
redis::RPCService <world.office.actuator.audio.speaker.speaker_X.disable>
redis::Publisher <world.office.actuator.audio.speaker.speaker_X.play.notify>
redis::Publisher <world.office.actuator.audio.speaker.speaker_X.speak.notify>

Thermostat

Configuration example:

pose: {x: 100, y: 100, theta: 0} # theta is optional, default is None
name: thermostat_X
mode: mock # mock, simulation, real
place: "office" # or "gym.bathroom" for nested
temperature: 24
range: 50

Communication:

redis::RPCService <world.office.actuator.thermal.thermostat.thermostat_X.enable>
redis::RPCService <world.office.actuator.thermal.thermostat.thermostat_X.disable>
redis::RPCService <world.office.actuator.thermal.thermostat.thermostat_X.set>
redis::RPCService <world.office.actuator.thermal.thermostat.thermostat_X.get>