ROS stack for the NAO robot, see http://www.ros.org/wiki/nao_robot
ros-naoqi / nao_robot Goto Github PK
View Code? Open in Web Editor NEWLicense: BSD 3-Clause "New" or "Revised" License
License: BSD 3-Clause "New" or "Revised" License
ROS stack for the NAO robot, see http://www.ros.org/wiki/nao_robot
Is the robot model = "NaoH25V40" in nao_description/urdf/naoV50_generated_urdf/nao.urdf and .../nao_robot.urdf correct? isn't it "NaoH25V50"?
Would it be possible to release nao-description (and also romeo-description), because the robot models there are rather old?
Hi,
I know it is meant to be working with ROS 1 but it is not compatible with any update of ROS 2, it will be an update in the future ?
@mbusy Hello, when I roslaunch nao_bringup nao_full_py.launch, why does the image of nao's own camera turn bright and nearly white
I use Ubuntu 16.04 and ros kinetic
Hi,
I found pose_controller subscribes joint_stiffness
and that will call
ALMotionProxy::setStiffnesses, but it seems we do not have the ROS interface of knowing current stiffness using ALMotionProxy::getStiffnesses. Is there any reason ?
if we'll implement this, which topic name do you recommend, stiffness_states?
nao_speech.py
starts a dynamic_reconfigure.client.Client
with the hard-coded default node name "nao_speech". When nao_speech.py
is started with a different node name, e.g. from a launch file, then the node blocks forever while waiting for the dynamic_reconfigure
server to exist.
There are some name collisions due to the links and the joints on the feet having the same name, which causes SDFormat to error out. This should be a simple fix.
Can somebody please explain the purpose of mimic joints on finger links in nao_description URDF? Why are fingers set to mimic the hand joint? Example of what I mean (from nao_robot/robot_description/urdf/naoV40_generated_urdf/nao.urdf):
<joint name="RFinger23" type="continuous">
<parent link="RFinger22_link"/>
<child link="RFinger23_link"/>
<origin rpy="0 0 -0.999899" xyz="0.01436 0 0"/>
<axis xyz="0 0 1.0"/>
<mimic joint="RHand" multiplier="0.999899" offset="0"/>
</joint>
Thank you.
Hi!
Do you looking for support Nao V6 urdf?
I'm trying to get my Nao to say something using the nao_speech node. I tried the following after using nao_bringup to get connected:
rosrun nao_apps nao_speech.py
I get the following error:
[ERROR] [1505241652.337729]: Could not create Proxy to "ALAudioDevice".
Exception message:
ALProxy::ALProxy
Can't find service: ALAudioDevice
1
I donnot understand the package how to work for Nao.
the package send message to Nao. and Nao finish the command?
if I want to program a voice talk program in Nao. And I talk to NAO. it is Ok?
may be i need pocketsphinx to finish the voice awake word at first.
2
It looks like that it is no way to install the ros in Nao?
Particularly the the description please :-)
Just open up a tf in RViz and you'll see the problem.
@keulYSMB , didn't that happen before ?
There is obviously a typo in the nao_description/urdf/naoVXX_generated_urdf/nao_robot.xacro files in versions XX=32/33/40/50, causing the coordinate frame of r_gripper to have an offset in rotation.
Current length:
<child link="l_gripper"/>
<origin rpy="0 0 0" xyz="0.05775 0 -0.01213"/>
Actual length:
<child link="l_gripper"/>
<origin rpy="0 0 0" xyz="0.05775 0 -0.01231"/>
Note the -0.01231
The dimensions can be checked on Aldebarans page
Tried to run nao_behaviors node and got the following error:
Traceback (most recent call last):
File "/opt/openrobots/lib/nao_driver/nao_behaviors.py", line 139, in
node = NaoBehaviors()
File "/opt/openrobots/lib/nao_driver/nao_behaviors.py", line 85, in init
self.actionlibServer.start()
File "/opt/openrobots/lib/python2.7/site-packages/actionlib/simple_action_server.py", line 211, in start
self.action_server.start();
File "/opt/openrobots/lib/python2.7/site-packages/actionlib/action_server.py", line 134, in start
self.initialize();
File "/opt/openrobots/lib/python2.7/site-packages/actionlib/action_server.py", line 155, in initialize
search_status_frequency_name = rospy.search_param("actionlib_status_frequency")
File "/opt/openrobots/lib/python2.7/site-packages/rospy/client.py", line 509, in search_param
return param_server.search_param(param_name)
File "/opt/openrobots/lib/python2.7/site-packages/rospy/msproxy.py", line 162, in search_param
code, msg, val = self.target.searchParam(rospy.names.get_caller_id(), key)
File "/usr/lib/python2.7/xmlrpclib.py", line 1224, in _call
return self.__send(self.__name, args)
File "/usr/lib/python2.7/xmlrpclib.py", line 1578, in __request
verbose=self.__verbose
File "/usr/lib/python2.7/xmlrpclib.py", line 1264, in request
return self.single_request(host, handler, request_body, verbose)
File "/usr/lib/python2.7/xmlrpclib.py", line 1297, in single_request
return self.parse_response(response)
File "/usr/lib/python2.7/xmlrpclib.py", line 1473, in parse_response
return u.close()
File "/usr/lib/python2.7/xmlrpclib.py", line 793, in close
raise Fault(**self._stack[0])
xmlrpclib.Fault:
Please advise. Thanks a lot.
Hello!
I'm trying to work with NAO V6 on Unity, however, I cant't find the corresponding urdf. Would please tell me where I can find it?
Thanks a lot
Hello All,
I am getting the following error as I try to run the following command -
roslaunch nao_bringup nao_full.launch nao_ip:=10.0.0.224 roscore_ip:=10.0.0.52
Error -
`... logging to /home/cvl/.ros/log/7de6e3e2-a0bd-11e8-b486-c48e8ffaa3c3/roslaunch-cvl-nao-9939.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://cvl-nao:38346/
PARAMETERS
NODES
/nao_robot/pose/
pose_controller (naoqi_pose/pose_controller.py)
pose_manager (naoqi_pose/pose_manager.py)
/nao_robot/
naoqi_driver (naoqi_driver/naoqi_driver_node)
auto-starting new master
process[master]: started with pid [9951]
ROS_MASTER_URI=http://localhost:11311
[nao_robot/pose/pose_manager-4] killing on exit
[nao_robot/naoqi_driver-2] killing on exit
[FATAL] [WallTime: 1534359637.629640] Could not connect to required "joint_trajectory" action server, is the nao_controller node running?
[rosout-1] killing on exit
[master] killing on exit
shutting down processing monitor...
... shutting down processing monitor complete
done
`
I also tried running the driver to check issues with the driver by running the following command -
roslaunch naoqi_driver naoqi_driver.launch nao_ip:=10.0.0.19 roscore_ip:=10.0.0.52
Error -
`... logging to /home/cvl/.ros/log/c1b6ec16-a0bd-11e8-9276-c48e8ffaa3c3/roslaunch-cvl-nao-10036.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://cvl-nao:45739/
PARAMETERS
NODES
/
naoqi_driver (naoqi_driver/naoqi_driver_node)
auto-starting new master
process[master]: started with pid [10048]
ROS_MASTER_URI=http://localhost:11311
[naoqi_driver-2] killing on exit
[rosout-1] killing on exit
[master] killing on exit
shutting down processing monitor...
... shutting down processing monitor complete
done
`
Please suggest the possible solution or a guide to follow to get the robot working with ROS interface. The ROS wiki is not quite informative and there needs to be a better tutorial for the same.
After installing ros-indigo-nao-apps 0.5.6-0trusty-20150227-2029-+0000
, it appears that none of the Python nodes have their executable bit set, making all launch files referencing them unusable.
For instance,
$ roslaunch nao_apps leds.launch
[...]
ERROR: cannot launch node of type [nao_apps/nao_leds.py]: can't locate node [nao_leds.py] in package [nao_apps]
No processes to monitor
shutting down processing monitor...
... shutting down processing monitor complete
Manually chmod +x
them fix the issue.
I am trying to use NAO with ROS and Gazebo, but I have a problem with NAO's fingers, where they keep spinning non-stop, what makes the robot shake. This is happening using Ubuntu 20.04 and ROS Noetic.
I've tried some of the solutions here, but to no avail. ros-naoqi/nao_virtual#9
I also tried using Ubuntu 14.04 and ROS Indigo, but with no success, the problem persists.
When I use nao_bringup, I can move the robot but there are a lots of warnings.
Configuration : Ubuntu 16.04, Ros Kinetic, Nao V6.
All the warnings appear after :
roslaunch nao_bringup nao_full_py.launch nao_ip:=... roscore_ip:=... network_interface:=...
First warning :
xacro: Traditional processing is deprecated. Switch to --inorder processing!
To check for compatibility of your document, use option --check-order.
For more infos, see http://wiki.ros.org/xacro#Processing_Order
xacro.py is deprecated; please use xacro instead
Long list of warnings :
[INFO] [1570439105.742670]: Connecting to NaoQi at nao.local:9559
[I] 1570439105.745437 30459 qimessaging.session: Session listener created on tcp://0.0.0.0:0
[INFO] [1570439105.746170]: Connecting to NaoQi at nao.local:9559
[W] 1570439105.746214 30684 qi.path.sdklayout: No Application was created, trying to deduce paths
[I] 1570439105.746216 30459 qimessaging.transportserver: TransportServer will listen on: tcp://192.168.13.13:45661
[I] 1570439105.746252 30459 qimessaging.transportserver: TransportServer will listen on: tcp://127.0.0.1:45661
[I] 1570439105.746280 30459 qimessaging.transportserver: TransportServer will listen on: tcp://192.168.219.72:45661
[I] 1570439105.748949 30476 qimessaging.session: Session listener created on tcp://0.0.0.0:0
[W] 1570439105.749724 30696 qi.path.sdklayout: No Application was created, trying to deduce paths
[I] 1570439105.749755 30476 qimessaging.transportserver: TransportServer will listen on: tcp://192.168.13.13:37473
[I] 1570439105.749775 30476 qimessaging.transportserver: TransportServer will listen on: tcp://127.0.0.1:37473
[I] 1570439105.749788 30476 qimessaging.transportserver: TransportServer will listen on: tcp://192.168.219.72:37473
[INFO] [1570439105.762306]: Connecting to NaoQi at nao.local:9559
[INFO] [1570439105.763784]: Connecting to NaoQi at nao.local:9559
[I] 1570439105.764953 30567 qimessaging.session: Session listener created on tcp://0.0.0.0:0
[I] 1570439105.765785 30567 qimessaging.transportserver: TransportServer will listen on: tcp://192.168.13.13:33043
[I] 1570439105.765807 30567 qimessaging.transportserver: TransportServer will listen on: tcp://127.0.0.1:33043
[W] 1570439105.765789 30728 qi.path.sdklayout: No Application was created, trying to deduce paths
[I] 1570439105.765820 30567 qimessaging.transportserver: TransportServer will listen on: tcp://192.168.219.72:33043
[I] 1570439105.766232 30552 qimessaging.session: Session listener created on tcp://0.0.0.0:0
[W] 1570439105.766966 30742 qi.path.sdklayout: No Application was created, trying to deduce paths
[I] 1570439105.766975 30552 qimessaging.transportserver: TransportServer will listen on: tcp://192.168.13.13:35833
[I] 1570439105.767008 30552 qimessaging.transportserver: TransportServer will listen on: tcp://127.0.0.1:35833
[I] 1570439105.767019 30552 qimessaging.transportserver: TransportServer will listen on: tcp://192.168.219.72:35833
[I] 1570439105.798780 30733 qimessaging.sessionservice: SessionService Remote Capabilities
[I] 1570439105.799922 30747 qimessaging.sessionservice: SessionService Remote Capabilities
[INFO] [1570439105.813027]: useFootGaitConfig = 0
/opt/ros/kinetic/lib/nao_apps/nao_walker.py:97: SyntaxWarning: The publisher should be created with an explicit keyword argument 'queue_size'. Please see http://wiki.ros.org/rospy/Overview/Publishers%20and%20Subscribers for more information.
self.pub = rospy.Publisher("speech", String, latch = True)
[I] 1570439105.826602 30703 qimessaging.sessionservice: SessionService Remote Capabilities
[INFO] [1570439105.828427]: nao_walker initialized
[INFO] [1570439105.828578]: nao_walker running...
[INFO] [1570439105.912494]: nao_controller initialized
[INFO] [1570439105.912718]: nao pose_controller running...
[I] 1570439105.915116 30512 qimessaging.session: Session listener created on tcp://0.0.0.0:0
[W] 1570439105.915913 30910 qi.path.sdklayout: No Application was created, trying to deduce paths
[I] 1570439105.915916 30512 qimessaging.transportserver: TransportServer will listen on: tcp://192.168.13.13:39225
[I] 1570439105.915953 30512 qimessaging.transportserver: TransportServer will listen on: tcp://127.0.0.1:39225
[I] 1570439105.915965 30512 qimessaging.transportserver: TransportServer will listen on: tcp://192.168.219.72:39225
[INFO] [1570439105.919642]: Connecting to NaoQi at nao.local:9559
[I] 1570439105.921844 30429 qimessaging.session: Session listener created on tcp://0.0.0.0:0
[I] 1570439105.922644 30429 qimessaging.transportserver: TransportServer will listen on: tcp://192.168.13.13:38799
[I] 1570439105.922663 30429 qimessaging.transportserver: TransportServer will listen on: tcp://127.0.0.1:38799
[I] 1570439105.922676 30429 qimessaging.transportserver: TransportServer will listen on: tcp://192.168.219.72:38799
[W] 1570439105.922645 30931 qi.path.sdklayout: No Application was created, trying to deduce paths
[I] 1570439105.935025 30531 qimessaging.session: Session listener created on tcp://0.0.0.0:0
[I] 1570439105.935760 30531 qimessaging.transportserver: TransportServer will listen on: tcp://192.168.13.13:32893
[I] 1570439105.935774 30531 qimessaging.transportserver: TransportServer will listen on: tcp://127.0.0.1:32893
[W] 1570439105.935780 30959 qi.path.sdklayout: No Application was created, trying to deduce paths
[I] 1570439105.935782 30531 qimessaging.transportserver: TransportServer will listen on: tcp://192.168.219.72:32893
inaoqi-broker: construct at 0.0.0.0:0, parent : nao.local:9559
[I] 1570439105.953842 30577 qimessaging.session: Session listener created on tcp://0.0.0.0:0
[W] 1570439105.954614 31006 qi.path.sdklayout: No Application was created, trying to deduce paths
[I] 1570439105.954617 30577 qimessaging.transportserver: TransportServer will listen on: tcp://192.168.13.13:39783
[I] 1570439105.954657 30577 qimessaging.transportserver: TransportServer will listen on: tcp://127.0.0.1:39783
[I] 1570439105.954670 30577 qimessaging.transportserver: TransportServer will listen on: tcp://192.168.219.72:39783
[W] 1570439105.965087 30577 qitype.metaobject: Method(114) already defined (and overriden): BIND_PYTHON::(mmm)
[W] 1570439105.965122 30577 qitype.metaobject: Method(114) already defined (and overriden): BIND_PYTHON::(mmm)
[W] 1570439105.965146 30577 qitype.metaobject: Method(114) already defined (and overriden): BIND_PYTHON::(mmm)
[W] 1570439105.965258 30577 qitype.metaobject: Method(115) already defined (and overriden): addParam::(m)
[W] 1570439105.965306 30577 qitype.metaobject: Method(116) already defined (and overriden): autoBind::(mmm)
[W] 1570439105.965345 30577 qitype.metaobject: Method(116) already defined (and overriden): autoBind::(mmm)
[W] 1570439105.965373 30577 qitype.metaobject: Method(116) already defined (and overriden): autoBind::(mmm)
[W] 1570439105.965419 30577 qitype.metaobject: Method(100) already defined (and overriden): exit::()
[W] 1570439105.965481 30577 qitype.metaobject: Method(117) already defined (and overriden): functionName::(mmm)
[W] 1570439105.965519 30577 qitype.metaobject: Method(117) already defined (and overriden): functionName::(mmm)
[W] 1570439105.965558 30577 qitype.metaobject: Method(117) already defined (and overriden): functionName::(mmm)
[W] 1570439105.965597 30577 qitype.metaobject: Method(112) already defined (and overriden): getBrokerName::()
[W] 1570439105.965656 30577 qitype.metaobject: Method(118) already defined (and overriden): getModule::(m)
[W] 1570439105.965752 30577 qitype.metaobject: Method(120) already defined (and overriden): get_proxy::(mm)
[W] 1570439105.965794 30577 qitype.metaobject: Method(120) already defined (and overriden): get_proxy::(mm)
[W] 1570439105.965834 30577 qitype.metaobject: Method(120) already defined (and overriden): get_proxy::(mm)
[W] 1570439105.965872 30577 qitype.metaobject: Method(120) already defined (and overriden): get_proxy::(mm)
[W] 1570439105.965941 30577 qitype.metaobject: Method(121) already defined (and overriden): get_version::()
[W] 1570439105.965977 30577 qitype.metaobject: Method(121) already defined (and overriden): get_version::()
[W] 1570439105.966165 30577 qitype.metaobject: Method(126) already defined (and overriden): join::(m)
[W] 1570439105.966205 30577 qitype.metaobject: Method(126) already defined (and overriden): join::(m)
[W] 1570439105.966256 30577 qitype.metaobject: Method(126) already defined (and overriden): join::(m)
[W] 1570439105.966365 30577 qitype.metaobject: Method(128) already defined (and overriden): processRemote::(mmmm)
[W] 1570439105.966408 30577 qitype.metaobject: Method(128) already defined (and overriden): processRemote::(mmmm)
[W] 1570439105.966450 30577 qitype.metaobject: Method(128) already defined (and overriden): processRemote::(mmmm)
[W] 1570439105.966490 30577 qitype.metaobject: Method(128) already defined (and overriden): processRemote::(mmmm)
[W] 1570439105.966530 30577 qitype.metaobject: Method(128) already defined (and overriden): processRemote::(mmmm)
[W] 1570439105.966570 30577 qitype.metaobject: Method(128) already defined (and overriden): processRemote::(mmmm)
[W] 1570439105.966610 30577 qitype.metaobject: Method(128) already defined (and overriden): processRemote::(mmmm)
[W] 1570439105.966650 30577 qitype.metaobject: Method(128) already defined (and overriden): processRemote::(mmmm)
[W] 1570439105.966723 30577 qitype.metaobject: Method(129) already defined (and overriden): pythonChanged::(mmm)
[W] 1570439105.966763 30577 qitype.metaobject: Method(129) already defined (and overriden): pythonChanged::(mmm)
[W] 1570439105.966801 30577 qitype.metaobject: Method(129) already defined (and overriden): pythonChanged::(mmm)
[W] 1570439105.966869 30577 qitype.metaobject: Method(130) already defined (and overriden): reconfigure::(mm)
[W] 1570439105.966908 30577 qitype.metaobject: Method(130) already defined (and overriden): reconfigure::(mm)
[W] 1570439105.967022 30577 qitype.metaobject: Method(133) already defined (and overriden): run::()
[W] 1570439105.967090 30577 qitype.metaobject: Method(134) already defined (and overriden): setDaemon::(m)
[W] 1570439105.967156 30577 qitype.metaobject: Method(135) already defined (and overriden): setModuleDescription::(m)
[W] 1570439105.967222 30577 qitype.metaobject: Method(136) already defined (and overriden): setName::(m)
[W] 1570439105.967294 30577 qitype.metaobject: Method(103) already defined (and overriden): version::()
[INFO] [1570439105.980620]: reconfigure changed
[INFO] [1570439105.980901]: Changes recorded but not applied as nobody is subscribed to the ROS topics.
[INFO] [1570439105.991462]: reconfigure changed
[INFO] [1570439105.991708]: Changes recorded but not applied as nobody is subscribed to the ROS topics.
/opt/ros/kinetic/lib/python2.7/dist-packages/naoqi_sensors/naoqi_microphone.py:59: SyntaxWarning: The publisher should be created with an explicit keyword argument 'queue_size'. Please see http://wiki.ros.org/rospy/Overview/Publishers%20and%20Subscribers for more information.
self.pub_audio_ = rospy.Publisher('~audio_raw', AudioBuffer)
[INFO] [1570439106.019314]: reconfigure changed
[INFO] [1570439106.019503]: Changes recorded but not applied as nobody is subscribed to the ROS topics.
[INFO] [1570439106.020088]: reconfigure changed
[INFO] [1570439106.020249]: Changes recorded but not applied as nobody is subscribed to the ROS topics.
[INFO] [1570439106.027622]: reconfigure changed
[INFO] [1570439106.027833]: Changes recorded but not applied as nobody is subscribed to the ROS topics.
Is it possible to fix them to avoid this long list of warnings and informations ?
running new nao_speech.py fails as follows and it seems nao_driver in ros_naoqi does not have cfg files https://github.com/ros-naoqi/naoqi_bridge/tree/master/naoqi_driver. Do I miss something?
[I] 23635 qimessaging.transportserver: TransportServer will listen on: tcp://127.0.0.1:49956
Traceback (most recent call last):
File "/home/nao/catkin_ws/src/nao_robot/nao_apps/nodes/nao_speech.py", line 40, in <module>
from naoqi_driver.cfg import naoqi_speechConfig as NodeConfig
ImportError: No module named cfg
Cc: @tarukosu, @furushchev
I'd like to use diagnostic updater for pepper robot ,could you move/copy this to naoqi_bridge or pepper_robot repository? Or if you tell me the direction, I can create pull request.
https://github.com/ros-naoqi/nao_robot/blob/master/nao_apps/nodes/nao_diagnostic_updater.py
When trying roslaunch nao_bringup nao_full.launch, the second part of the launch file which should start pose_controller and pose_manager fails.
I have all the standard nao packages for kinetic installed, I have the correct python NaoQI sdk extracted and in the PYTHONPATH.
$ echo $PYTHONPATH
/home/tgiles/Desktop/CPSC495/devel/lib/python2.7/dist-packages:/opt/ros/kinetic/lib/python2.7/dist-packages::/home/tgiles/pynaoqi-python2.7-2.1.4.13-linux64
When attempting to launch the pose_manager by itself:
roslaunch naoqi_pose pose_manager.launch
... logging to /home/tgiles/.ros/log/a7f89d3a-f301-11e6-8a39-64006a8872e3/roslaunch-dconner-5815.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://dconner:40946/
PARAMETERS
NODES
/
pose_controller (naoqi_pose/pose_controller.py)
pose_manager (naoqi_pose/pose_manager.py)
ROS_MASTER_URI=http://localhost:11311
core service [/rosout] found
process[pose_controller-1]: started with pid [5835]
process[pose_manager-2]: started with pid [5836]
Traceback (most recent call last):
File "/opt/ros/kinetic/lib/naoqi_pose/pose_controller.py", line 49, in
from naoqi_driver.naoqi_node import NaoqiNode
File "/opt/ros/kinetic/lib/python2.7/dist-packages/naoqi_driver/init.py", line 29, in
from .naoqi_node import *
File "/opt/ros/kinetic/lib/python2.7/dist-packages/naoqi_driver/naoqi_node.py", line 37, in
raise RuntimeError("Error importing NaoQI. Please make sure that Aldebaran's NaoQI API is in your PYTHONPATH.")
RuntimeError: Error importing NaoQI. Please make sure that Aldebaran's NaoQI API is in your PYTHONPATH.
[pose_controller-1] process has died [pid 5835, exit code 1, cmd /opt/ros/kinetic/lib/naoqi_pose/pose_controller.py --pip=192.168.10.134 --pport=9559 __name:=pose_controller __log:=/home/tgiles/.ros/log/a7f89d3a-f301-11e6-8a39-64006a8872e3/pose_controller-1.log].
log file: /home/tgiles/.ros/log/a7f89d3a-f301-11e6-8a39-64006a8872e3/pose_controller-1*.log
[FATAL] [1487109991.554017]: Could not connect to required "joint_trajectory" action server, is the nao_controller node running?
[pose_manager-2] process has finished cleanly
log file: /home/tgiles/.ros/log/a7f89d3a-f301-11e6-8a39-64006a8872e3/pose_manager-2*.log
all processes on machine have died, roslaunch will exit
shutting down processing monitor...
... shutting down processing monitor complete
done
I can find the script for pose_controller.py script in /opt/ros, but I can't seem to find the missing open source for naoqi_pose (since it looks like it was not maintained past jade), any advice?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.