<html devsite>
  <head>
    <title>Sensor Fusion Box Quick Start Guide</title>
    <meta name="project_path" value="/_project.yaml" />
    <meta name="book_path" value="/_book.yaml" />
  </head>
  <body>
    <!--
    Copyright 2018 The Android Open Source Project
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at
    http://www.apache.org/licenses/LICENSE-2.0
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
    -->
    <p>
      The sensor fusion test measures timestamp accuracy of camera and other
      sensors for Android phones. This page provides step-by-step directions on
      how to setup the Sensor Fusion test and Sensor Fusion Box for the first
      time.
    </p>
    <h2 id="required-tools">Required tools</h2>
    <p>
      Before getting started, ensure you have the following components:</p>
    <figure id="sensor-fusion-test-component">
      <img src="/compatibility/cts/images/sensor_fusion_test_components.png" width="700" alt="Sensor fusion test components">
      <figcaption><b>Figure 1.</b> Components required for the sensor fusion
      test</figcaption>
    </figure>
    <ol>
      <li>USB A to B cable</li>
      <li>USB A to C cable (for test phone)</li>
      <li>12V 2A power cord (for servo control box)</li>
      <li>12V power cord (for lighting, with switch)</li>
      <li>5V male-male connection cable (for lighting)</li>
      <li>5V male-female conversion cable (for lighting)</li>
    </ol>
    <h2 id="step-1-connect-lights">Step 1: Connect lights</h2>
    <p>
      To connect the lights:
    </p>
    <ol>
      <li>Use the male-male cable to connect the two lights on the bottom ends
      of the lights as shown in figure 2. Secure the cable to the bottom of the
      box to keep the cable from interfering with the operation.</li>
      <li>Connect the end of the light closer to the light cable exit hole to
      the conversion cable
        <figure id="sensor-fusion-connect-lights">
          <img src="/compatibility/cts/images/sensor_fusion_connect_lights.png" width="300" alt="Connect lights">
          <figcaption><b>Figure 2.</b> Connecting the lights to each other and
          one light to the conversion cable</figcaption>
        </figure>
        <ol>
          <li>Light cable exit hole</li>
          <li>USB cable exit hole</li>
          <li>5V male-male conversion cable</li>
        </ol>
      </li>
      <li>Thread the unconnected end of the conversion cable through the round
      hole that exits the box, then connect it to the power
      cable for lighting.
        <figure id="Conversion cable and power cable">
          <img src="/compatibility/cts/images/sensor_fusion_conversion_cable.png" width="500" alt="Conversion and power cable">
          <figcaption><b>Figure 3.</b> Lighting conversion cable exiting the box
          and connecting to power cable</figcaption>
        </figure>
        <ol>
          <li>Exit hole</li>
          <li>Conversion cable</li>
          <li>Power cable</li>
        </ol>
      </li>
    </ol>
    <h2 id="step-2-attach-servo">Step 2: Attach servo</h2>
    <p>
      To attach the servo:
    </p>
    <ol>
      <li>Plug the servo connector into the servo control. Be sure to insert
        the connector oriented to the corresponding colors as labeled (Y =
        Yellow, R = Red, B = Black), as reversing the order could damage the
        motor. If the cord is too short, use a
        <a href="https://www.adafruit.com/product/972" class="external">
        servo extension cable</a>.
        <figure id="sensor-fusion-servo-connector">
          <img src="/compatibility/cts/images/sensor_fusion_servo_connector.png" width="300" alt="Servo connecting to the servo control box">
          <figcaption><b>Figure 4.</b> Servo connecting to the servo control
          box</figcaption>
        </figure>
      </li>
      <li>Connect the servo control with its power cord (the lighting and
      servo control have independent, dedicated power supplies as shown in
      figure 5).
        <figure id="sensor-fusion-servo-control">
          <img src="/compatibility/cts/images/sensor_fusion_servo_control.png" width="500" alt="Connecting servo control to power">
          <figcaption><b>Figure 5.</b> Connecting the servo control to its
          dedicated power cord</figcaption>
        </figure>
        <ol>
          <li>Power for servo control</li>
          <li>Power for lighting</li>
        </ol>
      </li>
      <li>Use the USB A to B cable to connect the servo control box to the
        host (machine that is running the test).
        <figure id="sensor-fusion-servo-control-box">
          <img src="/compatibility/cts/images/sensor_fusion_servo_control_box.png" width="500" alt="Connect servo control box to host machine">
          <figcaption><b>Figure 6.</b> Connecting the servo control box to the
          host machine</figcaption>
        </figure>
    </ol>
  <h2 id="step-3-attach-phone">Step 3: Attach phone</h2>
  <ol>
    <li>Set the phone on the fixture and clamp it down.<br>
      <figure id="sensor-fusion-servo-connector">
          <img src="/compatibility/cts/images/sensor_fusion_fixture.png" width="500" alt="Attaching phone on fixture">
          <figcaption><b>Figure 7.</b> Placing and clamping the phone on the
          fixture</figcaption>
      </figure>
      <ol>
          <li>Back support</li>
          <li>Tightness</li>
      </ol>
      <p>Phones should be placed in a manner where the USB cords are located at
      the periphery of the phone mount and the cameras are near the center of
      the mount.
      </p>
      <p>The upside-down thumb screw provides back support while the other screw
        tightens the grip by turning right. For more details, see
        <a href="#attach-phone-to-mount">video on how to
        attach the phone</a>.</p>
    </li>
    <li>Use a zip tie to hold the phone USB cord to the fixture plate and
      lead it outside the box through the exit hole. Plug the other end
      of the cord to the host running the test.
      <figure id="sensor-fusion-zip-ties">
        <img src="/compatibility/cts/images/sensor_fusion_zip_ties.png" width="300" alt="Phone USB cord with zip ties">
        <figcaption><b>Figure 8.</b> Phone USB cord held to fixture with
        zip ties</figcaption>
      </figure>
    </li>
  </ol>
  <h2 id="step-4-run-test-script">Step 4: Run test script</h2>
    <p>
      The main python executable for the test script is:
    </p>
    <pre class="prettyprint"><code class="devsite-terminal">python tools/run_all_tests.py device=ID camera=0 scenes=sensor_fusion rot_rig=default</code>
    </pre>
    <p>You can modify the command to specify the actual rotator address by using:</p>
    <pre class="prettyprint">rot_rig=<var>VID:PID:CH</var>
    </pre>
    <ul>
      <li>To determine the Vendor ID (VID) and Product ID (PID), use the Linux
      command <code>lsusb</code>.</li>
      <li>By default, the VID and PID are set
      to <code>04d8</code> and <code>fc73</code> with channel "1".</li>
    </ul>
  <h3 id="multiple-runs-different-formats">Multiple runs, different formats</h3>
    <p>To perform multiple runs with different formats, you can use a
      different script (however, the results will not be uploaded to
      <code>CtsVerifier.apk</code>). Sample test script:</p>
  <pre class="prettyprint"><code class="devsite-terminal">python tools/run_sensor_fusion_box.py device=FA7831A00278 camera=0 rotator=default img_size=640,360 fps=30 test_length=7</code></pre>
  <h3 id="permission-issues">Permission issues</h3>
  <p>To resolve permission issues related to controlling the motor through the
    USB port:</p>
  <ol>
    <li>Add the operator username to the <code>dialout</code> group using:
      <pre class="prettyprint"><code class="devsite-terminal">sudo adduser <var>USERNAME</var> dialout</code>
    </pre></li>
    <li>Log out the operator.</li>
    <li>Log in the operator.</li>
  </ol>
  <h2 id="adjusting-the-motor">Adjusting the motor</h2>
  <p>
    You can adjust the speed of the motor and the distance the phone travels
    using the resistance ports (labeled <strong>A</strong>,
    <strong>B</strong>, and <strong>T</strong>) on the side of the controller
    box.
  </p>
  <ol>
    <li>Upon first receiving the box, power up the box and determine the initial
        position. If the initial position on power-up is not close to 12
        o'clock, unscrew the phone fixture (single Philips head screw in mount
        hole) and rotate the phone fixture to 12 o'clock.</li>
    <li>Ensure the phone fixture travels a full 90 degrees (from 12
      o'clock to 9 o'clock when looking at the phone) for each rotation.
      <ul>
        <li>To adjust the distance traveled, use the <strong>A</strong> and
          <strong>B</strong> screws (where <strong>A</strong> is the starting
          location
        and <strong>B</strong> is the final location).</li>
      </ul>
    </li>
    <li>Adjust the rotation speed to travel a full rotation in 1.5s. Turning
      the resistor pot clockwise slows down the motion.
      <table class="columns">
        <tr>
          <td>
            <img src="/compatibility/cts/images/sensor_fusion_adjust.png" width="300" alt="Adjust position and speed of servo">
          </td>
          <td>
            <ul>
              <li>A is the start position of the fixture.</li>
              <li>B is the end position of the fixture.</li>
              <li>T is the speed motor rotates.</li>
            </ul>
          </td>
        </tr>
      </table>
      <b>Figure 9.</b> How to adjust the position and speed of servo and phone
      fixture
    </li>
  </ol>
    <p>For more information, see <a href="#video-tutorials">video tutorials</a>.</p>
  <h2 id="video-tutorials">Video tutorials</h2>
    <div class="video-wrapper-full-width">
      <h3 id="attach-phone-to-mount">Attaching phone to mount</h3>
      <iframe class="devsite-embedded-youtube-video" data-video-id="ZeRGBqEZOQs"
              data-autohide="1" data-showinfo="0" frameborder="0" allowfullscreen>
      </iframe>
    </div>
    <div class="video-wrapper-full-width">
      <h3 id="install-phones-dual-mount">Installing phones on a dual mount</h3>
      <iframe class="devsite-embedded-youtube-video" data-video-id="IzI6j44OMcA"
              data-autohide="1" data-showinfo="0" frameborder="0" allowfullscreen>
      </iframe>
    </div>
    <div class="video-wrapper-full-width">
      <h3 id="calibrate-controller">Calibrating the controller</h3>
      <iframe class="devsite-embedded-youtube-video" data-video-id="7_nNNJ-J8tY"
              data-autohide="1" data-showinfo="0" frameborder="0" allowfullscreen>
      </iframe>
    </div>
    <div class="video-wrapper-full-width">
      <h3 id="adjust-phone-fixture">Adjusting the phone fixture</h3>
      <iframe class="devsite-embedded-youtube-video" data-video-id="6wd8A0veu_M"
              data-autohide="1" data-showinfo="0" frameborder="0" allowfullscreen>
      </iframe>
    </div>

</body>
</html>
