PTZ Camera Control – An Example of Custom Software Development

A JumbleSoft.com example of custom software development for when more than an adjusted existing solution is needed.

bike with square wheels image by vrogy on flickr under attribution licence-http://creativecommons.org/licenses/by/2.0/From a business point of view, starting from scratch is a pain, no really it is. And although it’s what hard core software engineer programmers live and breath for, it’s usually not worth the pain to the person footing the bill even if it was his or her idea in the first place. Here are some of the reasons why;

Getting bespoke software development right usually required a lot of honest consultation and listening with existing users of similar systems that you want to supersede. If you just work passionately in a cave, isolated by your conviction that this genius idea will conjure itself into a perfect result by itself, you are likely to fall flat on your face on launch day for a whole bunch of ‘slap yourself on the forehead, should have been obvious’ reasons, if not for some fundamental flaw in your thinking.

You see, the problem is this; even if you and your developer are brilliant, you’ll live so closely with your emerging software baby that you’ll convince yourselves that the new way you are deciding to do things, with all those special little features, will instantly be accepted as ‘self evidently and obviously better’ and ‘altogether an improved way of doing things’. But in the real world people are already walking round with a pre-existing model of the way things are or should be. And even if your new model of the world is altogether valid and dandy, if it’s different to the way people already think, well, it better be pretty darn brilliant. Otherwise you better be the worlds best sales person, and trainer, and be able to strap them down in a chair for 4 hours while you teach them how to do it your way, and be able to threaten them that they’ll be fired if they go back to the old way of doing things when you leave the room.

You and your developer will think it’s genuinely so self evident and natural and has covered everything but 99% of the time you’ll be shocked and stunned that that idiot of a user wanted to press that button first and missed entirely that they should have…you get the message? Probably not. It’s human nature to think that other people see things the way you do and think the way you think.

Highly unlikely that you’ll emerge from your bat cave having got it all right first time. Because you’ll virtually always miss something ultra important or obvious to a normal user. It will happen, least of all because everybody goes snow blind when they work on something constantly. Hopefully it will be something easy to fix like the label on a button that was obvious to the development team because ‘that’s what we called the button when we first made it and the name kinda stuck’, or ‘ well everybody’s gonna know to slide that button down because we designed it to look a door handle didn’t we?’.

Ok. To our example and some of the points it demonstrates;

A Bespoke Camera Control System.

Why, if it’s such a pain to do bespoke software development was it worth building yet another Pan Tilt Zoom control system and interface? Aren’t there plenty around already? What was the problem with the ones that most people use?

Firstly most camera control software is designed by engineers for engineers. By that we mean they are either all standard machine button controls or various joystick versions which make sense to a motor control engineer or at a push an old style gamer with hundreds of hours on a flight simulator under his belt. But if you aren’t in to “making it look easy when it’s actually very difficult you know” then you’d better have plenty of time for everyone to wait while you nudge the camera steadily into position every time it needs to move.

Well that’s OK for a sneaky camera surveillance operator following a slow moving shop thief as he shuffles down a shopping isle, but this particular client needed to track a whole meeting room full of Deaf people signing during lively discussions held each and every week. In that setting seconds feel like minutes while people have to wait for the camera to be on them and adjusted right so that the sign language can be seen clearly on the big screen at the front of the hall.

“But what about on camera pre-sets?” Well you’ll find that most cameras don’t have 200 pre-set positions, and even if you’ve got that, you’d have to look up a table of double digit numbers and letter for each seat to access them. Again this design is OK if you are tracking just a few fixed points within the camera’s field of view but not for tracking hundreds of seats in a hall in real time.

Don’t get me wrong, some people can get pretty slick with those arrow buttons and joysticks but it’ll take all their concentration. Multi task at the same time? Poppycock! And they’ll look like they are playing a great big game of PONG as their eyes dart up and down and up again from the audience to the controls. Even the best wont be able to use the cameras at their full speed. And the time people have to wait until the camera is properly positioned on them will be a lottery.

So a highly beneficial ideal set up would be as follows;

  1. Move the cameras at their maximum speed to any position in the hall.
  2. Automatically remember slight adjustments to hundreds of positions.
  3. Have an adaptive interface that is modelled the way the operator sees the hall, not the camera so the next target for the camera can be input with a single tap of the mouse or finger.
  4. Have an interface that allows the operator to make exact and predictable micro adjustments to what the camera is showing on screen without having to look down at the controls repeatedly or without having to semi-guess how the camera will move.
  5. Require the minimum training.
  6. Require a minimum of skill and concentration to operate.

Sounds good hey? Problem was it didn’t exist. So, we built the following bespoke solution;

  • An interface that auto generated an up to date map of occupied seats so an operator could glance down once and tap the seat of the person who wanted to participate.
  • The camera would then move itself to the up to date position for that person on that day.
  • Minor adjustments to each position can be made without looking down simply by the operator dragging and dropping with the mouse or their finger as if dragging the camera image, producing a pixel perfect and predictable adjustment without having to be a gaming joystick King. If you need to zoom in or out a little, use the mouse wheel or nudge the arrow keys.
    • Because changes in control for the drag and drop arising from the camera’s need to compensate for different zoom lengths are handled completely in the background the operator can ignore the issue completely and just drag and drop the camera image with out having to think about it.
    • The newly adjusted position is remembered automatically for use next time.
  • A universal adjustment toggle button allows all seat memories to be adjusted at once instead of one at a time. This allows for on screen presentation graphics or power point to be put up and down as needed without obscuring the person on camera. The entire camera seating memory can be nudged off to the side and zoomed out to allow room for the picture on picture in the corner of the screen, then adjusted back again with a single button press when the power point is taken off screen. Can you imagine how much bother that saves?

So the whole camera control instructions for the operator can be summerised as follows;

  1. Tap the seat, then drag and zoom the image a little (only if needed).
  2. Press the powerpoint offset on/off when the powerpoint goes up and down.

We found out later that a lot of operators found step 1 so easy they just stuck with that.

That’s it.

  • Did we get everything right first time? No.
  • Did some users try to do everything upside down and back to front? Yes. These people had a model of the world based on their experience moving cameras around by hand with a boom arm at the back or with existing button and joystick controls. “No, you’re not trying to moving the camera, just drag and drop the image on screen and it will drop exactly where you put it every time, no guessing.”, “Oh, nice!” Novice users didn’t have this problem.
  • Does it work like lightning? Oh Yea!
  • How fast exactly? When you’re picked to be on camera you’ve got just about enough time to breath in before you’re live.
  • Is it easy to learn and operate? Yep, the’ve got kids through to grannies taking turns.
  • Do people notice how good it is? Yes, for about 2 minutes. Then they forget it because it just works and everyone just gets on with the meeting…All that work and it just get taken for granted? Yep, job done 🙂

So if you’re thinking about having a bespoke software project done for you…don’t. Unless you have to, in which case OK; get a good developer who can prove they’ve done that type of thing before, involve everybody whos going to have to use the thing and listen to what the have to say, expect hickups and have a ball!

Whatever the size of your bespoke software development project idea you’ll find plenty of options for development partners on peopleperhourelance and fiverr.

Or email your idea and requirements to us at enquiries@jumblesoft.com