主要内容

MATLAB中带ROS的符号跟踪机器人

这个例子向您展示了如何使用MATLAB®来控制一个运行在ROS网络上的独立ROS模拟器上的模拟机器人。然后演示如何为控制算法生成一个ROS节点,并将其部署到运行ROS的远程设备上。这里显示的示例使用ROS和MATLAB进行仿真,使用MATLAB Coder™进行代码生成和部署。有关ROS 2或Simulink®的其他例子,请参阅:金宝app

在这个示例中,您运行MATLAB脚本,该脚本实现了符号跟随算法,并控制模拟机器人根据环境中的符号跟随路径。该算法从运行在独立ros模拟器中的模拟机器人接收位置信息和摄像头信息。该算法检测信号的颜色,并根据颜色向机器人发送速度指令。在这个例子中,算法被设计成当机器人遇到蓝色标志时左转,当机器人遇到绿色标志时右转。最后,当机器人遇到红色标志时,它停了下来。

连接到机器人模拟器

启动一个基于ros的差动驱动机器人模拟器,并配置MATLAB®与机器人模拟器连接。

要跟随本示例学习,请使用开始使用凉亭和模拟乌龟机器人

  • 启动Ubuntu®虚拟机桌面。

  • 在Ubuntu桌面上,单击Gazebo Sign Follower ROS图标来启动为本例构建的露台世界。

  • 在Gazebo中指定ROS主机的IP地址和端口号,以便MATLAB®与机器人模拟器进行通信。在这个例子中,Gazebo中的ROS master是http://192.168.192.129:11311你的主机地址是192.168.31.1

  • 启动ROS 1网络rosinit

masterIP =“192.168.192.129”;rosinit (masterIP, 11311)
使用NodeURI http://192.168.192.1:51931/初始化全局节点/matlab_global_node_14355

设置ROS沟通

创建发布者和订阅者,通过ROS网络向机器人模拟器转发消息。你需要用户的图像和里程数据。为了控制机器人,建立一个发布者发送速度命令使用/ cmd_vel.的rossubscriberrospublisher函数只支持为消息结构金宝app生成代码。若要返回消息结构,请指定名称-值对参数,“DataFormat”、“结构”,当创建订阅者和发布者时。

imgSub = rossubscriber (“/相机/ rgb / image_raw”“sensor_msgs /形象”“DataFormat”“结构”);odomSub = rossubscriber (“/”奥多姆“nav_msgs /测程法”“DataFormat”“结构”);[velPub, velMsg] = ropublisher (“/ cmd_vel”“geometry_msgs /扭曲”“DataFormat”“结构”);

定义图像处理的颜色阈值参数。每一行定义了不同颜色的阈值。

colorThresholds = [100 255 0 55 0 50;...%的红色0 50 50 255 0 50;...%绿色0 40 0 55 50 255]';%的蓝色

使用statflow®图表创建符号跟踪控制器

这个示例提供了一个示例助手MATLAB statflow®图表,它接收图像大小、处理后的图像坐标和机器人的里程测量姿势。图表提供了基于这些输入驱动机器人的线速度和角速度。

控制器= ExampleHelperSignFollowingControllerChart;打开(“ExampleHelperSignFollowingControllerChart”);

运行控制回路

这部分运行控制器来接收图像,并移动机器人来跟随标识。控制器执行以下步骤:

  • 从ROS网络获取最新的图像和里程计信息。

  • 运行检测图像特征的算法(ExampleHelperSignFollowingProcessImg).

  • 使用statflow®图表生成控制命令一步

  • 向ROS网络发布速度控制命令。

要将机器人看到的蒙面图像可视化,请更改值doVisualization变量来真正的

ExampleHelperSignFollowingSetupPreferences;%控制蒙版的可视化doVisualization = false;r = rosrate (10);收到(imgSub);%在开始循环之前等待接收图像消息收到(odomSub);(~ controller.done)%获取最新的传感器消息并处理它们imgMsg = imgSub.LatestMessage;odomMsg = odomSub.LatestMessage;[img,pose] = ExampleHelperSignFollowingROSProcessMsg(imgMsg, odomMsg);%运行视觉和控制功能[mask,blobSize,blobX] = ExampleHelperSignFollowingProcessImg(img, colorThresholds);步骤(控制器,“blobSize”blobSize,“blobX”blobX,“姿势”,构成);v = controller.v;w = controller.w;发布速度命令velMsg.Linear.X = v;velMsg.Angular.Z = w;发送(velPub, velMsg);%选择可视化%注意:可视化数据会减慢执行循环。%如果您有计算机视觉工具箱,我们建议使用%的愿景。DeployableVideoPlayer代替imshow。如果doVisualization imshow(面具);标题([“线性韦尔:”num2str (v)'角Vel: 'num2str (w)]);drawnow (“limitrate”);结束调整执行循环的速度。等待(r);结束

您应该看到机器人在基于ros的机器人模拟器中移动,如下所示。

机器人遵循标志,停在最后一个“停止”标志。的模拟后重置凉亭场景/露台/ reset_simulation服务。创建一个rossvcclient对象,并使用调用对象函数调用服务并重置露台模拟场景。

gazeboResetClient = rossvcclient (“/露台/ reset_simulation”“DataFormat”“结构”);调用(gazeboResetClient);

生成和部署ROS节点

控制器验证完成后,下一步是使用MATLAB Coder™为标识跟随机器人算法生成ROS节点,并将其部署到运行Gazebo的远程虚拟机中。部署允许ROS节点直接在远程机器上运行,从而提高执行速度。创建一个MATLAB Coder配置对象,使用机器人操作系统(ROS)硬件。对于ROS Toolbox的Linux虚拟机,远程部署前需要配置以下参数。注意,远程设备的实际值可能不同。部署前请进行验证。将构建操作设置为'构建运行的以便部署的ROS节点在代码生成后开始运行。

cfg = coder.config (“exe”);cfg。硬件= coder.hardware (机器人操作系统(ROS));cfg.Hardware.DeployTo =“远程设备”;cfg.Hardware.RemoteDeviceAddress =“192.168.192.129”;cfg.Hardware.RemoteDeviceUsername =“用户”;cfg.Hardware.RemoteDevicePassword =“密码”;cfg.Hardware.BuildAction =“构建和运行”

使用DeploySignFollowingRobotROS函数,该函数包含前一节验证的控制器算法代码。执行如下命令,生成ROS节点并部署控制器。你应该看到机器人在凉亭世界里移动。

codegenDeploySignFollowingRobotROS配置cfg
创建了存档文件“C:\Users\avijayar\OneDrive-MathWorks\Documents\MATLAB\Examples\ros-ex22554512\DeploySignfollowRobotros.tgz”。已创建生成shell脚本“C:\Users\avijayar\OneDrive-MathWorks\Documents\MATLAB\Examples\ros-ex22554512\build\u ros\u model.sh”。--将存档和shell脚本复制到ROS设备以构建ROS节点。正在连接到ROS设备“192.168.192.129”。使用Catkin工作区“~/Catkin_ws”构建ROS节点。--将“Robotros”的生成代码传输到ROS设备。正在启动ROS节点的生成。--tar:忽略未知扩展头关键字'SCHILY.fflags'tar:忽略未知扩展头关键字'SCHILY.fflags'tar:忽略未知扩展头关键字'SCHILY.fflags'Catkin项目目录:/home/user/Catkin_ws/src/deploysignfollowerrobotros tar:忽略未知扩展头关键字'SCHILY.fflags'tar:忽略未知扩展标题关键字'SCHILY.fflags'tar:忽略未知的扩展标题关键字'SCHILY.fflags'——使用CATKIN_-DEVEL_前缀:/home/user/CATKIN_-ws/DEVEL——使用CMAKE_-PREFIX_-PATH:/home/user/CATKIN_-ws/DEVEL/opt/ros/melodic——此工作区覆盖:/home/user/catkin\u ws/devel/opt/ros/melodic——找到PythonInterp:/usr/bin/python2(找到合适的版本“2.7.17”,最低要求是“2”)——使用PYTHON\u可执行文件:/usr/bin/python2——使用Debian PYTHON包布局——使用empy:/usr/bin/empy——使用CATKIN\u ENABLE\u测试:ON——调用ENABLE\u测试()--使用CATKIN_TEST_RESULTS_DIR:/home/user/CATKIN_ws/build/TEST_RESULTS--在“/usr/src/googletest”下找到gtest源:将构建gtest--在“/usr/src/googletest”下找到gmock源:将构建gmock--找到PythonInterp:/usr/bin/python2(找到的版本“2.7.17”)--使用Python鼻测试:/usr/bin/nosetests-2.7--catkin 0.7.29--BUILD\u SHARED\u LIBS打开--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~按拓扑顺序遍历25个包--~~~~~~~~~~-kortex\u move\u it\u配置(元包)~~~~~~通用机器人(元包)--~~~-你的布林古--~~-你的描述--~~-你的gazebo--~~-你的MSG--~~-kortex--~~-你的描述--~-kortex--~-你的gazebo--~-你的描述--~-你的gazebo--~-你的描述--~-你的gazebo--~-你的描述--~-你的gazebo--~-你的例子--~-部署跟踪机器人--~-你的例子HelperDeploysignFollowing--~-gazebo--~-你的版本--~-你的助手--~-gazebo中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文-->+++处理catkin metapackage:'kortex_move_it_config'-->add_子目录(ros_kortex/kortex_move_it_config/kortex_move_it_config)-->+++处理catkin metapackage:'universal_robot'-->add_子目录(universal_robot/universal_robot)--+++处理catkin package:'ur bringup'==>add_子目录(universal_robot/ur_bringup)-->+++处理catkin包:“ur_描述”-->添加子目录(universal_robot/ur_描述)--+++处理catkin包:“ur_gazebo”-->添加子目录(universal_robot/ur_gazebo)--+++处理catkin包:“ur_msgs”-->添加子目录(universal_robot/ur msgs)--使用这些消息生成器:gencpp;geneus;genlisp;gennodejs;genpy--ur_msgs:6条消息,2个服务--+++处理catkin包:“kortex_控制”-=>add_子目录(ros_-kortex/kortex_控制)--+++处理catkin包:“kortex_描述”-=>add_子目录(ros_-kortex/kortex_描述)--+++处理catkin包:“kortex_gazebo”-=>add_子目录(ros_kortex/kortex_gazebo)--Boost版本:1.65.1--找到了以下Boost库:-线程--系统--文件系统--程序选项--正则表达式--iostreams--日期时间--计时--原子--找到了Protobuf:/usr/lib/x86_64-linux-gnu/libprotobuf.so;-lpthread(找到了版本“3.0.0”)--增强版:1.65.1--寻找食人魔…--找到食人魔加达蒙(1.9.0)--查找OGRE:optimized;/usr/lib/x86\u 64-linux-gnu/libogresiste.so;debug;/usr/lib/x86\u 64-linux-gnu/libogresiste.so--查找OGRE\u分页…--查找OGRE\u分页…--查找OGRE\u分页:optimized;/usr/lib/x86\u 64-linux-gnu/libOgrePaging.so--查找OGRE\u地形…--查找OGRE\u地形:optimized;/usr/lib/x86\u 64-linux gnu/libogreterain.so;debug;/usr/lib/x86\u 64-linux-gnu/libogreterain.so--查找OGRE\u属性…--找到OGRE\u属性:优化;/usr/lib/x86\u 64-linux-gnu/libOgreProperty.so;debug;/usr/lib/x86\u 64-linux-gnu/libOgreProperty.so--查找OGRE\u RTShaderSystem…--找到OGRE\u RTShaderSystem:优化;/usr/lib/x86\u 64-linux-gnu/libOgreRTShaderSystem.so;debug;/usr/lib/x86\u 64-linux-gnu/libOgreRTShaderSystem.so--查找OGRE\u卷…--找到OGRE\u卷:optimized;/usr/lib/x86_64-linux-gnu/libOgreVolume.so;debug;/usr/lib/x86_64-linux-gnu/libOgreVolume.so -- Looking for OGRE_Overlay... -- Found OGRE_Overlay: optimized;/usr/lib/x86_64-linux-gnu/libOgreOverlay.so;debug;/usr/lib/x86_64-linux-gnu/libOgreOverlay.so -- Found Protobuf: /usr/lib/x86_64-linux-gnu/libprotobuf.so;-lpthread;-lpthread (found suitable version "3.0.0", minimum required is "2.3.0") -- Config-file not installed for ZeroMQ -- checking for pkg-config -- Checking for module 'libzmq >= 4' -- Found libzmq , version 4.2.5 -- Checking for module 'uuid' -- Found uuid, version 2.31.1 -- Checking for module 'tinyxml2' -- Found tinyxml2, version 7.0.1 -- Looking for dlfcn.h - found -- Looking for libdl - found -- FreeImage.pc not found, we will search for FreeImage_INCLUDE_DIRS and FreeImage_LIBRARIES -- Checking for module 'gts' -- Found gts, version 0.7.6 -- Checking for module 'libswscale' -- Found libswscale, version 4.8.100 -- Checking for module 'libavdevice >= 56.4.100' -- Found libavdevice , version 57.10.100 -- Checking for module 'libavformat' -- Found libavformat, version 57.83.100 -- Checking for module 'libavcodec' -- Found libavcodec, version 57.107.100 -- Checking for module 'libavutil' -- Found libavutil, version 55.78.100 -- Checking for module 'jsoncpp' -- Found jsoncpp, version 1.7.4 -- Checking for module 'yaml-0.1' -- Found yaml-0.1, version 0.1.7 -- Checking for module 'libzip' -- Found libzip, version 1.1.2 -- +++ processing catkin package: 'kortex_driver' -- ==> add_subdirectory(ros_kortex/kortex_driver) include is not empty, exiting... -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Boost version: 1.65.1 -- Found the following Boost libraries: -- system -- kortex_driver: 386 messages, 217 services -- +++ processing catkin package: 'kortex_examples' -- ==> add_subdirectory(ros_kortex/kortex_examples) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'deploysignfollowingrobotros' -- ==> add_subdirectory(deploysignfollowingrobotros) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'examplehelperdeploysignfollowingrobotros' -- ==> add_subdirectory(examplehelperdeploysignfollowingrobotros) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'gazebo_version_helpers' -- ==> add_subdirectory(ros_kortex/third_party/gazebo-pkgs/gazebo_version_helpers) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Boost version: 1.65.1 -- Found the following Boost libraries: -- thread -- system -- filesystem -- program_options -- regex -- iostreams -- date_time -- chrono -- atomic -- Found Protobuf: /usr/lib/x86_64-linux-gnu/libprotobuf.so;-lpthread (found version "3.0.0") -- Boost version: 1.65.1 -- Looking for OGRE... -- Found Ogre Ghadamon (1.9.0) -- Found OGRE: optimized;/usr/lib/x86_64-linux-gnu/libOgreMain.so;debug;/usr/lib/x86_64-linux-gnu/libOgreMain.so -- Looking for OGRE_Paging... -- Found OGRE_Paging: optimized;/usr/lib/x86_64-linux-gnu/libOgrePaging.so;debug;/usr/lib/x86_64-linux-gnu/libOgrePaging.so -- Looking for OGRE_Terrain... -- Found OGRE_Terrain: optimized;/usr/lib/x86_64-linux-gnu/libOgreTerrain.so;debug;/usr/lib/x86_64-linux-gnu/libOgreTerrain.so -- Looking for OGRE_Property... -- Found OGRE_Property: optimized;/usr/lib/x86_64-linux-gnu/libOgreProperty.so;debug;/usr/lib/x86_64-linux-gnu/libOgreProperty.so -- Looking for OGRE_RTShaderSystem... -- Found OGRE_RTShaderSystem: optimized;/usr/lib/x86_64-linux-gnu/libOgreRTShaderSystem.so;debug;/usr/lib/x86_64-linux-gnu/libOgreRTShaderSystem.so -- Looking for OGRE_Volume... -- Found OGRE_Volume: optimized;/usr/lib/x86_64-linux-gnu/libOgreVolume.so;debug;/usr/lib/x86_64-linux-gnu/libOgreVolume.so -- Looking for OGRE_Overlay... -- Found OGRE_Overlay: optimized;/usr/lib/x86_64-linux-gnu/libOgreOverlay.so;debug;/usr/lib/x86_64-linux-gnu/libOgreOverlay.so -- Found Protobuf: /usr/lib/x86_64-linux-gnu/libprotobuf.so;-lpthread;-lpthread (found suitable version "3.0.0", minimum required is "2.3.0") -- Config-file not installed for ZeroMQ -- checking for pkg-config -- Checking for module 'libzmq >= 4' -- Found libzmq , version 4.2.5 -- Checking for module 'uuid' -- Found uuid, version 2.31.1 -- Checking for module 'tinyxml2' -- Found tinyxml2, version 7.0.1 -- Looking for dlfcn.h - found -- Looking for libdl - found -- FreeImage.pc not found, we will search for FreeImage_INCLUDE_DIRS and FreeImage_LIBRARIES -- Checking for module 'gts' -- Found gts, version 0.7.6 -- Checking for module 'libswscale' -- Found libswscale, version 4.8.100 -- Checking for module 'libavdevice >= 56.4.100' -- Found libavdevice , version 57.10.100 -- Checking for module 'libavformat' -- Found libavformat, version 57.83.100 -- Checking for module 'libavcodec' -- Found libavcodec, version 57.107.100 -- Checking for module 'libavutil' -- Found libavutil, version 55.78.100 -- Checking for module 'jsoncpp' -- Found jsoncpp, version 1.7.4 -- Checking for module 'yaml-0.1' -- Found yaml-0.1, version 0.1.7 -- Checking for module 'libzip' -- Found libzip, version 1.1.2 CMake Warning at /opt/ros/melodic/share/catkin/cmake/catkin_package.cmake:166 (message): catkin_package() DEPENDS on 'gazebo' but neither 'gazebo_INCLUDE_DIRS' nor 'gazebo_LIBRARIES' is defined. Call Stack (most recent call first): /opt/ros/melodic/share/catkin/cmake/catkin_package.cmake:102 (_catkin_package) ros_kortex/third_party/gazebo-pkgs/gazebo_version_helpers/CMakeLists.txt:29 (catkin_package) -- +++ processing catkin package: 'gazebo_grasp_plugin' -- ==> add_subdirectory(ros_kortex/third_party/gazebo-pkgs/gazebo_grasp_plugin) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Boost version: 1.65.1 -- Found the following Boost libraries: -- thread -- system -- filesystem -- program_options -- regex -- iostreams -- date_time -- chrono -- atomic -- Found Protobuf: /usr/lib/x86_64-linux-gnu/libprotobuf.so;-lpthread (found version "3.0.0") -- Boost version: 1.65.1 -- Looking for OGRE... -- Found Ogre Ghadamon (1.9.0) -- Found OGRE: optimized;/usr/lib/x86_64-linux-gnu/libOgreMain.so;debug;/usr/lib/x86_64-linux-gnu/libOgreMain.so -- Looking for OGRE_Paging... -- Found OGRE_Paging: optimized;/usr/lib/x86_64-linux-gnu/libOgrePaging.so;debug;/usr/lib/x86_64-linux-gnu/libOgrePaging.so -- Looking for OGRE_Terrain... -- Found OGRE_Terrain: optimized;/usr/lib/x86_64-linux-gnu/libOgreTerrain.so;debug;/usr/lib/x86_64-linux-gnu/libOgreTerrain.so -- Looking for OGRE_Property... -- Found OGRE_Property: optimized;/usr/lib/x86_64-linux-gnu/libOgreProperty.so;debug;/usr/lib/x86_64-linux-gnu/libOgreProperty.so -- Looking for OGRE_RTShaderSystem... -- Found OGRE_RTShaderSystem: optimized;/usr/lib/x86_64-linux-gnu/libOgreRTShaderSystem.so;debug;/usr/lib/x86_64-linux-gnu/libOgreRTShaderSystem.so -- Looking for OGRE_Volume... -- Found OGRE_Volume: optimized;/usr/lib/x86_64-linux-gnu/libOgreVolume.so;debug;/usr/lib/x86_64-linux-gnu/libOgreVolume.so -- Looking for OGRE_Overlay... -- Found OGRE_Overlay: optimized;/usr/lib/x86_64-linux-gnu/libOgreOverlay.so;debug;/usr/lib/x86_64-linux-gnu/libOgreOverlay.so -- Found Protobuf: /usr/lib/x86_64-linux-gnu/libprotobuf.so;-lpthread;-lpthread (found suitable version "3.0.0", minimum required is "2.3.0") -- Config-file not installed for ZeroMQ -- checking for pkg-config -- Checking for module 'libzmq >= 4' -- Found libzmq , version 4.2.5 -- Checking for module 'uuid' -- Found uuid, version 2.31.1 -- Checking for module 'tinyxml2' -- Found tinyxml2, version 7.0.1 -- Looking for dlfcn.h - found -- Looking for libdl - found -- FreeImage.pc not found, we will search for FreeImage_INCLUDE_DIRS and FreeImage_LIBRARIES -- Checking for module 'gts' -- Found gts, version 0.7.6 -- Checking for module 'libswscale' -- Found libswscale, version 4.8.100 -- Checking for module 'libavdevice >= 56.4.100' -- Found libavdevice , version 57.10.100 -- Checking for module 'libavformat' -- Found libavformat, version 57.83.100 -- Checking for module 'libavcodec' -- Found libavcodec, version 57.107.100 -- Checking for module 'libavutil' -- Found libavutil, version 55.78.100 -- Checking for module 'jsoncpp' -- Found jsoncpp, version 1.7.4 -- Checking for module 'yaml-0.1' -- Found yaml-0.1, version 0.1.7 -- Checking for module 'libzip' -- Found libzip, version 1.1.2 CMake Warning at /opt/ros/melodic/share/catkin/cmake/catkin_package.cmake:166 (message): catkin_package() DEPENDS on 'gazebo' but neither 'gazebo_INCLUDE_DIRS' nor 'gazebo_LIBRARIES' is defined. Call Stack (most recent call first): /opt/ros/melodic/share/catkin/cmake/catkin_package.cmake:102 (_catkin_package) ros_kortex/third_party/gazebo-pkgs/gazebo_grasp_plugin/CMakeLists.txt:34 (catkin_package) -- +++ processing catkin package: 'roboticsgroup_gazebo_plugins' -- ==> add_subdirectory(ros_kortex/third_party/roboticsgroup_gazebo_plugins) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Boost version: 1.65.1 -- Found the following Boost libraries: -- thread -- system -- filesystem -- program_options -- regex -- iostreams -- date_time -- chrono -- atomic -- Found Protobuf: /usr/lib/x86_64-linux-gnu/libprotobuf.so;-lpthread (found version "3.0.0") -- Boost version: 1.65.1 -- Looking for OGRE... -- Found Ogre Ghadamon (1.9.0) -- Found OGRE: optimized;/usr/lib/x86_64-linux-gnu/libOgreMain.so;debug;/usr/lib/x86_64-linux-gnu/libOgreMain.so -- Looking for OGRE_Paging... -- Found OGRE_Paging: optimized;/usr/lib/x86_64-linux-gnu/libOgrePaging.so;debug;/usr/lib/x86_64-linux-gnu/libOgrePaging.so -- Looking for OGRE_Terrain... -- Found OGRE_Terrain: optimized;/usr/lib/x86_64-linux-gnu/libOgreTerrain.so;debug;/usr/lib/x86_64-linux-gnu/libOgreTerrain.so -- Looking for OGRE_Property... -- Found OGRE_Property: optimized;/usr/lib/x86_64-linux-gnu/libOgreProperty.so;debug;/usr/lib/x86_64-linux-gnu/libOgreProperty.so -- Looking for OGRE_RTShaderSystem... -- Found OGRE_RTShaderSystem: optimized;/usr/lib/x86_64-linux-gnu/libOgreRTShaderSystem.so;debug;/usr/lib/x86_64-linux-gnu/libOgreRTShaderSystem.so -- Looking for OGRE_Volume... -- Found OGRE_Volume: optimized;/usr/lib/x86_64-linux-gnu/libOgreVolume.so;debug;/usr/lib/x86_64-linux-gnu/libOgreVolume.so -- Looking for OGRE_Overlay... -- Found OGRE_Overlay: optimized;/usr/lib/x86_64-linux-gnu/libOgreOverlay.so;debug;/usr/lib/x86_64-linux-gnu/libOgreOverlay.so -- Found Protobuf: /usr/lib/x86_64-linux-gnu/libprotobuf.so;-lpthread;-lpthread (found suitable version "3.0.0", minimum required is "2.3.0") -- Config-file not installed for ZeroMQ -- checking for pkg-config -- Checking for module 'libzmq >= 4' -- Found libzmq , version 4.2.5 -- Checking for module 'uuid' -- Found uuid, version 2.31.1 -- Checking for module 'tinyxml2' -- Found tinyxml2, version 7.0.1 -- Looking for dlfcn.h - found -- Looking for libdl - found -- FreeImage.pc not found, we will search for FreeImage_INCLUDE_DIRS and FreeImage_LIBRARIES -- Checking for module 'gts' -- Found gts, version 0.7.6 -- Checking for module 'libswscale' -- Found libswscale, version 4.8.100 -- Checking for module 'libavdevice >= 56.4.100' -- Found libavdevice , version 57.10.100 -- Checking for module 'libavformat' -- Found libavformat, version 57.83.100 -- Checking for module 'libavcodec' -- Found libavcodec, version 57.107.100 -- Checking for module 'libavutil' -- Found libavutil, version 55.78.100 -- Checking for module 'jsoncpp' -- Found jsoncpp, version 1.7.4 -- Checking for module 'yaml-0.1' -- Found yaml-0.1, version 0.1.7 -- Checking for module 'libzip' -- Found libzip, version 1.1.2 -- Boost version: 1.65.1 -- +++ processing catkin package: 'ur_driver' -- ==> add_subdirectory(universal_robot/ur_driver) -- +++ processing catkin package: 'ur10_moveit_config' -- ==> add_subdirectory(universal_robot/ur10_moveit_config) -- +++ processing catkin package: 'ur3_moveit_config' -- ==> add_subdirectory(universal_robot/ur3_moveit_config) -- +++ processing catkin package: 'ur5_moveit_config' -- ==> add_subdirectory(universal_robot/ur5_moveit_config) -- +++ processing catkin package: 'gen3_move_it_config' -- ==> add_subdirectory(ros_kortex/kortex_move_it_config/gen3_move_it_config) -- +++ processing catkin package: 'gen3_robotiq_2f_85_move_it_config' -- ==> add_subdirectory(ros_kortex/kortex_move_it_config/gen3_robotiq_2f_85_move_it_config) -- +++ processing catkin package: 'kortex_gazebo_camera' -- ==> add_subdirectory(kortex_gazebo_camera) -- +++ processing catkin package: 'kortex_gazebo_depth' -- ==> add_subdirectory(kortex_gazebo_depth) -- +++ processing catkin package: 'mw_vision_example' -- ==> add_subdirectory(mw_vision_example) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Configuring done -- Generating done -- Build files have been written to: /home/user/catkin_ws/build [ 0%] Built target sensor_msgs_generate_messages_lisp [ 0%] Built target std_msgs_generate_messages_py [ 0%] Built target std_msgs_generate_messages_nodejs [ 0%] Built target std_msgs_generate_messages_lisp [ 0%] Built target std_msgs_generate_messages_cpp [ 0%] Built target std_msgs_generate_messages_eus [ 0%] Built target actionlib_msgs_generate_messages_py [ 0%] Built target rosgraph_msgs_generate_messages_lisp [ 0%] Built target roscpp_generate_messages_eus [ 0%] Built target geometry_msgs_generate_messages_lisp [ 0%] Built target rosgraph_msgs_generate_messages_py [ 0%] Built target roscpp_generate_messages_nodejs [ 0%] Built target geometry_msgs_generate_messages_cpp [ 0%] Built target geometry_msgs_generate_messages_nodejs [ 0%] Built target rosgraph_msgs_generate_messages_cpp [ 0%] Built target rosgraph_msgs_generate_messages_eus [ 0%] Built target actionlib_msgs_generate_messages_cpp [ 0%] Built target roscpp_generate_messages_lisp [ 0%] Built target actionlib_msgs_generate_messages_nodejs [ 0%] Built target rosgraph_msgs_generate_messages_nodejs [ 0%] Built target roscpp_generate_messages_py [ 0%] Built target actionlib_msgs_generate_messages_eus [ 0%] Built target roscpp_generate_messages_cpp [ 0%] Built target geometry_msgs_generate_messages_eus [ 0%] Built target actionlib_msgs_generate_messages_lisp [ 0%] Built target geometry_msgs_generate_messages_py [ 0%] Built target sensor_msgs_generate_messages_py [ 0%] Built target nav_msgs_generate_messages_py [ 0%] Built target sensor_msgs_generate_messages_cpp [ 0%] Built target sensor_msgs_generate_messages_eus [ 0%] Built target nav_msgs_generate_messages_nodejs [ 0%] Built target nav_msgs_generate_messages_cpp [ 0%] Built target nav_msgs_generate_messages_eus [ 0%] Built target sensor_msgs_generate_messages_nodejs [ 0%] Built target nav_msgs_generate_messages_lisp Scanning dependencies of target deploysignfollowingrobotros [ 0%] Building CXX object deploysignfollowingrobotros/CMakeFiles/deploysignfollowingrobotros.dir/DeploySignFollowingRobotROS_data.cpp.o [ 0%] Building CXX object deploysignfollowingrobotros/CMakeFiles/deploysignfollowingrobotros.dir/rt_nonfinite.cpp.o [ 0%] Building CXX object deploysignfollowingrobotros/CMakeFiles/deploysignfollowingrobotros.dir/rtGetNaN.cpp.o [ 0%] Building CXX object deploysignfollowingrobotros/CMakeFiles/deploysignfollowingrobotros.dir/rtGetInf.cpp.o [ 0%] Building CXX object deploysignfollowingrobotros/CMakeFiles/deploysignfollowingrobotros.dir/DeploySignFollowingRobotROS_initialize.cpp.o [ 0%] Building CXX object deploysignfollowingrobotros/CMakeFiles/deploysignfollowingrobotros.dir/DeploySignFollowingRobotROS_terminate.cpp.o [ 0%] Building CXX object deploysignfollowingrobotros/CMakeFiles/deploysignfollowingrobotros.dir/DeploySignFollowingRobotROS.cpp.o [ 0%] Building CXX object deploysignfollowingrobotros/CMakeFiles/deploysignfollowingrobotros.dir/sensor_msgs_ImageStruct.cpp.o [ 0%] Building CXX object deploysignfollowingrobotros/CMakeFiles/deploysignfollowingrobotros.dir/std_msgs_HeaderStruct.cpp.o [ 0%] Building CXX object deploysignfollowingrobotros/CMakeFiles/deploysignfollowingrobotros.dir/ros_TimeStruct.cpp.o [ 0%] Building CXX object deploysignfollowingrobotros/CMakeFiles/deploysignfollowingrobotros.dir/nav_msgs_OdometryStruct.cpp.o [ 0%] Building CXX object deploysignfollowingrobotros/CMakeFiles/deploysignfollowingrobotros.dir/geometry_msgs_PoseWithCovarianceStruct.cpp.o [ 0%] Building CXX object deploysignfollowingrobotros/CMakeFiles/deploysignfollowingrobotros.dir/geometry_msgs_PoseStruct.cpp.o [ 0%] Building CXX object deploysignfollowingrobotros/CMakeFiles/deploysignfollowingrobotros.dir/geometry_msgs_PointStruct.cpp.o [ 0%] Building CXX object deploysignfollowingrobotros/CMakeFiles/deploysignfollowingrobotros.dir/geometry_msgs_QuaternionStruct.cpp.o [ 0%] Building CXX object deploysignfollowingrobotros/CMakeFiles/deploysignfollowingrobotros.dir/geometry_msgs_TwistWithCovarianceStruct.cpp.o [ 0%] Building CXX object deploysignfollowingrobotros/CMakeFiles/deploysignfollowingrobotros.dir/geometry_msgs_TwistStruct.cpp.o [ 0%] Building CXX object deploysignfollowingrobotros/CMakeFiles/deploysignfollowingrobotros.dir/geometry_msgs_Vector3Struct.cpp.o [ 0%] Building CXX object deploysignfollowingrobotros/CMakeFiles/deploysignfollowingrobotros.dir/minOrMax.cpp.o [ 0%] Building CXX object deploysignfollowingrobotros/CMakeFiles/deploysignfollowingrobotros.dir/tic.cpp.o [ 0%] Building CXX object deploysignfollowingrobotros/CMakeFiles/deploysignfollowingrobotros.dir/rosReadImage.cpp.o [ 0%] Building CXX object deploysignfollowingrobotros/CMakeFiles/deploysignfollowingrobotros.dir/quat2eul.cpp.o [ 0%] Building CXX object deploysignfollowingrobotros/CMakeFiles/deploysignfollowingrobotros.dir/toc.cpp.o [ 0%] Building CXX object deploysignfollowingrobotros/CMakeFiles/deploysignfollowingrobotros.dir/CoderTimeAPI.cpp.o [ 0%] Building CXX object deploysignfollowingrobotros/CMakeFiles/deploysignfollowingrobotros.dir/ExampleHelperSignFollowingProcessImg.cpp.o [ 0%] Building CXX object deploysignfollowingrobotros/CMakeFiles/deploysignfollowingrobotros.dir/Subscriber.cpp.o /home/user/catkin_ws/src/deploysignfollowingrobotros/Subscriber.cpp: In member function 'void coder::ros::Subscriber::matlabCodegenDestructor()': /home/user/catkin_ws/src/deploysignfollowingrobotros/Subscriber.cpp:86:35: warning: deleting 'void*' is undefined [-Wdelete-incomplete] delete (this->SubscriberHelper); ^ /home/user/catkin_ws/src/deploysignfollowingrobotros/Subscriber.cpp: In member function 'void coder::ros::b_Subscriber::matlabCodegenDestructor()': /home/user/catkin_ws/src/deploysignfollowingrobotros/Subscriber.cpp:98:35: warning: deleting 'void*' is undefined [-Wdelete-incomplete] delete (this->SubscriberHelper); ^ [ 0%] Building CXX object deploysignfollowingrobotros/CMakeFiles/deploysignfollowingrobotros.dir/Publisher.cpp.o [ 0%] Building CXX object deploysignfollowingrobotros/CMakeFiles/deploysignfollowingrobotros.dir/ExampleHelperSignFollowingControllerChart.cpp.o [ 0%] Building CXX object deploysignfollowingrobotros/CMakeFiles/deploysignfollowingrobotros.dir/Rate.cpp.o [ 0%] Building CXX object deploysignfollowingrobotros/CMakeFiles/deploysignfollowingrobotros.dir/main.cpp.o [100%] Building CXX object deploysignfollowingrobotros/CMakeFiles/deploysignfollowingrobotros.dir/ros_structmsg_conversion.cpp.o [100%] Linking CXX executable /home/user/catkin_ws/devel/lib/deploysignfollowingrobotros/deploysignfollowingrobotros /usr/bin/c++ -std=c++0x -fpermissive CMakeFiles/deploysignfollowingrobotros.dir/coder_posix_time.c.o CMakeFiles/deploysignfollowingrobotros.dir/DeploySignFollowingRobotROS_data.cpp.o CMakeFiles/deploysignfollowingrobotros.dir/rt_nonfinite.cpp.o CMakeFiles/deploysignfollowingrobotros.dir/rtGetNaN.cpp.o CMakeFiles/deploysignfollowingrobotros.dir/rtGetInf.cpp.o CMakeFiles/deploysignfollowingrobotros.dir/DeploySignFollowingRobotROS_initialize.cpp.o CMakeFiles/deploysignfollowingrobotros.dir/DeploySignFollowingRobotROS_terminate.cpp.o CMakeFiles/deploysignfollowingrobotros.dir/DeploySignFollowingRobotROS.cpp.o CMakeFiles/deploysignfollowingrobotros.dir/sensor_msgs_ImageStruct.cpp.o CMakeFiles/deploysignfollowingrobotros.dir/std_msgs_HeaderStruct.cpp.o CMakeFiles/deploysignfollowingrobotros.dir/ros_TimeStruct.cpp.o CMakeFiles/deploysignfollowingrobotros.dir/nav_msgs_OdometryStruct.cpp.o CMakeFiles/deploysignfollowingrobotros.dir/geometry_msgs_PoseWithCovarianceStruct.cpp.o CMakeFiles/deploysignfollowingrobotros.dir/geometry_msgs_PoseStruct.cpp.o CMakeFiles/deploysignfollowingrobotros.dir/geometry_msgs_PointStruct.cpp.o CMakeFiles/deploysignfollowingrobotros.dir/geometry_msgs_QuaternionStruct.cpp.o CMakeFiles/deploysignfollowingrobotros.dir/geometry_msgs_TwistWithCovarianceStruct.cpp.o CMakeFiles/deploysignfollowingrobotros.dir/geometry_msgs_TwistStruct.cpp.o CMakeFiles/deploysignfollowingrobotros.dir/geometry_msgs_Vector3Struct.cpp.o CMakeFiles/deploysignfollowingrobotros.dir/minOrMax.cpp.o CMakeFiles/deploysignfollowingrobotros.dir/tic.cpp.o CMakeFiles/deploysignfollowingrobotros.dir/rosReadImage.cpp.o CMakeFiles/deploysignfollowingrobotros.dir/quat2eul.cpp.o CMakeFiles/deploysignfollowingrobotros.dir/toc.cpp.o CMakeFiles/deploysignfollowingrobotros.dir/CoderTimeAPI.cpp.o CMakeFiles/deploysignfollowingrobotros.dir/ExampleHelperSignFollowingProcessImg.cpp.o CMakeFiles/deploysignfollowingrobotros.dir/Subscriber.cpp.o CMakeFiles/deploysignfollowingrobotros.dir/Publisher.cpp.o CMakeFiles/deploysignfollowingrobotros.dir/ExampleHelperSignFollowingControllerChart.cpp.o CMakeFiles/deploysignfollowingrobotros.dir/Rate.cpp.o CMakeFiles/deploysignfollowingrobotros.dir/main.cpp.o CMakeFiles/deploysignfollowingrobotros.dir/ros_structmsg_conversion.cpp.o -o /home/user/catkin_ws/devel/lib/deploysignfollowingrobotros/deploysignfollowingrobotros -Wl,-rpath,/opt/ros/melodic/lib /opt/ros/melodic/lib/libroscpp.so /usr/lib/x86_64-linux-gnu/libboost_filesystem.so /opt/ros/melodic/lib/librosconsole.so /opt/ros/melodic/lib/librosconsole_log4cxx.so /opt/ros/melodic/lib/librosconsole_backend_interface.so /usr/lib/x86_64-linux-gnu/liblog4cxx.so /usr/lib/x86_64-linux-gnu/libboost_regex.so /opt/ros/melodic/lib/libxmlrpcpp.so /opt/ros/melodic/lib/libroscpp_serialization.so /opt/ros/melodic/lib/librostime.so /opt/ros/melodic/lib/libcpp_common.so /usr/lib/x86_64-linux-gnu/libboost_system.so /usr/lib/x86_64-linux-gnu/libboost_thread.so /usr/lib/x86_64-linux-gnu/libboost_chrono.so /usr/lib/x86_64-linux-gnu/libboost_date_time.so /usr/lib/x86_64-linux-gnu/libboost_atomic.so -lpthread /usr/lib/x86_64-linux-gnu/libconsole_bridge.so.0.4 -lrt -ldl [100%] Built target deploysignfollowingrobotros Base path: /home/user/catkin_ws Source space: /home/user/catkin_ws/src Build space: /home/user/catkin_ws/build Devel space: /home/user/catkin_ws/devel Install space: /home/user/catkin_ws/install #### #### Running command: "make cmake_check_build_system" in "/home/user/catkin_ws/build" #### #### #### Running command: "make deploysignfollowingrobotros -j2 -l2" in "/home/user/catkin_ws/build" #### --- Running ROS node. --- The node will connect to the ROS master at 'http://192.168.192.129:11311' and advertise its address as '192.168.192.129'. Use the 'rosdevice' object to stop the node or restart it with different settings. Code generation successful.

机器人遵循标志,停在最后一个“停止”标志。节点执行后,通过调用rossvcclient对象,gazeboResetClient

调用(gazeboResetClient);

使用下面的命令重新运行部署的节点rosdevice

要从MATLAB重新运行部署的ROS节点,请创建一个rosdevice对象指定deviceAddress,用户名、密码运行凉亭的虚拟机的值。这在ROS设备和MATLAB之间建立了SSH连接。检查连接的远端设备上是否有可用节点。检查部署的ROS节点deploysignfollowingrobotros,远端设备上存在。

gazeboVMDevice = rosdevice (“192.168.192.129”“用户”“密码”);gazeboVMDevice。AvailableNodes
ans =1×18单元格{' _setup_util.py}{‘deploysignfollowingrobot}{‘deploysignfollowingrobotros}{‘env.sh}{‘example_actuator_configuration_cpp}{‘example_cartesian_poses_with_notifications_cpp}{‘example_full_arm_movement_cpp}{‘example_vision_configuration_cpp}{‘examplehelperdeploysignfollowingrobotros}{‘kortex_arm_driver} {libgazebo_grasp_fix。所以'}{libgazebo_version_helpers。所以'}{libkortex_driver_generated_files。所以'}{libroboticsgroup_gazebo_disable_link_plugin。所以'}{libroboticsgroup_gazebo_mimic_joint_plugin。所以'}{libur10_kin。所以'}{libur3_kin。所以'}{' libur5_kin.so '}

运行部署在远端设备上的ROS节点runNode函数。机器人遵循标志,停在最后一个“停止”标志。

runNode (gazeboVMDevice“deploysignfollowingrobotros”
节点deploysignfollowingrobotros已经在ROS设备上运行。使用'stopNode'函数来停止它。