ros2genmsg
설명
ros2genmsg(
는 지정된 폴더 경로에서 ROS 2 사용자 지정 메시지와 서비스 정의를 읽어 ROS 2 사용자 지정 메시지를 생성합니다. 이 함수 폴더에는 하나 이상의 ROS 2 패키지가 포함되어 있어야 합니다. 이러한 패키지는 folderpath
).msg
파일의 메시지 정의, .srv
파일의 서비스 정의, .action
파일의 액션 정의를 포함합니다.
사용자 지정 메시지를 생성하고 나면 지원되는 다른 모든 메시지처럼 MATLAB®에서 사용자 지정 메시지를 보내고 받을 수 있습니다. ros2message
를 사용하여 이러한 메시지를 생성하거나, MATLAB 명령 창에 ros2 msg list
를 입력하여 메시지 목록을 볼 수 있습니다.
참고
ROS 2 사용자 지정 메시지를 생성하려면 ROS 2 패키지를 빌드해야 합니다. 이 과정을 수행하려면 해당 플랫폼용 C++ 컴파일러가 필요합니다. 자세한 내용은 ROS Toolbox 시스템 요구 사항 항목을 참조하십시오.
ROS 2 정의의 사용자 지정 메시지는 MATLAB의 새 릴리스마다 매번 다시 생성해야 합니다.
MATLAB에서 생성하는 사용자 지정 메시지는 이제 eProsima Fast DDS 미들웨어와 Eclipse Cyclone DDS 미들웨어를 지원합니다. ROS 미들웨어 구현에 대한 자세한 내용은 Switching Between ROS Middleware Implementations 항목을 참조하십시오.
ros2genmsg(
는 하나 이상의 이름-값 인수를 사용하여 추가 옵션을 지정합니다.folderpath
,Name=Value
)
예제
ROS 2 패키지에서 사용자 지정 메시지 만들기
사용자 지정 메시지를 사용하여 현재 ROS 2에서 지원되는 메시지 유형 세트를 확장할 수 있습니다. 사용자 지정 메시지는 사용자가 정의하는 메시지입니다. 현재 지원되는 메시지 유형을 보내고 받고 있다면 사용자 지정 메시지를 사용할 필요가 없습니다. 지원되는 메시지 유형의 목록을 보려면 MATLAB® 명령 창에 ros2 msg list
를 입력합니다. 지원되는 ROS 2 메시지에 대한 자세한 내용은 Work with Basic ROS 2 Messages 항목을 참조하십시오.
ROS 2 사용자 지정 메시지를 처음 사용한다면 ROS Toolbox 시스템 요구 사항 항목을 참조하십시오.
ROS 2 사용자 지정 메시지는 이름이 msg
인 폴더가 포함된 ROS 2 패키지 폴더에 지정됩니다. msg
폴더에는 모든 사용자 지정 메시지 유형 정의가 포함됩니다. 예를 들어 custom
폴더의 example_b_msgs
패키지는 다음과 같은 폴더와 파일 구조를 갖습니다.
이 패키지는 사용자 지정 메시지 유형 Standalone.msg
를 포함합니다. MATLAB은 이러한 파일을 사용하여 패키지에 포함된 사용자 지정 메시지를 사용하기 위해 필요한 파일을 생성합니다.
이 예제에서는 MATLAB에서 ROS 2 사용자 지정 메시지를 만듭니다. 필수적인 msg
파일이 포함되어 있는 ROS 2 패키지가 있어야 합니다.
사용자 지정 메시지 패키지가 올바른지 확인한 다음에는 부모 폴더의 경로를 지정하고 지정된 경로로 ros2genmsg
를 호출합니다. 다음 예제에서는 종속성이 있는 세 개의 메시지 example_package_a,
, example_package_b
, example_package_c
를 제공했습니다. 이 예제에서는 여러 메시지가 포함된 폴더를 사용하여 이들을 동시에 생성할 수 있음을 보여줍니다.
새 MATLAB 세션을 열고 로컬 폴더에 사용자 지정 메시지 폴더를 만듭니다.
folderPath = fullfile(pwd,"custom"); copyfile("example_*_msgs",folderPath);
사용자 지정 메시지 파일의 폴더 경로를 지정하고 ros2genmsg
를 사용하여 사용자 지정 메시지를 만듭니다.
ros2genmsg(folderPath)
Identifying message files in folder 'C:/Work/custom'.Done. Removing previous version of Python virtual environment.Done. Creating a Python virtual environment.Done. Adding required Python packages to virtual environment.Done. Copying include folders.Done. Copying libraries.Done. Validating message files in folder 'C:/Work/custom'.Done. [3/3] Generating MATLAB interfaces for custom message packages... Done. Running colcon build in folder 'C:/Work/custom/matlab_msg_gen/win64'. Build in progress. This may take several minutes... Build succeeded.build log
ros2 msg list
를 호출하여 새 사용자 지정 메시지가 생성되었는지 확인합니다.
ros2 msg list
action_msgs/CancelGoalRequest action_msgs/CancelGoalResponse action_msgs/GoalInfo action_msgs/GoalStatus action_msgs/GoalStatusArray actionlib_msgs/GoalID actionlib_msgs/GoalStatus actionlib_msgs/GoalStatusArray builtin_interfaces/Duration builtin_interfaces/Time composition_interfaces/ListNodesRequest composition_interfaces/ListNodesResponse composition_interfaces/LoadNodeRequest composition_interfaces/LoadNodeResponse composition_interfaces/UnloadNodeRequest composition_interfaces/UnloadNodeResponse diagnostic_msgs/AddDiagnosticsRequest diagnostic_msgs/AddDiagnosticsResponse diagnostic_msgs/DiagnosticArray diagnostic_msgs/DiagnosticStatus diagnostic_msgs/KeyValue diagnostic_msgs/SelfTestRequest diagnostic_msgs/SelfTestResponse example_a_msgs/DependsOnB example_b_msgs/Standalone example_c_msgs/DependsOnB example_interfaces/AddTwoIntsRequest example_interfaces/AddTwoIntsResponse example_interfaces/Bool example_interfaces/Byte example_interfaces/ByteMultiArray example_interfaces/Char example_interfaces/Empty example_interfaces/Float32 example_interfaces/Float32MultiArray example_interfaces/Float64 example_interfaces/Float64MultiArray example_interfaces/Int16 example_interfaces/Int16MultiArray example_interfaces/Int32 example_interfaces/Int32MultiArray example_interfaces/Int64 example_interfaces/Int64MultiArray example_interfaces/Int8 example_interfaces/Int8MultiArray example_interfaces/MultiArrayDimension example_interfaces/MultiArrayLayout example_interfaces/SetBoolRequest example_interfaces/SetBoolResponse example_interfaces/String example_interfaces/TriggerRequest example_interfaces/TriggerResponse example_interfaces/UInt16 example_interfaces/UInt16MultiArray example_interfaces/UInt32 example_interfaces/UInt32MultiArray example_interfaces/UInt64 example_interfaces/UInt64MultiArray example_interfaces/UInt8 example_interfaces/UInt8MultiArray example_interfaces/WString geometry_msgs/Accel geometry_msgs/AccelStamped geometry_msgs/AccelWithCovariance geometry_msgs/AccelWithCovarianceStamped geometry_msgs/Inertia geometry_msgs/InertiaStamped geometry_msgs/Point geometry_msgs/Point32 geometry_msgs/PointStamped geometry_msgs/Polygon geometry_msgs/PolygonStamped geometry_msgs/Pose geometry_msgs/Pose2D geometry_msgs/PoseArray geometry_msgs/PoseStamped geometry_msgs/PoseWithCovariance geometry_msgs/PoseWithCovarianceStamped geometry_msgs/Quaternion geometry_msgs/QuaternionStamped geometry_msgs/Transform geometry_msgs/TransformStamped geometry_msgs/Twist geometry_msgs/TwistStamped geometry_msgs/TwistWithCovariance geometry_msgs/TwistWithCovarianceStamped geometry_msgs/Vector3 geometry_msgs/Vector3Stamped geometry_msgs/Wrench geometry_msgs/WrenchStamped lifecycle_msgs/ChangeStateRequest lifecycle_msgs/ChangeStateResponse lifecycle_msgs/GetAvailableStatesRequest lifecycle_msgs/GetAvailableStatesResponse lifecycle_msgs/GetAvailableTransitionsRequest lifecycle_msgs/GetAvailableTransitionsResponse lifecycle_msgs/GetStateRequest lifecycle_msgs/GetStateResponse lifecycle_msgs/State lifecycle_msgs/Transition lifecycle_msgs/TransitionDescription lifecycle_msgs/TransitionEvent logging_demo/ConfigLoggerRequest logging_demo/ConfigLoggerResponse map_msgs/GetMapROIRequest map_msgs/GetMapROIResponse map_msgs/GetPointMapROIRequest map_msgs/GetPointMapROIResponse map_msgs/GetPointMapRequest map_msgs/GetPointMapResponse map_msgs/OccupancyGridUpdate map_msgs/PointCloud2Update map_msgs/ProjectedMap map_msgs/ProjectedMapInfo map_msgs/ProjectedMapsInfoRequest map_msgs/ProjectedMapsInfoResponse map_msgs/SaveMapRequest map_msgs/SaveMapResponse map_msgs/SetMapProjectionsRequest map_msgs/SetMapProjectionsResponse nav_msgs/GetMapRequest nav_msgs/GetMapResponse nav_msgs/GetPlanRequest nav_msgs/GetPlanResponse nav_msgs/GridCells nav_msgs/MapMetaData nav_msgs/OccupancyGrid nav_msgs/Odometry nav_msgs/Path nav_msgs/SetMapRequest nav_msgs/SetMapResponse pendulum_msgs/JointCommand pendulum_msgs/JointState pendulum_msgs/RttestResults rcl_interfaces/DescribeParametersRequest rcl_interfaces/DescribeParametersResponse rcl_interfaces/FloatingPointRange rcl_interfaces/GetParameterTypesRequest rcl_interfaces/GetParameterTypesResponse rcl_interfaces/GetParametersRequest rcl_interfaces/GetParametersResponse rcl_interfaces/IntegerRange rcl_interfaces/ListParametersRequest rcl_interfaces/ListParametersResponse rcl_interfaces/ListParametersResult rcl_interfaces/Log rcl_interfaces/Parameter rcl_interfaces/ParameterDescriptor rcl_interfaces/ParameterEvent rcl_interfaces/ParameterEventDescriptors rcl_interfaces/ParameterType rcl_interfaces/ParameterValue rcl_interfaces/SetParametersAtomicallyRequest rcl_interfaces/SetParametersAtomicallyResponse rcl_interfaces/SetParametersRequest rcl_interfaces/SetParametersResponse rcl_interfaces/SetParametersResult rosgraph_msgs/Clock sensor_msgs/BatteryState sensor_msgs/CameraInfo sensor_msgs/ChannelFloat32 sensor_msgs/CompressedImage sensor_msgs/FluidPressure sensor_msgs/Illuminance sensor_msgs/Image sensor_msgs/Imu sensor_msgs/JointState sensor_msgs/Joy sensor_msgs/JoyFeedback sensor_msgs/JoyFeedbackArray sensor_msgs/LaserEcho sensor_msgs/LaserScan sensor_msgs/MagneticField sensor_msgs/MultiDOFJointState sensor_msgs/MultiEchoLaserScan sensor_msgs/NavSatFix sensor_msgs/NavSatStatus sensor_msgs/PointCloud sensor_msgs/PointCloud2 sensor_msgs/PointField sensor_msgs/Range sensor_msgs/RegionOfInterest sensor_msgs/RelativeHumidity sensor_msgs/SetCameraInfoRequest sensor_msgs/SetCameraInfoResponse sensor_msgs/Temperature sensor_msgs/TimeReference shape_msgs/Mesh shape_msgs/MeshTriangle shape_msgs/Plane shape_msgs/SolidPrimitive simple_msgs/AddTwoIntsRequest simple_msgs/AddTwoIntsResponse simple_msgs/Num statistics_msgs/MetricsMessage statistics_msgs/StatisticDataPoint statistics_msgs/StatisticDataType std_msgs/Bool std_msgs/Byte std_msgs/ByteMultiArray std_msgs/Char std_msgs/ColorRGBA std_msgs/Empty std_msgs/Float32 std_msgs/Float32MultiArray std_msgs/Float64 std_msgs/Float64MultiArray std_msgs/Header std_msgs/Int16 std_msgs/Int16MultiArray std_msgs/Int32 std_msgs/Int32MultiArray std_msgs/Int64 std_msgs/Int64MultiArray std_msgs/Int8 std_msgs/Int8MultiArray std_msgs/MultiArrayDimension std_msgs/MultiArrayLayout std_msgs/String std_msgs/UInt16 std_msgs/UInt16MultiArray std_msgs/UInt32 std_msgs/UInt32MultiArray std_msgs/UInt64 std_msgs/UInt64MultiArray std_msgs/UInt8 std_msgs/UInt8MultiArray std_srvs/EmptyRequest std_srvs/EmptyResponse std_srvs/SetBoolRequest std_srvs/SetBoolResponse std_srvs/TriggerRequest std_srvs/TriggerResponse stereo_msgs/DisparityImage test_msgs/Arrays test_msgs/ArraysRequest test_msgs/ArraysResponse test_msgs/BasicTypes test_msgs/BasicTypesRequest test_msgs/BasicTypesResponse test_msgs/BoundedSequences test_msgs/Builtins test_msgs/Constants test_msgs/Defaults test_msgs/Empty test_msgs/EmptyRequest test_msgs/EmptyResponse test_msgs/MultiNested test_msgs/Nested test_msgs/Strings test_msgs/UnboundedSequences test_msgs/WStrings trajectory_msgs/JointTrajectory trajectory_msgs/JointTrajectoryPoint trajectory_msgs/MultiDOFJointTrajectory trajectory_msgs/MultiDOFJointTrajectoryPoint unique_identifier_msgs/UUID visualization_msgs/GetInteractiveMarkersRequest visualization_msgs/GetInteractiveMarkersResponse visualization_msgs/ImageMarker visualization_msgs/InteractiveMarker visualization_msgs/InteractiveMarkerControl visualization_msgs/InteractiveMarkerFeedback visualization_msgs/InteractiveMarkerInit visualization_msgs/InteractiveMarkerPose visualization_msgs/InteractiveMarkerUpdate visualization_msgs/Marker visualization_msgs/MarkerArray visualization_msgs/MenuEntry
이제 위에서 만든 사용자 지정 메시지를 표준 메시지로 사용할 수 있습니다. 메시지를 주고받는 것에 대한 자세한 내용은 ROS 2 Publisher 및 ROS 2 Subscriber를 사용해 데이터 교환하기 항목을 참조하십시오.
example_b_msgs/Standalone
메시지를 사용할 publisher를 생성합니다.
node = ros2node("/node_1"); pub = ros2publisher(node,"/example_topic","example_b_msgs/Standalone");
동일한 토픽에 대한 subscriber를 생성합니다.
sub = ros2subscriber(node,"/example_topic");
메시지를 만들고 만든 메시지를 보냅니다.
custom_msg = ros2message("example_b_msgs/Standalone"); custom_msg.int_property = uint32(12); custom_msg.string_property='This is ROS 2 custom message example'; send(pub,custom_msg); pause(3) % Allow a few seconds for the message to arrive
LatestMessage
필드를 사용하여 subscriber가 받은 최근 메시지를 확인합니다.
sub.LatestMessage
ans = struct with fields:
MessageType: 'example_b_msgs/Standalone'
int_property: 12
string_property: 'This is ROS 2 custom message example'
생성된 ROS 객체를 제거합니다.
clear node pub sub
내장 메시지의 정의를 사용자 지정 정의로 바꾸기
MATLAB에는 많은 ROS 2 메시지 유형이 내장되어 있습니다. 위에서 자세히 설명한 사용자 지정 메시지 생성 워크플로를 사용하여 이러한 메시지 유형의 정의를 새 정의로 바꿀 수 있습니다. 내장된 메시지 패키지의 정의를 바꿀 때는 해당 내장 메시지 패키지의 모든 메시지 유형에 대한 새 정의(.msg
파일)가 사용자 지정 메시지 패키지 폴더에 포함되어 있는지 확인해야 합니다.
공유 가능한 ROS 2 사용자 지정 메시지 패키지 생성하기
이 예제에서는 MATLAB에서 공유 가능한 ROS 2 사용자 지정 메시지 패키지를 생성합니다. 필수적인 msg
파일이 포함되어 있는 ROS 2 패키지가 있어야 합니다. 다음 그림은 적절한 폴더 구조의 예를 보여줍니다.
사용자 지정 메시지 패키지 폴더를 준비한 다음에는 부모 폴더의 경로를 지정하고 지정된 경로로 ros2genmsg
를 호출합니다.
새 MATLAB 세션을 열고 로컬 폴더에 사용자 지정 메시지 패키지 폴더를 만듭니다. Windows 시스템에서 사용자 지정 메시지를 생성하는 경우, 짧은 폴더 경로를 선택하면 폴더 경로의 문자 수 제한을 피할 수 있습니다. 예를 들면 다음과 같습니다.
genDir = fullfile('C:/test/ros2CustomMessages')
genDir = fullfile(pwd,'ros2CustomMessages'); packagePath = fullfile(genDir,'simple_msgs'); mkdir(packagePath)
사용자 지정 메시지 패키지 폴더 안에 이름이 msg
인 폴더를 만듭니다.
mkdir(packagePath,'msg')
msg
폴더 안에 이름이 .msg
인 파일을 만듭니다.
messageDefinition = {'int64 num'}; fileID = fopen(fullfile(packagePath,'msg', ... 'Num.msg'),'w'); fprintf(fileID,'%s\n',messageDefinition{:}); fclose(fileID);
사용자 지정 메시지 패키지 폴더 안에 이름이 srv
인 폴더를 만듭니다.
mkdir(packagePath,'srv')
srv
폴더 안에 이름이 .srv
인 파일을 만듭니다.
serviceDefinition = {'int64 a' 'int64 b' '---' 'int64 sum'}; fileID = fopen(fullfile(packagePath,'srv', ... 'AddTwoInts.srv'),'w'); fprintf(fileID,'%s\n',serviceDefinition{:}); fclose(fileID);
사용자 지정 메시지 패키지 폴더 안에 이름이 action
인 폴더를 만듭니다.
mkdir(packagePath,'action')
action
폴더 안에 이름이 .action
인 파일을 만듭니다.
actionDefinition = {'int64 goal' '---' 'int64 result' '---' 'int64 feedback'}; fileID = fopen(fullfile(packagePath,'action', ... 'Test.action'),'w'); fprintf(fileID,'%s\n',actionDefinition{:}); fclose(fileID);
.msg, .srv
파일과 .action
파일의 ROS 2 정의에서 사용자 지정 메시지를 생성합니다. 생성된 사용자 지정 메시지의 공유 가능한 ZIP 아카이브를 CreateShareableFile
이름-값 인수를 사용하여 만듭니다.
이 ZIP 아카이브를 사용해 다른 시스템에 사용자 지정 메시지를 등록하는 방법에 대한 자세한 내용은 ros2RegisterMessages
항목을 참조하십시오.
ros2genmsg(genDir,CreateShareableFile=true);
Identifying message files in folder 'C:/Users/echakrab/OneDrive - MathWorks/Documents/MATLAB/ExampleManager/echakrab.Bdoc23a.ROS2transform/ros-ex71849911/ros2CustomMessages'.Validating message files in folder 'C:/Users/echakrab/OneDrive - MathWorks/Documents/MATLAB/ExampleManager/echakrab.Bdoc23a.ROS2transform/ros-ex71849911/ros2CustomMessages'.Done. Creating a Python virtual environment.Done. Adding required Python packages to virtual environment.Done. Copying include folders.Done. Copying libraries.Done. Done. [1/1] Generating MATLAB interfaces for custom message packages... Done. Running colcon build in folder 'C:/Users/echakrab/OneDrive - MathWorks/Documents/MATLAB/ExampleManager/echakrab.Bdoc23a.ROS2transform/ros-ex71849911/ros2CustomMessages/matlab_msg_gen/win64'. Build in progress. This may take several minutes...
명령 창에서 ros2 msg list
를 입력하여 새 사용자 지정 메시지가 생성되었는지 확인합니다.
입력 인수
folderpath
— ROS 인터페이스 폴더 경로
string형 스칼라 | 문자형 벡터
ROS 메시지 패키지의 부모 폴더인 ROS 인터페이스 폴더의 경로로, string형 스칼라 또는 문자형 벡터로 지정됩니다. 부모 폴더는 패키지 .xml
과 패키지 폴더를 포함해야 합니다. 패키지 폴더는 메시지 정의를 위한 .msg
파일이 있는 /msg
라는 이름의 폴더, 서비스 정의를 위한 .srv
파일이 있는 /srv
라는 이름의 폴더, 액션 정의를 위한 .action
파일이 있는 /action
이라는 이름의 폴더를 포함합니다. 자세한 내용은 About ROS 2 Interfaces 항목을 참조하십시오.
예: 'C:/test/ros2CustomMessages'
데이터형: char
| string
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN
으로 지정합니다. 여기서 Name
은 인수 이름이고 Value
는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
R2021a 이전 버전에서는 쉼표를 사용하여 각 이름과 값을 구분하고 따옴표로 Name
을 묶으십시오.
예: BuildConfiguration='fasterruns'
BuildConfiguration
— 메시지 라이브러리 빌드 시 다른 컴파일러 최적화를 선택하도록 허용
'fasterbuilds'
(디폴트 값) | 'fasterruns'
빌드 구성으로, BuildConfiguration
과 함께 'fasterbuilds'
또는 'fasterruns'
를 포함하는 문자형 벡터 또는 string형 스칼라가 쉼표로 구분되어 지정됩니다.
'fasterbuilds'
— 빌드 시간을 단축하는 컴파일러 최적화를 사용하여 메시지 라이브러리를 빌드합니다.'fasterruns'
— 실행 속도를 높이는 컴파일러 최적화를 사용하여 메시지 라이브러리를 빌드합니다.
예: ros2genmsg('C:/test/ros2CustomMessages',BuildConfiguration='fasterruns')
데이터형: char
| string
CreateShareableFile
— 공유 가능한 ZIP 아카이브를 생성하는 옵션
false
또는 0
(디폴트 값) | true
또는 1
공유 가능한 ZIP 아카이브를 생성하는 옵션으로, 숫자형 값 또는 논리값 1
(true)
또는 0
(false)
로 지정됩니다.
이 인수를 1
(true)
로 지정하면 함수는 matlab_msg_gen
폴더에 있는 설치 폴더를 압축한 ZIP 아카이브를 생성합니다. 동일한 플랫폼에서 실행되고 있으면서 동일한 MATLAB 버전을 사용하는 다른 컴퓨터에서 이 파일을 사용할 수 있습니다.
이 인수를 0
(false)
으로 지정하면 함수는 ZIP 아카이브를 생성하지 않습니다.
예: ros2genmsg('C:/test/ros2CustomMessages',CreateShareableFile=true)
데이터형: logical
제한 사항
노드 재시작
사용자 지정 메시지를 생성한 다음 기존 ROS 2 노드를 다시 시작합니다.
사용자 지정 메시지를 통한 코드 생성:
사용자 지정 메시지 및 서비스 유형을 ROS 2 기능과 함께 사용하여 독립형 ROS 2 노드에 대한 C++ 코드를 생성할 수 있습니다. 생성된 TGZ 아카이브는 사용자 지정 메시지에 대한 정의를 포함하지만 ROS 2 사용자 지정 메시지 패키지는 포함하지 않습니다. 함수가 대상에서 생성된 코드를 빌드할 때 colcon 작업 공간에서 사용자 지정 메시지 패키지를 사용할 수 있어야 합니다. 이 작업 공간을 현재 작업 디렉터리로 설정하십시오. 생성된 코드를 빌드하기 전에 사용자 지정 메시지 패키지를 시스템에 설치하거나 복사하십시오.
MATLAB Compiler
MATLAB Compiler™는 ROS 사용자 지정 메시지와
ros2genmsg
함수를 지원하지 않습니다.
팁
Microsoft® Visual Studio®를 설치할 때 Workload를 Desktop development with C++로 선택해야 합니다. 그러면 MSVC 컴파일러와 사용자 지정 메시지를 생성하는 데 필요한 모든 종속 항목이 설치됩니다.
사용자 지정 메시지 폴더의 경로가 64자를 초과하지 않도록 합니다.
Python 환경 구성이 올바른지 확인하십시오. 자세한 내용은 ROS Toolbox 시스템 요구 사항 항목을 참조하십시오.
버전 내역
R2019b에 개발됨R2022a: ROS 미들웨어 구현에 대한 지원
MATLAB에서 생성된 사용자 지정 메시지는 이제 eProsima Fast DDS 미들웨어와 Eclipse Cyclone DDS 미들웨어를 지원합니다. ROS 미들웨어 구현에 대한 자세한 내용은 Switching Between ROS Middleware Implementations 항목을 참조하십시오.
참고 항목
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)