× Ground Control Points, Now in Site Scan

Scan

Quickly capture 3D models with the Scan tool from Site Scan. Upon selecting a structure to model, Site Scan calculates a route for Solo to fly automatically and gather the data needed for your 3D model. When ready, initiate your Scan mission by launching Solo with the push of a button. Solo then flies the mission displayed on the flight map and returns to land where it took off.

Step 1: Navigate to the Scan tool

1.) Begin by opening the App. Once loaded, you are greeted by the Home Screen. To continue, select Flight Tools.

 

 

2.) Select Scan from the Flight Tool options.

Step 2: Select your object of interest

1.) The Scan tool’s home page displays a map or satellite image of your area. Adjust the view by pinching and pulling the screen image.

Select the object you want to 3D model by long pressing its location on the map. This places a marker indicating your selected location.

2.) Once you have selected the object’s location, a white circle appears around the marked location signifying the Solo’s flight path for the upcoming mission. To check and configure the mission’s settings, tap the Options icon in the bottom-left corner.

options

In Scan Settings, you can adjust:

  • Start Altitude: This is the height at which Solo makes its first Scan circuit. It is strongly recommended that you set Start Altitude to be above the height of the tallest object in the area that you are making a scan of. This way, in case of a call to Return Home, Solo can clear any intervening objects when making its way back to the home location.

Pro tip: if you are unsure about the height of the tallest object in your Scan area, fly manually above the object and record the height using the altitude meter on the controller.

  • Circle Radius: The radius of the circle Solo flies around the subject it’s scanning. This circle is shown in white on the screen, centered around the spot you indicated.
  • Step Height: The difference in altitude between the first and second passes Solo makes when scanning. To determine the altitude of the second pass, Site Scan adds this value to the Start Altitude value.
  • Continue in Auto Mode: When this switch is on (the default), Solo continues its 3D-modeling mission even if communication between Solo and the Controller is disrupted. Normally, when communication is broken, Solo automatically returns home. When Continue In Auto Mode is off, this happens immediately.

options

Step 3: Launch Solo

As a best practice, it is recommended that you give this preflight checklist a run through before taking off. It is important to identify potential obstacles in Solo’s flight path and validate a clear line of flight to return home in case of an emergency, and never fly above people.

1.) To begin your Scan mission, first tap the Play button:

scan play

2.) Then swipe the slider to the right:

Solo takes off and flies the Scan mission, snapping photos as it goes, and then returns and lands at the Home location.

Step 4: Upload your project

Once Solo has landed, click here for instructions on how to upload your project to the cloud for later use.

Email

Email our team for support

tag * ppcUrlCookiePart1 and ppcUrlCookiePart2 must be called, see bottom of script * update ppcUrlCookiePart2 and ppcUrlCookiePart2 to match your querystring and form field names * */ //Leave this as true to always use querystring values if they exist, if no querystring will attempt to get cookie values var ppcUseLatestValues = true; //set this to false to use cookie values if they exist (if false, will not check querystring first). //function to grab params from cookie function getCookie(param_name) { var i, x, y, cookie = document.cookie.split(";"); for (i = 0; i < cookie.length; i++) { x = cookie[i].substr(0, cookie[i].indexOf("=")); y = cookie[i].substr(cookie[i].indexOf("=") + 1); x = x.replace(/^\s+|\s+$/g, ""); if (x == param_name) { return unescape(y); } } } //function to create cookie function setCookie(param_name, value, exdays) { var exdate = new Date(); exdate.setDate(exdate.getDate() + exdays); //CHANGE DOMAIN BELOW TO MATCH SITE var c_value = escape(value) + ((exdays == null) ? "" : "; domain=.3dr.com; path=/; expires=" + exdate.toUTCString()); document.cookie = param_name + "=" + c_value; } //function to check if cookie exists and, if so, run the setCookie function function checkCookie(param_name, param_url_name) { var param_value = getCookie(param_name); if ((param_value != null && param_value != "" && param_value != "undefined") && ppcUseLatestValues == false) { //this means the param name/value pair exists - and we don't want to use latest } else { //this means the param name/value pair does not exist - so create it //grab values from URL var pageURL = window.location.search.substring(1); var URLVariables = pageURL.split('&'); for (var i = 0; i < URLVariables.length; i++) { var parameterName = URLVariables[i].split('='); if (parameterName[0] == param_url_name) { //filter out "#" in case that is in the last URL param param_value = decodeURIComponent(parameterName[1].split("#")[0]); } } if (param_value != "undefined" && param_value != "" && param_value != null) { //create cookie setCookie(param_name, param_value, 365); } } } //function to setup the parameters and save the cookie values function ppcUrlCookiePart1() { //setup list/array of parameters desired. names on right should match querystring names var param_names = new Array( 'utm_source;utm_source', 'utm_medium;utm_medium', 'utm_campaign;utm_campaign', 'utm_term;utm_term', 'utm_content;utm_content' ); //loop through all params and create cookie for (i = 0; i < param_names.length; i++) { var param_object = param_names[i].split(";");//split out the cookie name and url name var param_name = param_object[0]; var param_url_name = param_object[1]; //start the cookie creation checkCookie(param_name, param_url_name); } } //function to grab cookie params function mGetCookie(param_name) { var i, x, y, cookie = document.cookie.split(";"); for (i = 0; i < cookie.length; i++) { x = cookie[i].substr(0, cookie[i].indexOf("=")); y = cookie[i].substr(cookie[i].indexOf("=") + 1); x = x.replace(/^\s+|\s+$/g, ""); if (x == param_name) { return unescape(y); } } } //function to check if cookie exists and, if so, fill out the corresponding form fields function mCheckCookie(param_name, param_field_name) { var param_value = mGetCookie(param_name); if (param_value != null && param_value != "" && param_value != "undefined") { try { var obj1 = document.getElementsByName(param_field_name); obj1[0].value = param_value; return true; } catch (err) { return false; } } return false; } //function to setup parameters and begin cookie value insertion into marketo form function ppcUrlCookiePart2() { //setup list/array of parameters desired. names on right should match hidden form field names var param_names = new Array( 'utm_source;Lead Source Name (Last Touch)', 'utm_medium;Lead Source Last Touch', 'utm_campaign;Lead Campaign (Last Touch)', 'utm_term;Lead Campaign Term (Last Touch)', 'utm_content;Lead Campaign Content (Last Touch)' ); //loop through all params and create cookie for (i = 0; i < param_names.length; i++) { var param_object = param_names[i].split(";");//split out the cookie name and url name var param_name = param_object[0]; var param_field_name = param_object[1]; //start the cookie creation mCheckCookie(param_name, param_field_name); } } //ppcUrlCookiePart1 will grab values from the querystring and save them in cookies ppcUrlCookiePart1(); //ppcUrlCookiePart2 will retrive values from the cookies and populate the hidden form fields - should be in the onload try { //attempt for Marketo form MktoForms2.whenReady(function (form){ ppcUrlCookiePart2(); }); } catch (err) { //if error on Marketo form, try loading for regular form. ppcUrlCookiePart2(); }