orebrouniversity / yumi Goto Github PK
View Code? Open in Web Editor NEWROS packages pertaining to the ABB YuMi (IRB 14000) robot
License: BSD 2-Clause "Simplified" License
ROS packages pertaining to the ABB YuMi (IRB 14000) robot
License: BSD 2-Clause "Simplified" License
Hi everybody
I noticed some of the newer branches relying on a package called abb_rws_interface. I assume this is a convenience wrapper to the robot web service Rest interface? I was unfortunately unable to get very far in using this interface (I assume I was missing some "log in" step). Do you intend to release this package soon? If not would you mind sharing it privately? Or at least some demo code?
Thanks a lot
Simon
I don't understand what i am doing wrong but i can't load yumi moveit config in setup asisstant to edit it.
Okay setup asisstant says that it is unable to locate urdf file yumi.urdf, although in yumi/description/urdf folder there is not file with such an extension. There are only yumi.urdf.xacro, yumi.xacro and some other files
Although usually files with urdf.xacro is possible to load in setup asisstant. So can anyone help me to selve this problem or try yourself if you have the same problem?
P.S Sorry for bad quality pictures, something went wrong.. But as it is possible to understand them and due to time absence I won't try to change them. :)
Hi,
I would like to know if ROS_motionServer file on yumi_hw is available or is going to be available. Now I am usig yumi_support/rapid/ROS_motionServer file, but it Works with joint_traj_msg, different as msg_joint_data.
If not, I will modify the actual ROS_motionServer file in yumi_support directory.
Thanks for all,
Júlia
Hi All,
I am using the ROS interface for controlling the robot in real time (yumi_pos_control.launch), however, I am a bit confused. Everything seems nicely working except the fact that there is no topic for sending desired joint positions to the robot. I can read the current state of the robot from /yumi/joint_states. But there is no other equivalent-topic for sending joint-positions to the robot. Nevertheless, by running yumi_pos_control.launch, /yumi/joint_trajectory_pos_controller/command is created which, I assumed that, is used for sending entire trajectory and not the desired next step without delay; am I right?
I appreciate any help...:)
Best,
Sina
I am using the yumi_support package and topic /xxxx_arm/joint_path_command
for control.
Now I am publishing just one point trajectory to the topic with desired joint values closed to the current positions. If I leave the velocity field blank in the trajectory_msgs/JointTrajectory
for the trajectory point, the robot moves smooth but slow. When I set the velocity field with a value, the robot moves very slow (slower than without setting it), even with a very large value for the velocity. I started the velocity with 0.1 and increase it to 500000, but there is not much different.
How can I increase the robot velocity when using the joint_path_command
topic for the robot control?
Hi
I have tried to build this following the instructions provided but it fails with the following error
CMake Error at /opt/ros/kinetic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
Could not find a package configuration file provided by "abb_egm_interface"
with any of the following names:
abb_egm_interfaceConfig.cmake
abb_egm_interface-config.cmake
I have not been able to find anything related to these in the repository.
Cheers
How can I use ros_control interface(and naive RAPID) together with moveit( its planner and execution)? Thanks , I was confused actually.
hi, i use the the OrebroUniversity/industrial_core, but when i run the roslaunch robot_interface.launch
it show the [ERROR] [1504762335.231789044]: Get unload pointer failed, buffer size: 0, smaller than byte size: 4
[ERROR] [1504762335.231843198]: Unload pointer returned NULL
[ERROR] [1504762335.231877206]: Failed to unload message joint: 8 from data[0]
[ERROR] [1504762335.231913226]: Failed to unload joint data
[ERROR] [1504762335.231945259]: Failed to initialize joint message
BUT if change from “ static const industrial::shared_types::shared_int MAX_NUM_JOINTS =20” to “static const industrial::shared_types::shared_int MAX_NUM_JOINTS =10” in simple_message/include/simple_message/joint_data.h , It works.
I want to know why the ERROR occur, and if I need to change other Settings.
Much appreciated!
Hello, great job on getting the yumi interface work with ROS and MOVEIT! I'm wondering if you have an instruction of how to load your RAPID code to YUMI via robot studio. Much appreciated!
Hi guys ,
We are trying to control the real robot with ABB interface we followed this tutorial https://github.com/kth-ros-pkg/yumi/wiki/Firmware to install the firmware, (We dont have the EGM modules). when we launch : roslaunch yumi_launch yumi_pos_control.launch
we get this error :
[ WARN] [1561104675.666918206]: Send failure, no callback support
[ INFO] [1561104675.666949402]: Connection failed, attempting reconnect
[ERROR] [1561104675.667712026]: Failed to connect to server, rc: -1. Error: 'Connection refused' (errno: 111)
Any suggestions?
NOTE: I'm new to ROS (apologize if this is a rookie mistake)
When I try roslaunch yumi_launch yumi_gazebo_pos.launch
I'm getting the following error:
SUMMARY
========
PARAMETERS
* /robot_description: <?xml version="1....
* /rosdistro: indigo
* /rosversion: 1.11.20
* /use_sim_time: True
* /yumi/joint_state_controller/publish_rate: 500
* /yumi/joint_state_controller/type: joint_state_contr...
* /yumi/joint_trajectory_pos_controller/joints: ['yumi_joint_1_l'...
* /yumi/joint_trajectory_pos_controller/type: position_controll...
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_1_l/d: 0
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_1_l/i: 0.002
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_1_l/i_clamp: 0.1
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_1_l/p: 1.5
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_1_r/d: 0
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_1_r/i: 0.002
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_1_r/i_clamp: 0.1
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_1_r/p: 1.5
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_2_l/d: 0
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_2_l/i: 0.002
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_2_l/i_clamp: 0.1
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_2_l/p: 1.5
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_2_r/d: 0
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_2_r/i: 0.002
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_2_r/i_clamp: 0.1
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_2_r/p: 1.5
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_3_l/d: 0
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_3_l/i: 0.002
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_3_l/i_clamp: 0.1
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_3_l/p: 1.5
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_3_r/d: 0
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_3_r/i: 0.002
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_3_r/i_clamp: 0.1
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_3_r/p: 1.5
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_4_l/d: 0
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_4_l/i: 0.002
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_4_l/i_clamp: 0.1
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_4_l/p: 1.5
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_4_r/d: 0
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_4_r/i: 0.002
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_4_r/i_clamp: 0.1
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_4_r/p: 1.5
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_5_l/d: 0
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_5_l/i: 0.002
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_5_l/i_clamp: 0.1
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_5_l/p: 1.5
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_5_r/d: 0
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_5_r/i: 0.002
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_5_r/i_clamp: 0.1
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_5_r/p: 1.5
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_6_l/d: 0
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_6_l/i: 0.002
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_6_l/i_clamp: 0.1
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_6_l/p: 1.5
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_6_r/d: 0
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_6_r/i: 0.002
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_6_r/i_clamp: 0.1
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_6_r/p: 1.5
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_7_l/d: 0
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_7_l/i: 0.002
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_7_l/i_clamp: 0.1
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_7_l/p: 1.5
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_7_r/d: 0
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_7_r/i: 0.002
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_7_r/i_clamp: 0.1
* /yumi/joint_trajectory_vel_controller/gains/yumi_joint_7_r/p: 1.5
* /yumi/joint_trajectory_vel_controller/joints: ['yumi_joint_1_l'...
* /yumi/joint_trajectory_vel_controller/type: velocity_controll...
NODES
/yumi/
controller_spawner (controller_manager/spawner)
/
gazebo (gazebo_ros/gzserver)
gazebo_gui (gazebo_ros/gzclient)
robot_state_publisher (robot_state_publisher/robot_state_publisher)
spawn_urdf (gazebo_ros/spawn_model)
ROS_MASTER_URI=http://localhost:11311
core service [/rosout] found
process[gazebo-1]: started with pid [11169]
process[gazebo_gui-2]: started with pid [11173]
process[spawn_urdf-3]: started with pid [11177]
process[robot_state_publisher-4]: started with pid [11178]
process[yumi/controller_spawner-5]: started with pid [11179]
Gazebo multi-robot simulator, version 2.2.3
Copyright (C) 2012-2014 Open Source Robotics Foundation.
Released under the Apache 2 License.
http://gazebosim.org
Gazebo multi-robot simulator, version 2.2.3
Copyright (C) 2012-2014 Open Source Robotics Foundation.
Released under the Apache 2 License.
http://gazebosim.org
Msg Waiting for master.[ INFO] [1487832352.755122185]: Finished loading Gazebo ROS API Plugin.
[ INFO] [1487832352.755561453]: waitForService: Service [/gazebo/set_physics_properties] has not been advertised, waiting...
Msg Waiting for master
Msg Connected to gazebo master @ http://127.0.0.1:11345
Msg Publicized address: 128.46.125.51
spawn_model script started
[INFO] [WallTime: 1487832352.897281] [0.000000] Loading model xml from ros parameter
[INFO] [WallTime: 1487832352.899547] [0.000000] Waiting for service /gazebo/spawn_urdf_model
[INFO] [WallTime: 1487832353.019839] [0.000000] Controller Spawner: Waiting for service controller_manager/load_controller
X Error of failed request: BadDrawable (invalid Pixmap or Window parameter)
Major opcode of failed request: 153 (DRI2)
Minor opcode of failed request: 3 (DRI2CreateDrawable)
Resource id in failed request: 0x5e00002
Serial number of failed request: 31
Current serial number in output stream: 33
gzserver: /usr/include/boost/thread/pthread/recursive_mutex.hpp:101: boost::recursive_mutex::~recursive_mutex(): Assertion `!pthread_mutex_destroy(&m)' failed.
Aborted (core dumped)
[gazebo-1] process has died [pid 11169, exit code 134, cmd /opt/ros/indigo/lib/gazebo_ros/gzserver -e ode worlds/empty.world __name:=gazebo __log:=/home/glebys/.ros/log/1f90a898-f978-11e6-894d-f48e387f42e4/gazebo-1.log].
log file: /home/glebys/.ros/log/1f90a898-f978-11e6-894d-f48e387f42e4/gazebo-1*.log
.............................
Error [ConnectionManager.cc:116] Failed to connect to master in 30 seconds.
Error [gazebo.cc:59] Unable to initialize transport.
Error [gazebo.cc:203] Unable to setup Gazebo
[gazebo_gui-2] process has died [pid 11173, exit code 255, cmd /opt/ros/indigo/lib/gazebo_ros/gzclient __name:=gazebo_gui __log:=/home/glebys/.ros/log/1f90a898-f978-11e6-894d-f48e387f42e4/gazebo_gui-2.log].
log file: /home/glebys/.ros/log/1f90a898-f978-11e6-894d-f48e387f42e4/gazebo_gui-2*.log
[WARN] [WallTime: 1487832383.300661] [0.000000] Controller Spawner couldn't find the expected controller_manager ROS interface.
[yumi/controller_spawner-5] process has finished cleanly
This is the message in the log file
[xmlrpc][INFO] 2017-02-23 01:45:52,872: XML-RPC server binding to 0.0.0.0:0
[xmlrpc][INFO] 2017-02-23 01:45:52,872: Started XML-RPC server [http://ISAT-Glebys:39101/]
[rospy.init][INFO] 2017-02-23 01:45:52,872: ROS Slave URI: [http://ISAT-Glebys:39101/]
[rospy.impl.masterslave][INFO] 2017-02-23 01:45:52,872: _ready: http://ISAT-Glebys:39101/
[rospy.registration][INFO] 2017-02-23 01:45:52,872: Registering with master node http://localhost:11311
[xmlrpc][INFO] 2017-02-23 01:45:52,872: xml rpc node: starting XML-RPC server
[rospy.init][INFO] 2017-02-23 01:45:52,972: registered with master
[rospy.rosout][INFO] 2017-02-23 01:45:52,973: initializing /rosout core topic
[rospy.rosout][INFO] 2017-02-23 01:45:53,012: connected to core topic /rosout
[rospy.simtime][INFO] 2017-02-23 01:45:53,014: initializing /clock core topic
[rospy.simtime][INFO] 2017-02-23 01:45:53,017: connected to core topic /clock
[rosout][INFO] 2017-02-23 01:45:53,019: Controller Spawner: Waiting for service controller_manager/load_controller
[rospy.internal][INFO] 2017-02-23 01:45:53,325: topic[/rosout] adding connection to [/rosout], count 0
[rosout][WARNING] 2017-02-23 01:46:23,300: Controller Spawner couldn't find the expected controller_manager ROS interface.
[rospy.core][INFO] 2017-02-23 01:46:23,301: signal_shutdown [atexit]
[rospy.internal][INFO] 2017-02-23 01:46:23,306: topic[/rosout] removing connection to /rosout
[rospy.impl.masterslave][INFO] 2017-02-23 01:46:23,306: atexit
I'm using ROS indigo.
Thank you!
hi, I am using the yumi_support and yumi_moveit_config. when I use the deme_online.launch, I can accept the robot position, but i can't use the motion planning to control the robot move. And I also try use the "rostopic pub -1 /left_arm/joint_path_command trajectory_msgs/JointTrajectory " to control the arm, it doesn't work also.
So, what the problem it is?
Much appreciated!
Hi
Thank you for your help so far. I have got the two arms working (with robot studio simulated robot and actual robot) and now trying to get the grippers working but I think I'm missing some instructions or some information. Are there any special instructions for setting up the grippers in RobotStudio for this package.
I have loaded the gripper RAPID code from the "yumi/yumi_hw_rapid/GRASP" folder.
There are no errors when I run the "RAPID->Check Program" function in RobotStudio.
However, when I do a warm restart a couple of "Alias Define" errors are reported for the "HandDriver_left.HandSetupChirality()" and "HandDriver_right.HandSetupChirality()" procedures.
These are shown in the picture below.
Assumptions
The error seems to suggest that the aliases for "hand_ActualPosition_L", "hand_ActualSpeed_L", "hand_SysState_L" etc. need to be setup by defining their respective signals through the IO Configuration in RobotStudio. From what I can see, about 20 of these signals may need to be setup for each gripper.
Question:
Is my assumption above correct and if so are there any instructions or could you point me to anything that will help me with this. I have looked at some tutorials on how to setup IO signals for the gripper (eg. https://www.youtube.com/watch?v=6XoylqyZfFA) but nothing seems close enough to the aliases that are defined here. It seems I may also need to know what to map these aliases to.
If my assumption is wrong, could you point me in the right direction.
Much appreciated!
Hi,
I wonder if there is a way to enable lead-through mode while the ROS server is running. Therefore, the ROS side can read robot's joint positions without sending command to the robot.
This is particular useful for demonstration as well as hand-eye calibration.
what is the relationship between yumi_support/rapid and yumi_hw/rapid/ROS_control ?
Because I can understand the yumi_support/rapid files: each arm have a motion server and state server unlike the files in yumi_hw/rapid/ROS_control which didn't contain a motion_server.
So can I only use the former one: yumi_support/rapid?
yumi_description/urdf/yumi.urdf.xacro should take two arguments such that the hardware interfaces for arms and grippers can be set independently.
Hi there,
I just wanted to know if there is an available (plug-and-play) torque interface for Yumi robot.
I would like to send joint torque commands, and also be able to read external force/torques applied to the robot.
Thanks for your help and sorry if this is irrelevant to your repository.
Mahdi
Dear all,
Sorry to ask this question here which seems not directly related to the repository.
But this repo seems to be the only one for Yumi if I want to program yumi in Linux.
I realised there are several ways to control Yumi, but all of the options seems require Robotstudio on a Window PC and ROS on a Linux PC.
Is there a way to use a Linux PC ONLY to control the Yumi robot?
Thank you very much.
Regards,
Lin
Hi,
Upon launching yumi_rviz.launch in kinetic the following happens:
hiqp2016@AASS-CADA06:~/ros_workspace$ roslaunch yumi_description yumi_rviz.launch
... logging to /home/hiqp2016/.ros/log/97df3a0c-bd24-11e6-949d-000ffed19a26/roslaunch-AASS-CADA06-17359.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.
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
deprecated: xacro tags should be prepended with 'xacro' xml namespace.
Use the following script to fix incorrect usage:
find . -iname "*.xacro" | xargs sed -i 's#<\([/]\?\)\(if\|unless\|include\|arg\|property\|macro\|insert_block\)#<\1xacro:\2#g'
when processing file: /home/hiqp2016/ros_workspace/src/yumi/yumi_description/urdf/yumi.urdf.xacro
xacro.py is deprecated; please use xacro instead
started roslaunch server http://AASS-CADA06:33801/
SUMMARY
========
PARAMETERS
* /joint_state_publisher/use_gui: True
* /robot_description: <?xml version="1....
* /rosdistro: kinetic
* /rosversion: 1.12.6
NODES
/
joint_state_publisher (joint_state_publisher/joint_state_publisher)
robot_state_publisher (robot_state_publisher/state_publisher)
rviz (rviz/rviz)
auto-starting new master
process[master]: started with pid [17374]
ROS_MASTER_URI=http://localhost:11311
setting /run_id to 97df3a0c-bd24-11e6-949d-000ffed19a26
process[rosout-1]: started with pid [17387]
started core service [/rosout]
process[joint_state_publisher-2]: started with pid [17398]
process[robot_state_publisher-3]: started with pid [17405]
process[rviz-4]: started with pid [17424]
[rviz-4] process has finished cleanly
log file: /home/hiqp2016/.ros/log/97df3a0c-bd24-11e6-949d-000ffed19a26/rviz-4*.log`
Hi,
I was able to install the ABB ros server on my Yumi robot, the server is working good for controlling the two arms using Orebro/yumi package. However I'm still having problems in connecting the grippers to the ROS server. I installed all the required files and modules for grippers control and I run the RAPID check program and I got no errors. The main problem is that the Grippers Motion Server and the Grippers State server are still not connected to the ROS server. Any help with this issue?? and some instructions to control the grippers
Hi
We are having the following issue with both the simulated robot in robot studio and the actual yumi robot. When launching the "yumi_moveit_config/launch/demo_online.launch" the following error occurs.
The "right_arm/joint_trajectory_action" and "left_arm/joint_trajectory_action" clients fail to connect as shown in the image below.
Not quite sure what is wrong here as we have followed the instructions from the wiki and issues list.
We are using the RAPID files from the "src/yumi/yumi_support/rapid" folder as we are trying to control the yumi robot using the moveit rviz gui interface.
We have managed to get as far as having MoveIt (+ rviz) get the correct current position of the robot. However, when trying to execute a path to a goal position, the robot does not move.
In addition, there are no gripper topics listed. MoveIT complains about not having the gripper states:
We followed the instructions (after digging around in other branches to find the required backups (addition-demo, two-grippers realtime) ). We found someone with a similar issue
(#21) but there were no detailed steps listed to solve the issue.
Any help would be appreciated.
Hi to all,
I'm trying to publish to real and robotstudio yumi's robot with the topics of /joint_path_command with a config file that contained all the joints of the robot in order to change the real joints at the same time I change the rqt_reconfigure. It works the first time, but then, it appears the next message:
Validation failed: Missing valid timestamp data for trajectory pt 1
The clock of the robot and the computer are the same, so I think that it has to be from de ros_motion program.
In order to this, the buffer of the publisher is 10 and the ros loop works every 0.48 seconds.
Thanks for all,
Júlia
Hi Everybody,
I'm sitting in front of a YuMi for some time now and wondering what driver would be best for us and where to take it from. We intend to use it for bin-picking and execute pre calculated trajectories (ie. no live feedback/realtime required). It has to be fast!
I read somewhere that the ABB_driver based joint_trajectory downloader approach is supposed to have a long (several seconds) delay before starting trajectory execution. Is that true? Is it faster for short/sparse trajectories (number of points, not distance)?
I started using the drivers from https://github.com/OrebroUniversity/yumi/tree/master/yumi_hw master branch and it is moving using MoveIt!. However there is a very notable delay before it does (ca 1s) and sometimes it moves joint6 (the wrist) to 0 instead of the intended position. I'm not sure if this is a ros_control issue (I doubt it) or related to yumi_hw. Also sometimes it hangs at startup and the joint_state_controller does not come up.
I feel safer about using the trajectory downloader approach actually because we use that for other brands already but of course I worry about the long delays. What do you think? Can you point me to whatever branch and version you recommend?
Does egm also work for position control or just velocity control?
Thanks a lot
Simon
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.