Skip to content

Robot effectors

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

Notes:

  • The below devices are declared in the robot section
  • In all sensors and effectors, pose is optional. If not declared, its pose will be initiated with (0,0,None). If declared and some of its properties are missing, they will be filled with 0 (except for theta that will be filled with None).
  • All devices have a specific sensor_configuration that must be declared if robot is deployed in real mode. It is optional for simulation and mock modes.
  • You can declare a unique name for each device. If not declared an id_x name will be automatically given.
  • 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. Check the camera example below for an example.
  • Even though all effectors can be placed on a pan-tilt, it is meaningfull for only directional effectors (pan-tilt)
  • Concerning communication base topics we follow this template: <host_type.host.category.class.subclass.name.id.call>

LEDs

Configuration example:

orientation: 0
place: FRONT
pose: {x: 0, y: 0, theta: 0} # optional, will take (0,0,None) if not declared
sensor_configuration:  # must be declared for real mode - optional for simulation and mock
  led_count: 19
  led_pin: 18
  led_freq_hz: 700000
  led_brightness: 255
  led_invert: 0
  led_channel: 0
  max_data_length: 10

Communications:

redis::Subscriber <robot.robot_1.actuator.visual.leds.d_57.set>
redis::RPCService <robot.robot_1.actuator.visual.leds.d_57.wipe>
redis::RPCService <robot.robot_1.actuator.visual.leds.d_57.enable>
redis::RPCService <robot.robot_1.actuator.visual.leds.d_57.disable>

Motion / Skid steer

Configuration example:

pose: {x: 0, y: 0, theta: 0} # optional, will take (0,0,None) if not declared
orientation: 0
place: UNDER
sensor_configuration: # must be declared for real mode - optional for simulation and mock
  bus: 1
  E1: 20
  M1: 21
  E2: 12
  M2: 16
  max_data_length: 10
  wheel_separation: 0.147
  wheel_radius: 0.022

Communications:

redis::Subscriber <robot.robot_1.actuator.motion.twist.d_62.set>
redis::RPCService <robot.robot_1.actuator.motion.twist.d_62.enable>
redis::RPCService <robot.robot_1.actuator.motion.twist.d_62.disable>

Pan Tilt

Configuration example:

pose: {x: 0, y: 0, theta: 0} # optional, will take (0,0,None) if not declared
name: pt1
orientation: 0
place: UNDER
sensor_configuration: # must be declared for real mode - optional for simulation and mock
  bus: 1
  frequency: 50
  max_data_length: 1

Communications:

redis::Subscriber <robot.robot_2.actuator.servo_motor.pan_tilt.pt1.set>
redis::RPCService <robot.robot_2.actuator.servo_motor.pan_tilt.pt1.enable>
redis::RPCService <robot.robot_2.actuator.servo_motor.pan_tilt.pt1.disable>
redis::Publisher <robot.robot_2.actuator.servo_motor.pan_tilt.pt1.data>

Speaker

Configuration example:

orientation: 0
place: FRONT
pose: {x: 0, y: 0, theta: 0} # optional, will take (0,0,None) if not declared
sensor_configuration: # must be declared for real mode - optional for simulation and mock
  dev_name: "Speaker"
  max_data_length: 10

Communications:

redis::ActionServer <robot.robot_2.actuator.audio.speaker.d_95.play>
redis::ActionServer <robot.robot_2.actuator.audio.speaker.d_95.speak>
redis::RPCService <robot.robot_2.actuator.audio.speaker.d_95.enable>
redis::RPCService <robot.robot_2.actuator.audio.speaker.d_95.disable>
redis::Publisher <robot.robot_1.actuator.audio.speaker.d_59.play.notify>
redis::Publisher <robot.robot_1.actuator.audio.speaker.d_59.speak.notify>

Touch screen

Configuration example:

orientation: 0
place: UNKNOWN
pose: {x: 0, y: 0, theta: 0} # optional, will take (0,0,None) if not declared
sensor_configuration: # must be declared for real mode - optional for simulation and mock
  param_1: 1
  max_data_length: 10

Communications:

redis::RPCService <robot.robot_2.actuator.visual.screen.d_98.show_image>
redis::RPCService <robot.robot_2.actuator.visual.screen.d_98.enable>
redis::RPCService <robot.robot_2.actuator.visual.screen.d_98.disable>