Consumer Entertainment and Automation Systems

So, after getting some experience doing development for an escape room company and getting to know the needs of the company I worked for as well as many others. I came to realize that if a company wants anything beyond locks and keys. For example, automated doors, sound and lighting effects, and complex puzzle logic are desires that all escape room companies need. However, I have seen company after company unable to find a solution that they can purchase and implement without having a full-time engineering staff. Either they bite the bullet and hire on a full-time engineering team to implement solutions directly with microcontrollers and various sensors or they lower their expectations and implement solutions that are wholly mechanical. The issue with the first is that engineers are not cheap, and most escape room companies are this time are small. Developing a custom system to control your props from the ground up is a large task that has a huge lead time. Meaning that you invest huge amounts of money and the amount of time before you start seeing results is large. The issue with the second is that you do not differentiate yourself from your competition. If you can implement a puzzle with a lock and key in the span of a few hours so can anyone else. I have seen many escape rooms take this route and inevitably they do not pull in crowds since they don’t “wow” their customers. Leading to an underperforming business that I have always seen close their doors after to long. The company I worked for took the first route and struggled for quite a while before the results of their investment started to show. They are now one of the highest rated escape rooms in the Atlanta area.

Seeing an obvious need I have now officially kicked off development on an automated control system targeted at the entertainment industry. For example, haunted houses, escape rooms, theme parks, ect. The end goal is a system that will be implementable initially by a technician. Then it can continue to be supported and configured by the business staff themselves. An easy to use graphical interface will allow a non-technical user to customize how their props work without writing a line of code. The user can do things as simply as changing when and light should turn on or off, changing what a button does, or when a sound effect triggers. Or as complex as designing from the ground up the logical flow of your props with randomly generated clues and codes making each user experience different.

At this point evaluation hardware has been developed and the software backend is in development. If you are interested in learning more or getting involved, please reach out and contact me at dominic@ottaviano.me.

I will release more information as development moves along. For now this is all I’m free to say however stay tuned and it won’t be too much longer before we get together a formal description with some images and mock ups of the final product.

Helicopter Control Systems – ECE 6552

For the Georgia Institute of Technology and its Nonlinear Systems class, my group performed analysis on a model for a small coaxial RC helicopter. The objectives of our study were to:

  • Construct a model that accurately represented the dynamics of our system.
  • Stabilize the system by finding and utilizing a Lyapunov function and feedback linearization.
  • Create a simplified linear control system derived from the nonlinear dynamics of the model; then implement this control system on a real, commercially available RC helicopter.
20160226_125047
Fig. 1. The original RC helicopter.

A standard RC helicopter with a burnt out controller was chosen as a starting point. A microcontroller (ARM Cortex M-0) was chosen to be the brain of the system. A LSM9DS0 IMU was chosen to be the acceleration and rotational sensor. The reference commands are to be transmitted wirelessly to the system by an XBee-PRO® 900HP transmitter.

The main rotors are powered by two motors which are to spin counter to each other. This is the central idea to the operation of coaxial helicopters. As a rotor rotates a torque is induced on the body of the helicopter which would cause the body to begin rotating. Since the rotors are spinning in opposite directions, their torque cancels out. By varying the difference in speed of the rotors, a small amount of torque can be allowed to cause desired rotation of the helicopter’s body.

The starting point of model development was based upon the work by D. Schafroth et al, titled “Modeling, system identification and robust control of a coaxial micro helicopter”. From there we developed the model, shown in Fig 1., to describe our system.

Fig. 1. The state variables and systems of equations describing the coaxial helicopter.
Fig. 1. The state variables and systems of equations describing the coaxial helicopter.

Here x,y,z and ϕ,θ,ψ are the position and the angular positions of the center of mass of the helicopter with respect to the origin. u, v, w and p,q,r are the linear and angular velocities in the x,y, and z directions. Ωdw and Ωup are the rotor speeds. In our model we assume the motor inputs to be equal.

The objective of the controller is to stabilize the helicopter in hover to a desired z value. During hover the system has freedom of angular velocity and acceleration about the z axis, or yaw.

The final step was to prepare our helicopter to perform our real world experiment. We converted our mathematical control system into a discrete version to run in our helicopter’s controller. The biggest problem we ran into was the weight of our new controller. The helicopter was only able to maintain flight for a few moments before succumbing to the weight and drifting downward. However for a few moments we where able to achieve a stable hover, and our control system performed quite well.

Fig. 3. The finished RC helicopter with a custom controller.
Fig. 3. The finished RC helicopter with a custom controller.

With more time and a larger budget, there are many things we could have done to improve the performance of our experiment. A more powerful helicopter with a longer lasting battery would have eliminated the weight issue and enabled us to perform longer tests. In the end we successfully confirmed our mathematical model with real world experimentation.

Presentation Materials

Click here to download our PowerPoint presentation.

Forestry Worker Safety Project

In conjunction with the Georgia Institute of Technology, as a final end of program (graduation) project, my team designed and prototyped a worker safety device for forestry workers. It incorporates a lot of cool devices and modules like a powerful GPS and Radio as well allows in socket programming of the microcontroller. See more at the link below!

http://ottaviano.me/forestry_project.html

VPS Hosting vs. Shared Hosting

For a while now I have hosted my website and websites of the past using some shared hosting provider. I have suffered common issues that have forced many to make the move to dedicated hosting. These issues include slow load times, WordPress page generation issues, and lack of control of the hosting platform itself. However dedicated hosting isn’t exactly cheap and you still don’t have full control over your hosting platform.

Recently after experimenting with virtualization technologies at home on my private homelab, I was curious to see if commercial private virtualization offerings have dropped in price enough to consider renting a VPS (Virtual Private Server) and dropping my shared hosting plan.

For those who haven’t heard, a VPS provider provides you with a private virtualization service. They basically host a virtual machine that acts like a real server sitting in their data center. You are provided administrator access to the server and can set it up to do whatever you wish. Popular uses are web hosting, video gaming servers, private VPN service, experimentation, and the list goes on to include anything would want to do with a server.

After some research I came up with a few popular providers that ranged in price but where all surprisingly low priced. In the end I narrowed it down to linode.com, RamNode.com, and DigitalOcean.com. They all stored their data on speedy SSDs and had a huge range of offerings varying from slower low RAM and CPU offerings to the high powered offerings containing up to 64 GB of RAM and 20 CPUs at the time of this write-up. I’ll leave the comparison shopping up to you if you are interested in getting your own VPS.

In the end I decided to go with DigitalOcean’s $5 a month plan. It seems to be plenty fast for web hosting. RamNode did have one cheaper offering at $3.50 a month, but at only 256 MB of ram, I was concerned about the viability of hosting a WordPress site there. For $5 a month I get just enough but nothing more, and it has worked beautifully; not to mention that DigitalOcean’s admin interface is extremely simple to use and cleanly designed making getting setup a breeze. They offer a range of Linux OSs and several Ubuntu server based images with things like a LAMP (Linux, Apache, MySQL, PHP) setup preconfigured to save you time.

My load times have dropped by an order of magnitude on my blog and easily by double or quadruple on my HTML pages. The freedom of full control over my hosting server has also been a refreshing change of pace. No longer do I have to pester the hosting service if something isn’t working. Although if something does go wrong, don’t expect anyone but yourself to be the one fixing it. DigitalOcean provides the hardware but you setup the VPS on your own.

I would head over heels recommend a VPS based hosting solution to anyone with the confidence to setup a Linux based web hosting machine on their own. While it’s not quite as easy for the average user as shared hosting, if you have the ability it doesn’t make sense to stay with shared hosting in my opinion.

Thanks for reading and happy VPS…ing!

A shameless plug: If you do decide DigitalOcean is your VPS provider of choice, don’t be afraid to click my referral link (https://m.do.co/c/ee39027a4156) when you sign up. You will immediately get $10 credited to your account and of course it helps me out.