Giter VIP home page Giter VIP logo

examples's Introduction

RobotPy: Python for FRC cRIO Robot Controller

Author: Peter Johnson, FRC Team 294
Author: Dustin Spicuzza, FRC Team 2423/1418
Copyright: Copyright © 2010, Peter Johnson, Ross Light, Dustin Spicuzza

About RobotPy

RobotPy is a distribution of Python intended to be used for the FIRST Robotics Competition. Teams can use this to write their robot code in Python, a powerful dynamic programming language.

Features

  • Python is simple to learn and easy to maintain.
  • RobotPy lets you reload code without restarting.
  • RobotPy provides access to the WPILib class library.
  • You don't need to use WindRiver (unless you're rebuilding RobotPy itself).

Installation for most people

Download the binary releases from our FIRSTForge site, unpack them, and run install.py. Download from: http://firstforge.wpi.edu/sf/projects/robotpy

Installation from Source using our build VM

Using the provided build virtual machine is the easiest way to build RobotPy from source. See build-vm/README.txt for instructions.

Installation from Source (Advanced Users Only)

Step 1: Install Python

Python 2.7.5 is known to work. Ensure that you add your python installation directory to your PATH variable.

Note: This step is required for SIP installation

Step 2: Install SIP v4.15.3:

The cmake build process currently checks for exact versions of SIP, as the generated code changes from release to release.

http://www.riverbankcomputing.com/static/Docs/sip4/installation.html

Note: Installation of SIP on Windows requires Visual Studio or MinGW installed, see the SIP build instructions for more details.

Step 3: Build the source tree

TODO: Update these instructions for Windows too?

The RobotPy build process uses cmake to build the RobotPy distribution. frcmake is a wrapper around cmake that sets the build environment up to build for the cRio.

RobotPy currently uses the GCC 4.8 compiler distributed at the following URL to build the binary distribution. Wind River may be used, but we haven't built it with Wind River, so you may run into trouble using it with frcmake.

http://firstforge.wpi.edu/sf/projects/c--11_toochain

Create a directory (the 'binary directory') outside of the RobotPy source tree, and run this:

$ frcmake /path/to/robotpy

Once you've done this, you can build the code:

$ make

To copy the build output to the 'dist' directory, run this command from your binary directory:

$ make install

To build a binary release, just run the following command and a zip file will be created in your build directory.

$ make package

Step 4: Robot Installation

From the 'dist' directory inside of your binary directory, run install.py

Alternatively, you can FTP the contents of the 'robot' directory to your cRio directly. However, install.py is easier.

Development tools

See the utilities directory for useful development tools that may make your RobotPy development experience easier.

The pyfrc python package is a recommended development package that provides unit testing and other capabilities for your robot code.

https://github.com/robotpy/pyfrc

Technical Overview

RobotPy is a packaging of a patched Python 3.2 interpreter (found in the RobotPy/Python subdirectory of the source code). All access to the WPILib is generated by a SIP interface, which is found in Packages/wpilib/sip/. When the robot is started, it initializes the Python interpreter and runs the file py/boot.py. From there, all responsibility is given to the boot.py script, which is referred to as the bootloader.

If boot.py ever exits (due to an exception, for example), the C++ code exits. The default boot.py simply exits on any user exception. If this happens, you can reboot easily via NetConsole by simply typing "reboot" followed by hitting the enter key. This is how code reloads are performed. As boot.py is written in Python, this behavior can be customized as desired.

Major Differences from standard Python

  • Several Python modules with large and/or incompatible dependencies removed, namely: curses, dbm, gdbm, tkinter, nis, ossaudiodev, resource, spwd, syslog, termios, audioop, bz2, crypt, grp, ssl, pwd, and mmap.

Licensing

A brief overview of licensing terms:

If you redistribute RobotPy and add other libraries, please include their licensing information here.

RobotPy

Copyright © 2010 Peter Johnson

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

examples's People

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

examples's Issues

Stop using SampleRobot

It seems we have 11 examples here that still use SampleRobot:

  • motor-control
  • gyro
  • navx
  • navx-rotate-to-angle
  • mecanum-drive
  • navx-rotate-to-angle-arcade
  • physics/src
  • physics-4wheel/src
  • physics-mecanum/src
  • physics-spi/src
  • sample/src

We can probably just remove the last one, but the others need to be updated to use TimedRobot instead.

CTRE

Ive updated the image of one of our roboRIOs to the 2018 image. Talon SRXs connected to the roboRIO by a CAN bus wont show up on the ni web configuration utility. When we use a roboRIO with the 2017 image the talons do show up. Is there a way to temporarily downgrade? Or am I doing something wrong?

The example code doesn't work.

Ive been trying to get pathfinder working on my robot for about an hour. When I ran the physics-pathfinder example, I got this error:

Traceback (most recent call last):
  File "C:\Program Files (x86)\Python36-32\lib\site-packages\wpilib\robotbase.py", line 168, in main
    robot.startCompetition()
  File "C:\Program Files (x86)\Python36-32\lib\site-packages\wpilib\timedrobot.py", line 68, in startCompetition
    self.loopFunc()
  File "C:\Program Files (x86)\Python36-32\lib\site-packages\wpilib\iterativerobotbase.py", line 164, in loopFunc
    self.autonomousPeriodic()
  File "robot.py", line 89, in autonomousPeriodic
    l = self.leftFollower.calculate(self.l_encoder.get())
  File "C:\Program Files (x86)\Python36-32\lib\site-packages\pathfinder\followers.py", line 154, in calculate
    return pathfinder_follow_encoder2(self.cfg, self, self.trajectory[self.segment], tlen, encoder_tick)
IndexError: list index out of range

SpeedController Not Overriding 'get' Function

Hello devs,
I was trying to finish up the physics-camsim example in robotpy/examples, but I encountered another issue. Here is the issue I was working on if interested. Here is the traceback:

$ py -3 robot.py sim
10:44:45:667 INFO    : wpilib              : WPILib version 2021.2.1.0
10:44:45:668 INFO    : wpilib              : HAL version 2021.2.1.0
10:44:45:668 INFO    : wpilib              : Running with simulated HAL.
10:44:45:669 INFO    : wpilib              : robotpy-wpiutil version 2021.2.1.2
10:44:45:669 INFO    : wpilib              : robotpy-wpimath version 2021.2.1.0
10:44:45:677 INFO    : wpilib              : robotpy-rev version 2021.0.1
10:44:45:678 INFO    : wpilib              : robotpy-rev-color version 2021.1.2.0
10:44:45:678 INFO    : wpilib              : robotpy-navx version 2021.0.0
10:44:45:679 INFO    : wpilib              : robotpy-halsim-gui version 2020.3.2.1
10:44:45:684 INFO    : wpilib              : robotpy-ctre version 2021.1.2.0
10:44:45:684 INFO    : wpilib              : robotpy-commands-v1 version 2021.2.1.0
10:44:45:685 INFO    : wpilib              : robotpy-build version 2020.4.3
10:44:45:685 INFO    : wpilib              : pyntcore version 2021.2.1.1
10:44:45:693 INFO    : halsim_gui          : WPILib HAL Simulation 2020.3.2.1
HAL Extensions: Attempting to load: halsim_gui
Simulator GUI Initializing.
Simulator GUI Initialized!
HAL Extensions: Successfully loaded extension
C:\Users\Ben Bistline\AppData\Roaming\Python\Python38\site-packages\wpilib\kinematics\__init__.py:3: FutureWarning: wpilib.kinematics has moved to wpimath.kinematics
  warnings.warn("wpilib.kinematics has moved to wpimath.kinematics", FutureWarning)
C:\Users\Ben Bistline\AppData\Roaming\Python\Python38\site-packages\wpilib\geometry\__init__.py:3: FutureWarning: wpilib.geometry has moved to wpimath.geometry
  warnings.warn("wpilib.geometry has moved to wpimath.geometry", FutureWarning)
10:44:46:368 INFO    : pyfrc.physics       : Physics support successfully enabled
Not loading CameraServerShared
Default frc::IterativeRobotBase::DisabledInit() method... Override me!
Default frc::IterativeRobotBase::DisabledPeriodic() method... Override me!
Default frc::IterativeRobotBase::RobotPeriodic() method... Override me!
10:44:46:404 ERROR   : wpilib.ds           : Unhandled exception
Traceback (most recent call last):
  File "C:\Users\Ben Bistline\AppData\Roaming\Python\Python38\site-packages\wpilib\_impl\start.py", line 106, in start
    self.robot.startCompetition()
RuntimeError: <wpilib.interfaces._interfaces.SpeedController object at 0x000001E65D62B9F0> does not override required function "SpeedController::get"


Locals at innermost frame:

{ 'DriverStation': <class 'wpilib._wpilib.DriverStation'>,
  'NetworkTables': <_pyntcore._ntcore.NetworkTablesInstance object at 0x000001E65B546DF0>,
  'hal': <module 'hal' from 'C:\\Users\\Ben Bistline\\AppData\\Roaming\\Python\\Python38\\site-pa...
  'isSimulation': True,
  'robot_cls': <class '__main__.MyRobot'>,
  'self': <wpilib._impl.start.RobotStarter object at 0x000001E65D5E9460>,
  'wpilib': <module 'wpilib' from 'C:\\Users\\Ben Bistline\\AppData\\Roaming\\Python\\Python38\\s...


Error at C:\Users\Ben Bistline\AppData\Roaming\Python\Python38\site-packages\wpilib\_impl\start.py.106:start: Unhandled exception

Traceback (most recent call last):
  File "C:\Users\Ben Bistline\AppData\Roaming\Python\Python38\site-packages\wpilib\_impl\start.py", line 106, in start
    self.robot.startCompetition()
  File "C:\Users\Ben Bistline\AppData\Roaming\Python\Python38\site-packages\wpilib\_impl\start.py", line 106, in start
    self.robot.startCompetition()
RuntimeError: <wpilib.interfaces._interfaces.SpeedController object at 0x000001E65D62B9F0> does not override required function "SpeedController::get"

10:44:46:460 WARNING : wpilib.ds           : Robots should not quit, but yours did!
Robots should not quit, but yours did!
10:44:46:471 ERROR   : wpilib.ds           : The startCompetition() method (or methods called by it) should have handled the exception above.
The startCompetition() method (or methods called by it) should have handled the exception above.

To replicate this issue, run the robot.py file in the physics-camsim example with the 'sim' argument.
OS: Windows 10
PyFRC Version: 2021.1.1

If I can get some initial direction, I could probably help debug this issue, and more like it.
Thanks for all the hard work guys!

Migrate command-based examples to this repo

I'm going to consolidate all of the RobotPy example programs into a single repository to make it easier to navigate and discover them. Currently there are two command-based examples (in addition to pacgoat and gearsbot). It would be good to fix the examples to reflect the best way to create a command based robot.

@FRC2539 can you merge the two examples (or create separate examples) and make a PR to this repo with it? Thanks!

broken code in physics

This code was left in examples/physics/src/robot.py.

for dist in pkg_resources.Environment():
    print(dist)

exit(1)

I'd fix but don't have the privileges. The example seems to work once this is removed.

Add pyproject.toml to each example

Each example should have a pyproject.toml that specifies its dependencies so that users can directly use it. Then we should change the run_tests.sh to:

  • Be a python script, bash is annoying for complex things
  • For each project, create a new virtualenv, run robotpy sync in that virtualenv, and then run robotpy test

We would also need to create a script that can uniformly update all the robotpy versions in all the example directories so it doesn't get out of date.

Update IterativeRobot examples to TimedRobot

We have 10 examples still using IterativeRobot:

  • pacgoat
  • tank-drive
  • arcade-drive
  • cscore-quick-vision
  • cscore-intermediate-vision
  • gearsbot
  • getting-started
  • stateful-autonomous
  • physics-camsim/src
  • iterative/src

We should remove the iterative example and update the rest. However, stateful-autonomous will require robotpy/robotpy-wpilib-utilities#106 to be fixed first.

[BUG]: ModuleNotFoundError: No module named 'commands2'

Problem description

When attempting to run any of the commands v2 examples, i get the following error:

python robot.py sim
Traceback (most recent call last):
  File "/home/joe/git/pre2022season/rio2/robot.py", line 5, in <module>
    import commands2
ModuleNotFoundError: No module named 'commands2'

I imagine that im just missing a module, but i looked through the docs and did not find anything. Perhaps its something like robotpy[commands2]?

Operating System

Windows, Linux

Installed Python Packages

action-tutorials-py==0.14.3
ament-clang-format==0.10.6
ament-clang-tidy==0.10.6
ament-cmake-google-benchmark==1.1.4
ament-cmake-test==1.1.4
ament-copyright==0.10.6
ament-cppcheck==0.10.6
ament-cpplint==0.10.6
ament-flake8==0.10.6
ament-index-python==1.2.0
ament-lint==0.10.6
ament-lint-cmake==0.10.6
ament-mypy==0.10.6
ament-package==0.12.0
ament-pclint==0.10.6
ament-pep257==0.10.6
ament-pycodestyle==0.10.6
ament-pyflakes==0.10.6
ament-uncrustify==0.10.6
ament-xmllint==0.10.6
catkin-pkg==0.4.24
demo-nodes-py==0.14.3
docutils==0.18.1
domain-coordinator==0.9.2
examples-rclpy-executors==0.11.2
examples-rclpy-guard-conditions==0.11.2
examples-rclpy-minimal-action-client==0.11.2
examples-rclpy-minimal-action-server==0.11.2
examples-rclpy-minimal-client==0.11.2
examples-rclpy-minimal-publisher==0.11.2
examples-rclpy-minimal-service==0.11.2
examples-rclpy-minimal-subscriber==0.11.2
examples-rclpy-pointcloud-publisher==0.11.2
examples-tf2-py==0.17.2
interactive-markers==2.2.0
launch==0.17.0
launch-ros==0.14.2
launch-testing==0.17.0
launch-testing-ros==0.14.2
launch-xml==0.17.0
launch-yaml==0.17.0
osrf-pycommon==0.2.1
pynetworktables==2021.0.0
pyntcore==2022.2.1.1
pyparsing==3.0.7
python-dateutil==2.8.2
python-qt-binding==1.0.7
qt-dotgraph==2.0.1
qt-gui==2.0.1
qt-gui-cpp==2.0.1
qt-gui-py-common==2.0.1
quality-of-service-demo-py==0.14.3
rclpy==1.9.0
rcutils==4.0.2
resource-retriever==2.5.0
robotpy-hal==2022.2.1.1
robotpy-wpimath==2022.2.1.4
robotpy-wpiutil==2022.2.1.1
ros2action==0.13.1
ros2bag==0.9.0
ros2cli==0.13.1
ros2component==0.13.1
ros2doctor==0.13.1
ros2interface==0.13.1
ros2launch==0.14.2
ros2lifecycle==0.13.1
ros2multicast==0.13.1
ros2node==0.13.1
ros2param==0.13.1
ros2pkg==0.13.1
ros2run==0.13.1
ros2service==0.13.1
ros2test==0.3.0
ros2topic==0.13.1
ros2trace==2.3.0
rosbag2-py==0.9.0
rosidl-adapter==2.2.1
rosidl-cli==2.2.1
rosidl-cmake==2.2.1
rosidl-generator-c==2.2.1
rosidl-generator-cpp==2.2.1
rosidl-generator-dds-idl==0.8.0
rosidl-generator-py==0.11.0
rosidl-parser==2.2.1
rosidl-runtime-py==0.9.1
rosidl-typesupport-c==1.2.1
rosidl-typesupport-cpp==1.2.1
rosidl-typesupport-fastrtps-c==1.2.1
rosidl-typesupport-fastrtps-cpp==1.2.1
rosidl-typesupport-introspection-c==2.2.1
rosidl-typesupport-introspection-cpp==2.2.1
rpyutils==0.2.0
rqt==1.1.1
rqt-action==2.0.0
rqt-bag==1.1.1
rqt-bag-plugins==1.1.1
rqt-console==2.0.1
rqt-graph==1.2.0
rqt-gui==1.1.1
rqt-gui-py==1.1.1
rqt-msg==1.0.4
rqt-plot==1.0.10
rqt-publisher==1.1.3
rqt-py-common==1.1.1
rqt-py-console==1.0.1
rqt-reconfigure==1.0.8
rqt-service-caller==1.0.4
rqt-shell==1.0.1
rqt-srv==1.0.2
rqt-top==1.0.1
rqt-topic==1.2.1
sensor-msgs-py==2.2.3
six==1.16.0
sros2==0.10.2
test-launch-ros==0.14.2
tf2-kdl==0.17.2
tf2-py==0.17.2
tf2-ros-py==0.17.2
tf2-tools==0.17.2
topic-monitor==0.14.3
tracetools-launch==2.3.0
tracetools-read==2.3.0
tracetools-trace==2.3.0
wpilib==2022.2.1.5


### Reproducible example code

```text
❯ cat script.py
#!/usr/bin/env python3

import commands2
❯ python script.py
Traceback (most recent call last):
  File "/home/joe/git/pre2022season/rio2/script.py", line 3, in <module>
    import commands2
ModuleNotFoundError: No module named 'commands2'

Add necessary examples to be linked from frc-docs

If RobotPy is to be included in frc-docs (see initial PR), then we need to have existing working examples that can be linked to from the documentation that match the WPILib examples closely. By running the following on frc-docs:

grep -r --no-filename remoteliteralinclude * | grep java | sort | uniq

I get the following examples required:

Here are additional examples that need to be created too:

I tried using ChatGPT to do automated translation of examples, and it's pretty good! Here's a prompt I started with that I got reasonable results with:

RobotPy code translator will translate code from WPILib Java to RobotPy python. The output python code is semantically the same as the original java code, and has identical comments. The output python code is complete and contains all of the code present in the original Java code. Here is the input code for the translator, output only the output code:

Examples still reference now non-existent LiveWindow methods

In the arcadedrive navx example we are getting a deprecation warning in the latest release. Here is the test output:

============================= test session starts =============================
platform win32 -- Python 3.6.4, pytest-3.4.2, py-1.5.2, pluggy-0.6.0
rootdir: C:\Users\Thunderdogs Driver\Downloads\5613-tank-drive-2018-master\5613-tank-drive-2018-master\tests, inifile:
collected 8 items

pyfrc_test.py ........                                                   [100%]

============================== warnings summary ===============================
pyfrc_test.py::test_autonomous[RRR]
  C:/Users/Thunderdogs Driver/Downloads/5613-tank-drive-2018-master/5613-tank-drive-2018-master/robot.py:124: DeprecationWarning: addActuator is deprecated. Use Sendable.setName(subsystem, name) instead.
    wpilib.LiveWindow.addActuator("DriveSystem", "RotateController", turnController)

pyfrc_test.py::test_autonomous[RLR]
  C:/Users/Thunderdogs Driver/Downloads/5613-tank-drive-2018-master/5613-tank-drive-2018-master/robot.py:124: DeprecationWarning: addActuator is deprecated. Use Sendable.setName(subsystem, name) instead.
    wpilib.LiveWindow.addActuator("DriveSystem", "RotateController", turnController)

pyfrc_test.py::test_autonomous[LRL]
  C:/Users/Thunderdogs Driver/Downloads/5613-tank-drive-2018-master/5613-tank-drive-2018-master/robot.py:124: DeprecationWarning: addActuator is deprecated. Use Sendable.setName(subsystem, name) instead.
    wpilib.LiveWindow.addActuator("DriveSystem", "RotateController", turnController)

pyfrc_test.py::test_autonomous[LLL]
  C:/Users/Thunderdogs Driver/Downloads/5613-tank-drive-2018-master/5613-tank-drive-2018-master/robot.py:124: DeprecationWarning: addActuator is deprecated. Use Sendable.setName(subsystem, name) instead.
    wpilib.LiveWindow.addActuator("DriveSystem", "RotateController", turnController)

pyfrc_test.py::test_disabled
  C:/Users/Thunderdogs Driver/Downloads/5613-tank-drive-2018-master/5613-tank-drive-2018-master/robot.py:124: DeprecationWarning: addActuator is deprecated. Use Sendable.setName(subsystem, name) instead.
    wpilib.LiveWindow.addActuator("DriveSystem", "RotateController", turnController)

pyfrc_test.py::test_operator_control
  C:/Users/Thunderdogs Driver/Downloads/5613-tank-drive-2018-master/5613-tank-drive-2018-master/robot.py:124: DeprecationWarning: addActuator is deprecated. Use Sendable.setName(subsystem, name) instead.
    wpilib.LiveWindow.addActuator("DriveSystem", "RotateController", turnController)

pyfrc_test.py::test_practice
  C:/Users/Thunderdogs Driver/Downloads/5613-tank-drive-2018-master/5613-tank-drive-2018-master/robot.py:124: DeprecationWarning: addActuator is deprecated. Use Sendable.setName(subsystem, name) instead.
    wpilib.LiveWindow.addActuator("DriveSystem", "RotateController", turnController)

pyfrc_test.py::test_fuzz
  C:/Users/Thunderdogs Driver/Downloads/5613-tank-drive-2018-master/5613-tank-drive-2018-master/robot.py:124: DeprecationWarning: addActuator is deprecated. Use Sendable.setName(subsystem, name) instead.
    wpilib.LiveWindow.addActuator("DriveSystem", "RotateController", turnController)

-- Docs: http://doc.pytest.org/en/latest/warnings.html
==================== 8 passed, 8 warnings in 42.36 seconds ====================

Process finished with exit code 

Organize the examples

Probably want a less flat directory structure so the examples are easier to navigate?

Fixing examples for Robotpy 2020

List of examples that have been tested and work with the new versions of wpilib (that are uploaded to pypi).

  • arcade-drive
  • command-based

Waiting on updated command based framework

  • cscore-intermediate

Waiting on cscore update

  • cscore-quick-vision

Waiting on cscore update

  • game-data

Being added in #27

  • gearsbot

Waiting on updated framework

  • getting-started
  • gyro

Partial support, AnalogGyro value can't be modified in simulator

  • iterative
  • magicbot-simple
  • mecanum-drive
  • motor-control
  • navx

Waiting for robotpy-navx update

  • navx-rotate-to-angle

Waiting for robotpy-navx update

  • navx-rotate-to-angle-arcade

Waiting for robotpy-navx update

  • pacgoat

Waiting on updated command based framework

  • physics
  • physics-4wheel
  • physics-camsim
  • physics-drive-characterization
  • physics-mecanum
  • physics-pathfinder
  • physics-spi
  • sample

Should probably be removed as it is a demonstration of wpilib.SampleRobot which no longer exists.
Removed

  • shuffleboard

wpilib.shuffleboard doesn't exist

  • stateful-autonomous

Code crash when declaring autonomous modes, seems to be a generator passed in when expecting a list

site-packages\robotpy_ext\autonomous\stateful_autonomous.py", line 359, in __build_states
    self.MODE_NAME + "_durations", (name for _, (name, desc) in sorted_states)
TypeError: putStringArray(): incompatible function arguments. The following argument types are supported:
    1. (self: _pyntcore._ntcore.NetworkTable, key: str, value: List[str]) -> bool

Invoked with: <_pyntcore._ntcore.NetworkTable object at 0x000001C860FBC7B0>, 'Drive Backwards_durations', <generator object StatefulAutonomous.__build_states.<locals>.<genexpr> at 0x000001C860F27C48>
  • tank-drive
  • timed

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.