{"id":619,"date":"2018-03-16T04:17:01","date_gmt":"2018-03-16T04:17:01","guid":{"rendered":"https:\/\/uavrt.nau.edu\/?page_id=619"},"modified":"2022-03-11T12:51:18","modified_gmt":"2022-03-11T19:51:18","slug":"companion-computer","status":"publish","type":"page","link":"https:\/\/uavrt.nau.edu\/index.php\/docs\/radiotelem\/companion-computer\/","title":{"rendered":"Companion Computer Software Installation"},"content":{"rendered":"<div id=\"pl-619\"  class=\"panel-layout\" ><div id=\"pg-619-0\"  class=\"panel-grid panel-no-style\" ><div id=\"pgc-619-0-0\"  class=\"panel-grid-cell\" ><div id=\"panel-619-0-0-0\" class=\"so-panel widget widget_sow-editor panel-first-child\" data-index=\"0\" ><div id=\"manual\" class=\"panel-widget-style panel-widget-style-for-619-0-0-0\" ><div\n\t\t\t\n\t\t\tclass=\"so-widget-sow-editor so-widget-sow-editor-base\"\n\t\t\t\n\t\t>\n<div class=\"siteorigin-widget-tinymce textwidget\">\n\t<p>The following section provides initial setup instructions for all software used on-board the <a href=\"https:\/\/uavrt.nau.edu\/index.php\/docs\/radiotelem\/\">UAV-RT Companion Computer<\/a>. Hardware installation instructions can be found under<a href=\"https:\/\/uavrt.nau.edu\/index.php\/docs\/radiotelem\/system-assembly\/\">\u00a0System Assembly<\/a>. For the UAV-RT system an <a href=\"https:\/\/www.udoo.org\/\">UDOO<\/a> is used as the companion computer and is responsible for radio signal collection, processing, and storage. The system also maintains a Wi-Fi hotspot, <a href=\"https:\/\/en.wikipedia.org\/wiki\/File_Transfer_Protocol\">FTP<\/a> connection (to transfer files to the ground control station), and <a href=\"https:\/\/en.wikipedia.org\/wiki\/User_Datagram_Protocol\">UDP<\/a> connection (to start the program remotely from the ground control station). Step-by-step instructions are provided for imaging the UDOO and installing the necessary programs. Steps 1-3 are a summary of the <a href=\"https:\/\/www.udoo.org\/get-started-x86\/\">UDOO Getting Started Instructions<\/a> and explain how to load the operating system and boot the board for the first time. Step 4-5 details the specific programs downloaded\u00a0 and initial configurations set for this project.<\/p>\n<\/div>\n<\/div><\/div><\/div><div id=\"panel-619-0-0-1\" class=\"so-panel widget widget_sow-image\" data-index=\"1\" ><div\n\t\t\t\n\t\t\tclass=\"so-widget-sow-image so-widget-sow-image-default-c67d20f9f743-619\"\n\t\t\t\n\t\t>\n\n<div class=\"sow-image-container\">\n\t\t<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/UDOO-1-768x432.jpg\" width=\"768\" height=\"432\" srcset=\"https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/UDOO-1-768x432.jpg 768w, https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/UDOO-1-300x169.jpg 300w, https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/UDOO-1-1024x576.jpg 1024w, https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/UDOO-1.jpg 1280w\" sizes=\"(max-width: 768px) 100vw, 768px\" title=\"UAV-RT Companion Computer\" alt=\"\" \t\tclass=\"so-widget-image\"\/>\n\t<\/div>\n\n<\/div><\/div><div id=\"panel-619-0-0-2\" class=\"so-panel widget widget_sow-editor panel-last-child\" data-index=\"2\" ><div id=\"manual\" class=\"panel-widget-style panel-widget-style-for-619-0-0-2\" ><div\n\t\t\t\n\t\t\tclass=\"so-widget-sow-editor so-widget-sow-editor-base\"\n\t\t\t\n\t\t>\n<div class=\"siteorigin-widget-tinymce textwidget\">\n\t<p>Before beginning please make sure you have the following supplies available:<\/p>\n<ul>\n<li>UDOO<\/li>\n<li>64GB - Micro SD Card<\/li>\n<li>Keyboard\/Mouse<\/li>\n<li>Ethernet Cable<\/li>\n<li>Monitor with HDMI hookup<\/li>\n<li>Flash-drive (at least 8GB)<\/li>\n<\/ul>\n<\/div>\n<\/div><\/div><\/div><\/div><\/div><div id=\"pg-619-1\"  class=\"panel-grid panel-no-style\" ><div id=\"pgc-619-1-0\"  class=\"panel-grid-cell\" ><div id=\"panel-619-1-0-0\" class=\"so-panel widget widget_sow-editor panel-first-child panel-last-child\" data-index=\"3\" ><div id=\"imaging\" class=\"panel-widget-style panel-widget-style-for-619-1-0-0\" ><div\n\t\t\t\n\t\t\tclass=\"so-widget-sow-editor so-widget-sow-editor-base\"\n\t\t\t\n\t\t><h3 class=\"widget-title\">Step 1: Imaging <\/h3>\n<div class=\"siteorigin-widget-tinymce textwidget\">\n\t<p>To install an operating system to the UDOO it is necessary to create a bootable flash drive. While summary instructions are provided below, it is easiest to follow the directions provided on the UDOO website. Follow the <a href=\"https:\/\/www.udoo.org\/get-started-x86\/\">Getting Started<\/a> link and scroll down to Chapter Three. The Getting Started link shows how to install Windows and Ubuntu onto the UDOO, but we are going to use Linux Mint (an offshoot of Ubuntu) on the UDOO. The first step is to download the required OS system onto a USB drive. The operating system used is a Linux based OS and will run the required software on the UDOO. Once installed to the USB, the USB can be plugged into the UDOO and the operating system installed onto the microSD card. Again, for a video explanation on how to create a bootable flash drive reference Chapter Three on <a href=\"https:\/\/www.udoo.org\/get-started-x86\/\">UDOO's getting started webpage<\/a>.<\/p>\n<p>Software<\/p>\n<ul style=\"list-style-type: circle;\">\n<li><a href=\"https:\/\/unetbootin.github.io\/\">UNetbootin<\/a>: program used create bootable flashdrive on Windows.<\/li>\n<li><a href=\"https:\/\/linuxmint.com\/download.php\">Linux Mint<\/a> : OS system installed onboard the UDOO (we are running Mint 19 64-bit Cinnamon)<\/li>\n<\/ul>\n<p>Install Steps<\/p>\n<ol>\n<li>Download the latest <a href=\"https:\/\/linuxmint.com\/download.php\">Linux Mint<\/a> OS<\/li>\n<li>Format your flash drive to \"FAT 32\"<\/li>\n<li>Open\u00a0 UNetbootin\u00a0 and choose the \"Diskimage\" option towards the bottom of the window. Make sure the blank USB you intend to download the image to is plugged into the computer\u00a0 before you attempt to mount the OS to the USB<\/li>\n<li>You should have already downloaded the Linux Mint OS from the website, that file will be an ISO file. You will need to select that file in the UNetbootin menu<\/li>\n<li>Now double check that you are selecting the right drive to mount it to and begin imaging (if you do not see your\u00a0 flash drive, plug in the flash drive and relaunch UNetbootin)<\/li>\n<li>Once the imaging is finished eject the flash drive and plug it into your UDOO<\/li>\n<\/ol>\n<\/div>\n<\/div><\/div><\/div><\/div><\/div><div id=\"pg-619-2\"  class=\"panel-grid panel-no-style\" ><div id=\"pgc-619-2-0\"  class=\"panel-grid-cell\" ><div id=\"panel-619-2-0-0\" class=\"so-panel widget widget_sow-editor panel-first-child panel-last-child\" data-index=\"4\" ><div id=\"booting\" class=\"panel-widget-style panel-widget-style-for-619-2-0-0\" ><div\n\t\t\t\n\t\t\tclass=\"so-widget-sow-editor so-widget-sow-editor-base\"\n\t\t\t\n\t\t><h3 class=\"widget-title\">Step 2: Booting up<\/h3>\n<div class=\"siteorigin-widget-tinymce textwidget\">\n\t<p>If you are referencing the UDOO getting started page, this step is the <a href=\"https:\/\/www.udoo.org\/get-started-x86\/\">fourth chapter on the website.<\/a><\/p>\n<p>Booting Up the UDOO<\/p>\n<ol>\n<li>Now that you have a USB drive with a bootable OS on it, you can now connect the USB drive into the UDOO. ENSURE you have the other components connected as well including: a monitor, a keyboard, a mouse, the microSD storage and a Ethernet cable\/Wi-Fi for internet.<\/li>\n<li>With the USB flash drive connected power on the UDOO. Once powered on, <strong>immediately<\/strong> start pressing the ESC button on your keyboard until you get brought to a menu with boot-up menu. If you were not able to get to this menu with six option and are instead brought to a command prompt window,\u00a0 power off the UDOO and try again.<\/li>\n<li>On this menu select the \"Boot Manager\" option to be brought to the BIOS. You will want to focus on the top selections where it says EFI boot devices. Choose your USB drive that has the OS on it and it will bring you to a black screen with a few option to choose from. Press enter on the first option that says \"Start Linux Mint 19 Cinnamon 64 bit\" and this will bring you to a temporary live session.<\/li>\n<\/ol>\n<\/div>\n<\/div><\/div><\/div><\/div><\/div><div id=\"pg-619-3\"  class=\"panel-grid panel-no-style\" ><div id=\"pgc-619-3-0\"  class=\"panel-grid-cell\" ><div id=\"panel-619-3-0-0\" class=\"so-panel widget widget_sow-editor panel-first-child panel-last-child\" data-index=\"5\" ><div id=\"installation\" class=\"panel-widget-style panel-widget-style-for-619-3-0-0\" ><div\n\t\t\t\n\t\t\tclass=\"so-widget-sow-editor so-widget-sow-editor-base\"\n\t\t\t\n\t\t><h3 class=\"widget-title\">Step 3: Installation<\/h3>\n<div class=\"siteorigin-widget-tinymce textwidget\">\n\t<p>If you followed Steps 1-2 you should now be on a temporary Linux Mint desktop. Follow the steps below to download the OS to the microSD card on the UDOO. For detailed documentation reference <a href=\"https:\/\/linuxmint-installation-guide.readthedocs.io\/en\/latest\/install.html\">Linux Mint<\/a>.<\/p>\n<ol>\n<li>Select the disk icon that says \"Install Linux Mint.\" This will bring up the wizard for installing the operating system.<\/li>\n<li>Follow the onscreen setup instructions from the install wizard to install the OS onto the microSD card. Be sure you have the Ethernet cable plugged into the\u00a0 UDOO as the installation will want to use the internet to install third party software. Reference notes below.<\/li>\n<\/ol>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Select \"Install third party software\" when prompted<\/li>\n<li>When prompted to install Linux make sure you select the 64GB micro SD card, not the 32 GB GB MMC built in to the UDOO<\/li>\n<li>When creating user name select \"log in automatically\" (makes field use easier)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/div>\n<\/div><\/div><\/div><\/div><\/div><div id=\"pg-619-4\"  class=\"panel-grid panel-no-style\" ><div id=\"pgc-619-4-0\"  class=\"panel-grid-cell\" ><div id=\"panel-619-4-0-0\" class=\"so-panel widget widget_black-studio-tinymce widget_black_studio_tinymce panel-first-child\" data-index=\"6\" ><div id=\"programs\" class=\"panel-widget-style panel-widget-style-for-619-4-0-0\" ><h3 class=\"widget-title\">Step 4: Programs<\/h3><div class=\"textwidget\"><p>Once the OS system is installed to the UDOO (Steps 1-3) and the computer has been restarted, it is necessary to install additional software. This section details the specific software packages that were installed for the UAV-RT project. The UDOO will need an internet connection to successfully download these programs. To enter the following code open a new terminal on the UDOO (black icon in the lower left corner) and type the code below for each package. Note unless otherwise specified this code needs to be entered one line at a time and may require you to type a \"y\" to approve the download<\/p>\n<\/div><\/div><\/div><div id=\"panel-619-4-0-1\" class=\"so-panel widget widget_black-studio-tinymce widget_black_studio_tinymce\" data-index=\"7\" ><div id=\"build_git\" class=\"panel-widget-style panel-widget-style-for-619-4-0-1\" ><div class=\"textwidget\"><p><strong>Install Git, Cmake, and Setup Programs <\/strong><\/p>\n<p>Allows user to easily install other packages. Basic setup up for adding functionality to Linux.<\/p>\n<pre class=\"EnlighterJSRAW\">sudo apt install git\u00a0\u00a0(Install Git)\nsudo apt-get install cmake\u00a0\u00a0(Installs cmake)\nsudo apt-get install build-essential\u00a0\u00a0(creates necessary connections)\nsudo apt-get install libusb-1.0-0-dev\u00a0\u00a0(Installs usb connection software)\nsudo apt-get install libboost-all-dev\u00a0\u00a0(Install Boost)\nsudo apt-get install swig\nsudo apt-get install libfftw3-dev\nsudo apt-get install vsftpd  (Installs server to host FTP connection)\nsudo apt install pip\nsudo apt -get install -y python -setuptools\npip install wheel\nsudo pip install pymavlink==2.0.6\nsudo pip install mavproxy==1.6.2\npip install lxml future\npip\u00a0install\u00a0dronekit\npip\u00a0install\u00a0dronekit-sitl\ngit clone https:\/\/github.com\/mossmann\/hackrf.git\u00a0 (Installs board software Hack-RF)\ncd hackrf\ncd host\nmkdir build\ncd build\ncmake ..\/ -DINSTALL_UDEV_RULES=ON\nmake\nsudo make install\nsudo ldconfig\ncd<\/pre>\n<\/div><\/div><\/div><div id=\"panel-619-4-0-2\" class=\"so-panel widget widget_black-studio-tinymce widget_black_studio_tinymce\" data-index=\"8\" ><div id=\"build_airspy\" class=\"panel-widget-style panel-widget-style-for-619-4-0-2\" ><div class=\"textwidget\"><p><b>Build Airspy:<\/b><\/p>\n<p>This software is required for running GNU radio. The packages include software that allow the user to connect an Airspy through GNU Radio.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">wget https:\/\/github.com\/airspy\/airspyone_host\/archive\/master.zip\nunzip master.zip\ncd airspyone_host-master\nmkdir build\ncd build\ncmake ..\/ -DINSTALL_UDEV_RULES=ON\nmake\nsudo make install\nsudo ldconfig\ncd\nrm master.zip<\/pre>\n<\/div><\/div><\/div><div id=\"panel-619-4-0-3\" class=\"so-panel widget widget_black-studio-tinymce widget_black_studio_tinymce\" data-index=\"9\" ><div id=\"build_GNU\" class=\"panel-widget-style panel-widget-style-for-619-4-0-3\" ><div class=\"textwidget\"><p><b>Build GNU Radio:<\/b><\/p>\n<p>Code completes the build from above and downloads GNU radio.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">cd airspyone_host-master\/build\nrm -rf *\nsudo apt install gnuradio (Link for more info:https:\/\/wiki.gnuradio.org\/index.php\/InstallingGR)\nsudo apt-get install gnuradio-dev\nsudo apt-get install gr-iqbal (Install IQ Bal software)\ngit clone git:\/\/git.osmocom.org\/gr-osmosdr\ncd gr-osmosdr\/\nmkdir build\ncd build\ncmake ..\/\nmake\nsudo make install\nsudo ldconfig\n<\/pre>\n<\/div><\/div><\/div><div id=\"panel-619-4-0-4\" class=\"so-panel widget widget_black-studio-tinymce widget_black_studio_tinymce panel-last-child\" data-index=\"10\" ><div id=\"build_timesync\" class=\"panel-widget-style panel-widget-style-for-619-4-0-4\" ><div class=\"textwidget\"><p><strong>TimeSync Block<\/strong><\/p>\n<p>To record incoming radio data the team developed it's own<a href=\"https:\/\/uavrt.nau.edu\/index.php\/docs\/radiotelem\/gnu-radio\/#customprocessing\"> custom GNU radio block<\/a> to time sync incoming IQ data and flight data from the drone's Pixhawk. While GNU radio provides a <a href=\"https:\/\/wiki.gnuradio.org\/index.php\/Guided_Tutorial_GNU_Radio_in_Python\">complete example<\/a>, these instruction demonstrate how to build the template for this block. Please note that the $ sign shows which folder you are in in Linux. In a new terminal type the following code:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">gr_modtool newmod timesync\ncd gr-timesync\ngr-timesync$ gr_modtool add -t sync -l python<\/pre>\n<p>&nbsp;<\/p>\n<p>Match the generated code as below:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">gr-timesync$ gr_modtool add -t sync -l python\nGNU Radio module name identified: pixstream_source\nLanguage: Python\nEnter name of block\/code (without module name prefix): pixstream_source\nBlock\/code identifier: pixstream_source\nEnter valid argument list, including default arguments: timesync\nAdd Python QA code? [Y\/n] y\nAdding file 'Python\/pixstream_source.py'...\nAdding file 'Python\/qa_pixstream_source.py'...\nEditing Python\/CMakeLists.txt...\nAdding file 'grc\/timesync_pixstream_source.xml'...\nEditing grc\/CMakeLists.txt...\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Once the folder finishes creating, leave the terminal alone and open a new folder (icon in the lower right corner). Navigate to the python folder in the newly created gr-timesync folder. The address should be similar to the following where you replace \"username\" with your user name: <code class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">\/home\/username\/gr-timesync\/python<\/code>. Once the folder is located open pixstream_source.py and replace code with script below (note you may need to open the code in a new window for the formatting to copy properly, this can easily be done by hovering over the top right corner of the code and selecting the appropriate option).<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">#!\/usr\/bin\/env python\n# -*- coding: utf-8 -*-\n#\n# Copyright 2018 &lt;+YOU OR YOUR COMPANY+&gt;.\n#\n# This is free software; you can redistribute it and\/or modify\n# it under the terms of the GNU General Public License as published by\n# the Free Software Foundation; either version 3, or (at your option)\n# any later version.\n#\n# This software is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n# GNU General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with this software; see the file COPYING.  If not, write to\n# the Free Software Foundation, Inc., 51 Franklin Street,\n# Boston, MA 02110-1301, USA.\n#\n\nimport numpy\nfrom gnuradio import gr\n\nimport time\nimport os\nimport datetime\nfrom dronekit import connect, VehicleMode\nimport subprocess\nimport sys\nimport platform\nimport math\nimport serial\n\n\nclass pixstream_source(gr.sync_block):\n    \"\"\"\n    docstring for block pixstream_source\n    \"\"\"\n\n    def __init__(self, telem_file_path):\n        gr.sync_block.__init__(self,\n                               name=\"pixstream_source\",\n                               in_sig=None,\n                               out_sig=[(numpy.float32, 7)])\n\n        # Check the OS to see what connection string to use to talk to Pixhawk\n\n        osName = platform.system()\n        if(osName == 'Windows'):\n            connection_string = \"COM3\"  # for connection via USB\n        elif(osName == 'Darwin'):  # Darwin is the result for a Mac\n            connection_string = \"\/dev\/cu.usbmodem1\"\n            # The Dronekit site doesn't have a \/ in the front of the conenction\n            # but it is necessary\n        else:\n            connection_string = \"\/dev\/ttyACM0\"  # for connection via USB\n\n        print(osName)\n\n        # connection_string = \"127.0.0.1:14550\"\n\n        # Now connect to Pixhawk\n        print(\"Connecting to Pixhawk\")\n        self.vehicle = connect(connection_string, wait_ready=True, rate=10)\n        print(\"Connected!\")\n\n        # Create the telemetry log file and add the header\n        self.now = datetime.datetime.now()\n        self.telem_file_name = telem_file_path+\"\/telem - \" + \n            self.now.strftime(\"%Y-%m-%d-T%H_%M_%S\") + \".flt\"\n        file = open(self.telem_file_name, \"w\")\n        file.write(\"Time_s\"+\"t\"\"Heading_deg\"+\"t\"+\"Pitch_rad\"+\"t\"+\"Roll_rad\" +\n                   \"t\"+\"Yaw_rad\"+\"t\"+\"Lat\"+\"t\"+\"Long\"+\"t\"+\"Alt_m_AGL\"+\"n\")\n        file.close\n\n\n    def write_telem(self, the_data):\n        # This function is used to write the data to the tab delimited text file\n        file = open(self.telem_file_name, \"a\")\n        # print str(the_data)\n        # Time, Heading, Pitch, Roll, Yaw, Lat, Lon, Alt-AGL\n        file.write(str(the_data[0, 0])+\"t\"+str(the_data[0, 1])+\"t\"+str(the_data[0, 2])+\"t\"+str(the_data[0, 3]) +\n                   \"t\"+str(the_data[0, 4])+\"t\"+str(the_data[0, 5])+\"t\"+str(the_data[0, 6])+\"t\"+str(the_data[0, 7])+\"n\")\n        file.close\n\n    def work(self, input_items, output_items):\n        '''This method is called by the gnuradio code much more frequently than\n        the 4-10 Hz that we want to save data. To limit the data rate, the\n        method checks to see if the current time has a zero in the tenths place.\n        If it does, it will call the 'write_telem' method to write the current\n        telemetry data to the log file. If it isn't yet time to write the data,\n        the method will sleep for a hundreth of a second and check again. The\n        functionality of this method relies on the fact that the rest of the\n        gnuradio code is running much faster and calling this function more\n        frequently than every 0.01 seconds.\n        '''\n        # Determine the the time when the work method is called\n        starttime = time.time()\n        # Find the next 10th of a second. That is when we want to write data\n        nexttime = (math.floor(starttime*10)+1)\/10\n        # nexttime = (math.floor(starttime*self.save_rate)+1)\/self.save_rate\n        # print \"Start Time is: \", starttime\n        # print \"Next  Time is: \", nexttime\n        nowtime = starttime  # nowtime is now. Will be updated later\n        while nowtime &lt;= nexttime:\n            # &lt;+signal processing here+&gt;\n            time.sleep(0.01)\n            # time.sleep(1\/self.save_rate*1\/10)\n            nowtime = time.time()\n        # Once we get to this point (out of the while loop), we are at the\n        # of the second when we want to write data....\n\n        # Set up and fill the data vector\n        data = numpy.zeros((1, 8))\n        data[0, 0] = time.time()\n        data[0, 1] = self.vehicle.heading\n        data[0, 2] = self.vehicle.attitude.pitch\n        data[0, 3] = self.vehicle.attitude.roll\n        data[0, 4] = self.vehicle.attitude.yaw\n        data[0, 5] = self.vehicle.location.global_relative_frame.lat\n        data[0, 6] = self.vehicle.location.global_relative_frame.lon\n        data[0, 7] = self.vehicle.location.global_relative_frame.alt\n        # Write the data\n        self.write_telem(data)\n\n        # Below is where we stream the data out to gnu radio\n        '''Setup the out variable that gnuradio is expecting to be the size that\n        is requested. In my tests to this point, the output_items length\n        is on the order of 1500 elements. I haven't figured out how to limit\n        which would have made it able to just send the 'data' variable. It looks\n        like you can change the output buffer of a block written in C++, but now\n        one written in python. We have to use python because that is the API we\n        have for Dronekit.\n        '''\n        out = output_items[0]\n        out[:, 0] = self.vehicle.heading\n        out[:, 1] = self.vehicle.attitude.pitch\n        out[:, 2] = self.vehicle.attitude.roll\n        out[:, 3] = self.vehicle.attitude.yaw\n        out[:, 4] = self.vehicle.location.global_relative_frame.lat\n        out[:, 5] = self.vehicle.location.global_relative_frame.lon\n        out[:, 6] = self.vehicle.location.global_relative_frame.alt\n\n        return len(output_items[0])\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Once you have copied the above code save the file and exit the window. Now navigate to the XML code in the grc folder. As described above, the address should be similar to the following: <code class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">home\/username\/gr-timesync\/grc<\/code>. Open timsync_pixstream_source.xml and replace the code with script below (again you may need to open the code in a separate window to preserve formatting):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"xml\">&lt;?xml version=\"1.0\"?&gt;\n&lt;block&gt;\n  &lt;name&gt;pixstream_source&lt;\/name&gt;\n  &lt;key&gt;timesync_pixstream_source&lt;\/key&gt;\n  &lt;category&gt;Time Sync&lt;\/category&gt;\n  &lt;import&gt;import timesync&lt;\/import&gt;\n  &lt;make&gt;timesync.pixstream_source($telem_file_path)&lt;\/make&gt;\n  &lt;!-- Make one 'param' node for every Parameter you want settable from the GUI.\n       Sub-nodes:\n       * name\n       * key (makes the value accessible as $keyname, e.g. in the make node)\n       * type --&gt;\n  &lt;!--&lt;param&gt;\n    &lt;name&gt;Telemetry Save Rate (Hz)&lt;\/name&gt;\n    &lt;key&gt;save_rate&lt;\/key&gt;\n    &lt;type&gt;int&lt;\/type&gt;\n  &lt;\/param&gt; --&gt;\n\n   &lt;param&gt;\n     &lt;name&gt;Telemetry Log File Path&lt;\/name&gt;\n    &lt;key&gt;telem_file_path&lt;\/key&gt;\n    &lt;type&gt;string&lt;\/type&gt;\n  &lt;\/param&gt;\n\n  &lt;!-- Make one 'sink' node per input. Sub-nodes:\n       * name (an identifier for the GUI)\n       * type\n       * vlen\n       * optional (set to 1 for optional inputs) --&gt;\n  &lt;!--&lt;sink&gt;\n    &lt;name&gt;in&lt;\/name&gt;\n    &lt;type&gt;float&lt;\/type&gt;\n  &lt;\/sink&gt; --&gt;\n\n  &lt;!-- Make one 'source' node per output. Sub-nodes:\n       * name (an identifier for the GUI)\n       * type\n       * vlen\n       * optional (set to 1 for optional inputs) --&gt;\n  &lt;source&gt;\n    &lt;name&gt;out&lt;\/name&gt;\n    &lt;type&gt;float&lt;\/type&gt; &lt;vlen&gt;7&lt;\/vlen&gt;\n  &lt;\/source&gt;\n&lt;\/block&gt;\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Save the XML file and exit. Return to the terminal window. Make sure you are in the \"gr-timesync$\" folder still. If not open a new terminal and type <code class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">cd gr-timesync<\/code>. Type the following code to finish the build:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">mkdir build\ncd build\ncmake ..\/\nmake\nsudo make install\nsudo ldconfig\n<\/pre>\n<\/div><\/div><\/div><\/div><\/div><div id=\"pg-619-5\"  class=\"panel-grid panel-no-style\" ><div id=\"pgc-619-5-0\"  class=\"panel-grid-cell\" ><div id=\"panel-619-5-0-0\" class=\"so-panel widget widget_black-studio-tinymce widget_black_studio_tinymce panel-first-child\" data-index=\"11\" ><div id=\"configuration\" class=\"panel-widget-style panel-widget-style-for-619-5-0-0\" ><h3 class=\"widget-title\">Step 5: Configuration<\/h3><div class=\"textwidget\"><p>Once the initial programs are installed, it necessary to configure the system. This process contains various downloads and settings necessary to make the system run smoothly in the field.<\/p>\n<\/div><\/div><\/div><div id=\"panel-619-5-0-1\" class=\"so-panel widget widget_black-studio-tinymce widget_black_studio_tinymce\" data-index=\"12\" ><div id=\"conf_ftp\" class=\"panel-widget-style panel-widget-style-for-619-5-0-1\" ><div class=\"textwidget\"><p><strong>Configure FTP Server<\/strong><\/p>\n<p>While you installed the FTP Server during the programs installation, we need to\u00a0 modify the configuration file to obtain the proper settings. A UAV-RT project specific configuration file is presented here and steps are provided to copy the file. For more detailed instructions and additional modifications reference this third-party <a href=\"https:\/\/linuxconfig.org\/how-to-setup-and-use-ftp-server-in-ubuntu-linux\">FTP Setup<\/a>.<\/p>\n<ul>\n<li>Configuration File: <a href=\"https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/vsftpd.conf\">vsftpd<\/a><\/li>\n<\/ul>\n<p>Terminal steps:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">cd \/etc\nsudo rm -rf vsftpd.conf\nsudo wget 'https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/vsftpd.conf'\nsudo service vsftpd restart\ncd<\/pre>\n<\/div><\/div><\/div><div id=\"panel-619-5-0-2\" class=\"so-panel widget widget_black-studio-tinymce widget_black_studio_tinymce\" data-index=\"13\" ><div id=\"build_uavrt\" class=\"panel-widget-style panel-widget-style-for-619-5-0-2\" ><div class=\"textwidget\"><p><strong>Install UAV-RT Folder<\/strong><\/p>\n<p>This folder contains a GNU radio script for recording radio data and a script for initializing a UDP and FTP connection to the ground control station. For more information reference the <a href=\"https:\/\/uavrt.nau.edu\/index.php\/docs\/radiotelem\/adv-doc\/\">radio telemetry advanced documentation<\/a>. To download the UAV-RT folder download the zip file, unzip the contents, and place the content folder in the home folder. This procedure can be done manually using the link provided in option 1 or through a terminal window using the listed commands in option 2 (remember you need internet access during the installation process and must type one line at a time):<\/p>\n<ol>\n<li>DOWNLOAD: <a href=\"https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/UAV-RT.zip\">UAV-RT<\/a><\/li>\n<li>TERMINAL:\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">wget 'https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/UAV-RT.zip'\nunzip UAV-RT.zip\nrm UAV-RT.zip<\/pre>\n<\/li>\n<\/ol>\n<\/div><\/div><\/div><div id=\"panel-619-5-0-3\" class=\"so-panel widget widget_black-studio-tinymce widget_black_studio_tinymce\" data-index=\"14\" ><div id=\"config_dialout\" class=\"panel-widget-style panel-widget-style-for-619-5-0-3\" ><div class=\"textwidget\"><p><strong>Configure Dialout<\/strong><\/p>\n<p>While the all the code is successfully installed in the previous step, you need to give your username dialout access. This step allows you to access the UAV over a USB connection. In a terminal follow the steps below:<\/p>\n<ol>\n<li>type: <code class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">sudo usermod -a -G dialout USERNAME<\/code> where you <strong>replace USERNAME<\/strong> with your username<\/li>\n<\/ol>\n<\/div><\/div><\/div><div id=\"panel-619-5-0-4\" class=\"so-panel widget widget_black-studio-tinymce widget_black_studio_tinymce\" data-index=\"15\" ><div id=\"config_startup\" class=\"panel-widget-style panel-widget-style-for-619-5-0-4\" ><div class=\"textwidget\"><p><strong>Setup Startup\u00a0<\/strong><b>Program<\/b><\/p>\n<p>Now that you have installed the UAV-RT folder in the steps above, you need to set the UDP_MAIN.py script to run on startup. This script initializes a UDP connection and FTP connection on each startup of the UDOO (reference <a href=\"https:\/\/uavrt.nau.edu\/index.php\/docs\/radiotelem\/adv-doc\/\">advanced documentation<\/a> for more information).\u00a0 These procedures use a program called crontab, for more information reference these <a href=\"https:\/\/www.dexterindustries.com\/howto\/auto-run-python-programs-on-the-raspberry-pi\/\">instructions<\/a>. In your terminal window follow the following steps:<\/p>\n<ol>\n<li>type: <code class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">crontab -e<\/code> (if asked for an editor select option 1)<\/li>\n<li>using your arrow keys shift your page down until you are below the comments (first blank line after\u00a0 '#m h dom mon dow command')<\/li>\n<li>copy the following line in the blank space: <code class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">@reboot python \/home\/USERNAME\/UAV-RT\/UDP\/UDP_MAIN.py<\/code> making sure to <strong>replace USERNAME<\/strong> with your username<\/li>\n<li>save the script (ctrl + save)<\/li>\n<li>exit script (ctrl + x)<\/li>\n<li>if done correctly you should return to the terminal window upon completion<\/li>\n<\/ol>\n<\/div><\/div><\/div><div id=\"panel-619-5-0-5\" class=\"so-panel widget widget_black-studio-tinymce widget_black_studio_tinymce panel-last-child\" data-index=\"16\" ><div id=\"config_wifi\" class=\"panel-widget-style panel-widget-style-for-619-5-0-5\" ><div class=\"textwidget\"><p><b>Wi-Fi Hotspot<\/b><\/p>\n<p>The following instructions show how to set-up a hotpot using Linux Mint. The basic capabilities are built into Linux and easily accessible. This feature is used to create a network between the GCS and the companion computer and is essential for field use. Before following the instructions below make sure your Wi-Fi doggle is plugged into one of the USB ports on the UDOO. Once plugged in, the UDOO should automatically detect that a Wi=Fi card was connected. note: you will have to redo these steps if you plug in a different Wi-Fi Card.<\/p>\n<ol>\n<li>Select Network Settings in the lower left of the screen<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3783 size-large\" src=\"https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/hotspot_ex1-1024x576.png\" alt=\"\" width=\"1024\" height=\"576\" srcset=\"https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/hotspot_ex1-1024x576.png 1024w, https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/hotspot_ex1-300x169.png 300w, https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/hotspot_ex1-768x432.png 768w, https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/hotspot_ex1.png 1920w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/li>\n<li>Select Use Hotspot<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3784 size-full\" src=\"https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/hotspot_ex2.png\" alt=\"\" width=\"1022\" height=\"579\" srcset=\"https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/hotspot_ex2.png 1022w, https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/hotspot_ex2-300x170.png 300w, https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/hotspot_ex2-768x435.png 768w\" sizes=\"(max-width: 1022px) 100vw, 1022px\" \/><\/li>\n<li>Select \"Turn On\"<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3785 size-full\" src=\"https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/hotspot_ex3.png\" alt=\"\" width=\"1021\" height=\"575\" srcset=\"https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/hotspot_ex3.png 1021w, https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/hotspot_ex3-300x169.png 300w, https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/hotspot_ex3-768x433.png 768w\" sizes=\"(max-width: 1021px) 100vw, 1021px\" \/><\/li>\n<\/ol>\n<p>The hotspot is now connected and live. Note your password is listed below the network name.\u00a0 While setup is complete we need to make sure the hotspot generates automatically upon reboot. Use the folowing steps to configure the settings.<\/p>\n<p>&nbsp;<\/p>\n<ol>\n<li>Select Network Connections in the same lower corner of the screen<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3786 size-full\" src=\"https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/hotspot_ex4.png\" alt=\"\" width=\"311\" height=\"265\" srcset=\"https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/hotspot_ex4.png 311w, https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/hotspot_ex4-300x256.png 300w\" sizes=\"(max-width: 311px) 100vw, 311px\" \/><\/li>\n<li>Choose \"Hotspot\" under Wi-Fi and select the settings icon<img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3787 aligncenter\" src=\"https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/hotspot_ex5.png\" alt=\"\" width=\"618\" height=\"480\" srcset=\"https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/hotspot_ex5.png 618w, https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/hotspot_ex5-300x233.png 300w\" sizes=\"(max-width: 618px) 100vw, 618px\" \/><\/li>\n<li>Navigate to the \"General\" Tab and select \"Automatically connect...\"<img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3788 aligncenter\" src=\"https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/hotspot_ex6.png\" alt=\"\" width=\"637\" height=\"562\" srcset=\"https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/hotspot_ex6.png 637w, https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/hotspot_ex6-300x265.png 300w\" sizes=\"(max-width: 637px) 100vw, 637px\" \/><\/li>\n<li>Note you can change the Wi-Fi password under the \"Wi-Fi Security\" tab. Once satisfied with the settings, select \"save\" and exit the window.<\/li>\n<\/ol>\n<\/div><\/div><\/div><\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>The following section provides initial setup instructions for all software used on-board the UAV-RT Companion Computer. Hardware installation instructions can be found under\u00a0System Assembly. For the UAV-RT system an UDOO is used as the companion computer and is responsible for radio signal collection, processing, and storage. The system also maintains a Wi-Fi hotspot, FTP connection [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"parent":228,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Companion Computer Software Installation | UAV-RT 100<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/uavrt.nau.edu\/index.php\/docs\/radiotelem\/companion-computer\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Companion Computer Software Installation | UAV-RT 100\" \/>\n<meta property=\"og:description\" content=\"The following section provides initial setup instructions for all software used on-board the UAV-RT Companion Computer. Hardware installation instructions can be found under\u00a0System Assembly. For the UAV-RT system an UDOO is used as the companion computer and is responsible for radio signal collection, processing, and storage. The system also maintains a Wi-Fi hotspot, FTP connection [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/uavrt.nau.edu\/index.php\/docs\/radiotelem\/companion-computer\/\" \/>\n<meta property=\"og:site_name\" content=\"UAV-RT\" \/>\n<meta property=\"article:modified_time\" content=\"2022-03-11T19:51:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/hotspot_ex1-1024x576.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/uavrt.nau.edu\/index.php\/docs\/radiotelem\/companion-computer\/\",\"url\":\"https:\/\/uavrt.nau.edu\/index.php\/docs\/radiotelem\/companion-computer\/\",\"name\":\"Companion Computer Software Installation | UAV-RT 100\",\"isPartOf\":{\"@id\":\"https:\/\/uavrt.nau.edu\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/uavrt.nau.edu\/index.php\/docs\/radiotelem\/companion-computer\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/uavrt.nau.edu\/index.php\/docs\/radiotelem\/companion-computer\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/hotspot_ex1-1024x576.png\",\"datePublished\":\"2018-03-16T04:17:01+00:00\",\"dateModified\":\"2022-03-11T19:51:18+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/uavrt.nau.edu\/index.php\/docs\/radiotelem\/companion-computer\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/uavrt.nau.edu\/index.php\/docs\/radiotelem\/companion-computer\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/uavrt.nau.edu\/index.php\/docs\/radiotelem\/companion-computer\/#primaryimage\",\"url\":\"https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/hotspot_ex1.png\",\"contentUrl\":\"https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/hotspot_ex1.png\",\"width\":1920,\"height\":1080},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/uavrt.nau.edu\/index.php\/docs\/radiotelem\/companion-computer\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/uavrt.nau.edu\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Documentation\",\"item\":\"https:\/\/uavrt.nau.edu\/index.php\/docs\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Radio Telemetry\",\"item\":\"https:\/\/uavrt.nau.edu\/index.php\/docs\/radiotelem\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Companion Computer Software Installation\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/uavrt.nau.edu\/#website\",\"url\":\"https:\/\/uavrt.nau.edu\/\",\"name\":\"UAV-RT\",\"description\":\"A drone based wildlife tracking system\",\"publisher\":{\"@id\":\"https:\/\/uavrt.nau.edu\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/uavrt.nau.edu\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/uavrt.nau.edu\/#organization\",\"name\":\"DASL Lab\",\"url\":\"https:\/\/uavrt.nau.edu\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/uavrt.nau.edu\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2018\/08\/DASL_Logo_2.png\",\"contentUrl\":\"https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2018\/08\/DASL_Logo_2.png\",\"width\":990,\"height\":375,\"caption\":\"DASL Lab\"},\"image\":{\"@id\":\"https:\/\/uavrt.nau.edu\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Companion Computer Software Installation | UAV-RT 100","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/uavrt.nau.edu\/index.php\/docs\/radiotelem\/companion-computer\/","og_locale":"en_US","og_type":"article","og_title":"Companion Computer Software Installation | UAV-RT 100","og_description":"The following section provides initial setup instructions for all software used on-board the UAV-RT Companion Computer. Hardware installation instructions can be found under\u00a0System Assembly. For the UAV-RT system an UDOO is used as the companion computer and is responsible for radio signal collection, processing, and storage. The system also maintains a Wi-Fi hotspot, FTP connection [&hellip;]","og_url":"https:\/\/uavrt.nau.edu\/index.php\/docs\/radiotelem\/companion-computer\/","og_site_name":"UAV-RT","article_modified_time":"2022-03-11T19:51:18+00:00","og_image":[{"url":"https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/hotspot_ex1-1024x576.png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/uavrt.nau.edu\/index.php\/docs\/radiotelem\/companion-computer\/","url":"https:\/\/uavrt.nau.edu\/index.php\/docs\/radiotelem\/companion-computer\/","name":"Companion Computer Software Installation | UAV-RT 100","isPartOf":{"@id":"https:\/\/uavrt.nau.edu\/#website"},"primaryImageOfPage":{"@id":"https:\/\/uavrt.nau.edu\/index.php\/docs\/radiotelem\/companion-computer\/#primaryimage"},"image":{"@id":"https:\/\/uavrt.nau.edu\/index.php\/docs\/radiotelem\/companion-computer\/#primaryimage"},"thumbnailUrl":"https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/hotspot_ex1-1024x576.png","datePublished":"2018-03-16T04:17:01+00:00","dateModified":"2022-03-11T19:51:18+00:00","breadcrumb":{"@id":"https:\/\/uavrt.nau.edu\/index.php\/docs\/radiotelem\/companion-computer\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/uavrt.nau.edu\/index.php\/docs\/radiotelem\/companion-computer\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/uavrt.nau.edu\/index.php\/docs\/radiotelem\/companion-computer\/#primaryimage","url":"https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/hotspot_ex1.png","contentUrl":"https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2019\/07\/hotspot_ex1.png","width":1920,"height":1080},{"@type":"BreadcrumbList","@id":"https:\/\/uavrt.nau.edu\/index.php\/docs\/radiotelem\/companion-computer\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/uavrt.nau.edu\/"},{"@type":"ListItem","position":2,"name":"Documentation","item":"https:\/\/uavrt.nau.edu\/index.php\/docs\/"},{"@type":"ListItem","position":3,"name":"Radio Telemetry","item":"https:\/\/uavrt.nau.edu\/index.php\/docs\/radiotelem\/"},{"@type":"ListItem","position":4,"name":"Companion Computer Software Installation"}]},{"@type":"WebSite","@id":"https:\/\/uavrt.nau.edu\/#website","url":"https:\/\/uavrt.nau.edu\/","name":"UAV-RT","description":"A drone based wildlife tracking system","publisher":{"@id":"https:\/\/uavrt.nau.edu\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/uavrt.nau.edu\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/uavrt.nau.edu\/#organization","name":"DASL Lab","url":"https:\/\/uavrt.nau.edu\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/uavrt.nau.edu\/#\/schema\/logo\/image\/","url":"https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2018\/08\/DASL_Logo_2.png","contentUrl":"https:\/\/uavrt.nau.edu\/wp-content\/uploads\/2018\/08\/DASL_Logo_2.png","width":990,"height":375,"caption":"DASL Lab"},"image":{"@id":"https:\/\/uavrt.nau.edu\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/uavrt.nau.edu\/index.php\/wp-json\/wp\/v2\/pages\/619"}],"collection":[{"href":"https:\/\/uavrt.nau.edu\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/uavrt.nau.edu\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/uavrt.nau.edu\/index.php\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/uavrt.nau.edu\/index.php\/wp-json\/wp\/v2\/comments?post=619"}],"version-history":[{"count":169,"href":"https:\/\/uavrt.nau.edu\/index.php\/wp-json\/wp\/v2\/pages\/619\/revisions"}],"predecessor-version":[{"id":4110,"href":"https:\/\/uavrt.nau.edu\/index.php\/wp-json\/wp\/v2\/pages\/619\/revisions\/4110"}],"up":[{"embeddable":true,"href":"https:\/\/uavrt.nau.edu\/index.php\/wp-json\/wp\/v2\/pages\/228"}],"wp:attachment":[{"href":"https:\/\/uavrt.nau.edu\/index.php\/wp-json\/wp\/v2\/media?parent=619"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}