GithubHelp home page GithubHelp logo

roboticslab-uc3m / questions-and-answers Goto Github PK

View Code? Open in Web Editor NEW
2.0 23.0 0.0 755 KB

A place for general debate and question&answer

Home Page: https://robots.uc3m.es/developer-manual/appendix/repository-index.html

codeless knowledge-base

questions-and-answers's Introduction

roboticslab-uc3m logo

Questions and Answers

This repository is intended to be a codeless Questions and Answers (Q&A) repository for https://github.com/roboticslab-uc3m, via the GitHub Issue mechanism.

Please, before asking any question, read the guidelines at: Developer Manual: Asking Questions

To see all Open and Closed GitHub Issues of this repository, please follow this link: LINK

questions-and-answers's People

Contributors

jgvictores avatar peterbowman avatar

Stargazers

 avatar  avatar

Watchers

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

questions-and-answers's Issues

Install our YARP plugins elsewhere

Install YARP plugins elsewhere: right now, in Ubuntu, our YARP plugins are installed in /usr/local/lib/yarp. However, icub plugins are installed in /usr/local/lib/icub.

Curarse en salud con TEO

Después de haber hablado con @smcdiaz y con @jmgarciah, y después de todas las consecuencia que supuso el cambio y la redistribución de repositorios, así como las consecuencias de posibles cambios con la actualización de software como puede ser YARP (ver issue) o un futuro cambio de distros de linux en los PCs de Teo (ver issue ) se ha llegado a la conclusión de que son interesantes tomar las siguientes medidas:

  • Actualizar la partición arrancable de Backup que hay instaladas en cada uno de los PCs de TEO (backups realizados a fecha 22/04/2016 (ver issue) a una imagen actual
  • Posible instalación de un banco de pruebas para cualquier tipo de cambio importante que requiera TEO

Yo creo que con realizar el primer punto sería suficiente por el momento, para tener el robot siempre operativo ante cualquier cambio. Decirme que os parece.

Distro and distro setup for robots

Thoughts arising from roboticslab-uc3m/yarp-devices#118.

  1. Debian vs Ubuntu. This is a nasty fight, don't want to get too dirty LOL. It was actually the start of the original issue stated above. @munozyanez commented on Debian and @PeterBowman and I were a bit more into Ubuntu. Nothing against Debian, which is usually considered more stable. Simple fact is Ubuntu 16.04 has a newer CMake version (hence newer versions in general) than Debian 9.0. Having newer versions is usually interesting for us. In sum, we usually leaned towards Ubuntu due to its newer package versions.

  2. RT or non-RT. Currently, RT is at driver level, the Technosoft IPos PT Mode. We'd have to go years back to ASIBOT's pre-empt kernel, or more recently TEO's Meka head which was formatted due to lack of compatibility of drivers (e.g. its own wifi module could only be used via ndiswrapper, with poor communication quality). This is why we've been leaning towards non-RT.

  3. Graphical desktop environments or not. I was originally against installing anything graphical on a robot. However, this is something like c++ vs python: "Is it worth to program on an ultra-efficient platform, if this means that you will not be as efficient/productive?". @smorante usually preferred graphical desktop environments and was much more productive than me at times, and I've seen this with @rsantos88 too. This, together with the fact that we're non-RT anyway, is why we've been leaning towards graphical desktop environments. Note: I believe installing a server version of Ubuntu is a bit more straightforward than Debian, but that may apply to full distros too. 😅
    Edit: Graphical distro tools can also help for settings such as wifi or sound configuration, which need to be configured quick even in working scenarios, such as an imminent demo. 😄 @David-Estevez and I propose, see below, some CLI/curses alternatives.
    Edit2: @David-Estevez Proposed, see below, the possibility of having a graphical desktop installed, but not autostarted.

@roboticslab-uc3m/roboticslab It would be great to have your feedback. Obviously there are more considerations such as which graphical desktop in case there is any (I'm in favor of using defaults per distro), please feel free to comment! Am I missing any more relevant considerations?

Cache dependencies (e.g. YARP) in Travis

Thanks to #17, weekly cron jobs automatically test latest commits on production against YARP's devel branch. Currently, YARP needs to be cloned and built on every push action, and so do other dependencies (e.g. KDL, PCL, OpenRAVE).

Proposal: for non-cron jobs (perhaps cron too if it makes sense), store YARP (and other dependencies if present) in the Travis cache (docs) in order to speed up things. It's preferrable to hold a global variable with the targeted version so that it can be easily bumped in the YAML file with every new release. Speaking of YARP, current master is tagged at 2.3.72.

Caching has been extensively tested on https://github.com/asrob-uc3m/robotDevastation, see .travis.yml and latest builds.

Error compiling with new versions of YARP on Debian 6.0.1 machines

Error compiling with new versions of YARP on Debian 6.0.1 machines.

/usr/local/include/yarp/os/Contact.h:334: error: wrong number of arguments specified for ‘__deprecated__’ attribute
/usr/local/include/yarp/os/Contact.h:344: error: wrong number of arguments specified for ‘__deprecated__’ attribute
/usr/local/include/yarp/os/Contact.h:354: error: wrong number of arguments specified for ‘__deprecated__’ attribute
/usr/local/include/yarp/os/Contact.h:365: error: wrong number of arguments specified for ‘__deprecated__’ attribute
/usr/local/include/yarp/os/Contact.h:375: error: wrong number of arguments specified for ‘__deprecated__’ attribute
/usr/local/include/yarp/os/Contact.h:391: error: wrong number of arguments specified for ‘__deprecated__’ attribute
/usr/local/include/yarp/os/Contact.h:405: error: wrong number of arguments specified for ‘__deprecated__’ attribute
/usr/local/include/yarp/os/Contact.h:416: error: wrong number of arguments specified for ‘__deprecated__’ attribute
/usr/local/include/yarp/os/Contact.h:429: error: wrong number of arguments specified for ‘__deprecated__’ attribute
/usr/local/include/yarp/os/Contact.h:441: error: wrong number of arguments specified for ‘__deprecated__’ attribute
/usr/local/include/yarp/os/Contact.h:459: error: wrong number of arguments specified for ‘__deprecated__’ attribute
/usr/local/include/yarp/os/Contact.h:473: error: wrong number of arguments specified for ‘__deprecated__’ attribute

The small hack for this can be seen on this line of yarp-devices root CMakeLists.txt:

add_definitions(-DYARP_NO_DEPRECATED_WARNINGS=ON)

Where should datasets be uploaded?

Here are some solutions (updated from roboticslab-uc3m/xgnitive#23):

  1. Zenodo: We chose this option in the mentioned issue, which generates DOIs and is popular in the machine learning community. An example from XGNITIVE: https://zenodo.org/record/168156#.WIt3FlwmRh5
  2. ResearchGate: Not sure if it still generates DOIs.
  3. Mendeley Data: a new player in this area.

PD: While we used to publish in https://sourceforge.net/projects/roboticslab/files/Datasets/, these are more modern and probably better solutions.

Code reuse: git submodules vs superbuild vs other methods

In robotology/community#156 we commented on the intention of splitting several https://github.com/roboticslab-uc3m projects into mini-repositories and then unifying them through git submodules. An alternative was presented (in addition to another discussion), the superbuild mechanism.

I have personally always been quite reluctant to git submodules.
On the other hand, I have usually been satisfied with solutions proposed by the robotology community, and will be as long as YCM is just a thin layer over CMake proves to be YCM is just a thin layer *within* CMake as seems to be the fact.

@PeterBowman @David-Estevez Could you please share your opinion on this issue with us?

Libraries being installed to /usr/local/lib/x86_64-linux-gnu

Branching this out from roboticslab-uc3m/kinematics-dynamics#103. I've replicated that behavior in latest yarp-devices and Ubuntu 16.04 64 bits, upon the addition of YCM in the build process (roboticslab-uc3m/yarp-devices@891df8f). This is apparently triggered by using both YCM (v0.2.2) and older CMake versions (tested: v2.8.9, v2.8.11). As a result, library binaries are compiled into build/lib/x86_64-linux-gnu. Inside this directory, exported header files are copied into Headers/.

Rename this repo?

Something among the lines of the following should increase visibility:

  • questions-answers
  • questions-and-answers

Opinions?

Fully embrace a target-driven approach in CMake exported config

In some legacy code, we were used to see <Project>Config.cmake(.in) files with contents that resembled the following lines (source):

SET(KINEMATICS_DYNAMICS_MODULE_PATH "@KINEMATICS_DYNAMICS_MODULE_PATH@")
SET(KINEMATICS_DYNAMICS_DEFINES "@KINEMATICS_DYNAMICS_DEFINES@")
SET(KINEMATICS_DYNAMICS_INCLUDE_DIRS "@KINEMATICS_DYNAMICS_INCLUDE_DIRS@")
SET(KINEMATICS_DYNAMICS_LINK_DIRS "@KINEMATICS_DYNAMICS_LINK_DIRS@")
SET(KINEMATICS_DYNAMICS_LIBRARIES "@KINEMATICS_DYNAMICS_LIBRARIES@")

These are now relics from the pre-target era, and as such, the <project>_INCLUDE_DIRS, <project>_LINK_DIRS and <project>_DEFINES variables (holding what is better known as usage requirements) no longer make sense when a <project>Targets.cmake file is finally being generated and exported by CMake along with each successful configuration. The <project>_LIBRARIES var is a mere alias for all exported targets, created plainly for convenience, but might (and perhaps should) be dropped in order to favour explicitness in downstream calls to target_link_libraries().

This is how said <package>Config.cmake.in template file looks now (source):

set(ROBOTICSLAB_KINEMATICS_DYNAMICS_INCLUDE_DIRS)

foreach(_dir @PACKAGE_ROBOTICSLAB_KINEMATICS_DYNAMICS_INCLUDE_DIR@)
    set_and_check(_temp_var ${_dir})
    list(APPEND ROBOTICSLAB_KINEMATICS_DYNAMICS_INCLUDE_DIRS ${_temp_var})
endforeach()

if(NOT "@_exported_targets@" STREQUAL "")
    include(${CMAKE_CURRENT_LIST_DIR}/ROBOTICSLAB_KINEMATICS_DYNAMICSTargets.cmake)

    set(ROBOTICSLAB_KINEMATICS_DYNAMICS_LIBRARIES)

    foreach(_target @_exported_targets@)
        list(APPEND ROBOTICSLAB_KINEMATICS_DYNAMICS_LIBRARIES ROBOTICSLAB::${_target})
    endforeach()
endif()

The main focus lies now on the following line:

include(${CMAKE_CURRENT_LIST_DIR}/ROBOTICSLAB_KINEMATICS_DYNAMICSTargets.cmake)

A configuration file might be as simple as that, see CMake docs. Apart from said line, there is some safety boilerplate, as well as the aforementioned <package>_LIBRARIES alias and more checks and sets for <package>_INCLUDE_DIRS.

The reason behind keeping a variable to point at where headers are stored is linked to the essence of YARP interfaces. In fact, files such as ICartesianControl.h, ICartesianSolver.h, etc. (ref) do not belong to a specific library and therefore didn't undergo the common target mechanism standardization. However, CMake supports the so-called interface targets, suited for header-only libraries that do not generate any output binaries.

In this issue, I propose introducing interface targets for YARP stand-alone interface headers and dropping any exported variable that can be fully replaced by the target mechanism.

Also, the <package>_MODULE_PATH variable setter could be rewritten as one or more calls to the include() command, one per module directory. It is to be considered whether such behavior (automatic inclusion upon returning from find_package()) is desired.

Remove deprecated YARP control-board interface methods

Several long-time deprecated methods will get deleted with the next YARP release (2.3.70). Some of these include (current deprecation list):

  • yarp::dev::IPositionControl::setPositionMode()
  • yarp::dev::IPositionControlRaw::setPositionModeRaw()
  • yarp::dev::IPositionDirect::setPositionDirectMode()
  • yarp::dev::IPositionDirectRaw::setPositionDirectModeRaw()
  • yarp::dev::ITorqueControl::setTorqueMode()
  • yarp::dev::ITorqueControlRaw::setTorqueModeRaw()
  • yarp::dev::IVelocityControl::setVelocityMode()
  • yarp::dev::IVelocityControlRaw::setVelocityModeRaw()

Said methods were migrated upstream to the yarp::dev::IControlMode interface (docs). Apart from that, the yarp::dev::IOpenLoopControl interface and its companion yarp::dev::IOpenLoopControlRaw have been removed at robotology/yarp@73c65b2. Affected repositories:

Using YARP's internal logging instead of color-debug

Hi!

I have just discovered that yarp has a logging system for the log messages (info, debug, warning, error...) of their yarp devices. We are using a similar system for our devices, based on color-debug, but I guess their logging system has better integration with yarp devices and other yarp mechanisms. Messages would also look more homogeneous if sent to stdout with the yarp logger instead of our own system.

The question is... should we use yarp's internal logging for our devices? or should we stick to the current color-debug system?

I2t parameter configuration in TechnosoftIpos drivers

The screenshots below illustrate how are TechnosoftIpos drivers configured in ASIBOT at this time:

driver_setup

driver_info

I'll focus on the I2t Over current checkboxes and text inputs inside the Protections group on both windows. The latter is accessible from the Drive Info button in the upper center of the first screenshot.

  • Which one of these values is actually taken into consideration by the driver? As Drive Info doesn't let us modify I2t, could we suppose that these values are pulled from the firmware?
  • How is I2t calculated for TEO?
  • Regarding TEO, does this value depend on the joint the driver is associated to? (i.e. shoulders and elbows should pick higher values than wrists)
  • Did you configure I2t through EasySetUp/EasyMotionStudio or via CAN?

CC @roboticslab-uc3m/teo.
@edwinDOS please expand in case I missed something.

Set a minimum version policy for dependencies at a global or project-wide level

There seems to be an unwritten rule about always developing against the latest version of YARP. After having read robotology/community#173, I concluded that we may benefit from defining such policies as projects grow larger and more people get involved in their development. I perceive this as a bit of a pressing matter since several of my past commits were mostly aimed at dealing with deprecations, code no longer working due to certain upgrade and achieving backwards compatibility where possible. For example, I'm unsure about the minimum version of CMake I should be targeting at and in consequence I will miss some of the newer features. Additionally, it's not clear to which extent hacks (sometimes dirty ones) must be applied to support outdated software.

The YARP team has a nice page that covers all dependencies:
http://wiki.icub.org/wiki/YARP_Supported_Distributions

Seeing this from another perspective, care should also be taken to conform to the latest releases of upstream software - in case such policy applies, too (as stated in the first sentence, YARP could be a candidate in this respect). To list some of these issues, developers should be aware of incoming deprecations (see roboticslab-uc3m/yarp-devices@efb8962) and keep their documentation up-to-date (roboticslab-uc3m/installation-guides#1).

A couple of problems related to Teo movements

There are a couple of problems related to Teo movements and it can ruin a demonstration (leading to reset it several times... 😓)

  • The first occurs randomly, when the program sends a sequence of movements, for example salute, composed by four movements: lift arm up, axial arm turn in, axial arm turn out, move arm down.
    We can see that this movement is not executed correctly in certain occasions. The arm finishes the movements early, running all at once and not sequentially. This can produce a freeze of all the demo, because the movement has not finished correctly all the sequence. Can it be a problem with checkCanBus() function? Why does it works well sometime and sometimes not?
  • Other problem observed is, when Teo makes a movement (I would highlight axial movements), sometimes is not finished and the joint starts to shake (like a parkinson). This may take a while (shaking horribly) until the movement finally ends.

I don't know where I can post this problems, because the first can be a software problem, but the second it can be a tunning motors problem ¿? I don't know
I need some ideas to solve it.

Please use `yarp namespace` if working within robot network without using robot

Recommendation/petition: please use yarp namespace if working within robot network (e.g. TEONET) and not using robot (e.g. TEO).

  • Reason: Address (name) collisions due to sharing yarp server.

  • Solution: If not connecting to robot, set yarp namespace /yourname, and work with your own instance of yarp server. To return to the robot's namespace, close this instance, and type yarp namespace /root.

Thank you! 🎉

RoboticsLabUC3M Youtube Channel

Alberto Jardón y Carlos me han pedido subir un vídeo que grabamos ayer de la demo waiter al canal de RoboticsLabUC3M. ¿Podrías @jgvictores facilitarme usuario y contraseña?
Gracias!!!

Major code reorganization among repositories

For starters, I'd elaborate a list of all the functional libraries (these will mostly be yarp devices) that are of use, and functional programs. Once we lay the tree out, it will be easier to see what goes where. This could take some time!

Schedule periodic Travis cron jobs on YARP's devel branch

Following the lines of this comment at roboticslab-uc3m/teo-main#8, and also with #7 (latest-YARP policy) and #16 (YARP deprecations striking out of nowhere) in mind, it might be worth running periodic builds for each repo - say, once a week? - that would fetch YARP's devel branch to keep up with any breaking changes being prepared for the next release. The reasoning behind this is simple: use Travis' mechanisms to warn us against upcoming trouble even if nobody is keeping an eye on YARP's development progress. Such issues will surely arise at stale projects (like asibot-main was until quite recently).

One may use the TRAVIS_EVENT_TYPE default environment variable to differentiate between the usual push jobs and the cron ones.


List of repos on which cron builds have been enabled (roboticslab-uc3m at travis-ci.org):

Look for system-installed googletest for use in Travis builds, drop embedded copies

Currently, it's a common practice in repos that perform unit testing with Travis CI to host a gtest-x.x.x directory within test/, see kinematics-dynamics. Proposal: remove those files and install Google's testing framework via apt:


Decouple external build configuration (Travis CI/YCM) from local settings

I've set up CI builds for asibot-hmi with this configuration; note that this project depends on kinematics-dynamics, hence an additional git clone step. To avoid building KDL, which is a dependency for kinematics-dynamics itself, I had to configure it appropriately:

cmake .. -DENABLE_TrajectoryLib:BOOL=OFF \
         -DENABLE_KdlVectorConverterLib:BOOL=OFF \
         -DENABLE_BasicCartesianControl:BOOL=OFF \
         -DENABLE_CartesianControlServer:BOOL=OFF \
         -DENABLE_CartesianControlClient:BOOL=OFF \
         -DENABLE_KdlSolver:BOOL=OFF \
         -DENABLE_BasicTwoLimbCartesianControl:BOOL=OFF \
         -DENABLE_TwoLimbCartesianControlServer:BOOL=OFF \
         -DENABLE_tests:BOOL=OFF

First remark: any options irrelevant to my project could've been set to OFF/FALSE in kinematics-dynamics' root CMakeLists.txt file. Therefore, I'd just concentrate on the funcionalities I'm really interested in, not the other way around.

Then, I configured periodic cron jobs targeted at discovering issues linked with the development of YARP. However, my latest build errored because of recent changes to kinematics-dynamics (CI logs), which happened to introduce a new dependency on KDL. This forced me to take a look upstream and update my .travis.yml accordingly: roboticslab-uc3m/asibot-hmi@9b1959d.

As a second remark, one must always keep an eye on each upstream repo because of new dependencies or changes in CMake configuration. This and the previous remark could be easily extended to YCM-like repos (e.g. teo-main) for the same reasons.

Proposal:

  • set all CMake options to OFF (FALSE)
  • recommend using GUI utilities (ccmake, cmake-gui) in install guides for ease of initial CMake configuration phase
  • in downstream projects (WRT CI configuration files and YCM-specific build modules), list any required options and set them as required; in other words, don't expect foreign CMakeLists.txt files, which are easily subject to changes, to provide you the desired configuration

Regarding the last point and YCM projects, the CONFIGURE_COMMAND parameter to ycm_ep_helper should come in handy (docs).

Plural on tests/examples and other conventions

Singular or plural and other conventions:

  1. Derived from the constant example (yarp-ish) vs examples directory.
  2. @PeterBowman pointed out this also happens with cmake/template vs cmake/templates
  3. Also test(s)

Proposed ToDo:

Centralize best practices

We currently have a best practice section in http://robots.uc3m.es

Seeing issues like roboticslab-uc3m/asibot-main#24 (and recent doubts where I've confirmed we like namespaces, etc) I'd say it's a good idea to continue storing our best practices, but move on to markdown on GitHub. Specifically, I propose to begin a repository and generate a GitBook from it. Potential names:

Ideas/alternatives/anything...?

How should I document my project's dependencies?

I am currently documenting the dependencies of the textiles project and I haven't been able to find any instructions about how to document a project within the RoboticsLab organization.

Textiles is a large project mixing C++ and Python, using non-stable package versions for some dependencies in order to get state of the art methods not available in stable releases.

As no other project depends on it (yet)... should I include my dependencies / instructions in my repo only? should I use whatever method has been chosen for the main repos of this organization? where can I find that method?

enable tables

I need a table for a new student. The best option is the table in front of TEO.

can you ( @jgvictores or @RaulFdzbis ) to loof for new place out of the lab for the TV ??

thx

Bootstrapped YCM breaks automated builds

A nasty bug was introduced right before the v0.2.3 and v0.4.0 releases of YCM. It's still present at latest HEAD, for this reason all Travis builds in YCM-enabled repos have been erroring for several weeks: robotology/ycm#118. While this issue is especially noticeable with regard to our CI tools, regular users may experiment the same problems if they recently upgraded their local YCM copy. Current workarounds include:

The latter patch has been applied to root CMakeLists.txt at the following repos:

I'd like to leave this issue open until upstream YCM master is fixed. However, we may consider leaving the YCM_TAG thing for good and simply keep updating the release version number to avoid dealing with sudden breakages (one would expect that master branch should be stable, which was not the case here).

C++ namespace convention

As work on #2 goes on, we'll find out that former TEO-specific code is intented to target a wider range of robot platforms, thus rendering the omnipresent teo:: namespace quite inappropriate for common libraries. Proposed solutions:

  • coin a new and catchy namespace only for this kind of libraries
  • create an omnibus prefix for every instance of Robotics Lab code to which existing and future namespaces would be appended: rl::, rl::teo::, rl::asibot::, rl::amor::, etc.

Improve device option docs, promote use of --verbose

The yarpdev utility suggests using a --verbose CLI parameter in order to list all available options, their description, default value, etc. This comes in handy when working with our own devices, which undergo frequent changes in their usage (or, simply put, are barely or not documented at all). Traditionally, we introduced the --help parameter, but it's hard to maintain (needs hardcoding plus some care to keep it up to date).

YARP offers its own mechanisms for such tasks, tightly bound to the yarp::dev::PolyDriver class: the YarpDevMonitor utility (not shown in Doxygen generated docs nor even exported, check PolyDriver.cpp). Such instance is created by all PolyDriver objects and can be propagated to subdevices (either wrapped devices, or devices opened by other devices in their DeviceDriver::open method). Example:

Try this via yarpdev --device ... with and without --verbose. Example:

yarpdev --device FakeControlboard --name /fake
yarpdev --device BasicCartesianControl --local /local --remote /fake --kinematics path.ini --verbose

Some thoughts:

  • --help actually made the device stop and exit (but remember: std::exit is evil)
  • need to review all check calls and add missing comments/defaults
  • this is only valid for devices initialized via yarpdev, but we'll surely want to achieve the same results with RF modules

Thoughts about path-planning within roboticslab-uc3m

Thoughts about path-planning within roboticslab-uc3m, and considerations on creating a path-planning repository within the organization.

Considerations to be taken into account before blindly doing this:

  1. Path-planning is not required for much of our research. 2D/3D path-planning is mostly required in the presence of obstacles, which is not our current general use case within our current research (this can change with time). Cases where we are doing some path-planning:
    1. [2D navigation] TIAGo navigation, via ROS navigation stack.
    2. [2D navigation] There should be some remanent code in asibot-main ravebot or tasks, where OpenRAVE was used. Should be migrated to openrave-yarp-plugins if it hasn't been done yet.
    3. [3D grasping] There has been some progress with TEO in OpenRAVE in https://github.com/roboticslab-uc3m/teo-grasp for grasping a bottle. This may remain independent or some day be merged into openrave-yarp-plugins.
  2. We already have some trajectory generation in kinematics-dynamics, which is a good place for it (not exactly path-planning, does not take obstacles into account).

As seen, the above candidates already have their place. Therefore, my recommendations are the following:

  1. Not creating a new path-planning repository within this organization, at least for now.
  2. Use this issue to track path-planning developments within this organization.
  3. If results are in Cartesian space, keep close integration with kinematics-dynamics, which treats Cartesian to joint space conversions. Therefore, new issues will potentially arise at kinematics-dynamics too.

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.