JumpStart Logo
JumpStart
Castellano
version 1.4.1
ę tomdroid.com
turning your Android device into a precise electronic agility course timer

Introduction

Being a fanatic dog agility nerd myself, I had been racking my brains about ways to better timJump with devicee my agility course runs and those of my fellow club mates, and to easily keep record of result times. For most trainers and modestly sized clubs, a handheld stopwatch has always been the most straightforward way to go. It's a cheap solution, although prone to human lapses and, in some way or another, times must be manually written down after each run if you choose to keep record of them.
Sophisticated and expensive electronic timing gates can readily be encountered at most official trials nowadays, but these are way out of reach of most amateur agility clubs and backyard jumpers. Such gates are based on the breaking of a reflective light beam and run times can be remotely recorded and processed.
With smartphones getting more powerful and versatile every day, I was convinced that through a few hours of Android programming it would be feasible to create an App capable of similar functionalities, making use of the phone's built-in camera. That's how JumpStart was conceived. Those 'few hours' eventually turned into several weekends of fun programming and field tests. During the last two months the App has been made available to a selected group of  ▀-testers all over the globe, who have greatly helped me making the App better and contributed with valuable ideas. I wish to thank all of you who have participated in this first phase. The App has now been tested in the real world and works pretty well in way over 75% of all setups. Of course, the final goal would be to get that success rate up to a good 90%. I have still several improvements in mind and I'm pretty confident we'll eventually reach that goal. It's now time to roll out a first production version to the larger public through the Google Play Store. I'm sure the App will still show many shortcomings. Keep in mind this is a typical hardware-dependent application that needs thorough testing on multiple device models and android API levels. That's why I really need your feedback and suggestions.

What's it all about?

In few words, JumpStart turns your Android smartphone into a sensor to be placed on the start (and necessarily also end) gate of  the agility course. Motion DetectionIt detects the dog jumping over the hurdle and measures the precise time between the start jump and the finish jump. It maintains a very simple database of dogs, handlers and result times. The device is to be fixed on one of the two uprights, just above the hurdle bar, with its camera facing the opposite stanchion. On the picture on the right: motion is detected over the opposite stanchion by comparing two consecutive frames (the red area is the difference with the next frame) (courtesy Gerard BarberÓ, Club Agility Neo, Reus, Spain).

The fact that on most Android devices the rear camera is to be used, has some important consequences:

Requirements and present limitations

Future Improvements

The latter limitation is eliminated in the pro App version JumpStart Pro. Two devices running JumpStart Pro wirelessly communicate so that separate devices can be placed on start gate and finish gate. There is also a JumpStart Remote App in the make, ideal for tablets, which will communicate with the sensor App and allow remote activation, reset and centralized database management, including the possibility to mark faults and refusals, scoring systems and trial rankings.

Release Notes

Please consult the latest versions release notes in the "What's new" section at the Play Store.

Step-by-step Instructions

Configuration

On starting the App, the main screen shows a camera preview window and the text "Place device and press side button…". Nevertheless, before proceeding to place the device on the start gate, it needs to be carefully configured for optimal performance. This is extremely important. Not tuning the device to your particular setup, will inevitably result in bad performance and failure. To configure the device, tap the menu button (or overflow button on the action bar on Android 3.0 or higher) and select "Settings" from the menu. An extensive settings screen will appear. We'll briefly explain every menu item as they are listed:

Settings screen 1

Timing

  • Prep. Time to Whistle: indicates how many seconds the App will wait after pressing the side (volume) button and subsequent calibration, and before the camera sensor actually starts detection. As soon as this preparation time has elapsed, a referee whistle will sound indicating the dog is allowed to jump and start the course. The default is 10 seconds.
  • Sensor Time Out: this is the maximum time the motion detection sensor will be operative and wait for a start jump. Once elapsed, the sensor will be deactivated and the course aborted. The default is 1 minute.
  • Minimum Run Interval this is an absolute minimum for the course time. I.e. no team is expected to finish the course in a shorter time. This parameter is necessary to be able to distinguish between start and finish. As soon as the sensor detects the start jump motion, it pauses detection for a short time to avoid taking the dog's hind legs moving past for the finish jump. It is recommended to set the value as high as possible (e.g. 20 secs) considering the actual length of the course. In this way one avoids false positive detections due to background motion (see below) or sudden changes in sun light. It also gives the course staff the necessary time to reposition the bar in case the dog would knock it down on the start jump. On the other hand, if you're just experimenting with the App, leave it at the default value of 5 secs, in order not to have to wait too long before making a finish jump.
  • Maximum Course Time: this is the absolute maximum course time for the present course. Runs longer than this time will automatically be aborted (an air horn will be heard). Note: not necessarily this time is to be interpreted as the strict MCT for elimination.  
  • Device

  • Device with frontcamUse Front Cam if available: several Android devices have both front camera and rear camera. If you own such a device, you can try using the front camera for detection. In this way, the touch screen will be visible and elapsed time can be clearly observed during a run. It should also ease exact positioning of the device on the stanchion as the camera preview is visible. On the other hand, as front camera quality tends to be inferior, this could influence sensor performance.  On the right: a Samsung Galaxy Note with front cam firmly strapped to a gate using a twist tie (courtesy Lynn Busse, CleverK9s, WI, USA
  • Settings screen 2
  • Go into Airplane Mode: during trial runs you might want to put your phone in Airplane Mode. Disconnecting radio communication (cell phone), you avoid the App being unexpectedly interrupted by an incoming call. Note that WiFi and Bluetooth will not be disconnected as they are used for communication with JumpStart Remote.  Note: as of Android 4.2 ("Jelly Bean") it is no more allowed to modify programmatically the global device settings, for which you would need to manually enter Airplane Mode before executing JumpStart.Successful Automatic Calibration
  • Automatic Calibration: this feature is the brain of the JumpStart App. It employs techniques from Computer Vision and Artificial Intelligence to actively recognize the opposite gate stanchion, so that none of the background would be included in the sensed area. On the right, a camera preview with successful automatic stanchion detection outlined in green.
  • Recalibrate everytime: this option instructs the App to recalibrate the algorithm after each side button press. If your device is firmly attached to the stanchion so that it can't be accidentally moved when pressing the side button, this option can be unchecked.
  • Use Flash light: this option allows using the camera's flash light to create better contrast and lighting which should improve automatic detection in certain cases. Since front cameras don't usually have a flash light, this feature only applies to rear cameras.
  • Sensor Top Cropping: in the case "Automatic Calibration" is unselected or has failed due to poor visual recognition, Bad Default Calibration JumpStart assumes by default that the opposite stanchion is situated exactly in the middle of the camera view and motion will be detected in a narrow strip ranging from top to bottom of the view. This means that in the case of short stanchions, it is not unlikely to detect motion in the background above the stanchion. Such false positives could erroneously fire the stopwatch. To minimize the chances that this could happen, you can set the percentage of the screen top that can be cropped and excluded from the detection area. The default is 0% (no cropping). The image on the right depicts a camera view with default detection strip cropped 20% from the top. Notice that the amount of cropping in this case is insufficient. Moreover, the device is badly centered on the gate, constituting a risk of false positive detections of people in the background or even the dog running over the dog walk.
  • Settings screen 3

    Sound

  • Mute: selecting this option will silence the App. If  unselected, the App will produce audible signals and optionally voice instructions (see next). Keep in mind that all audio will be reproduced at maximum volume in order to be at least hearable on a typically noisy agility field. Also, remember that the volume buttons on the device have a completely new meaning, that of activating the sensor. While the App is running they can't be used for adjusting volume.
  • Voice Instructions: if selected, the application will use spoken voice to instruct the handler to get ready, and after a run the result time in seconds and hundreds will be be spoken out, together with the name of the dog. The Text-to-Speech (TTS) engine is a standard component of the Android system. However, depending on your selected language, your device might need to download additional language files. In this case, the App will pause and give control to Google Play Store. Once the necessary language files are downloaded and as long as they remain on your device, the App will be able to locate them and won't need to download them anymore.
  • Agility

    The following two parameters refer to the dimensions of the jump gate on which the device is to be placed. It is extremely important to specify them correctly. These dimensions are used, together with the your camera's focal length and sensor size, to calculate the expected size in pixels of the opposite stanchion in the camera view. If the dimensions are incorrect, calibration and subsequent detection are due to fail.
  • Hurdle width: this is the distance between the two gate uprights. Typically around 1200mm. Here, one might subtract the thickness of your smartphone for even higher precision.
  • Opposite stanchion width: this is the broadness of the opposite upright, visible as a vertical rectangular strip as seen through the camera. Typically of the order of 40mm.
  • Settings screen 4

    Connectivity

  • Connection Type: through this configuration item, one specifies the wireless technology that will be used to communicate with other devices, either another JumpStart Pro App on another hurdle, or the application "JumpStart Remote". Communication can be either over Bluetooth, or via p2p WiFi Direct. The latter option is only available on devices running Android 4.1 ("Jelly Bean") or higher. Keep in mind that, logically, both devices must use the same communication technology, so for using WiFi Direct one would need two Jelly Bean devices. Note: as of v1.4 a third connection type, AllJoyn, has been added, allowing establishing connections in a transparent way by means of whatever transport technology available. More details on the JumpStart Pro page.
  • Remote Control: this option indicates the App will be remotely controlled by the "JumpStart Remote" App (unreleased)  on a remote device, typically a tablet.
  • Role: in the case of JumpStart Pro, one can indicate the role of the device: standalone operation (both start and finish jumps on the same hurdle), start jump sensor (Master) or finish jump sensor (Slave). In the lite App version JumpStart, this option is greyed out and the device role is always both start & finish sensor (standalone).
  • Debugging

    Menu item only visible in ▀ versions.

    Creating Teams

    TeamsJumpstart maintains a very simple database of teams, consisting of dogs and handlers. The teams database in the yet-unreleased handheld App JumpStart Remote will be much more complete, but for the present sensor App, dog and handler names are all that is needed. The App cannot be activated without having created at least one team. So, if you're still on the settings screen tap the back button to go back to the main screen and then tap the menu button (or overflow button). From the menu select "Teams" to go to the corresponding screen, which contains a table of existing teams. The first column is the team number, the second one the dog's name and the rightmost one the handler's name.
    If your table is still empty ("no data" is displayed), tap the menu button and select "New Team". A small dialog window will pop up asking for dog and handler names.
    If you'd like to delete/edit an existing team, just select it in the table and hold your finger on it. A small menu will pop up, allowing the entry to be deleted/edited.
    The Teams database can be written and read back to/from a .CSV file (a standard format editable in e.g. MS Excel).

    Placing the Device on the gate

    PlacementWhen you've got at least one team to work with, you're ready to place the device on the gate. When positioning your smartphone on a hurdle, keep in mind the following important considerations:
    Using Android's proximity sensor, JumpStart knows when it's in place against the stanchion, and will deactivate all front hardware buttons so they won't be tapped by accident.

    Pressing the Side Button

    We're ready to go now. Press the hardware side button (the volume rocker), taking care not to cover the lens with your hand. In general, JumpStart will rotate through the teams in the database. The Volume Up button corresponds to 'Next Team', while the Volume Down button to the 'Previous Team'. In case the sensor is already activated, a Volume Down press resets to the same current team.
    On pressing the side button the sensor gets activated, initiating the following course of events:
    1. A short blip will be heard to acknowledge a correct button press 
    2. The App does automatic calibration (if configured for it). This may take up to 30 seconds or more. During calibration a continuous tic-toc is heard.
    3. If calibration was successful an bright acknowledgement sound will be heard; if not, a negative jingle indicating the App falls back on default calibration.
    4. The TTS engine anounces the next team, naming the dog and "Get set! Ready?". A countdown timer starts running (see 'Prep. Time to Whistle' under Configuration). The countdown is displayed on the screen, but would only be visible in case of using a front camera.
    5. A referee-like whistle sound is heard, indicating the present team is allowed to start the run.
    6. When the App detects the start jump, a loud sports air horn is heard.
    7. The stopwatch start running (again, only visible in case of a front cam) and the sensor goes sleeping for a specified amount of time (see 'Minimum Run Interval').
    8. Once elapsed the above minimum interval, the sensor wakes up again and tries to detect a finish jump.
    9. When the App detects the finish jump, the air horn sounds again
    10. The resulting time is displayed on the screen (visible or not), and pronounced by the TTS engine, preceded by the dog's name. The results are stored in the database.
    11. The device is ready for another side button press.

    Displaying the Results Database

    ResultsWhen you've had enough of running, you can remove the device from the gate and consult the results database. For this, tap the menu button en select "Results" to go to the corresponding screen, which contains a table of run times. The first column contains the date and time at which the run was started, the second one the dog's name, and the last one the actual run time. Any individual entry can be deleted by holding your finger on it and selecting "Delete". The results database can be exported to a standard .CSV (comma-separated values, readable e.g. by Excel) file through the menu button or action bar overflow button.
    For the time being the results database, as the teams database, is very simple, and more functionalities can be expected in future versions, as well as in the handheld remote App. I'm open to your suggestions.

    Flyball

    During ▀-testing I have received numerous positive reactions from the Flyball community. At the moment the App can be used perfectly for timing Flyball runs for individual dogs. It can also be used to get the overall time of a 4-dog team, adjusting the  Minimum Run Interval accordingly. For a 4-dog team, however, it isn't possible to get the 4 individual times separately, since the sensor wouldn't be able to distinguish between the finish jump of one dog and the start jump of the next one. Who knows, maybe in a future version, the algorithm could be sophisticated to distinguish the direction of a jump. Until then, I'm open to suggestions from the Flyball community or about any other imaginable, alternative uses of the App.

    Becoming a ▀-tester

    Get It On Google PlayUp till now, the App has been available to a limited number of ▀-testers. From now on, a stable production version will be freely available on the Google Play Store to all Android owners. Nevertheless, if you still want to take part in future beta-testing JumpStart and receive experimental ▀-versions, you'll need a Google+ account and send me an e-mail from that account to support@tomdroid.com. Please, mention at least your name, your location, your Android device model and the version of Android you're running (Settings -> About phone -> Software information). I will then add you to the Google+ Community JumpStart App Users, where you can opt-in and have ▀ versions downloaded to your device from the Google Play Store: https://play.google.com/apps/testing/com.tomdroid.jumpstart (this opt-in link won't work unless you're part of the community).
    I'll appreciate all comments, suggestions for new features, bug and crash reports through the Google+ Community page, where I will also post my feedback on your questions. Also, feel free to send me photographs or videos of your particular setup or use, so we can share them with the users community.
    Finally, to keep up with the latest developments, follow us on Facebook.

    Privacy policy

    Google Play requires me to disclose that JumpStart as well as JumpStart Pro will record camera sensor data, which is used for taking consecutive photo frames for the sole pupose of their comparison for motion detection. Frames are overwritten every time the app is used.

    The app also uses Google Analytics which uses cookies, please see their Privacy Policy for more details.


    Tom.
    December 2013.