def get_data(self, bodies, body_id, time):
        data = QuadPosition()

        data.found_body = False

        if bodies == []:
            utils.loginfo("Gazebo not started")
        else:
            if hasattr(bodies, 'name'):
                if body_id < len(bodies.name):
                    data.found_body = True
                    data.x = bodies.pose[body_id].position.x
                    data.y = bodies.pose[body_id].position.y
                    data.z = bodies.pose[body_id].position.z
                    x = bodies.pose[body_id].orientation.x
                    y = bodies.pose[body_id].orientation.y
                    z = bodies.pose[body_id].orientation.z
                    w = bodies.pose[body_id].orientation.w

                    dcm = quat_to_dcm(w, x, y, z)
                    (roll, pitch, yaw) = dcm.to_euler()

                    data.pitch = degrees(pitch)
                    data.roll = degrees(roll)
                    data.yaw = degrees(yaw)
                else:
                    print 'Body not found'

        return copy.deepcopy(data)
def Set_Flight_Mode(MODE):
        """This function sets the flight mode of the drone to MODE."""
	return_value=True

	#Change the flight mode on the Pixhawk flight controller
	try:
		rospy.wait_for_service('mavros/set_mode',10)
	except:
		utils.logerr('Mavros is not available')
		return_value=False

	utils.loginfo('Changing flight mode to '+MODE+' ...')

	rospy.sleep(2)

	try:
		change_param=rospy.ServiceProxy('mavros/set_mode',SetMode)
		param=change_param(0,MODE)
		while param.success==False:
			param=change_param(0,MODE)
			if param.success==False:
				utils.logerr('Cannot change flight mode')
		if param.success:
			utils.loginfo('Flight mode changed to '+MODE)
		else:
			utils.logerr('Cannot change flight mode')
			return_value=False
	except:
		utils.logerr('Cannot change flight mode')
		return_value=False


	return return_value
	def get_data(self,bodies,body_id,time):
		data = QuadPosition()

		data.found_body = False
		
		if bodies==[]:
			utils.loginfo("Gazebo not started")
		else:
			if hasattr(bodies,'name'):
				if body_id<len(bodies.name):
					data.found_body=True
					data.x=bodies.pose[body_id].position.x
					data.y=bodies.pose[body_id].position.y
					data.z=bodies.pose[body_id].position.z
					x = bodies.pose[body_id].orientation.x
					y = bodies.pose[body_id].orientation.y
					z = bodies.pose[body_id].orientation.z
					w = bodies.pose[body_id].orientation.w

					dcm = quat_to_dcm(w,x,y,z)
					(roll,pitch,yaw) = dcm.to_euler()

					data.pitch=degrees(pitch)
					data.roll=degrees(roll)
					data.yaw=degrees(yaw)
				else:
					print 'Body not found'
			
		return copy.deepcopy(data)
Пример #4
0
	def get_data(self,body):
		data = QuadPosition()

		body_id = body

		data.found_body = False
		
		if self.bodies==[]:
			utils.loginfo("Gazebo not started")
		else:
			if hasattr(self.bodies,'name'):
				if body_id<len(self.bodies.name):
					data.found_body=True
					data.x=self.bodies.pose[body_id].position.x
					data.y=self.bodies.pose[body_id].position.y
					data.z=self.bodies.pose[body_id].position.z
					x = self.bodies.pose[body_id].orientation.x
					y = self.bodies.pose[body_id].orientation.y
					z = self.bodies.pose[body_id].orientation.z
					w = self.bodies.pose[body_id].orientation.w

					dcm = quat_to_dcm(w,x,y,z)
					(roll,pitch,yaw) = dcm.to_euler()

					data.pitch=degrees(pitch)
					data.roll=degrees(roll)
					data.yaw=degrees(yaw)
					
					print "Sending data for the body with id: "+str(body_id)
				else:
					print 'Body not found'
			
		return(data)
def tool(request, appname):
    # if we are here, we have been given a particular appname, e.g. "keyinfo", as part of the url
    context = {'applayout': appLayout[appname]}
    if request.method == 'POST':
        form = forms.Form(request.POST)

    elif request.method == 'GET':
        form = forms.Form(request.GET)

    else:
        form = forms.Form()

    if form.is_valid():
        loginfo(appname, context, request)
        context = dispatch(context, request, appname)

        #context['form'] = form
        context = setconstants(request, context, appname)
        loginfo(appname, context, request)

    # special case: the data endpoint returns JSON
    if appname == 'data':
        return HttpResponse(json.dumps(context['data']))
    else:
        return render(request, 'toolbox.html', context)
Пример #6
0
def Set_Flight_Mode(NODE_NAME,MODE):
	return_value=True

	#Change the flight mode on the Pixhawk flight controller
	try:
		rospy.wait_for_service('/mavros/set_mode',10)
	except:
		utils.logerr('Mavros is not available')
		return_value=False

	utils.loginfo('Changing flight mode to '+MODE+' ...')

	rospy.sleep(2)

	try:
		change_param=rospy.ServiceProxy('/mavros/set_mode',SetMode)
		param=change_param(0,MODE)
	except:
		utils.logerr('Cannot change flight mode')
		return_value=False

	if param.success:
		utils.loginfo('Flight mode changed to '+MODE)
	else:
		utils.logerr('Cannot change flight mode')
		return_value=False

	return return_value
Пример #7
0
def check_upgrade():
    fix_custom_dir()
    fix_ccent_conf()
    fix_seafevents_conf()

    last_version = read_version_stamp()
    current_version = os.environ['SEAFILE_VERSION']

    if last_version == current_version:
        fix_media_symlinks(current_version)
        return
    elif is_minor_upgrade(last_version, current_version):
        run_minor_upgrade(current_version)
        return

    # Now we do the major upgrade
    scripts_to_run = collect_upgrade_scripts(from_version=last_version,
                                             to_version=current_version)
    for script in scripts_to_run:
        loginfo('Running scripts {}'.format(script))
        # Here we use a trick: use a version stamp like 6.1.0 to prevent running
        # all upgrade scripts before 6.1 again (because 6.1 < 6.1.0 in python)
        new_version = parse_upgrade_script_version(script)[1] + '.0'
        run_script_and_update_version_stamp(script, new_version)

    update_version_stamp(current_version)
Пример #8
0
    def get_data(self, body):
        data = QuadPosition()

        body_id = body

        data.found_body = False

        if self.bodies == []:
            utils.loginfo("Gazebo not started")
        else:
            if hasattr(self.bodies, 'name'):
                if body_id < len(self.bodies.name):
                    data.found_body = True
                    data.x = self.bodies.pose[body_id].position.x
                    data.y = self.bodies.pose[body_id].position.y
                    data.z = self.bodies.pose[body_id].position.z
                    x = self.bodies.pose[body_id].orientation.x
                    y = self.bodies.pose[body_id].orientation.y
                    z = self.bodies.pose[body_id].orientation.z
                    w = self.bodies.pose[body_id].orientation.w

                    dcm = quat_to_dcm(w, x, y, z)
                    (roll, pitch, yaw) = dcm.to_euler()

                    data.pitch = degrees(pitch)
                    data.roll = degrees(roll)
                    data.yaw = degrees(yaw)

                    print "Sending data for the body with id: " + str(body_id)
                else:
                    print 'Body not found'

        return (data)
Пример #9
0
def csv(request):
    if request.method == 'POST' and request.POST != {}:
        requestObject = dict(request.POST.iteritems())
        form = forms.Form(requestObject)

        if form.is_valid():
            try:
                context = {'searchValues': requestObject}
                csvformat, fieldset, csvitems = setupCSV(
                    requestObject, context)
                loginfo('csv', context, request)

                # create the HttpResponse object with the appropriate CSV header.
                response = HttpResponse(content_type='text/csv')
                response[
                    'Content-Disposition'] = 'attachment; filename="%s-%s.%s"' % (
                        CSVPREFIX,
                        datetime.datetime.utcnow().strftime("%Y%m%d%H%M%S"),
                        CSVEXTENSION)
                return writeCsv(response,
                                fieldset,
                                csvitems,
                                writeheader=True,
                                csvFormat=csvformat)
            except:
                messages.error(request, 'Problem creating .csv file. Sorry!')
                context['messages'] = messages
                return search(request)
Пример #10
0
def jsonrequest(request):
    if request.method == 'GET':
        form = forms.Form(request.GET)
        requestObject = request.GET

    if request.method == 'POST':
        form = forms.Form(request.POST)
        requestObject = request.POST

    if form.is_valid():
        context = setconstants({}, 'json')
        del context['additionalInfo']
        del context['extra_nav']
        del context['searchrows']
        del context['searchcolumns']
        context = handleJSONrequest(context, requestObject)

        loginfo(context['appname'], context, request)
        #if check_json(context):
        # context['items'] = []
        return HttpResponse(json.dumps(context, default=json_util.default))
        #else:
        #    return HttpResponse(json.dumps(dump_errors(context))
    else:
        return HttpResponse(json.dumps({'error': 'form is not valid'}))
def Set_Flight_Mode(MODE):
    """This function sets the flight mode of the drone to MODE."""
    return_value = True

    #Change the flight mode on the Pixhawk flight controller
    try:
        rospy.wait_for_service('mavros/set_mode', 10)
    except:
        utils.logerr('Mavros is not available')
        return_value = False

    utils.loginfo('Changing flight mode to ' + MODE + ' ...')

    rospy.sleep(2)

    try:
        change_param = rospy.ServiceProxy('mavros/set_mode', SetMode)
        param = change_param(0, MODE)
        while param.success == False:
            param = change_param(0, MODE)
            if param.success == False:
                utils.logerr('Cannot change flight mode')
        if param.success:
            utils.loginfo('Flight mode changed to ' + MODE)
        else:
            utils.logerr('Cannot change flight mode')
            return_value = False
    except:
        utils.logerr('Cannot change flight mode')
        return_value = False

    return return_value
def prepareFiles(request, validateonly):
    tricoder_fileinfo = {}
    tricoder_files = []
    numProblems = 0
    for lineno, afile in enumerate(request.FILES.getlist('tricoderfiles')):
        # print afile
        # we gotta do this for now!
        if 'barcode.' not in afile.name: afile.name = 'barcode.' + afile.name
        fileinfo = {'id': lineno, 'name': afile.name, 'status': '', 'date': time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime())}
        # always use the current date as the date for the filename checking
        today = time.strftime("%Y-%m-%d", time.localtime())
        filenamepattern = r'^barcode.TRIDATA_' + re.escape(today) + r'_[\w_\.]+\.DAT$'
        if not re.match(filenamepattern, afile.name):
            fileinfo['status'] = 'filename is not valid'
            numProblems += 1
        else:
            try:
                print "%s %s: %s %s (%s %s)" % ('id', lineno, 'name', afile.name, 'size', afile.size)
                if not validateonly:
                    handle_uploaded_file(afile)
                fileinfo['status'] = 'OK'
            except:
                if validateonly:
                    fileinfo['status'] = 'validation failed'
                else:
                    fileinfo['status'] = 'file handling problem, not uploaded'
                numProblems += 1

        tricoder_files.append(fileinfo)

    if numProblems > 0:
        errormsg = 'Errors found, abandoning upload. Please fix and try again.'
    else:
        tricoder_filenumber = time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime())
        tricoder_fileinfo['tricoder_filenumber'] = tricoder_filenumber
        tricoder_fileinfo['estimatedtime'] = '%8.1f' % (len(tricoder_files) * 10 / 60.0)

        if 'createtricoder' in request.POST:
            tricoder_fileinfo['status'] = 'createtricoder'
            if not validateonly:
                loginfo('start', get_tricoder_file('input',tricoder_filenumber), request)
                try:
                    retcode = subprocess.call(
                        [POSTBLOBPATH, get_tricoder_file('input',tricoder_filenumber)])
                    if retcode < 0:
                        loginfo('process', tricoder_filenumber + " Child was terminated by signal %s" % -retcode,
                                request)
                    else:
                        loginfo('process', tricoder_filenumber + ": Child returned %s" % retcode, request)
                except OSError as e:
                    loginfo('error', "Execution failed: %s" % e, request)
                loginfo('finish', get_tricoder_file('input',tricoder_filenumber), request)

        elif 'uploadtricoder' in request.POST:
            tricoder_fileinfo['status'] = 'uploadtricoder'
        else:
            tricoder_fileinfo['status'] = 'No status possible'

    return tricoder_fileinfo, tricoder_files, numProblems
Пример #13
0
def Get_Parameter(NODE_NAME,PARAMETER_NAME,DEFAULT_VALUE):
	param=rospy.get_param(PARAMETER_NAME,DEFAULT_VALUE)
	if rospy.has_param(PARAMETER_NAME):
		utils.loginfo(''+PARAMETER_NAME+' found: '+str(param))
	else:
		utils.logwarn(''+PARAMETER_NAME+' not found. Default: '+str(DEFAULT_VALUE))

	return param
Пример #14
0
def generate_local_dockerfile():
    loginfo('Generating local Dockerfile ...')
    context = {
        'seafile_version': seafile_version,
        'https': is_https(),
        'domain': get_conf('server.domain'),
    }
    render_template('/templates/Dockerfile.template', join(generated_dir, 'Dockerfile'), context)
Пример #15
0
    def Terminate(self):
        inputstring = 'rosnode kill `rosnode list | grep ' + self.name + '`'
        self.execute(inputstring)

        try:
            delete_model = rospy.ServiceProxy("gazebo/delete_model", DeleteModel)
            delete_model(self.name)
        except rospy.ServiceException as exc:
            utils.loginfo('Failed to delete model ' + str(exc))
Пример #16
0
 def adjust_gravity_cancel(self):
     self.name = self._widget.IrisInputBox.currentText()
     rospy.set_param("/" + self.name + "/CONTROL_CANCEL_GRAVITY", int(self._widget.GravitySpinBox.value()))
     try:
         params_load = rospy.ServiceProxy("/%s/blender/update_parameters" % (self.name), Empty)
         params_load_PID = rospy.ServiceProxy("/%s/PID_controller/update_parameters" % (self.name), Empty)
         params_load()
         params_load_PID()
     except rospy.ServiceException as exc:
         utils.loginfo("PID not reachable " + str(exc))
Пример #17
0
    def Terminate(self):
        inputstring = 'rosnode kill `rosnode list | grep ' + self.name + '`'
        self.execute(inputstring)

        try:
            delete_model = rospy.ServiceProxy("gazebo/delete_model",
                                              DeleteModel)
            delete_model(self.name)
        except rospy.ServiceException as exc:
            utils.loginfo('Failed to delete model ' + str(exc))
Пример #18
0
def init_selfsigned():
    loginfo('Preparing for self signed ssl ...')
    wait_for_nginx()

    if not exists(ssl_dir):
        os.mkdir(ssl_dir)

    domain = get_conf('SEAFILE_SERVER_HOSTNAME', 'seafile.example.com')

    call('/scripts/ssl.selfsigned.sh {0} {1}'.format(ssl_dir, domain))
Пример #19
0
def bmapper(request):
    if request.method == 'POST' and request.POST != {}:
        requestObject = request.POST
        form = forms.Form(requestObject)

        if form.is_valid():
            context = SEARCHRESULTS
            context = setupBMapper(requestObject, context)

            loginfo('bmapper', context, request)
            return HttpResponse(context['bmapperurl'])
Пример #20
0
def gmapper(request):
    if request.method == 'POST' and request.POST != {}:
        requestObject = request.POST
        form = forms.Form(requestObject)

        if form.is_valid():
            context = SEARCHRESULTS
            context = setupGoogleMap(requestObject, context)

            loginfo('gmapper', context, request)
            return render(request, 'public_maps.html', context)
Пример #21
0
def search(request):
    if request.method == 'GET' and request.GET != {}:
        context = {'searchValues': dict(request.GET.iteritems())}
        context = doSearch(context)

    else:
        context = setConstants({})

    loginfo('start search', context, request)
    context['additionalInfo'] = AdditionalInfo.objects.filter(live=True)
    return render(request, 'search.html', context)
Пример #22
0
def retrieveResults(request):
    if request.method == 'POST' and request.POST != {}:
        requestObject = dict(request.POST.iteritems())
        form = forms.Form(requestObject)

        if form.is_valid():
            context = {'searchValues': requestObject}
            context = doSearch(context)

        loginfo('results.%s' % context['displayType'], context, request)
        return render(request, 'searchResults.html', context)
Пример #23
0
def bmapper(request):
    if request.method == 'POST' and request.POST != {}:
        requestObject = dict(request.POST.iteritems())
        form = forms.Form(requestObject)

        if form.is_valid():
            context = {'searchValues': requestObject}
            context = setupBMapper(requestObject, context)

            loginfo('bmapper', context, request)
            return HttpResponse(context['bmapperurl'])
Пример #24
0
def gmapper(request):
    if request.method == 'POST' and request.POST != {}:
        requestObject = dict(request.POST.iteritems())
        form = forms.Form(requestObject)

        if form.is_valid():
            context = {'searchValues': requestObject}
            context = setupGoogleMap(requestObject, context)

            loginfo('gmapper', context, request)
            return render(request, 'maps.html', context)
Пример #25
0
def gmapper(request):
    if request.method == 'POST' and request.POST != {}:
        requestObject = request.POST
        form = forms.Form(requestObject)

        if form.is_valid():
            context = SEARCHRESULTS
            context = setupGoogleMap(requestObject, context)

            loginfo('gmapper', context, request)
            return render(request, 'maps.html', context)
Пример #26
0
def search(request):
    if request.method == 'GET' and request.GET != {}:
        context = {'searchValues': dict(request.GET.iteritems())}
        context = doSearch(context)

    else:
        context = setConstants({})

    loginfo('start search', context, request)
    context['additionalInfo'] = AdditionalInfo.objects.filter(live=True)
    return render(request, 'search.html', context)
Пример #27
0
def bmapper(request):
    if request.method == 'POST' and request.POST != {}:
        requestObject = dict(request.POST.iteritems())
        form = forms.Form(requestObject)

        if form.is_valid():
            context = {'searchValues': requestObject}
            context = setupBMapper(requestObject, context)

            loginfo('bmapper', context, request)
            return HttpResponse(context['bmapperurl'])
Пример #28
0
def retrieveResults(request):
    if request.method == 'POST' and request.POST != {}:
        requestObject = dict(request.POST.iteritems())
        form = forms.Form(requestObject)

        if form.is_valid():
            context = {'searchValues': requestObject}
            context = doSearch(context)

        loginfo('results.%s' % context['displayType'], context, request)
        return render(request, 'searchResults.html', context)
Пример #29
0
def gmapper(request):
    if request.method == 'POST' and request.POST != {}:
        requestObject = dict(request.POST.iteritems())
        form = forms.Form(requestObject)

        if form.is_valid():
            context = {'searchValues': requestObject}
            context = setupGoogleMap(requestObject, context)

            loginfo('gmapper', context, request)
            return render(request, 'maps.html', context)
Пример #30
0
def bmapper(request):
    if request.method == 'POST' and request.POST != {}:
        requestObject = request.POST
        form = forms.Form(requestObject)

        if form.is_valid():
            context = SEARCHRESULTS
            context = setupBMapper(requestObject, context)

            loginfo('bmapper', context, request)
            return HttpResponse(context['bmapperurl'])
Пример #31
0
def Connect_To_Mocap(NODE_NAME):
	#Connect to the Motion Capture System, flag an error if it is unavailable

	try:
		utils.loginfo('Connecting to the mocap system...')
		rospy.wait_for_service('mocap_get_data',10)
	except:
		utils.logerr('No connection to the mocap system')
		sys.exit()
	utils.loginfo('Connected to Mocap')

	return rospy.ServiceProxy('mocap_get_data',BodyData)
Пример #32
0
def publicsearch(request):
    if request.method == 'GET' and request.GET != {}:
        context = {'searchValues': request.GET}
        context = doSearch(SOLRSERVER, SOLRCORE, context)

        global SEARCHRESULTS
        SEARCHRESULTS = context
    else:
        context = {}

    context = setConstants(context)
    loginfo('start search', context, request)
    return render(request, 'publicsearch.html', context)
Пример #33
0
def watch_controller():
    maxretry = 4
    retry = 0
    while retry < maxretry:
        controller_pid = get_command_output('ps aux | grep seafile-controller | grep -v grep || true').strip()
        garbage_collector_pid = get_command_output('ps aux | grep /scripts/gc.sh | grep -v grep || true').strip()
        if not controller_pid and not garbage_collector_pid:
            retry += 1
        else:
            retry = 0
        time.sleep(5)
    loginfo("seafile controller exited unexpectedly.")
    sys.exit(1)
Пример #34
0
 def adjust_gravity_cancel(self):
     self.name = self._widget.IrisInputBox.currentText()
     rospy.set_param('/' + self.name + '/CONTROL_CANCEL_GRAVITY',
                     int(self._widget.GravitySpinBox.value()))
     try:
         params_load = rospy.ServiceProxy(
             "/%s/blender/update_parameters" % (self.name), Empty)
         params_load_PID = rospy.ServiceProxy(
             "/%s/PID_controller/update_parameters" % (self.name), Empty)
         params_load()
         params_load_PID()
     except rospy.ServiceException as exc:
         utils.loginfo("PID not reachable " + str(exc))
Пример #35
0
def search(request):
    if request.method == 'GET' and request.GET != {}:
        context = {'searchValues': request.GET}
        context = doSearch(context)

        #global SEARCHRESULTS
        #SEARCHRESULTS = context
    else:
        context = {}

    context = setConstants(context)
    loginfo('start search', context, request)
    return render(request, 'search.html', context)
Пример #36
0
def embeddedsearch(request):
    if request.method == 'GET' and request.GET != {}:
        context = {'searchValues': request.GET}
        context = doSearch(SOLRSERVER, SOLRCORE, context)

        global SEARCHRESULTS
        SEARCHRESULTS = context
    else:
        context = {}

    context = setConstants(context)
    loginfo('start search', context, request)
    return render(request, 'public_embeddedsearch.html', context)
def Wait_For_ID(id_int):
    return_value = False

    # Wait for Mavros connection and wait until the parameter SYSID_MYGCS is available

    utils.loginfo('Connecting to Mavros ...')
    try:
        rospy.wait_for_service('mavros/param/set', 10)
    except:
        utils.logerr(
            'Mavros is not available (fail to contact service mavros/param/set).'
        )
        return_value = False
    utils.loginfo('Connected to Mavros')

    set_param = rospy.ServiceProxy('mavros/param/set', ParamSet)
    while return_value == False:
        try:
            param = set_param('SYSID_MYGCS', id_int, 0.0)
            if param.success:
                utils.loginfo('System ID changed')
                return_value = True
            else:
                utils.logerr('Cannot change system ID')
                return_value = False
        except:
            utils.logerr(
                'Cannot connect to the service "mavros/param/set" to change system ID'
            )
            return_value = False
        rospy.sleep(5)

    utils.loginfo('Iris initialised...')
    return return_value
Пример #38
0
def Wait_For_ID(id_int):
	return_value=False

	# Wait for Mavros connection and wait until the parameter SYSID_MYGCS is available

	utils.loginfo('Connecting to Mavros ...')
	try:
		rospy.wait_for_service('mavros/param/set',10)
	except:
		utils.logerr('Mavros is not available (fail to contact service mavros/param/set).')
		return_value=False
	utils.loginfo('Connected to Mavros')

	set_param=rospy.ServiceProxy('mavros/param/set',ParamSet)
	while return_value==False:
		try:
			param=set_param('SYSID_MYGCS',id_int,0.0)
			if param.success:
				utils.loginfo('System ID changed')
				return_value=True
			else:
				utils.logerr('Cannot change system ID')
				return_value=False
		except:
			utils.logerr('Cannot change system ID')
			return_value=False
		rospy.sleep(5)

	utils.loginfo('Iris initialised...')
	return return_value
Пример #39
0
def tool(request, appname):
    if appname == 'json':
        return jsonrequest(request)
    # if we are here, we have been given a particular appname, e.g. "keyinfo", as part of the url
    context = setconstants({}, appname)
    if request.method == 'GET':
        form = forms.Form(request.GET)
    else:
        form = forms.Form()

    if form.is_valid():
        # context = dispatch(context, request.GET, appname)
        loginfo(appname, context, request)
        return render(request, 'toolbox.html', context)
Пример #40
0
def Set_System_ID(id_int):
	return_value=True
        """This function sets the system ID and checks if it is possible to connect to mavros. The system ID
        should be 1 to be able to use the rc/override topic."""

	utils.loginfo('Connecting to Mavros ...')
	try:
		rospy.wait_for_service('mavros/param/set',10)
	except:
		utils.logerr('Mavros is not available (fail to contact service mavros/param/set).')
		return_value=False
	utils.loginfo('Connected to Mavros')

	utils.loginfo('Changing system ID ...')

	rospy.sleep(2)

	try:
		change_param=rospy.ServiceProxy('mavros/param/set',ParamSet)
		param=change_param('SYSID_MYGCS',id_int,0.0)

		if param.success:
			utils.loginfo('System ID changed')
		else:
			utils.logerr('Cannot change system ID')
			return_value=False
	except:
		utils.logerr('Cannot change system ID')
		return_value=False


	return return_value
def tool(request, appname):
    if appname == 'json':
        return jsonrequest(request)
    # if we are here, we have been given a particular appname, e.g. "keyinfo", as part of the url
    context = setconstants({}, appname)
    if request.method == 'GET':
        form = forms.Form(request.GET)
    else:
        form = forms.Form()

    if form.is_valid():
        # context = dispatch(context, request.GET, appname)
        loginfo(appname, context, request)
        return render(request, 'toolbox.html', context)
def Set_System_ID(id_int):
    return_value = True
    """This function sets the system ID and checks if it is possible to connect to mavros. The system ID
        should be 1 to be able to use the rc/override topic."""

    utils.loginfo('Connecting to Mavros ...')
    try:
        rospy.wait_for_service('mavros/param/set', 10)
    except:
        utils.logerr(
            'Mavros is not available (fail to contact service mavros/param/set).'
        )
        return_value = False
    utils.loginfo('Connected to Mavros')

    utils.loginfo('Changing system ID ...')

    rospy.sleep(2)

    try:
        change_param = rospy.ServiceProxy('mavros/param/set', ParamSet)
        param = change_param('SYSID_MYGCS', id_int, 0.0)

        if param.success:
            utils.loginfo('System ID changed')
        else:
            utils.logerr('Cannot change system ID')
            return_value = False
    except:
        utils.logerr('Cannot change system ID')
        return_value = False

    return return_value
Пример #43
0
def Set_System_ID(NODE_NAME,id_int):
	return_value=True

	#Necesary to allow RCOverride
	#Also checks if there is a connection to Mavros, and shuts down if there isn't

	utils.loginfo('Connecting to Mavros ...')
	try:
		rospy.wait_for_service('mavros/param/set',10)
	except:
		utils.logerr('Mavros is not available')
		return_value=False
	utils.loginfo('Connected to Mavros')

	utils.loginfo('Changing system ID ...')

	rospy.sleep(2)

	try:
		change_param=rospy.ServiceProxy('mavros/param/set',ParamSet)
		param=change_param('SYSID_MYGCS',id_int,0.0)
	except:
		utils.logerr('Cannot change system ID')
		return_value=False

	if param.success:
		utils.loginfo('System ID changed')
	else:
		utils.logerr('Cannot change system ID')
		return_value=False

	return return_value
Пример #44
0
    def clean(self):
        if 'password1' in self.cleaned_data and 'password2' in self.cleaned_data:
            if self.cleaned_data['password1'] != self.cleaned_data['password2']:
                raise forms.ValidationError(
                    _(u'You must type the same password each time!'))
        try:
            user = User.objects.get(username=self.cleaned_data['username'])
            loginfo(p=user, label="user")
            loginfo(p=self.cleaned_data["username"], label="text")
        except User.DoesNotExist:
            return self.cleaned_data

        raise forms.ValidationError(
            _(u'This username is already taken. Please choose another.'))
Пример #45
0
    def clean(self):
        if 'password1' in self.cleaned_data and 'password2' in self.cleaned_data:
            if self.cleaned_data['password1'] != self.cleaned_data['password2']:
                raise forms.ValidationError(
                    _(u'You must type the same password each time!'))
        try:
            user = User.objects.get(username=self.cleaned_data['username'])
            loginfo(p=user, label="user")
            loginfo(p=self.cleaned_data["username"], label="text")
        except User.DoesNotExist:
            return self.cleaned_data

        raise forms.ValidationError(
            _(u'This username is already taken. Please choose another.'))
Пример #46
0
    def start_publishing(self):

        utils.loginfo('start publishing')

        rate = rospy.Rate(30)
        timer = Time()
        #Get parameters (all the body ID's that are requested)
        self.body_names = sml_setup.Get_Parameter(NODE_NAME, 'body_names',
                                                  ['iris1', 'iris2'])
        self.body_array = sml_setup.Get_Parameter(NODE_NAME, 'body_array',
                                                  [1, 2])
        if type(self.body_array) is str:
            self.body_array = ast.literal_eval(self.body_array)

        #Get topic names for each requested body
        body_topic_array = self.Get_Topic_Names(self.body_array)

        #Establish one publisher topic for each requested body
        topics_publisher = self.Get_Publishers(body_topic_array)

        #Initialize empty past data list
        mocap_past_data = []
        empty_data = QuadPositionDerived()
        for i in range(0, len(self.body_array)):
            mocap_past_data.append(empty_data)

        while not rospy.is_shutdown():

            delta_time = timer.get_time_diff()

            if self.bodies:
                for i in range(0, len(self.body_array)):
                    utils.loginfo('body ' + str(i))
                    if self.body_names[i] in self.bodies.name:
                        indice = self.bodies.name.index(self.body_names[i])

                        mocap_data = self.get_data(indice)
                        mocap_data_derived = self.Get_Derived_Data(
                            mocap_data, mocap_past_data[i], delta_time)

                        #update past mocap data
                        mocap_past_data[i] = mocap_data_derived

                        #Publish data on topic
                        topics_publisher[i].publish(mocap_data_derived)

            rate.sleep()

        utils.logwarn('Mocap stop publishing')
Пример #47
0
 def Param(self):
     self.name = self._widget.IrisInputBox.currentText()
     inputstring = "roslaunch scenarios %s.launch simulation:=%s" % (self.name,self.simulation)
     self.executeBlocking(inputstring)
     #A sleep for 0.2 seconds that allows the file to be properly launched before you try to load it. 
     rospy.sleep(2.)
     
     try: 
         params_load = rospy.ServiceProxy("/%s/blender/update_parameters"%(self.name), Empty)
         params_load_PID = rospy.ServiceProxy("/%s/PID_controller/update_parameters"%(self.name), Empty)
         obstacle_params_load = rospy.ServiceProxy("/%s/obstacle_avoidance/update_parameters"%(self.name), Empty)
         params_load()
         params_load_PID()
     except rospy.ServiceException as exc:
         utils.loginfo("PID not reachable " + str(exc))
Пример #48
0
def retrieveResults(request):
    if request.method == 'POST' and request.POST != {}:
        requestObject = request.POST
        form = forms.Form(requestObject)

        if form.is_valid():
            context = {'searchValues': requestObject}
            context = doSearch(SOLRSERVER, SOLRCORE, context)

            global SEARCHRESULTS
            SEARCHRESULTS = context

            context = setConstants(context)

        loginfo('results.%s' % context['displayType'], context, request)
        return render(request, 'searchResults.html', context)
Пример #49
0
def retrieveResults(request):
    if request.method == 'POST' and request.POST != {}:
        requestObject = request.POST
        form = forms.Form(requestObject)

        if form.is_valid():
            context = {'searchValues': requestObject}
            context = doSearch(SOLRSERVER, SOLRCORE, context)

            global SEARCHRESULTS
            SEARCHRESULTS = context

            context = setConstants(context)

        loginfo('results.%s' % context['displayType'], context, request)
        return render(request, 'public_searchResults.html', context)
Пример #50
0
def prepareFiles(request, validateonly):
    tricoder_fileinfo = {}
    tricoder_files = []
    for lineno, afile in enumerate(request.FILES.getlist("tricoderfiles")):
        # print afile
        try:
            print "%s %s: %s %s (%s %s)" % ("id", lineno, "name", afile.name, "size", afile.size)
            fileinfo = {"id": lineno, "name": afile.name, "size": afile.size, "date": ""}
            if not validateonly:
                handle_uploaded_file(afile)
            tricoder_files.append(fileinfo)
        except:
            if not validateonly:
                # we still upload the file, anyway...
                handle_uploaded_file(afile)
            tricoder_files.append(
                {"name": afile.name, "size": afile.size, "error": "problem extracting image metadata, not processed"}
            )

    if len(tricoder_files) > 0:
        tricoder_filenumber = time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime())
        tricoder_fileinfo["tricoder_filenumber"] = tricoder_filenumber
        tricoder_fileinfo["estimatedtime"] = "%8.1f" % (len(tricoder_files) * 10 / 60.0)

        if "createtricoder" in request.POST:
            tricoder_fileinfo["status"] = "createtricoder"
            if not validateonly:
                loginfo("start", get_tricoder_file(tricoder_filenumber), request)
                try:
                    retcode = subprocess.call([POSTBLOBPATH, get_tricoder_file(tricoder_filenumber)])
                    if retcode < 0:
                        loginfo(
                            "process", tricoder_filenumber + " Child was terminated by signal %s" % -retcode, request
                        )
                    else:
                        loginfo("process", tricoder_filenumber + ": Child returned %s" % retcode, request)
                except OSError as e:
                    loginfo("error", "Execution failed: %s" % e, request)
                loginfo("finish", get_tricoder_file(tricoder_filenumber), request)

        elif "uploadtricoder" in request.POST:
            tricoder_fileinfo["status"] = "uploadtricoder"
        else:
            tricoder_fileinfo["status"] = "No status possible"

    return tricoder_fileinfo, tricoder_files
Пример #51
0
	def start_publishing(self):
		
		utils.loginfo('start publishing')
		
		rate=rospy.Rate(30)
		timer=Time()
		#Get parameters (all the body ID's that are requested)
		self.body_names=sml_setup.Get_Parameter(NODE_NAME,'body_names',['iris1','iris2'])
		self.body_array=sml_setup.Get_Parameter(NODE_NAME,'body_array',[1,2])
		if type(self.body_array) is str:
			self.body_array=ast.literal_eval(self.body_array)

		#Get topic names for each requested body
		body_topic_array=self.Get_Topic_Names(self.body_array)

		#Establish one publisher topic for each requested body
		topics_publisher=self.Get_Publishers(body_topic_array)

		#Initialize empty past data list
		mocap_past_data=[]
		empty_data=QuadPositionDerived()
		for i in range(0,len(self.body_array)):
			mocap_past_data.append(empty_data)

		while not rospy.is_shutdown():

			delta_time=timer.get_time_diff()

			if self.bodies:
				for i in range(0,len(self.body_array)):
					utils.loginfo('body ' + str(i))
					if self.body_names[i] in self.bodies.name:
						indice = self.bodies.name.index(self.body_names[i])

						mocap_data=self.get_data(indice)
						mocap_data_derived=self.Get_Derived_Data(mocap_data,mocap_past_data[i],delta_time)

						#update past mocap data
						mocap_past_data[i]=mocap_data_derived

						#Publish data on topic
						topics_publisher[i].publish(mocap_data_derived)

			rate.sleep()

		utils.logwarn('Mocap stop publishing')
Пример #52
0
def tool(request, appname):
    # if we are here, we have been given a particular appname, e.g. "keyinfo", as part of the url
    context = {'applayout': appLayout[appname]}
    if request.method == 'POST':
        form = forms.Form(request.POST)

        if form.is_valid():
            loginfo(appname, context, request)
            context = Dispatch(context, request)
    else:
        form = forms.Form()

    context['form'] = form
    context = setConstants(context, appname)
    loginfo(appname, context, request)
    context['additionalInfo'] = AdditionalInfo.objects.filter(live=True)
    return render(request, 'toolbox.html', context)
Пример #53
0
def check_upgrade():
    last_version = read_version_stamp()
    current_version = os.environ['SEAFILE_VERSION']
    if last_version == current_version:
        return

    scripts_to_run = collect_upgrade_scripts(from_version=last_version, to_version=current_version)
    for script in scripts_to_run:
        loginfo('Running scripts {}'.format(script))
        new_version = parse_upgrade_script_version(script)[1] + '.0'

        replace_file_pattern(script, 'read dummy', '')
        call(script)

        update_version_stamp(new_version)

    update_version_stamp(current_version)
Пример #54
0
def tool(request, appname):
    # if we are here, we have been given a particular appname, e.g. "keyinfo", as part of the url
    context = {'applayout': appLayout[appname]}
    if request.method == 'POST':
        form = forms.Form(request.POST)

        if form.is_valid():
            loginfo(appname, context, request)
            context = Dispatch(context, request)
    else:
        form = forms.Form()

    context['form'] = form
    context = setConstants(context, appname)
    loginfo(appname, context, request)
    context['additionalInfo'] = AdditionalInfo.objects.filter(live=True)
    return render(request, 'toolbox.html', context)
	def __init__(self):
		utils.loginfo('Mocap starting')

		utils.loginfo('start publishing')
		
		rate=rospy.Rate(30)

		self.all_bodies = dict()

		#Get parameters (all the body ID's that are requested)
		self.body_names=utils.Get_Parameter('body_names',['iris1','iris2'])
		self.body_array=utils.Get_Parameter('body_array',[1,2])
		if type(self.body_array) is str:
			self.body_array=ast.literal_eval(self.body_array)

		#Get topic names for each requested body
		body_topic_array=self.Get_Topic_Names(self.body_array)

		#Establish one publisher topic for each requested body
		topics_publisher=self.Get_Publishers(body_topic_array)

		# Create the different body objects
		self.body_state = []
		for i in range(0,len(self.body_array)):
			self.body_state.append(State())

		# Suscrib to Gazebo
		self.start_subscribes()

		while not rospy.is_shutdown():
			for i in range(0,len(self.body_array)):
				if self.body_state[i].data:
					data = self.all_bodies[self.body_names[i]]

					self.body_state[i].update(data,self.body_state[i].time)
					topics_publisher[i].publish(self.body_state[i].get_message())
			 		self.body_state[i].data = False
			# for i in range(0,len(self.body_array)):
			# 	if self.body_state[i].data:
			# 		topics_publisher[i].publish(self.body_state[i].get_message())
			# 		self.body_state[i].data = False

			rate.sleep()

		utils.logwarn('Mocap stop publishing')
Пример #56
0
def edit(request, entity, csid):

    context = {}
    if request.method == 'GET':
        requestObject = request.GET
        form = forms.Form(requestObject)

        if form.is_valid():
            context['entity'] = entity
            context['csid'] = csid
            loginfo(entity, context, request)
            context = doEdit(request,context)
    else:
        pass

    context = setConstants(context)
    loginfo(entity, context, request)
    return render(request, 'edit.html', context)