26 Dec

Channel mapping with the DJI A2 and Futaba T14SG

Overcoming some issues sorting out the configuration of the DJI A2 and the Futaba 14SG controller and I thought I would share. There are a ton of tutorials out there but it took some digging to figure out just how to apply a channel to a switch and then map that channel to a function on the A2.

On the controller push LNK 2 times and then scroll to FUNCTION and press RTN. The numbers on the left correspond to the channels. The designation next must be unique if you want the joined channel and switch to be independent so I immediately set each open channel to a unite AUX number.

Next you assign a CTRL by scrolling to the appropriate position, push RTN and then scroll to the button name (i.e. SA, SE, etc). This maps the channel to that specific switch.

In the A2 software click the channel mapping button (in the lower right of any control page) and then click the button to the right which will read ‘Unmapped’ and choose the channel you linked to a button on the controller.

Writing this out it now sounds obvious but on the tutorials I went through it was left out and I found a gap between the Futaba manual and the A2 manual that left me temporarily scratching my head.

If you have issues contact me by email – I’ve disabled the comments due the debilitating spam they generate.

25 Dec

EasyRig really is easy – a long overdue review

For a long time I’ve admired this piece of gear from afar with a certain trepidation. The idea of having the weight of the camera distributed and having more freedom to access controls is alluring but the it just looks a bit ridiculous. However function generally wins out over form in my mind and on a recent shoot as an AC on a joint shoot for Filson Clothing and Shinola I had an opportunity to try out what is called ‘The Cameraman’s Original Back Saver Since 1994’, EasyRig.

IMG_8409.JPGDirector/DP Patrick Kehoe with the RED and EasyRig

The shoot called for a RED Scarlet and a set of CP.2 primes and a variety of Canon L series lenses including the 70-200. The basic camera rig included the tactical plate, top handle and we added a hand grip mounted to the top plate to provide an additional hold point along side the RED side handle. A RED BRICK and plate provided power with the REDVOLT in the handle for hot-swapping.

The Director/DP Patrick Kehoe was as hesitant as I was about the absurdity of the EasyRig but shared my desire for support when it comes to a heavy rig like the RED. We had shot for this client earlier in the year at Taylor Shellfish Farms in Bellingham, dressed in hip-waders and schlepping gear across the mud flats as the tide rolled in. For that shoot Patrick relied more heavily on the sticks and his hand-held moves were reserved to cradling the camera, resolving him to low-angles.

The first thing we realized is that mounting up this rig is a two-person operation. The tension on the overhead cable from the EasyRig is substantial, as it must be to support the weight. Patrick would hold the camera while I locked open the mounting clip by pushing the locking clasp up and screwing down the pin. After a warning, I would pull hard on the cable and place the clip around the handle, unscrew the pin and then re-tighten. This final step is critical – at one point we realized the clip was at the very end of the handle, saved only by the tight spacing between the end of the handle and the battery plate. If there were more space the clip could have conceivably popped off the end of the handle and the camera come loose unexpectedly. If you use this rig, pay particular attention to locking the safety pin on the mount!

Once mounted the weight of the camera is transferred magically (or perhaps by science – it’s one-in-the same to me) to the operator’s back and hips. The rig is adjustable like higher quality backpacks and the user is able to shift the weight between hips and back slightly to limit fatigue on long shooting days.

I was amazed at the stability with this heavy rig in-hand. One is able to brace the camera with the left hand while using the side handle to adjust settings then shift camera support to the right and focus with the left. Or, when an Assistant is available, work with camera settings and framing while focus is handled. In any case, the speed and flexibility of shooting were greatly improved.

The RED is a fine camera suitable in many ways but quite cumbersome at times, particularly when one is used to shooting on smaller, lighter platforms. However with the right equipment and support like the EasyRig, an operator can have the freedom to move about and get the shot without killing themselves.

As technology advances I look forward to seeing what else comes about like the ActionProducts Runner or the L’Aigle Exoskeleton, both equally ridiculous looking and designed to support the additional weight of a camera gimbal.

IMG_8410.JPGDirector/DP Patrick Kehoe with the RED and EasyRig 

IMG_8400.JPG

20 Oct

Personal testing with the DJI Ronin three-axis-gimbal

Just picked up the DJI Ronin 3-Axis-Gimbal and I thought I’d share some thoughts. The guys from Olympia Film Collective and I spent this afternoon running through some paces with both the Canon C100 and a Black Magic Cinema Camera. I’ve already run a few tests with my own Canon 5D Mark II.

My initial balance with the lighter DSLR was tougher than I expected – the light weight of the camera and the stiffness of the roll mechanism made it difficult to find a point at which the software agreed the camera was actually in balance. I could move it several millimeters in either direction and the camera would hold it’s roll position – then running the auto calibration would tell me to re-balance. I realized the trick is to check the ‘view’ in the software and see which axis was most off the center line as it monitors the motors – which told me the roll was the issue, then make micro-adjustments each direction until I was able to correct.

The C100 was much easier to balance but we weren’t able to mount it with the side-handle which is a real issue since you can’t control the camera without it. I’ve been looking for someone who has successfully mounted this camera with the handle on but no luck. The DJI site claims it supports the C100 but without the handle attached -it’s not a functional camera.

Clearly a handle-bar mounted monitor is required to operate.

Clearly a handle-bar mounted monitor is required to operate.

Riley in standard mode

Riley in standard mode

image

The trick to switching to Briefcase (Quick YouTube video) mode is:

  1. Make sure it is enabled on the controller app
  2. Rotate the handlebars back towards your body
  3. When the top handle is closest to your body, rotate the handlebars clockwise
  4. Reverse this operation to return to normal mode.

As you test this, have some with the kill switch handy! Do wish there was a physical motor kill switch on board to save battery and quickly cut the power to the motors without shutting down.

UPDATE: I found this short promo video from a company called Skyeye that shows the C100 mounted on the Ronin under a DJI s1000 octocopter, so it does appear possible.  I also read on a post that the latest firmware allows C100 camera control from the back camera controls without the handle.

29 Sep

The Science in Science Fiction (and Fantasy)

A good science fiction or fantasy film is an escape from reality and a treat for the imagination. If well done, I’m left feeling invigorated and charged about film and fighting dragons or visiting another planet, depending upon the subject matter. There is much discussion as to the believability of the science portrayed in science fiction but the believability to which this article refers is not the way in which a dystopian future or method of space travel is imagined but the basic application of physics to that imagined world.

In the past, this was kept in check because effects were largely practical and as such, physics still applied. Now that entire scenes and the better part of many films are engineered digitally, physics, while often emulated, can be tweaked to any extreme imaginable.

Take for example the most recent of the Peter Jackson’s Tolkien adaptations. Jackson has a penchant for casting his characters off a cliff into a canyon, chasm or deep into some void where they spend the better part of ten minutes tumbling wildly through a fall that would render anyone into pulp. I know what you’re thinking, these aren’t real people, they’re dwarves, or hobbits, goblins or a Tyrannosaurus Rex, though he has been known to subject this fate to humans as well (King Kong). But human or not, nothing breaks that mythical fourth wall and pulls me from the lovely state of fantastical (or sci-fi) absorption like the failure to adhere to basic physics.

I’m happy to accept that in this mythical world being projected before me that the axe-wielding dwarves, tunneling to Moriah, unleashed some fire-breathing, winged beast. I can be content and even thrilled at the concept of a lost ship happening upon a mysterious island full of undiscovered natives, dinosaurs and a two-story gorilla. Yet I have a hard time believing that all of these can fall a thousand feet into a canyon and not just survive, but fire arrows, swing axes and dodge the jaws of a dinosaur on the same gravitational inspired journey.

The ease with which filmmakers will cast aside physics of the real world is not reserved to Peter Jackson. In the latest of the series, Captain America, The Winter Soldier, our hero spends time anguishing over his friends demise as the hover-aircraft-carrier explodes and collapses around him. It seems so many action adventure films continue to push the envelope of believability in the name of an ever-heightened state of action and for what end?

Far too often a lack of quality storyline disintegrates into long action sequences that begin to resemble the video game version to be release on Xbox some months later. This was so evident in The Hobbit that I found my index finger instinctively twitching for the right-trigger of the controller as Gandalf raced along the Orc trail in what went from a first-person-shooter to a side scrolling console game. Perhaps it was an homage to Mario.

The entire sequence was so unnecessary to the telling of the film that Tolkien himself neglected to include it in the original, written version. It seems to have been required in order to maintain the desired pacing, a rather obvious and repeated method of adaptation by Jackson which Tolkien’s son Christopher noted in the quote “They eviscerated the book by making it an action movie for young people 15 to 25.”

I understand full and well that film is a business and clearly Peter Jackson knows how to make a film that sells which is why his project budgets are hundreds of millions of dollars and any of my features have yet to break hundreds of thousands, but I feel that the strength and longevity of these pictures could be preserved with some thoughtfully applied, reality.

One of the longest running and most adapted subjects which has inspired multiples television series and many feature films, books and toys, Star Trek, has always been rooted in a strong sense of reality, despite the entirely imagined universe. Space craft and worlds which are designed on scientific theory and even futurist projections not only attract a vehemently loyal fanbase of nerds but they also engage the audience in a world whose believability creates a stronger fourth wall.

Compare for a moment the original Star Wars series and the more recent Prequel Trilogy. Common knowledge dictates that the original was ground-breaking, timeless and continues to entertain. The later released prequel rates consistently less popular. While the reasons are wide and cannot exclude one Jar-Jar-Binks, the numerous computer graphics scenes not only stand out visually but also show characters or vehicles suddenly operating beyond the limits of the physical world to which we are accustomed.

I don’t believe that every film should be bound entirely by the limits of our known science. By all means, continue to make movies about dragons and space ships and dwarves, but don’t forget the science – grounding all that sci-fi and fantasy in a steeped sense of the real world makes for a richer escape from reality.

http://www.patheos.com/blogs/joeljmiller/2013/01/tolkiens-son-peter-jackson-eviscerated-lord-of-the-rings/

Star Wars
Ratings: 8.7/10 from 635,889 users Metascore: 91/100
Empire
Ratings: 8.8/10 from 567,274 users Metascore: 78/100
Jedi
Ratings: 8.4/10 from 448,149 users Metascore: 52/100

I Phantom Menace
Ratings: 6.6/10 from 381,408 users Metascore: 51/100
II Attack of the Clones
Ratings: 6.8/10 from 324,950 users Metascore: 53/100
III Revenge of the Sith
Ratings: 7.7/10 from 365,539 users Metascore: 68/100

27 Aug

Working with mySQL datetime, Bootstrap DateTimePicker and Laravel 4

I had some trouble formatting my dates for insertion and properly populating them back into my Laravel 4 blade. Here’s my solution:

within the form on edit.blade.php – note the $block->formatDateTime(Form::getValueAttribute(“date_start”)) – this passes the date_start value to the formatDateTime function in Block.php (below)

<div class="form-group">
  <div class="input-group date" id="startDate">
    {{ Form::label('date_start', 'Date/Time Begins') }}
    {{ Form::text("date_start", $block->formatDateTime(Form::getValueAttribute("date_start")), array("placeholder" => "2014-09-09 12:00:00", 'class' => 'form-control')) }}                
    <span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span>
  </div>
</div>

Function within app/models/Block.php – this formats the datetime from the database to display properly in the form so that the Bootstrap DateTimePicker can handle it

	public function formatDateTime($d) {
		$olddate = strtotime( $d );
		//$newdate = date( 'Y-m-d H:i:s', $olddate );
		$newdate = date( 'd/m/Y H:i A', $olddate );
		return $newdate;
	}

Within the update function in BlockController.php – Formats the date/time string submitted from the input field generated by the Bootstrap DateTimePicker

$startDate = \DateTime::createFromFormat('m/d/Y g:i A', trim(\Input::get('date_start')));
$block->date_start = $startDate;

02 Jul

Laravel 4 and Laravel Excel to create export

A few weeks ago I jumped into Laravel and it’s been challenging. I’ve been working with PHP and JavaScript over the past countless years and before that ColdFusion and ASP. What has made the Laravel transition difficult for me is that most of the issues and resolutions posted expose the code but fail to explain where in the application it should go.

I know, I’ve read all about MVC structure and I’m starting to get it – but hopefully this might help others and if anyone has feedback or best practices – please reply!

For this project I have essentially users who have registered for an event and I call them attendees. I link to this
by dynamically pointing to /attendees/export?block_id=1. I have a table which contains regtypes – or types of registrants, for example: general and wait-list. The attexport function looks up those regtypes and generates a sheet of data for each as well a summary page with totals.

My route (routes.php):

Route::group(array('before' => 'auth'), function()
{
   Route::get('attendees/export', 'AttendeeController@export');
});

AttendeeController.php:

	public function export() 
	{
		if(Input::get('block_id')) {
			$attendees = new Attendee;
			$attendees->attexport(Input::get('block_id'));
		}
	}

attexport function from Attendee.php:

		public function attexport($block_id) {
			$report = Excel::create('export');
			$regtypes = Regtype::all();
		    $summary = $report->sheet('Summary', function($sheet) {
		    	
		    });
			foreach ($regtypes as $regtype) {
				$attendees = Attendee::where('block_id', '=', Input::get('block_id'))
					->where('regtype_id', '=', $regtype->id)
					->get();
				if($attendees->count() > 0)
				{
					$report->sheet($regtype->name, function($sheet) use ($regtype,$summary,$attendees) {
						$headers = $this->getColumnNames($attendees);

						// $attendees_array = array_merge((array)$headers, (array)$attendees->toArray());
						$attendees_array = $attendees->toArray();
						$sheet->with($attendees_array);
						$sheet->setStyle(array(
						    'font' => array(
						        'name'      =>  'Arial',
						        'size'      =>  12
						    )
						));
						$summary->prependRow(array(
						    $regtype->name, $attendees->count()
						));						
				    });
				}
			}
			// $summary->setCellValue($celltotal,$calc);
			$summary->setCellValue('B5','=SUM(B1:B4)');
			$summary->setCellValue('A5','Total Registered Attendees');
			$report->export('xls');

		}