ubuntu 18.04 ROS melodic 尝试 ROS CANOPEN 控制 AGV

官方说明:The current develop branch is melodic-devel, it targets ROS melodic. Needs C++14 compiler. The released version gets synced over to the distro branch for each release.

尝试ros canopen步骤:
1,  git 下载roscanopen源码到~/catkin_ws/src/
2,$ sudo apt-get install libmuparser-dev
3,   $ cd ~/catkin_ws
      $ catkin_make

*****************************************************************

 

uu@uu-HP-EliteBook-6930P-Notebook-PC:~/catkin_ws$ sudo apt-get install  libmuparser
libmuparser2v5     libmuparser-doc    libmuparserx-dev   
libmuparser-dev    libmuparserx4.0.7  
uu@uu-HP-EliteBook-6930P-Notebook-PC:~/catkin_ws$ sudo apt-get install  libmuparser-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed
  libmuparser-dev
0 to upgrade, 1 to newly install, 0 to remove and 14 not to upgrade.
Need to get 19.2 kB of archives.
After this operation, 133 kB of additional disk space will be used.
Get:1 http://cn.archive.ubuntu.com/ubuntu bionic/universe amd64 libmuparser-dev amd64 2.2.3-6 [19.2 kB]
Fetched 19.2 kB in 1s (19.2 kB/s)          
Selecting previously unselected package libmuparser-dev.
(Reading database ... 278033 files and directories currently installed.)
Preparing to unpack .../libmuparser-dev_2.2.3-6_amd64.deb ...
Unpacking libmuparser-dev (2.2.3-6) ...
Setting up libmuparser-dev (2.2.3-6) ...
uu@uu-HP-EliteBook-6930P-Notebook-PC:~/catkin_ws$ catkin_make
Base path: /home/uu/catkin_ws
Source space: /home/uu/catkin_ws/src
Build space: /home/uu/catkin_ws/build
Devel space: /home/uu/catkin_ws/devel
Install space: /home/uu/catkin_ws/install
####
#### Running command: "make cmake_check_build_system" in "/home/uu/catkin_ws/build"
####
-- Using CATKIN_DEVEL_PREFIX: /home/uu/catkin_ws/devel
-- Using CMAKE_PREFIX_PATH: /home/uu/catkin_ws/devel;/opt/ros/melodic
-- This workspace overlays: /home/uu/catkin_ws/devel;/opt/ros/melodic
-- Found PythonInterp: /usr/bin/python2 (found suitable version "2.7.15", minimum required is "2")
-- Using PYTHON_EXECUTABLE: /usr/bin/python2
-- Using Debian Python package layout
-- Using empy: /usr/bin/empy
-- Using CATKIN_ENABLE_TESTING: ON
-- Call enable_testing()
-- Using CATKIN_TEST_RESULTS_DIR: /home/uu/catkin_ws/build/test_results
-- Found gmock sources under '/usr/src/googletest': gmock will be built
-- Found PythonInterp: /usr/bin/python2 (found version "2.7.15")
-- Found gtest sources under '/usr/src/googletest': gtests will be built
-- Using Python nosetests: /usr/bin/nosetests-2.7
-- catkin 0.7.14
-- BUILD_SHARED_LIBS is on
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ~~  traversing 23 packages in topological order:
-- ~~  - arbotix (metapackage)
-- ~~  - arbotix_controllers
-- ~~  - arbotix_firmware
-- ~~  - arbotix_python
-- ~~  - arbotix_sensors
-- ~~  - rbx1 (metapackage)
-- ~~  - ros_canopen (metapackage)
-- ~~  - socketcan_interface
-- ~~  - canopen_master
-- ~~  - canopen_402
-- ~~  - arbotix_msgs
-- ~~  - can_msgs
-- ~~  - beginner_tutorials
-- ~~  - rbx1_speech
-- ~~  - canopen_chain_node
-- ~~  - socketcan_bridge
-- ~~  - rbx1_bringup
-- ~~  - rbx1_dynamixels
-- ~~  - rbx1_vision
-- ~~  - rbx1_apps
-- ~~  - rbx1_nav
-- ~~  - canopen_motor_node
-- ~~  - rbx1_description
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- +++ processing catkin metapackage: 'arbotix'
-- ==> add_subdirectory(arbotix_ros/arbotix)
-- +++ processing catkin package: 'arbotix_controllers'
-- ==> add_subdirectory(arbotix_ros/arbotix_controllers)
-- +++ processing catkin package: 'arbotix_firmware'
-- ==> add_subdirectory(arbotix_ros/arbotix_firmware)
-- +++ processing catkin package: 'arbotix_python'
-- ==> add_subdirectory(arbotix_ros/arbotix_python)
-- +++ processing catkin package: 'arbotix_sensors'
-- ==> add_subdirectory(arbotix_ros/arbotix_sensors)
-- +++ processing catkin metapackage: 'rbx1'
-- ==> add_subdirectory(rbx1/rbx1)
-- +++ processing catkin metapackage: 'ros_canopen'
-- ==> add_subdirectory(ros_canopen-melodic-devel/ros_canopen)
-- +++ processing catkin package: 'socketcan_interface'
-- ==> add_subdirectory(ros_canopen-melodic-devel/socketcan_interface)
-- Boost version: 1.65.1
-- Found the following Boost libraries:
--   chrono
--   system
--   thread
--   date_time
--   atomic
-- +++ processing catkin package: 'canopen_master'
-- ==> add_subdirectory(ros_canopen-melodic-devel/canopen_master)
-- Boost version: 1.65.1
-- Found the following Boost libraries:
--   atomic
--   chrono
--   thread
--   system
--   date_time
-- +++ processing catkin package: 'canopen_402'
-- ==> add_subdirectory(ros_canopen-melodic-devel/canopen_402)
-- Boost version: 1.65.1
-- +++ processing catkin package: 'arbotix_msgs'
-- ==> add_subdirectory(arbotix_ros/arbotix_msgs)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- arbotix_msgs: 2 messages, 4 services
-- +++ processing catkin package: 'can_msgs'
-- ==> add_subdirectory(ros_canopen-melodic-devel/can_msgs)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- can_msgs: 1 messages, 0 services
-- +++ processing catkin package: 'beginner_tutorials'
-- ==> add_subdirectory(beginner_tutorials)
-- +++ processing catkin package: 'rbx1_speech'
-- ==> add_subdirectory(rbx1/rbx1_speech)
-- +++ processing catkin package: 'canopen_chain_node'
-- ==> add_subdirectory(ros_canopen-melodic-devel/canopen_chain_node)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- Boost version: 1.65.1
-- Found the following Boost libraries:
--   filesystem
--   system
-- canopen_chain_node: 0 messages, 2 services
-- +++ processing catkin package: 'socketcan_bridge'
-- ==> add_subdirectory(ros_canopen-melodic-devel/socketcan_bridge)
-- +++ processing catkin package: 'rbx1_bringup'
-- ==> add_subdirectory(rbx1/rbx1_bringup)
-- +++ processing catkin package: 'rbx1_dynamixels'
-- ==> add_subdirectory(rbx1/rbx1_dynamixels)
-- +++ processing catkin package: 'rbx1_vision'
-- ==> add_subdirectory(rbx1/rbx1_vision)
-- +++ processing catkin package: 'rbx1_apps'
-- ==> add_subdirectory(rbx1/rbx1_apps)
-- +++ processing catkin package: 'rbx1_nav'
-- ==> add_subdirectory(rbx1/rbx1_nav)
-- +++ processing catkin package: 'canopen_motor_node'
-- ==> add_subdirectory(ros_canopen-melodic-devel/canopen_motor_node)
-- Boost version: 1.65.1
-- Found the following Boost libraries:
--   thread
--   chrono
--   system
--   date_time
--   atomic
-- Found MUPARSER: /usr/lib/x86_64-linux-gnu/libmuparser.so  
-- +++ processing catkin package: 'rbx1_description'
-- ==> add_subdirectory(rbx1/rbx1_description)
-- Configuring done
-- Generating done
-- Build files have been written to: /home/uu/catkin_ws/build
####
#### Running command: "make -j2 -l2" in "/home/uu/catkin_ws/build"
####
Scanning dependencies of target socketcan_interface_plugin
Scanning dependencies of target socketcan_interface_string
[  1%] Building CXX object ros_canopen-melodic-devel/socketcan_interface/CMakeFiles/socketcan_interface_string.dir/src/string.cpp.o
[  1%] Building CXX object ros_canopen-melodic-devel/socketcan_interface/CMakeFiles/socketcan_interface_plugin.dir/src/socketcan_interface_plugin.cpp.o
[  2%] Linking CXX shared library /home/uu/catkin_ws/devel/lib/libsocketcan_interface_string.so
[  2%] Built target socketcan_interface_string
[  2%] Built target _arbotix_msgs_generate_messages_check_deps_Relax
[  2%] Built target _arbotix_msgs_generate_messages_check_deps_SetupChannel
[  2%] Built target _arbotix_msgs_generate_messages_check_deps_Analog
[  2%] Built target std_msgs_generate_messages_eus
[  2%] Built target _arbotix_msgs_generate_messages_check_deps_Digital
[  2%] Built target _arbotix_msgs_generate_messages_check_deps_Enable
[  2%] Built target _arbotix_msgs_generate_messages_check_deps_SetSpeed
[  2%] Built target std_msgs_generate_messages_nodejs
[  2%] Built target std_msgs_generate_messages_lisp
[  2%] Built target std_msgs_generate_messages_py
[  2%] Built target std_msgs_generate_messages_cpp
Scanning dependencies of target _can_msgs_generate_messages_check_deps_Frame
[  2%] Built target _can_msgs_generate_messages_check_deps_Frame
[  5%] Built target hello
Scanning dependencies of target _canopen_chain_node_generate_messages_check_deps_SetObject
[  5%] Built target _canopen_chain_node_generate_messages_check_deps_SetObject
Scanning dependencies of target _canopen_chain_node_generate_messages_check_deps_GetObject
[  5%] Built target _canopen_chain_node_generate_messages_check_deps_GetObject
Scanning dependencies of target roscpp_generate_messages_nodejs
[  5%] Built target roscpp_generate_messages_nodejs
Scanning dependencies of target roscpp_generate_messages_eus
[  5%] Built target roscpp_generate_messages_eus
Scanning dependencies of target rosgraph_msgs_generate_messages_cpp
[  5%] Built target rosgraph_msgs_generate_messages_cpp
Scanning dependencies of target roscpp_generate_messages_cpp
[  5%] Built target roscpp_generate_messages_cpp
Scanning dependencies of target rosgraph_msgs_generate_messages_lisp
[  5%] Built target rosgraph_msgs_generate_messages_lisp
Scanning dependencies of target roscpp_generate_messages_py
[  5%] Built target roscpp_generate_messages_py
Scanning dependencies of target rosgraph_msgs_generate_messages_nodejs
[  5%] Built target rosgraph_msgs_generate_messages_nodejs
Scanning dependencies of target rosgraph_msgs_generate_messages_py
[  5%] Built target rosgraph_msgs_generate_messages_py
Scanning dependencies of target roscpp_generate_messages_lisp
[  5%] Built target roscpp_generate_messages_lisp
Scanning dependencies of target rosgraph_msgs_generate_messages_eus
[  5%] Built target rosgraph_msgs_generate_messages_eus
Scanning dependencies of target canopen_chain_node_generate_messages_py
[  6%] Generating Python code from SRV canopen_chain_node/GetObject
[  6%] Generating Python code from SRV canopen_chain_node/SetObject
[  7%] Generating Python srv __init__.py for canopen_chain_node
[  7%] Built target canopen_chain_node_generate_messages_py
Scanning dependencies of target canopen_chain_node_generate_messages_lisp
[  8%] Generating Lisp code from canopen_chain_node/GetObject.srv
[  8%] Generating Lisp code from canopen_chain_node/SetObject.srv
[  8%] Built target canopen_chain_node_generate_messages_lisp
Scanning dependencies of target diagnostic_msgs_generate_messages_py
[  8%] Built target diagnostic_msgs_generate_messages_py
Scanning dependencies of target diagnostic_msgs_generate_messages_nodejs
[  8%] Built target diagnostic_msgs_generate_messages_nodejs
Scanning dependencies of target std_srvs_generate_messages_cpp
[  8%] Built target std_srvs_generate_messages_cpp
Scanning dependencies of target diagnostic_msgs_generate_messages_lisp
[  8%] Built target diagnostic_msgs_generate_messages_lisp
Scanning dependencies of target std_srvs_generate_messages_nodejs
[  8%] Built target std_srvs_generate_messages_nodejs
Scanning dependencies of target canopen_chain_node_generate_messages_eus
[  8%] Generating EusLisp code from canopen_chain_node/GetObject.srv
[ 10%] Generating EusLisp code from canopen_chain_node/SetObject.srv
[ 11%] Linking CXX shared library /home/uu/catkin_ws/devel/lib/libsocketcan_interface_plugin.so
[ 12%] Generating EusLisp manifest code for canopen_chain_node
[ 12%] Built target socketcan_interface_plugin
Scanning dependencies of target std_srvs_generate_messages_eus
[ 12%] Built target std_srvs_generate_messages_eus
Scanning dependencies of target std_srvs_generate_messages_lisp
[ 12%] Built target std_srvs_generate_messages_lisp
Scanning dependencies of target diagnostic_msgs_generate_messages_cpp
[ 12%] Built target diagnostic_msgs_generate_messages_cpp
Scanning dependencies of target diagnostic_msgs_generate_messages_eus
[ 12%] Built target diagnostic_msgs_generate_messages_eus
Scanning dependencies of target canopen_chain_node_generate_messages_nodejs
[ 13%] Generating Javascript code from canopen_chain_node/GetObject.srv
[ 15%] Generating Javascript code from canopen_chain_node/SetObject.srv
[ 15%] Built target canopen_chain_node_generate_messages_nodejs
Scanning dependencies of target std_srvs_generate_messages_py
[ 15%] Built target std_srvs_generate_messages_py
[ 16%] Built target rbx1_nav_gencfg
Scanning dependencies of target controller_manager_msgs_generate_messages_cpp
[ 16%] Built target controller_manager_msgs_generate_messages_cpp
Scanning dependencies of target controller_manager_msgs_generate_messages_py
[ 16%] Built target controller_manager_msgs_generate_messages_py
Scanning dependencies of target controller_manager_msgs_generate_messages_nodejs
[ 16%] Built target controller_manager_msgs_generate_messages_nodejs
Scanning dependencies of target controller_manager_msgs_generate_messages_eus
[ 16%] Built target controller_manager_msgs_generate_messages_eus
Scanning dependencies of target controller_manager_msgs_generate_messages_lisp
[ 16%] Built target controller_manager_msgs_generate_messages_lisp
Scanning dependencies of target socketcan_bcm
[ 17%] Building CXX object ros_canopen-melodic-devel/socketcan_interface/CMakeFiles/socketcan_bcm.dir/src/canbcm.cpp.o
[ 18%] Linking CXX executable /home/uu/catkin_ws/devel/lib/socketcan_interface/socketcan_bcm
[ 18%] Built target canopen_chain_node_generate_messages_eus
Scanning dependencies of target socketcan_dump
[ 18%] Building CXX object ros_canopen-melodic-devel/socketcan_interface/CMakeFiles/socketcan_dump.dir/src/candump.cpp.o
[ 18%] Built target socketcan_bcm
Scanning dependencies of target canopen_bcm_sync
[ 20%] Building CXX object ros_canopen-melodic-devel/canopen_master/CMakeFiles/canopen_bcm_sync.dir/src/bcm_sync.cpp.o
[ 21%] Linking CXX executable /home/uu/catkin_ws/devel/lib/canopen_master/canopen_bcm_sync
[ 21%] Linking CXX executable /home/uu/catkin_ws/devel/lib/socketcan_interface/socketcan_dump
[ 21%] Built target canopen_bcm_sync
[ 21%] Built target socketcan_dump
[ 29%] Built target arbotix_msgs_generate_messages_eus
Scanning dependencies of target canopen_master
[ 35%] Built target arbotix_msgs_generate_messages_nodejs
[ 40%] Built target arbotix_msgs_generate_messages_lisp
[ 48%] Built target arbotix_msgs_generate_messages_py
[ 49%] Building CXX object ros_canopen-melodic-devel/canopen_master/CMakeFiles/canopen_master.dir/src/emcy.cpp.o
[ 54%] Built target arbotix_msgs_generate_messages_cpp
[ 55%] Building CXX object ros_canopen-melodic-devel/canopen_master/CMakeFiles/canopen_master.dir/src/node.cpp.o
[ 56%] Building CXX object ros_canopen-melodic-devel/canopen_master/CMakeFiles/canopen_master.dir/src/objdict.cpp.o
[ 56%] Building CXX object ros_canopen-melodic-devel/canopen_master/CMakeFiles/canopen_master.dir/src/pdo.cpp.o
[ 58%] Building CXX object ros_canopen-melodic-devel/canopen_master/CMakeFiles/canopen_master.dir/src/sdo.cpp.o
[ 59%] Linking CXX shared library /home/uu/catkin_ws/devel/lib/libcanopen_master.so
[ 59%] Built target canopen_master
Scanning dependencies of target can_msgs_generate_messages_py
[ 60%] Generating Python from MSG can_msgs/Frame
[ 60%] Generating Python msg __init__.py for can_msgs
[ 60%] Built target can_msgs_generate_messages_py
Scanning dependencies of target can_msgs_generate_messages_eus
[ 60%] Generating EusLisp code from can_msgs/Frame.msg
[ 62%] Generating EusLisp manifest code for can_msgs
[ 62%] Built target can_msgs_generate_messages_eus
Scanning dependencies of target can_msgs_generate_messages_cpp
[ 63%] Generating C++ code from can_msgs/Frame.msg
[ 63%] Built target can_msgs_generate_messages_cpp
Scanning dependencies of target can_msgs_generate_messages_lisp
[ 64%] Generating Lisp code from can_msgs/Frame.msg
[ 64%] Built target can_msgs_generate_messages_lisp
Scanning dependencies of target can_msgs_generate_messages_nodejs
[ 65%] Generating Javascript code from can_msgs/Frame.msg
[ 65%] Built target can_msgs_generate_messages_nodejs
Scanning dependencies of target canopen_chain_node_generate_messages_cpp
[ 67%] Generating C++ code from canopen_chain_node/GetObject.srv
[ 68%] Generating C++ code from canopen_chain_node/SetObject.srv
[ 68%] Built target canopen_chain_node_generate_messages_cpp
Scanning dependencies of target canopen_sync_node
[ 69%] Building CXX object ros_canopen-melodic-devel/canopen_chain_node/CMakeFiles/canopen_sync_node.dir/src/sync_node.cpp.o
[ 70%] Linking CXX executable /home/uu/catkin_ws/devel/lib/canopen_chain_node/canopen_sync_node
[ 70%] Built target canopen_sync_node
Scanning dependencies of target socketcan_to_topic
[ 72%] Building CXX object ros_canopen-melodic-devel/socketcan_bridge/CMakeFiles/socketcan_to_topic.dir/src/socketcan_to_topic.cpp.o
[ 72%] Linking CXX shared library /home/uu/catkin_ws/devel/lib/libsocketcan_to_topic.so
[ 72%] Built target socketcan_to_topic
Scanning dependencies of target topic_to_socketcan
[ 73%] Building CXX object ros_canopen-melodic-devel/socketcan_bridge/CMakeFiles/topic_to_socketcan.dir/src/topic_to_socketcan.cpp.o
[ 74%] Linking CXX shared library /home/uu/catkin_ws/devel/lib/libtopic_to_socketcan.so
[ 74%] Built target topic_to_socketcan
Scanning dependencies of target canopen_master_plugin
[ 75%] Building CXX object ros_canopen-melodic-devel/canopen_master/CMakeFiles/canopen_master_plugin.dir/src/master_plugin.cpp.o
[ 77%] Linking CXX shared library /home/uu/catkin_ws/devel/lib/libcanopen_master_plugin.so
[ 77%] Built target canopen_master_plugin
Scanning dependencies of target canopen_402
[ 78%] Building CXX object ros_canopen-melodic-devel/canopen_402/CMakeFiles/canopen_402.dir/src/motor.cpp.o
[ 78%] Built target arbotix_msgs_generate_messages
Scanning dependencies of target can_msgs_generate_messages
[ 78%] Built target can_msgs_generate_messages
Scanning dependencies of target canopen_ros_chain
[ 79%] Building CXX object ros_canopen-melodic-devel/canopen_chain_node/CMakeFiles/canopen_ros_chain.dir/src/ros_chain.cpp.o
[ 81%] Linking CXX shared library /home/uu/catkin_ws/devel/lib/libcanopen_ros_chain.so
[ 81%] Linking CXX shared library /home/uu/catkin_ws/devel/lib/libcanopen_402.so
[ 81%] Built target canopen_402
[ 81%] Built target canopen_ros_chain
Scanning dependencies of target canopen_chain_node_generate_messages
[ 81%] Built target canopen_chain_node_generate_messages
Scanning dependencies of target socketcan_bridge_node
[ 82%] Building CXX object ros_canopen-melodic-devel/socketcan_bridge/CMakeFiles/socketcan_bridge_node.dir/src/socketcan_bridge_node.cpp.o
[ 83%] Linking CXX executable /home/uu/catkin_ws/devel/lib/socketcan_bridge/socketcan_bridge_node
[ 83%] Built target socketcan_bridge_node
Scanning dependencies of target topic_to_socketcan_node
[ 84%] Building CXX object ros_canopen-melodic-devel/socketcan_bridge/CMakeFiles/topic_to_socketcan_node.dir/src/topic_to_socketcan_node.cpp.o
[ 86%] Linking CXX executable /home/uu/catkin_ws/devel/lib/socketcan_bridge/topic_to_socketcan_node
[ 86%] Built target topic_to_socketcan_node
Scanning dependencies of target socketcan_to_topic_node
[ 87%] Building CXX object ros_canopen-melodic-devel/socketcan_bridge/CMakeFiles/socketcan_to_topic_node.dir/src/socketcan_to_topic_node.cpp.o
[ 88%] Linking CXX executable /home/uu/catkin_ws/devel/lib/socketcan_bridge/socketcan_to_topic_node
[ 88%] Built target socketcan_to_topic_node
Scanning dependencies of target canopen_motor
[ 89%] Building CXX object ros_canopen-melodic-devel/canopen_motor_node/CMakeFiles/canopen_motor.dir/src/controller_manager_layer.cpp.o
[ 89%] Building CXX object ros_canopen-melodic-devel/canopen_motor_node/CMakeFiles/canopen_motor.dir/src/handle_layer.cpp.o
[ 91%] Building CXX object ros_canopen-melodic-devel/canopen_motor_node/CMakeFiles/canopen_motor.dir/src/motor_chain.cpp.o
[ 92%] Building CXX object ros_canopen-melodic-devel/canopen_motor_node/CMakeFiles/canopen_motor.dir/src/robot_layer.cpp.o
Scanning dependencies of target canopen_402_plugin
[ 93%] Building CXX object ros_canopen-melodic-devel/canopen_402/CMakeFiles/canopen_402_plugin.dir/src/plugin.cpp.o
[ 96%] Linking CXX shared library /home/uu/catkin_ws/devel/lib/libcanopen_motor.so
[ 96%] Linking CXX shared library /home/uu/catkin_ws/devel/lib/libcanopen_402_plugin.so
[ 96%] Built target canopen_402_plugin
[ 96%] Built target canopen_motor
Scanning dependencies of target canopen_chain_node
[ 97%] Building CXX object ros_canopen-melodic-devel/canopen_chain_node/CMakeFiles/canopen_chain_node.dir/src/chain_node.cpp.o
[ 98%] Linking CXX executable /home/uu/catkin_ws/devel/lib/canopen_chain_node/canopen_chain_node
[ 98%] Built target canopen_chain_node
Scanning dependencies of target canopen_motor_node
[100%] Building CXX object ros_canopen-melodic-devel/canopen_motor_node/CMakeFiles/canopen_motor_node.dir/src/canopen_motor_chain_node.cpp.o
[100%] Linking CXX executable /home/uu/catkin_ws/devel/lib/canopen_motor_node/canopen_motor_node
[100%] Built target canopen_motor_node
uu@uu-HP-EliteBook-6930P-Notebook-PC:~/catkin_ws$

 

你可能感兴趣的:(ROBOT)