大家好,我是今天又看到深圳出着太阳下雨的小鱼。记得小鱼以前最喜欢淋雨了,每次都跟如鱼得水一样。 不过淋雨也不好,容易得病,我们得病了还要看医生。那ROS2的有问题了该怎么办?今天就来讲一讲ROS2的一个工具叫ros2doctor.
一、介绍ros2doctor是ros2命令行工具之一,当我们安装ros2时ros2doctor就会被安装.ros2doctor可以用于检查你的ROS2安装设置,比如网络、系统平台、软件版本等。也可以在运行ros2的时候查找潜在的问题。
二、生成报告这个小鱼觉得最有用的,因为平时问小于问题的同学很多,如果能第一时间知道你的系统版本以及各个软件的版本和网络信息等,可以很方便的定位问题。
使用方法也很简单
ros2 doctor --report
ros2@ubuntu:~$ ros2 doctor --report
NETWORK CONFIGURATION
inet : 192.168.227.128
inet4 : ['192.168.227.128']
ether : 00:0c:29:b7:a6:2e
inet6 : ['fe80::4d41:28e0:7924:a3ab']
netmask : 255.255.255.0
device : ens33
flags : 4163
mtu : 1500
broadcast : 192.168.227.255
inet : 127.0.0.1
inet4 : ['127.0.0.1']
inet6 : ['::1']
netmask : 255.0.0.0
device : lo
flags : 73
mtu : 65536
PACKAGE VERSIONS
ament_pep257 : required=0.9.6, local=0.9.6
examples_rclcpp_minimal_action_client : required=0.9.4, local=0.9.4
rviz2 : required=8.2.2, local=8.2.2
rosbag2_storage : required=0.3.8, local=0.3.8
diagnostic_msgs : required=2.0.4, local=2.0.4
intra_process_demo : required=0.9.3, local=0.9.3
sros2 : required=0.9.4, local=0.9.4
examples_rclcpp_minimal_subscriber : required=0.9.4, local=0.9.4
examples_rclcpp_minimal_service : required=0.9.4, local=0.9.4
console_bridge_vendor : required=1.2.4, local=1.2.4
tf2_tools : required=0.13.11, local=0.13.10
ament_cmake_gmock : required=0.9.9, local=0.9.8
rosbag2_cpp : required=0.3.8, local=0.3.8
ament_cmake_export_interfaces : required=0.9.9, local=0.9.8
rqt_gui : required=1.1.2, local=1.1.1
ros2cli : required=0.9.9, local=0.9.9
launch_testing_ros : required=0.11.3, local=0.11.2
quality_of_service_demo_py : required=0.9.3, local=0.9.3
launch_ros : required=0.11.3, local=0.11.2
ament_cmake_test : required=0.9.9, local=0.9.8
rosidl_generator_cpp : required=1.2.1, local=1.2.1
ament_cmake_export_include_directories : required=0.9.9, local=0.9.8
class_loader : required=2.0.2, local=2.0.2
examples_rclcpp_minimal_composition : required=0.9.4, local=0.9.4
ament_cmake_python : required=0.9.9, local=0.9.8
ament_cmake_target_dependencies : required=0.9.9, local=0.9.8
lifecycle : required=0.9.3, local=0.9.3
zstd_vendor : required=0.3.8, local=0.3.8
examples_rclcpp_multithreaded_executor : required=0.9.4, local=0.9.4
ament_cmake_export_targets : required=0.9.9, local=0.9.8
ros2topic : required=0.9.9, local=0.9.9
ament_cmake_pep257 : required=0.9.6, local=0.9.6
visualization_msgs : required=2.0.4, local=2.0.4
ament_cmake_libraries : required=0.9.9, local=0.9.8
control_msgs : required=2.5.1, local=2.5.1
desktop : required=0.9.2, local=0.9.2
tf2_geometry_msgs : required=0.13.11, local=0.13.10
rclcpp_lifecycle : required=2.3.1, local=2.3.1
rqt_action : required=1.0.1, local=1.0.1
builtin_interfaces : required=1.0.0, local=1.0.0
rosbag2_converter_default_plugins : required=0.3.8, local=0.3.8
demo_nodes_cpp_native : required=0.9.3, local=0.9.3
rclcpp_components : required=2.3.1, local=2.3.1
spdlog_vendor : required=1.1.3, local=1.1.3
sqlite3_vendor : required=0.3.8, local=0.3.8
ros2run : required=0.9.9, local=0.9.9
realtime_tools : required=2.1.1, local=2.1.1
rmw : required=1.0.3, local=1.0.3
qt_gui : required=1.1.3, local=1.1.2
ament_index_python : required=1.1.0, local=1.1.0
rviz_rendering : required=8.2.2, local=8.2.2
rosidl_cmake : required=1.2.1, local=1.2.1
map_msgs : required=2.0.2, local=2.0.2
effort_controllers : required=0.5.0, local=0.4.1
nav_msgs : required=2.0.4, local=2.0.4
rqt_top : required=1.0.2, local=1.0.1
cv_bridge : required=2.2.1, local=2.2.1
dummy_robot_bringup : required=0.9.3, local=0.9.3
sdl2_vendor : required=3.0.0, local=3.0.0
interactive_markers : required=2.1.3, local=2.1.3
ros2_control : required=0.8.0, local=0.7.1
ament_cmake_include_directories : required=0.9.9, local=0.9.8
rosbag2_compression : required=0.3.8, local=0.3.8
ros_core : required=0.9.2, local=0.9.2
ament_cmake_ros : required=0.9.2, local=0.9.2
ros2action : required=0.9.9, local=0.9.9
ament_lint : required=0.9.6, local=0.9.6
examples_rclcpp_minimal_timer : required=0.9.4, local=0.9.4
rosidl_typesupport_interface : required=1.2.1, local=1.2.1
joint_state_controller : required=0.5.0, local=0.4.1
rqt_gui_cpp : required=1.1.2, local=1.1.1
rosidl_adapter : required=1.2.1, local=1.2.1
gazebo_ros2_control_demos : required=0.0.3, local=0.0.3
ament_cmake_copyright : required=0.9.6, local=0.9.6
rmw_dds_common : required=1.0.3, local=1.0.3
rclcpp : required=2.3.1, local=2.3.1
libcurl_vendor : required=2.3.4, local=2.3.4
rosgraph_msgs : required=1.0.0, local=1.0.0
ament_cmake_export_link_flags : required=0.9.9, local=0.9.8
launch_xml : required=0.10.6, local=0.10.5
examples_rclpy_minimal_client : required=0.9.4, local=0.9.4
demo_nodes_cpp : required=0.9.3, local=0.9.3
ros2pkg : required=0.9.9, local=0.9.9
libyaml_vendor : required=1.0.4, local=1.0.4
rqt_topic : required=1.2.2, local=1.2.1
camera_info_manager : required=2.3.0, local=2.3.0
ros2interface : required=0.9.9, local=0.9.9
dummy_sensors : required=0.9.3, local=0.9.3
rosidl_typesupport_introspection_cpp : required=1.2.1, local=1.2.1
tracetools : required=1.0.5, local=1.0.5
rqt_graph : required=1.1.2, local=1.1.2
gazebo_plugins : required=3.5.3, local=3.5.3
robot_state_publisher : required=2.4.5, local=2.4.2
ros2controlcli : required=0.8.0, local=0.7.1
statistics_msgs : required=1.0.0, local=1.0.0
ament_index_cpp : required=1.1.0, local=1.1.0
python_qt_binding : required=1.0.5, local=1.0.5
gazebo_msgs : required=3.5.3, local=3.5.3
tf2_bullet : required=0.13.11, local=0.13.10
tinyxml2_vendor : required=0.7.4, local=0.7.4
ament_cmake : required=0.9.9, local=0.9.8
geometry_msgs : required=2.0.4, local=2.0.4
examples_rclpy_minimal_action_client : required=0.9.4, local=0.9.4
velocity_controllers : required=0.5.0, local=0.4.1
rosidl_runtime_c : required=1.2.1, local=1.2.1
joy : required=3.0.0, local=3.0.0
ament_cmake_lint_cmake : required=0.9.6, local=0.9.6
fastrtps_cmake_module : required=1.0.3, local=1.0.3
ament_lint_common : required=0.9.6, local=0.9.6
action_tutorials_interfaces : required=0.9.3, local=0.9.3
imu_sensor_broadcaster : required=0.5.0, local=0.4.1
pluginlib : required=2.5.3, local=2.5.3
rcutils : required=1.1.3, local=1.1.3
rqt_publisher : required=1.1.3, local=1.1.3
examples_rclcpp_minimal_action_server : required=0.9.4, local=0.9.4
pcl_conversions : required=2.2.0, local=2.2.0
ros2lifecycle : required=0.9.9, local=0.9.9
rosbag2 : required=0.3.8, local=0.3.8
ament_cmake_export_libraries : required=0.9.9, local=0.9.8
tf2_py : required=0.13.11, local=0.13.10
tf2 : required=0.13.11, local=0.13.10
rosidl_typesupport_fastrtps_cpp : required=1.0.3, local=1.0.3
ament_flake8 : required=0.9.6, local=0.9.6
rqt_gui_py : required=1.1.2, local=1.1.1
logging_demo : required=0.9.3, local=0.9.3
yaml_cpp_vendor : required=7.0.2, local=7.0.2
tlsf : required=0.5.0, local=0.5.0
rcl : required=1.1.11, local=1.1.11
force_torque_sensor_broadcaster : required=0.5.0, local=0.4.1
depthimage_to_laserscan : required=2.3.1, local=2.3.1
rmw_implementation : required=1.0.2, local=1.0.2
ament_lint_auto : required=0.9.6, local=0.9.6
ros2_controllers : required=0.5.0, local=0.4.1
ament_cmake_core : required=0.9.9, local=0.9.8
ament_cmake_pytest : required=0.9.9, local=0.9.8
action_tutorials_cpp : required=0.9.3, local=0.9.3
pendulum_control : required=0.9.3, local=0.9.3
ros2multicast : required=0.9.9, local=0.9.9
ament_uncrustify : required=0.9.6, local=0.9.6
launch_testing : required=0.10.6, local=0.10.5
rosbag2_storage_default_plugins : required=0.3.8, local=0.3.8
quality_of_service_demo_cpp : required=0.9.3, local=0.9.3
rqt_image_view : required=1.1.1, local=1.1.1
rosidl_generator_py : required=0.9.4, local=0.9.4
tango_icons_vendor : required=0.0.1, local=0.0.1
ament_lint_cmake : required=0.9.6, local=0.9.6
shape_msgs : required=2.0.4, local=2.0.4
gazebo_ros_pkgs : required=3.5.3, local=3.5.3
gazebo_ros : required=3.5.3, local=3.5.3
controller_interface : required=0.8.0, local=0.7.1
rcl_interfaces : required=1.0.0, local=1.0.0
message_filters : required=3.2.5, local=3.2.5
std_srvs : required=2.0.4, local=2.0.4
rosidl_default_generators : required=1.0.1, local=1.0.1
launch : required=0.10.6, local=0.10.5
resource_retriever : required=2.3.4, local=2.3.4
gazebo_ros2_control : required=0.0.3, local=0.0.3
action_msgs : required=1.0.0, local=1.0.0
rosidl_typesupport_c : required=1.0.2, local=1.0.2
composition : required=0.9.3, local=0.9.3
rosidl_runtime_py : required=0.9.1, local=0.9.1
examples_rclpy_executors : required=0.9.4, local=0.9.4
lifecycle_msgs : required=1.0.0, local=1.0.0
sensor_msgs : required=2.0.4, local=2.0.4
ament_cmake_auto : required=0.9.9, local=0.9.8
rosidl_runtime_cpp : required=1.2.1, local=1.2.1
ament_cmake_uncrustify : required=0.9.6, local=0.9.6
tf2_ros : required=0.13.11, local=0.13.10
xacro : required=2.0.6, local=2.0.6
rosidl_typesupport_fastrtps_c : required=1.0.3, local=1.0.3
python_cmake_module : required=0.8.1, local=0.8.1
ros2doctor : required=0.9.9, local=0.9.9
image_tools : required=0.9.3, local=0.9.3
hardware_interface : required=0.8.0, local=0.7.1
ament_cmake_version : required=0.9.9, local=0.9.8
ament_cmake_xmllint : required=0.9.6, local=0.9.6
pcl_msgs : required=1.0.0, local=1.0.0
rmw_implementation_cmake : required=1.0.3, local=1.0.3
stereo_msgs : required=2.0.4, local=2.0.4
examples_rclpy_minimal_publisher : required=0.9.4, local=0.9.4
turtlesim : required=1.2.5, local=1.2.5
ament_cmake_export_definitions : required=0.9.9, local=0.9.8
tf2_msgs : required=0.13.11, local=0.13.10
domain_coordinator : required=0.9.2, local=0.9.2
rosidl_generator_c : required=1.2.1, local=1.2.1
examples_rclcpp_minimal_publisher : required=0.9.4, local=0.9.4
rttest : required=0.9.0, local=0.9.0
angles : required=1.12.3, local=1.12.3
uncrustify_vendor : required=1.4.0, local=1.4.0
ament_cmake_export_dependencies : required=0.9.9, local=0.9.8
ros2param : required=0.9.9, local=0.9.9
rqt_srv : required=1.0.3, local=1.0.2
example_interfaces : required=0.9.1, local=0.9.1
image_transport : required=2.3.0, local=2.3.0
rpyutils : required=0.2.0, local=0.2.0
ament_xmllint : required=0.9.6, local=0.9.6
launch_yaml : required=0.10.6, local=0.10.5
teleop_twist_joy : required=2.4.3, local=2.4.3
rviz_ogre_vendor : required=8.2.2, local=8.2.2
joint_state_broadcaster : required=0.5.0, local=0.4.1
rqt_py_common : required=1.1.2, local=1.1.1
qt_gui_py_common : required=1.1.3, local=1.1.2
tlsf_cpp : required=0.9.0, local=0.9.0
rcl_lifecycle : required=1.1.11, local=1.1.11
actionlib_msgs : required=2.0.4, local=2.0.4
ros2component : required=0.9.9, local=0.9.9
action_tutorials_py : required=0.9.3, local=0.9.3
ament_package : required=0.9.5, local=0.9.5
rosidl_default_runtime : required=1.0.1, local=1.0.1
qt_dotgraph : required=1.1.3, local=1.1.2
controller_manager_msgs : required=0.8.0, local=0.7.1
rcl_action : required=1.1.11, local=1.1.11
joint_trajectory_controller : required=0.5.0, local=0.4.1
examples_rclpy_minimal_subscriber : required=0.9.4, local=0.9.4
ros2bag : required=0.3.8, local=0.3.8
ament_cmake_cppcheck : required=0.9.6, local=0.9.6
rqt_common_plugins : required=1.0.0, local=1.0.0
dummy_map_server : required=0.9.3, local=0.9.3
osrf_pycommon : required=0.1.11, local=0.1.10
common_interfaces : required=2.0.4, local=2.0.4
tinyxml_vendor : required=0.8.2, local=0.8.2
controller_manager : required=0.8.0, local=0.7.1
camera_calibration_parsers : required=2.3.0, local=2.3.0
ros2_control_test_assets : required=0.8.0, local=0.7.1
rviz_default_plugins : required=8.2.2, local=8.2.2
ros2service : required=0.9.9, local=0.9.9
gazebo_dev : required=3.5.3, local=3.5.3
tf2_kdl : required=0.13.11, local=0.13.10
ros_environment : required=2.5.0, local=2.5.0
shared_queues_vendor : required=0.3.8, local=0.3.8
forward_command_controller : required=0.5.0, local=0.4.1
rcpputils : required=1.3.2, local=1.3.1
rosidl_typesupport_cpp : required=1.0.2, local=1.0.2
examples_rclpy_minimal_action_server : required=0.9.4, local=0.9.4
rmw_fastrtps_shared_cpp : required=1.2.5, local=1.2.5
ament_cpplint : required=0.9.6, local=0.9.6
ros_workspace : required=1.0.1, local=1.0.1
rqt_py_console : required=1.0.2, local=1.0.1
rqt_reconfigure : required=1.0.8, local=1.0.8
ament_cmake_gtest : required=0.9.9, local=0.9.8
rclpy : required=1.0.6, local=1.0.5
rviz_common : required=8.2.2, local=8.2.2
composition_interfaces : required=1.0.0, local=1.0.0
urdf : required=2.4.0, local=2.4.0
rosidl_typesupport_introspection_c : required=1.2.1, local=1.2.1
rmw_fastrtps_cpp : required=1.2.5, local=1.2.5
ament_cppcheck : required=0.9.6, local=0.9.6
image_geometry : required=2.2.1, local=2.2.1
position_controllers : required=0.5.0, local=0.4.1
sros2_cmake : required=0.9.4, local=0.9.4
rqt_service_caller : required=1.0.5, local=1.0.4
demo_nodes_py : required=0.9.3, local=0.9.3
rosidl_parser : required=1.2.1, local=1.2.1
libstatistics_collector : required=1.0.1, local=1.0.1
rosbag2_transport : required=0.3.8, local=0.3.8
laser_geometry : required=2.2.0, local=2.2.0
tf2_sensor_msgs : required=0.13.11, local=0.13.10
rcl_logging_spdlog : required=1.1.0, local=1.1.0
eigen3_cmake_module : required=0.1.1, local=0.1.1
teleop_twist_keyboard : required=2.3.2, local=2.3.2
launch_testing_ament_cmake : required=0.10.6, local=0.10.5
examples_rclcpp_minimal_client : required=0.9.4, local=0.9.4
rqt_plot : required=1.1.0, local=1.0.10
diff_drive_controller : required=0.5.0, local=0.4.1
unique_identifier_msgs : required=2.1.3, local=2.1.3
ament_cmake_flake8 : required=0.9.6, local=0.9.6
qt_gui_cpp : required=1.1.3, local=1.1.2
rqt_console : required=1.1.1, local=1.1.1
examples_rclpy_minimal_service : required=0.9.4, local=0.9.4
tf2_eigen : required=0.13.11, local=0.13.10
rqt_shell : required=1.0.2, local=1.0.1
rqt_msg : required=1.0.5, local=1.0.4
trajectory_msgs : required=2.0.4, local=2.0.4
pendulum_msgs : required=0.9.3, local=0.9.3
ament_cmake_cpplint : required=0.9.6, local=0.9.6
rclcpp_action : required=2.3.1, local=2.3.1
ros2launch : required=0.11.3, local=0.11.2
ament_copyright : required=0.9.6, local=0.9.6
rcl_yaml_param_parser : required=1.1.11, local=1.1.11
std_msgs : required=2.0.4, local=2.0.4
ros2node : required=0.9.9, local=0.9.9
rviz_assimp_vendor : required=8.2.2, local=8.2.2
kdl_parser : required=2.4.1, local=2.4.1
geometry2 : required=0.13.11, local=0.13.10
topic_monitor : required=0.9.3, local=0.9.3
ros_base : required=0.9.2, local=0.9.2
PLATFORM INFORMATION
system : Linux
platform info : Linux-5.11.0-27-generic-x86_64-with-glibc2.29
release : 5.11.0-27-generic
processor : x86_64
RMW MIDDLEWARE
middleware name : rmw_fastrtps_cpp
ROS 2 INFORMATION
distribution name : foxy
distribution type : ros2
distribution status : active
release platforms : {'ubuntu': ['focal']}
TOPIC LIST
topic : none
publisher count : 0
subscriber count : 0
三、检查问题
目前来看就比如,你写了一个话题发布者,但是压根没人订阅,这种会被检测出来作为潜在问题。
使用指令:
ros2 doctor
你会发现,一些UserWarning: 如果话题只发布没有订阅会告诉你,xx话题的发布者缺少订阅者。
四、总结目前来看这个工具还是有点小弱,不过如果能靠着一个工具来解决所有问题,也不现实。最重要的还是培养自己的解题能力。