GithubHelp home page GithubHelp logo

qgc-user-guide's Introduction

qgc-user-guide's People

Contributors

aamirglb avatar biapalmeiro avatar bkueng avatar booo avatar carlottagreco avatar cbjornram avatar cfelipesouza avatar dagar avatar dakejahl avatar danielhonies avatar donlakeflyer avatar fabricionovak avatar gitbook-bot avatar hamishwillee avatar hunterino avatar jaxxzer avatar jeyong avatar junwoo091400 avatar kaklik avatar kolesar-andras avatar lorenzmeier avatar maetugr avatar mortenfyhn avatar mrpollo avatar px4buildbot avatar samochristensen avatar samypesse avatar urpylka avatar williangalvani avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

qgc-user-guide's Issues

Up-to-date User Guide for Android

Sorry but I've looked everywhere and can't find a more up-to-date user guide than this one:

https://docs.qgroundcontrol.com/en/

If there is later Android user guide information, please give me a hint as to where to find it.

I'm been trying the Android build on Google Play, and also the daily test build, but finding information is proving very difficult. The Android control interface has changed a lot since I first used it, and it seems not all actions are activated until the craft is armed and (sometimes) airborne. It's not ideal figuring this out while the craft is flying, no?

Thanks in advance for any help. If I'm in the wrong forum, please just show me where I can raise this.

Windows Daily not working

The daily HEAD:6b10539a5 2017-03-09 11:28:25 is not working on my machine. It does not connect. I verified that this version has about 90k while the last one, 3.1.3, has about 140k. Not sure if something missing. I had to revert to 3.1.3
I am using Windows 10

Clarification of battery failsafe needed

Critical and emergency battery thresholds parameters state "This threshold commonly will trigger RTL." It would be clearer if it states that it will follow the failsafe selected in the Safety setup. Or am I wrong and there is some override of the desired failsafe, and it goes to RTL in certain instances?

Doc Bug: Fly View : Control Mission: embedded "stop" link broken (others work)

Reference:
https://docs.qgroundcontrol.com/en/FlyView/FlyView.html

Under the Fly View section,

  • Control missions: start, continue, pause, stop and resume.

The hyperlinked word "stop" does not take the reader to an associated section. I am hoping to learn how to "abort" a mission without "E-stop" or "RTL."

Further searching for the word "stop" does not bring up information about stopping a mission, other than with "emergency stop."

I am a 1-day-old QGC user, who has flown two successful 6-waypoint missions, over my house, taking off and RTL from a tree-lined backyard. I still have a drone. All credit to QGC developers. Thank you.

Android APP with DroneKit-Android connects to PX4 SITL JMAVSim fails

Dear all:

My APP is ready, but cannot connect to PX4 simulator JMAVSim. Please let me know what goes wrong if you know. Thanks a lot. I attached my APP code as below.

package com.o3dr.hellodrone;

import android.os.Handler;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

import com.o3dr.android.client.ControlTower;
import com.o3dr.android.client.Drone;
import com.o3dr.android.client.apis.ControlApi;
import com.o3dr.android.client.apis.VehicleApi;
import com.o3dr.android.client.interfaces.DroneListener;
import com.o3dr.android.client.interfaces.TowerListener;
import com.o3dr.services.android.lib.coordinate.LatLong;
import com.o3dr.services.android.lib.coordinate.LatLongAlt;
import com.o3dr.services.android.lib.drone.attribute.AttributeEvent;
import com.o3dr.services.android.lib.drone.attribute.AttributeType;
import com.o3dr.services.android.lib.drone.connection.ConnectionParameter;
import com.o3dr.services.android.lib.drone.connection.ConnectionResult;
import com.o3dr.services.android.lib.drone.connection.ConnectionType;
import com.o3dr.services.android.lib.drone.property.Altitude;
import com.o3dr.services.android.lib.drone.property.Gps;
import com.o3dr.services.android.lib.drone.property.Home;
import com.o3dr.services.android.lib.drone.property.Speed;
import com.o3dr.services.android.lib.drone.property.State;
import com.o3dr.services.android.lib.drone.property.Type;
import com.o3dr.services.android.lib.drone.property.VehicleMode;

import java.util.List;

public class MainActivity extends ActionBarActivity implements DroneListener, TowerListener {

private Drone drone;
private int droneType = Type.TYPE_UNKNOWN;
private final Handler handler = new Handler();
Spinner modeSelector;
private ControlTower controlTower;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Initialize the service manager
    this.controlTower = new ControlTower(getApplicationContext());
    this.drone = new Drone(getApplicationContext());

    this.modeSelector = (Spinner)findViewById(R.id.modeSelect);
    this.modeSelector.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            onFlightModeSelected(view);
        }
        @Override
        public void onNothingSelected(AdapterView<?> parent) {
            // Do nothing
        }
    });

    Toast.makeText(getApplicationContext(), "onCreate", Toast.LENGTH_LONG).show();
}

@Override
public void onStart() {
    super.onStart();
    this.controlTower.connect(this);
    Toast.makeText(getApplicationContext(), "onStart", Toast.LENGTH_LONG).show();
}

@Override
public void onStop() {
    super.onStop();
    if (this.drone.isConnected()) {
        this.drone.disconnect();
        updateConnectedButton(false);
    }
    this.controlTower.unregisterDrone(this.drone);
    this.controlTower.disconnect();

    Toast.makeText(getApplicationContext(), "onStop", Toast.LENGTH_LONG).show();
}

@Override
public void onTowerConnected() {
    this.controlTower.registerDrone(this.drone, this.handler);
    this.drone.registerDroneListener(this);

    Toast.makeText(getApplicationContext(), "onTowerConnected", Toast.LENGTH_LONG).show();
}

@Override
public void onTowerDisconnected() {
    Toast.makeText(getApplicationContext(), "onTowerDisconnected", Toast.LENGTH_LONG).show();
}

@Override
public void onDroneEvent(String event, Bundle extras) {
    switch (event) {
        case AttributeEvent.STATE_CONNECTED:
            alertUser("Drone Connected");
            updateConnectedButton(this.drone.isConnected());
            break;

        case AttributeEvent.STATE_DISCONNECTED:
            alertUser("Drone Disconnected");
            updateConnectedButton(this.drone.isConnected());
            break;

        case AttributeEvent.STATE_UPDATED:
        case AttributeEvent.STATE_ARMING:
            updateArmButton();
            break;

        case AttributeEvent.STATE_VEHICLE_MODE:
            updateVehicleMode();
            break;

        case AttributeEvent.TYPE_UPDATED:
            Type newDroneType = this.drone.getAttribute(AttributeType.TYPE);
            if (newDroneType.getDroneType() != this.droneType) {
                this.droneType = newDroneType.getDroneType();
                updateVehicleModesForType(this.droneType);
            }
            break;


        case AttributeEvent.SPEED_UPDATED:
            updateAltitude();
            updateSpeed();
            break;

        case AttributeEvent.HOME_UPDATED:
            updateDistanceFromHome();
            break;

        default:
            break;
    }
    Toast.makeText(getApplicationContext(), "onDroneEvent", Toast.LENGTH_LONG).show();
}

/*@Override--->this has compile error
public void onDroneConnectionFailed(ConnectionResult result) {

}*/

@Override
public void onDroneServiceInterrupted(String errorMsg) {
    Toast.makeText(getApplicationContext(), "onDroneServiceInterrupted", Toast.LENGTH_LONG).show();
}

public void onBtnConnectTap(View view) {
    if(this.drone.isConnected()) {
        this.drone.disconnect();

        Toast.makeText(getApplicationContext(), "onBtnConnectTap to Disconnect", Toast.LENGTH_LONG).show();
    } else {
        Bundle extraParams = new Bundle();
        extraParams.putInt(ConnectionType.EXTRA_UDP_SERVER_PORT, 14550); // Set default port to 14550

        //ConnectionParameter connectionParams = new ConnectionParameter(ConnectionType.TYPE_UDP, extraParams, null);
        ConnectionParameter connectionParams = ConnectionParameter.newUdpConnection(14550, null);
        this.drone.connect(connectionParams);

        Toast.makeText(getApplicationContext(), "onBtnConnectTap to Connect", Toast.LENGTH_LONG).show();
    }
}

protected void alertUser(String message) {
    Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
}

protected void updateConnectedButton(Boolean isConnected) {
    Button connectButton = (Button)findViewById(R.id.btnConnect);
    if (isConnected) {
        connectButton.setText("Disconnect");
    } else {
        connectButton.setText("Connect");
    }
}

public void onFlightModeSelected(View view) {
    VehicleMode vehicleMode = (VehicleMode) this.modeSelector.getSelectedItem();
    //this.drone.changeVehicleMode(vehicleMode);//changeVehicleMode is out of date, use the following function instead
    VehicleApi.getApi(this.drone).setVehicleMode(vehicleMode);

    Toast.makeText(getApplicationContext(), "onFlightModeSelected", Toast.LENGTH_LONG).show();
}

protected void updateVehicleModesForType(int droneType) {
    List<VehicleMode> vehicleModes =  VehicleMode.getVehicleModePerDroneType(droneType);
    ArrayAdapter<VehicleMode> vehicleModeArrayAdapter = new ArrayAdapter<VehicleMode>(this, android.R.layout.simple_spinner_item, vehicleModes);
    vehicleModeArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    this.modeSelector.setAdapter(vehicleModeArrayAdapter);

    Toast.makeText(getApplicationContext(), "updateVehicleModesForType", Toast.LENGTH_LONG).show();
}

protected void updateVehicleMode() {
    State vehicleState = this.drone.getAttribute(AttributeType.STATE);
    VehicleMode vehicleMode = vehicleState.getVehicleMode();
    ArrayAdapter arrayAdapter = (ArrayAdapter)this.modeSelector.getAdapter();
    this.modeSelector.setSelection(arrayAdapter.getPosition(vehicleMode));

    Toast.makeText(getApplicationContext(), "updateVehicleMode", Toast.LENGTH_LONG).show();
}

protected void updateAltitude() {
    TextView altitudeTextView = (TextView)findViewById(R.id.altitudeValueTextView);
    Altitude droneAltitude = this.drone.getAttribute(AttributeType.ALTITUDE);
    altitudeTextView.setText(String.format("%3.1f", droneAltitude.getAltitude()) + "m");

    Toast.makeText(getApplicationContext(), "updateAltitude", Toast.LENGTH_LONG).show();
}

protected void updateSpeed() {
    TextView speedTextView = (TextView)findViewById(R.id.speedValueTextView);
    Speed droneSpeed = this.drone.getAttribute(AttributeType.SPEED);
    speedTextView.setText(String.format("%3.1f", droneSpeed.getGroundSpeed()) + "m/s");

    Toast.makeText(getApplicationContext(), "updateSpeed", Toast.LENGTH_LONG).show();
}

protected void updateDistanceFromHome() {
    TextView distanceTextView = (TextView)findViewById(R.id.distanceValueTextView);
    Altitude droneAltitude = this.drone.getAttribute(AttributeType.ALTITUDE);
    double vehicleAltitude = droneAltitude.getAltitude();
    Gps droneGps = this.drone.getAttribute(AttributeType.GPS);
    LatLong vehiclePosition = droneGps.getPosition();

    double distanceFromHome =  0;

    if (droneGps.isValid()) {
        LatLongAlt vehicle3DPosition = new LatLongAlt(vehiclePosition.getLatitude(), vehiclePosition.getLongitude(), vehicleAltitude);
        Home droneHome = this.drone.getAttribute(AttributeType.HOME);
        distanceFromHome = distanceBetweenPoints(droneHome.getCoordinate(), vehicle3DPosition);
    } else {
        distanceFromHome = 0;
    }

    distanceTextView.setText(String.format("%3.1f", distanceFromHome) + "m");

    Toast.makeText(getApplicationContext(), "updateDistanceFromHome", Toast.LENGTH_LONG).show();
}

protected double distanceBetweenPoints(LatLongAlt pointA, LatLongAlt pointB) {
    if (pointA == null || pointB == null) {
        return 0;
    }
    double dx = pointA.getLatitude() - pointB.getLatitude();
    double dy  = pointA.getLongitude() - pointB.getLongitude();
    double dz = pointA.getAltitude() - pointB.getAltitude();

    Toast.makeText(getApplicationContext(), "distanceBetweenPoints", Toast.LENGTH_LONG).show();
    return Math.sqrt(dx*dx + dy*dy + dz*dz);
}

protected void updateArmButton() {
    State vehicleState = this.drone.getAttribute(AttributeType.STATE);
    Button armButton = (Button)findViewById(R.id.btnArmTakeOff);

    if (!this.drone.isConnected()) {
        armButton.setVisibility(View.INVISIBLE);
    } else {
        armButton.setVisibility(View.VISIBLE);
    }

    if (vehicleState.isFlying()) {
        // Land
        armButton.setText("LAND");
    } else if (vehicleState.isArmed()) {
        // Take off
        armButton.setText("TAKE OFF");
    } else if (vehicleState.isConnected()){
        // Connected but not Armed
        armButton.setText("ARM");
    }
    Toast.makeText(getApplicationContext(), "updateArmButton", Toast.LENGTH_LONG).show();
}

public void onArmButtonTap(View view) {
    Button thisButton = (Button)view;
    State vehicleState = this.drone.getAttribute(AttributeType.STATE);

    if (vehicleState.isFlying()) {
        // Land
        //this.drone.changeVehicleMode(VehicleMode.COPTER_LAND);//changeVehicleMode is out of date, use the following function instead
        VehicleApi.getApi(this.drone).setVehicleMode(VehicleMode.COPTER_LAND);
    } else if (vehicleState.isArmed()) {
        // Take off
        //this.drone.doGuidedTakeoff(10); // Default take off altitude is 10m
        ControlApi.getApi(this.drone).takeoff(10, null);
    } else if (!vehicleState.isConnected()) {
        // Connect
        alertUser("Connect to a drone first");
    } else if (vehicleState.isConnected() && !vehicleState.isArmed()){
        // Connected but not Armed
        //this.drone.arm(true);//arm is out of date, use the following function instead
        VehicleApi.getApi(this.drone).arm(true);
    }
    Toast.makeText(getApplicationContext(), "onArmButtonTap", Toast.LENGTH_LONG).show();
}

}

"Flight Modes" section is empty

"Flight Modes" section needs to be populated.

I'm specifically interested in flight mode needed for local position control with the PX4FLOW. "Loiter" mode does not exist in the current version of QGC.

Confusing Tuning Slider for Plane Roll and Pitch Sensitivity

This is on the Daily Build:
QGroundControl Development HEAD:8aba44562 2018-07-2814:17:58-0400
But is also in:
QGroundControl Development HEAD:e3833aa5f 2018-07-13 11:43:25 -0700

So the confusing thing is for Plane Roll Sensitivity, how did 0.4s end up on the left side of 0.05s when 0.3s is on the other side. Same thing with Plane Pitch. why is 0.8 s is on the right of 0.95 s when 0.85 s is all the way to the left? What am I missing?
image

Personally, I prefer the original version with the Slider. Why not incorporate the numerical scale above or below the graduation tick marks with the slider?

Please advise. Thanks.

QGC v3.5.0 Won't Open in Windows 10 Pro v1803

Just installed QGC v3.5.0 in Lenovo laptop running Windows 10 Pro v1803. QGC attempts to open but fails. While looking at Task Manager, the app starts to open but Status momentarily shows Suspended, then QGC disappears.

  • Have disabled signature requirement during startup prior to installation.
  • Have tried running Safe Mode and Compatibility versions but still no joy.

Any ideas/ advise on how to resolve is highly appreciated. @DonLakeFlyer any thoughts or comments?

Thanks.

QGroundControl is displaying full-screen and cannot be changed back to windowed mode

Using QGroundControl on Ubuntu 16.04 LTS. I have been using QGroundControl v3.5.3 for months without issue. I opened up QGroundControl v3.4.1 by mistake (I have icons for both side-by-side on my desktop). It opened in a weird "full full screen" mode covering up the entire screen including the taskbar, the system menu, etc., and did not have a system menu. The very top of the screen was QGC's "File" option. The only way to exit was to use "File->Exit." I then tried opening up v3.5.3 and it, too, is now showing in the same weird full screen mode. I cannot get it to go back to a windowed or even a "standard" full screen mode. I have tried deleting QGroundControl.ini, ALT-Space, ALT-F7, ALT-F8, but none of these work. I cannot move the window at all. I cannot resize it, and I don't see any options controlling these in Settings. I have been searching on Google for more than 2 hours and I can't find a solution. What the hell is up with this thing?

Explanation of QGC Console Messages and Error Meanings...?

QGC and Pixhawk 4 Flight Controller.... Quad copter will not arm for flight, messages says, "SEE CONSOLE".....? QGC CONSOLE lists "D", "I", and "E" lines with seems to be errors encountered by either QGC or Pixhawk Flight Controller.....! NO WHERE in any Documentation is there any type of Explanation of these Error's and their Causes.... You can not assume that everyone who uses QGC/Pixhawk knows everything there is to know about either device. I've submitted the problems to PX4.io a supposedly support Discussion and they never replied because they wanted a flight LOG, well people, if your Device/Quad/Plane/Rover/whatever will not ARM.... it's not going ANY WHERE, and therefore A FLIGHT LOG IS NOT CREATED......! So all the Braininess need to come together and focus on the 844 issues - and stop sitting on their thumbs doing nothing....!!!!!!!!
If ya can't fix the problems....get the hell out of the Business...>! =)

Joystick support

Hello
It would bé great qgc to offer rc override fonction for full joystick control
Virtual joystick is very unreliable it would bé great to connect any kind of gamepad, just like it today is already possible in mission planner
Thanks for your support
Guillaume

Recorded video is choppy and poor quality using MKV output

To improve recorded video output, I've had success with the following GStreamer pipeline:

gst-launch-1.0 -e udpsrc port=1234 caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264" ! rtph264depay ! avdec_h264 ! tee name=tp tp. ! queue ! autovideosink sync=false tp. ! queue ! x264enc speed-preset=3 tune=zerolatency bitrate=3000 key-int-max=0 ! mp4mux ! filesink location="d:/temp/mystream2.mp4" sync = false

You will need to get rid of the h264parse in your existing pipeline as it doesn't seem to work with the mp4mux.

sync = false is important for getting smooth low latency video.

Note: avdec_h264 is in the ugly plugins (for 1.52) but works just fine.

Edit:

Please delete... placed in wrong project.

Altitude information missing on QGC

Hi, I am currently using Intel Aero Drone with Pixhawk and PX4 with the help of QGroundControl.
I connected the drone to my computer and I am able to see through the drone's camera via QGC.
I also have access to the 3 angles of the drone in live that are the heading, the pitch and the roll. Unfortunately, the place where I should be reading the altitude is left blank and I can not figure out why. I have taken a screenshot of what it looks like, I previously realised calibration of the sensors.
Thanks for your help,
Best regards,
Paul. #
parameters qgc

Android app video recording

I see that there is a new red camera symbol in the android up which is assume is a video record button? if not then what is it suppose to do? When clicking on it it does nothing ? It only changes shape to a square ?

Add information about Sub

We minimally need "airframe setup" information. Not sure how to handle this - depends on how firmware specific the support is, and how different it is from other vehicles - e.g. can we plan missions, can we do other things ...

Jeti DC 16 as USB Joystick won't configure or calibrate correctly.

For comparison QGC 2.97 will allow this joystick to be used correctly with the first 4 axis.

In master build, the roll axis (mode 2 right stick) will move axis 5 and 6. Pitch axis can't be calibrated correctly and sits waiting for the final down position indefinitely.

Add Credits information

The information below was captured from old wiki. Proposal is to add relevant informaiton under /Releases section and link to github contribution section.


====== Credits / Contact ======

QGroundControl is a community effort to build a next generation micro air vehicle ground control station.

=== Maintainer / Contact ===

  • Donald Gagne, Main developer, [[[email protected]]]
  • Lorenz Meier, Core dev team, [[[email protected]]], [[http://pixhawk.ethz.ch|PIXHAWK Project]], [[http://www.inf.ethz.ch/personal/lomeier/|Personal Page]], Institute for Visual Computing, Swiss Federal Institute of Technology Zurich
  • Gus Grubba, Core dev team

=== Developers ===

// In alphabetical order of last name://

  • Juan Fco Robles Camacho, SLUGS-specific widgets, [[http://slugsuav.soe.ucsc.edu/|SLUGS Autopilot, University of Santa Cruz]]
  • Bryan Godbolt, QNX-Simulink, [[http://www.uofaweb.ualberta.ca/ancl/helicopter.cfm|Helicopter UAV, University of Alberta]]
  • James Goppert, ArduPilotMega / osgEarth, [[http://diydrones.com/profile/JamesGoppert|HSL Lab, Purdue]]
  • Lionel Heng, OSG 3D View, [[http://pixhawk.ethz.ch|PIXHAWK Project, Swiss Federal Institute of Technology / ETH Zurich]]
  • Mariano Lizarraga, Fixed wing support, [[http://slugsuav.soe.ucsc.edu/|SLUGS Autopilot, University of Santa Cruz]]
  • Konrad Rudin, XBee API, Windows Port, [[http://www.sensesoar.ethz.ch/doku.php|SenseSoar Project, Swiss Federal Institute of Technology / ETH Zurich]]
  • Petri Tanskanen, Waypoint protocol, [[http://pixhawk.ethz.ch|PIXHAWK Project, Swiss Federal Institute of Technology / ETH Zurich]]
  • Andrew Tridgell, MAVLink meta information, [[http://www.samba.org/~tridge/]]

=== Libraries ===

We are relying on some open source libraries as base for our application.

  • [[mavlink:|MAVLink Message Marshalling Library]] - by Lorenz Meier, Andrew Tridgell, Paul Grobler
  • [[http://qwt.sourceforge.net/|Qt Widgets for technical applications]] - by Uwe Rathmann and Josef Wilgen
  • [[http://sourceforge.net/projects/qserial/|QSerial]] - Serial port hardware abstraction

=== History ===

The base code was developed 2009-2010 in the [[http://pixhawk.ethz.ch|Pixhawk Project at ETH Zurich]] by Lorenz Meier. It is since 2010 under community development with a wide range of projects and individuals.

Need sensor calibration screens from ArduPilot

As per #80 (comment)

We need new screenshots on ArduPilot to cover:

  • For places which show you compass settings, you can have up to three compasses. (confirm only 2 compasses on PX4)
  • Level Horizon for ArduPilot is slightly different. No option for orientation change.
  • Additional AirSpeed cal for ArduPilot if needed.

@DonLakeFlyer To provide these, as I can't replicate (or perhaps even better, if this can be mocked explain exactly how and I can add that to our mocklink docs.)

Camera drop-down additions: Ricoh GR II and MicaSense RedEdge

Ricoh GR II
fl (mm): 18.3
image width (pix): 4928
image height: 3264
sensor width (mm): 23.7
sensor height: 15.7

RedEdge
fl: 5.5
image width: 1280
image height: 960
sensor width: 4.8
sensor height: 3.6

Triple checked! Plus, the ability to "save as" to create/save our own cameras would be fantastic. Thanks!

Developer build issues.

In the documentation on this page
https://dev.qgroundcontrol.com/master/en/getting_started/
For the qt-pro stuff it says:
In the installer Select Components dialog choose: 5.12.6.

5.12.6 isn't included in the qt-pro package by default.

I am receiving build errors of:
Project ERROR: Unknown module(s) in QT: location positioning quickcontrols2 texttospeech multimedia location-private positioning-private charts x11extras waylandclient

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.