[ros-users] [Discourse.ros.org] Are serious things done with…

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Sam Pfeiffer via ros-users
Date:  
To: ros-users
CC: Sam Pfeiffer
Subject: [ros-users] [Discourse.ros.org] Are serious things done with ROS in Python?


I find this topic pretty interesting and starting from @Martin_Guenther work, I digged a bit more in.

I made [another script](https://gist.github.com/awesomebytes/18c6a3f0c20ec6d62ec872db694ead68) (warning, I mostly executed everything on an ipython terminal by parts, so I may have missed something) to clone the repos (in github, I tried to clone also the ones in bitbucket but it fails on my machine for some unrelated reason) and to compute the LOC on them for C++ and Python.

The output is:

> From 625 packages analysed
> There are 413 packages using C++
> There are 317 packages using Python
> And, actually, using both languages: 193
> 88.8747413208 % is CPP code
> 11.1252586792 % is Python code


I also recreated the table with this LOC data:

| rank | repo name                                                    | stars | language        |

|------|--------------------------------------------------------------|------:|-----------------|
|   1. | IntelRealSense/librealsense                                  |  1295 | C++ (99.6), Python (0.4) |
|   2. | ros/ros                                                      |   697 | Python (95.6), C++ (4.4) |
|   3. | wjwwood/serial                                               |   521 | C++ (99.7), Python (0.3) |
|   4. | introlab/rtabmap                                             |   490 | C++ (100.0), Python (0.0) |
|   5. | OctoMap/octomap                                              |   383 | C++ (99.7), Python (0.3) |
|   6. | ros-planning/navigation                                      |   320 | C++ (99.1), Python (0.9) |
|   7. | ethz-asl/grid_map                                            |   281 | C++ (99.7), Python (0.3) |
|   8. | AutonomyLab/ardrone_autonomy                                 |   264 | C               |
|   9. | ros/ros_comm                                                 |   239 | Python (44.8), C++ (55.2) |
|  10. | dartsim/dart                                                 |   214 | C++ (98.7), Python (1.3) |
|  11. | introlab/find-object                                         |   210 | C++ (100.0), Python (0.0) |
|  12. | vrpn/vrpn                                                    |   201 | C               |
|  13. | intel-ros/realsense                                          |   194 | C++ (99.2), Python (0.8) |
|  14. | robopeak/rplidar_ros                                         |   191 | C++ (100.0), Python (0.0) |
|  15. | ros-planning/moveit                                          |   173 | C++             |
|  16. | ros-visualization/rviz                                       |   171 | C++ (97.6), Python (2.4) |
|  17. | mavlink/mavros                                               |   169 | C++ (92.1), Python (7.9) |
|  18. | ros-drivers/rosserial                                        |   164 | C++ (67.2), Python (32.8) |
|  19. | introlab/rtabmap_ros                                         |   162 | C++ (99.4), Python (0.6) |
|  20. | cra-ros-pkg/robot_localization                               |   161 | C++ (99.4), Python (0.6) |
|  21. | ros/ros_tutorials                                            |   144 | C++             |
|  22. | RobotWebTools/rosbridge_suite                                |   139 | Python (100.0), C++ (0.0) |
|  23. | leggedrobotics/darknet_ros                                   |   133 | C++ (100.0), Python (0.0) |
|  24. | ros/catkin                                                   |   130 | Python (97.6), C++ (2.4) |
|  25. | ros-perception/slam_gmapping                                 |   128 | C++ (94.3), Python (5.7) |
|  26. | ros-drivers/velodyne                                         |   128 | C++ (95.2), Python (4.8) |
|  27. | ros-industrial/universal_robot                               |   127 | Python (54.9), C++ (45.1) |
|  28. | ccny-ros-pkg/imu_tools                                       |   125 | C++ (100.0), Python (0.0) |
|  29. | orocos/orocos_kinematics_dynamics                            |   122 | C++ (97.4), Python (2.6) |
|  30. | ros-simulation/gazebo_ros_pkgs                               |   120 | C++ (96.3), Python (3.7) |
|  31. | ros-controls/ros_control                                     |   112 | C++ (92.0), Python (8.0) |
|  32. | rosjava/rosjava_core                                         |   110 | Java            |
|  33. | ros-perception/image_pipeline                                |   109 | C++ (77.9), Python (22.1) |
|  34. | turtlebot/turtlebot                                          |   103 | C++ (88.9), Python (11.1) |
|  35. | facontidavide/PlotJuggler                                    |   103 | C++ (100.0), Python (0.0) |
|  36. | ROBOTIS-GIT/turtlebot3                                       |   101 | Python (65.0), C++ (35.0) |
|  37. | ROBOTIS-GIT/DynamixelSDK                                     |    94 | C#              |
|  38. | rst-tu-dortmund/teb_local_planner                            |    90 | C++ (95.4), Python (4.6) |
|  39. | ros-perception/vision_opencv                                 |    85 | C++ (84.7), Python (15.3) |
|  40. | turtlebot/turtlebot_apps                                     |    79 | C++ (65.2), Python (34.8) |
|  41. | yujinrobot/kobuki                                            |    76 | C++ (55.0), Python (45.0) |
|  42. | ros-controls/ros_controllers                                 |    73 | C++ (96.3), Python (3.7) |
|  43. | ankitdhall/lidar_camera_calibration                          |    72 | C++ (100.0), Python (0.0) |
|  44. | PickNikRobotics/rviz_visual_tools                            |    69 | C++ (100.0), Python (0.0) |
|  45. | ipa320/cob_driver                                            |    68 | C++ (94.2), Python (5.8) |
|  46. | swri-robotics/mapviz                                         |    66 | C++ (100.0), Python (0.0) |
|  47. | plasmodic/ecto                                               |    65 | C++ (71.6), Python (28.4) |
|  48. | ros-drivers/usb_cam                                          |    65 | C++ (100.0), Python (0.0) |
|  49. | AutonomyLab/bebop_autonomy                                   |    63 | C++ (94.9), Python (5.1) |
|  50. | wg-perception/people                                         |    61 | C++ (97.0), Python (3.0) |
|  51. | ros/geometry                                                 |    59 | C++ (82.7), Python (17.3) |
|  52. | ipa320/cob_common                                            |    59 | Python (100.0), C++ (0.0) |
|  53. | ros-perception/perception_pcl                                |    58 | C++ (99.6), Python (0.4) |
|  54. | AndreaCensi/csm                                              |    57 | C               |
|  55. | ipa320/cob_simulation                                        |    57 | Python (100.0), C++ (0.0) |
|  56. | Intermodalics/tango_ros                                      |    57 | C++ (100.0), Python (0.0) |
|  57. | clearpathrobotics/robot_upstart                              |    54 | Python (100.0), C++ (0.0) |
|  58. | jsk-ros-pkg/jsk_recognition                                  |    52 | C++ (85.3), Python (14.7) |
|  59. | ipa320/cob_extern                                            |    52 | C               |
|  60. | intel/ros_intel_movidius_ncs                                 |    50 | C++ (100.0), Python (0.0) |
|  61. | AutonomyLab/create_autonomy                                  |    50 | C++ (100.0), Python (0.0) |
|  62. | lagadic/vision_visp                                          |    49 | C++ (99.2), Python (0.8) |
|  63. | RobotWebTools/web_video_server                               |    48 | C++ (100.0), Python (0.0) |
|  64. | skasperski/navigation_2d                                     |    46 | C++ (100.0), Python (0.0) |
|  65. | fkie/multimaster_fkie                                        |    46 | Python (100.0), C++ (0.0) |
|  66. | ccny-ros-pkg/scan_tools                                      |    44 | C++ (100.0), Python (0.0) |
|  67. | stdr-simulator-ros-pkg/stdr_simulator                        |    44 | C++ (98.6), Python (1.4) |
|  68. | ros-industrial/industrial_core                               |    43 | C++ (100.0), Python (0.0) |
|  69. | ros-planning/navigation_tutorials                            |    43 | C++ (100.0), Python (0.0) |
|  70. | ipa320/cob_robots                                            |    43 | Python (100.0), C++ (0.0) |
|  71. | ros-drivers/pointgrey_camera_driver                          |    43 | C++             |
|  72. | orocos-toolchain/log4cpp                                     |    42 | C++ (100.0), Python (0.0) |
|  73. | ros-perception/openslam_gmapping                             |    42 | C++ (100.0), Python (0.0) |
|  74. | yujinrobot/yujin_ocs                                         |    41 | C++ (83.3), Python (16.7) |
|  75. | paulbovbel/frontier_exploration                              |    41 | C++ (100.0), Python (0.0) |
|  76. | ros-industrial/ros_canopen                                   |    41 | C++ (100.0), Python (0.0) |
|  77. | ros-industrial/abb                                           |    40 | C++ (100.0), Python (0.0) |
|  78. | ros/geometry2                                                |    39 | C++ (91.9), Python (8.1) |
|  79. | ros/executive_smach                                          |    39 | Python (100.0), C++ (0.0) |
|  80. | OctoMap/octomap_mapping                                      |    37 | C++ (99.0), Python (1.0) |
|  81. | ros-industrial/kuka_experimental                             |    37 | C++ (100.0), Python (0.0) |
|  82. | ipa320/schunk_modular_robotics                               |    36 | C++ (99.3), Python (0.7) |
|  83. | arebgun/dynamixel_motor                                      |    35 | Python (100.0), C++ (0.0) |
|  84. | youbot/youbot_driver                                         |    35 | C++ (100.0), Python (0.0) |
|  85. | davetcoleman/ros_control_boilerplate                         |    35 | C++             |
|  86. | ros/actionlib                                                |    34 | C++ (68.3), Python (31.7) |
|  87. | beltransen/velo2cam_calibration                              |    34 | C++ (100.0), Python (0.0) |
|  88. | ros/common_msgs                                              |    34 | C++ (82.5), Python (17.5) |
|  89. | hasauino/rrt_exploration                                     |    33 | C++ (49.8), Python (50.2) |
|  90. | magazino/move_base_flex                                      |    33 | C++ (97.0), Python (3.0) |
|  91. | turtlebot/turtlebot_simulator                                |    33 | EmberScript     |
|  92. | vanadiumlabs/arbotix_ros                                     |    32 | Python (93.1), C++ (6.9) |
|  93. | ros-visualization/visualization_tutorials                    |    32 | C++ (74.8), Python (25.2) |
|  94. | ros-drivers/joystick_drivers                                 |    32 | Python (68.8), C++ (31.2) |
|  95. | cbandera/rosparam_handler                                    |    31 | Python (54.3), C++ (45.7) |
|  96. | wg-perception/object_recognition_core                        |    31 | C++ (54.3), Python (45.7) |
|  97. | ros-naoqi/nao_robot                                          |    30 | Python (95.1), C++ (4.9) |
|  98. | ipa320/cob_command_tools                                     |    30 | Python (79.5), C++ (20.5) |
|  99. | mrpt-ros-pkg/mrpt_navigation                                 |    30 | C++ (100.0), Python (0.0) |
| 100. | ethz-asl/rqt_multiplot_plugin                                |    30 | C++ (99.9), Python (0.1) |



I think Python has it's position on glueing things together, dealing with text, making apps and tools, and overall taking advantage of the big amount of third party libraries that ease doing stuff. If you need speed, C++ for sure. If you need something done quick, Python I'd say.





---
[Visit Topic](https://discourse.ros.org/t/are-serious-things-done-with-ros-in-python/4359/8) or reply to this email to respond.


If you do not want to receive messages from ros-users please use the unsubscribe link below. If you use the one above, you will stop all of ros-users from receiving updates.
______________________________________________________________________________
ros-users mailing list

http://lists.ros.org/mailman/listinfo/ros-users
Unsubscribe: <http://lists.ros.org/mailman//options/ros-users>