Sensory technology

Robot House is equipped with the current state-of-the art sensory technology to enhance the Robot House robots’ perception capabilities. Currently, there are more than 60 smart home sensors, two omnidirectional ceiling cameras and some portable RGB(-D) cameras. On these pages, you can find information on how to employ them into your experiment, and how to troubleshoot in cases of known problems.

Ambient Sensors

Overview of Robot House sensors

Fig. 1 Overview of Robot House sensors

Fig. 1 shows an overview of the ambient sensors that are distributed over Robot House:

  • Brightness, movement, and temperature sensors in every room

  • Power consumption and plug status using switchable power plugs at almost every appliance, computer, standard lamp, and robot charger

  • Lamp status and switchable lights in the living room

  • Status sensor at every door, drawer, wardrobe, cupboard, and toilet seat lid

  • Pressure mats on the sofas and in the bed

  • Temperature and water flow sensors in the kitchen taps

Some of the sensors have a power switch that you need to enable if you want to use them:

  • Sofa pressure mats: At the top left of the sofa.

  • Kitchen cabinet and drawer sensors: In the lower corner cabinet to the left of the sink.

  • Living room cabinet and drawer sensors: Between the small and large cupboard.

  • Bedroom wardrobe door sensors: On top of the wardrobe.

  • Bedroom desk door sensors: On the left side of the desk.

Note

Wait one or two minutes for the sensors to connect. Sensors will be picked up by the sensor component.

The sensors will automatically publish state changes via ROS at /robothouse/sensors and can be actuated via /robothouse/actuators in the common Robot environment where the Sensor Components are active by default. You can also address the sensors using sensors.py in the Robot House ROS interface.

Note

Please refer to Troubleshoot in case the sensors are not working as expected or to Advanced usage if you need a non-default setup.

Cameras

There are two omnidirectional cameras in the living room that cover the main experimentation area including the living room, corridor and parts of the kitchen. We also have a couple of RGB-D cameras that have a standard location but can be moved on a per-experiment basis. These usually cover the kitchen and two living room areas from a high angle shot.

Note

As the cameras are mobile equipment please ensure that they are plugged into the (correct) computers, see Network overview.

All cameras will publish state changes on demand via ROS at various topics depending on their standard location, for example, /omni_livingroom or /rgbd_kitchen. Please refer to Sensor Components for details.

Note

Please refer to Troubleshoot in case the cameras are not working as expected or if you need a non-default setup.

Sensor Components

There is a main bringup component within the Robot House ROS software that is permanently active on the host shakuras, running as the user demo. Besides providing other services, this component enables the use of both Ambient Sensors and Cameras on all computers in Robot House in the Robot environment common. When the bringup component is active, the following topics are active:

Component

Topic

Type

Data

Driver

Sensor interface

/robothouse/sensors

Pub

uh_core/SensorData

Robot House ROS

Actuator interface

/robothouse/actuators

Sub

uh_core/ActuatorData

Robot House ROS

RGB-D living room

/rgbd_livingroom/[..]

Pub

sensor_msgs/Image etc.

openni2

RGB-D kitchen

/rgbd_kitchen/[..]

Pub

sensor_msgs/Image etc.

openni2

RGB-D sofa area

/rgbd_sofa/[..]

Pub

sensor_msgs/Image etc.

openni2

Omnicam living room

/omni_livingroom/[..]

Pub

sensor_msgs/Image etc.

gscam

Omnicam corridor

/omni_corridor/[..]

Pub

sensor_msgs/Image etc.

gscam

The following parts describe how to start and stop the bringup component, how to check whether the different sensors are functional, and how to configure more advanced use cases, such as only starting individual sensor components or running them in a different Robot environment.

Starting up

Usually, the all components that makes the sensors available in ROS should already be running in the background at all times wrapped in a bringup component. A possible exception from this default is, for example, when a custom setup is active and the component has been stopped. To restart the default components in such cases, follow these instructions:

Warning

If you started any of the components in bringup manually, the according processes will be terminated.

  1. Log into shakuras as the demo user:

    $ ssh demo@shakuras
    
  2. Start a screen session to allow the components to run detached in the background:

    $ screen
    
  3. Start the bringup component:

    $ roslaunch uh_core bringup.launch --screen
    
  4. Press Ctrl + A,D to detach the screen session and let the component run in the background.

Shutting down

If you want to use a more advanced setup, for example, if some of the bringup components interfere with your setup or if you need to have them active in another Robot environment, you need to first stop the bringup component that is running by default. Follow these instructions to do so:

  1. At first, log into shakuras as the demo user where the components are usually active:

    $ ssh demo@shakuras
    
  2. Attach the screen session where the components should be running:

    $ screen -r
    
  3. Press Ctrl + C to abort the process and wait for its termination.

Note

After you are finished with your work, please restart the default component following the instructions in Starting up.

Troubleshoot

You can check whether the sensor component is running in the default configuration using the following instructions:

  1. Set the Robot environment to common:

    $ robot_env common
    

    Note

    Specify any other environment if you want to see whether the components are running there, for example when you manually started the component in a custom configuration.

  2. Check whether the necessary components are already active.

    1. If you need the Ambient Sensors, check if they are up:

      $ rostopic list | grep robothouse
      /robothouse/actuators
      /robothouse/sensors
      
    2. Likewise, you can check whether the Cameras are already active:

      $ rostopic list | grep cam
      /omni_livingroom/camera_info
      /omni_stairway/camera_info
      /rgbd_kitchen/depth/camera_info
      ...
      /rgbd_livingroom/depth/camera_info
      ...
      

In the above examples, the sensors and cameras are already active in the common environment and you do not need start them if you want to continue to use this environment.

Note

If the output is either empty or contains ERROR: Unable to communicate with master! the sensory components are not active and you may need to start them.

Advanced usage

If the main bringup component is interfering with your setup or if you want to use the sensors in a specific Robot environment, you need to start them individually. You can follow these steps on any computer in the Robot House network.

Warning

Make sure that the components are not already running as some processes may get killed. Please stop the defaults if necessary.

  1. Configure the Robot environment to your needs:

    $ robot_env <robot>
    
  2. Start one of the following components:

  1. Use the core bringup component to initialize all services including Ambient Sensors and Cameras:

    $  roslaunch uh_core bringup.launch
    
  2. Only ambient sensors without cameras

    $  roslaunch uh_core sensors.launch
    
  3. Only cameras without ambient sensors

    $  roslaunch uh_core cameras.launch
    

Note

If the roslaunch command fails with ERROR: unable to contact ROS master at [http://<host>:11311], make sure that a roscore is running on the host that that you configure with the $ROS_MASTER_URI variable. This might happen, for example, if you use the Robot environment common on a different computer than shakuras as the command sets ROS_MASTER_URI=http://shakuras:11311 .