内置的信息支持
MATLAB®支持一个大型ROS消息类型库。本主题介绍了MATLAB如何通过描述消息结构、ROS消息的限制和支持的ROS数据类型来处理ROS消息。请参阅本文末尾的内置消息类型的完整列表。
有关ROS 2消息的信息,请参见使用基本ROS 2消息.
ROS的消息
在MATLAB中,ROS消息被存储为消息结构或消息对象。消息结构是推荐的格式,因为在执行初始创建、从rosbag文件读取对象、访问嵌套属性以及在ROS网络上执行通信操作时,消息结构比对象具有更好的性能。此外,通过消息结构生成代码时,消息结构是惟一受支持的消息格式MATLAB编码器™.有关MATLAB中ROS消息的更多信息,请参见处理基本ROS消息.
ROS消息结构
ROS消息结构存储为MATLAB结构数据类型,其中包含基于消息类型的字段。每种消息类型都有一组特定的字段及其对应的值,分别存储和访问这些字段。您可以单独指向和修改每个字段。的MessageType
字段包含作为字符向量的消息类型。你也可以使用rosShowDetails
函数查看消息的内容。
这是一个例子“geometry_msgs /点”
,在MATLAB中创建使用rosmessage
.它包含三个字段,对应于XYZ坐标中的一个3- d点。
pointMsg = rosmessage (“geometry_msgs /点”,“Dataformat”,“结构”)
pointMsg = struct with fields: MessageType: 'geometry_msgs/Point' X: 0 Y: 0 Z: 0
方法可以访问和修改每个字段pointMsg
结构。
pointMsg。Y = 2
pointMsg = struct with fields: MessageType: 'geometry_msgs/Point' X: 0 Y: 2 Z: 0
ROS消息对象
对于ROS消息对象,应用句柄对象的所有规则,包括复制、修改和其他性能考虑因素。有关句柄对象的更多信息,请参见处理对象的行为.每个句柄都指向该特定消息的对象,该对象包含与该消息类型相关的信息。消息类型对于它所包含的数据有一个内置结构。
ROS消息以类似于结构数组的方式存储与该消息类型相关的数据。每种消息类型都有一组特定的属性及其对应的值,分别存储和访问这些值。您可以单独指向和修改每个属性。的MessageType
属性包含作为字符向量的消息类型。你也可以使用showdetails
函数查看消息的内容。
这是一个例子“geometry_msgs /点”
,在MATLAB中创建使用rosmessage
.它包含三个属性,对应于XYZ坐标中的一个3- d点。
pointMsg = rosmessage (“geometry_msgs /点”)
pointMsg = ROS带有属性的点消息:MessageType: 'geometry_msgs/Point' X: 0 Y: 0 Z: 0使用showdetails显示消息的内容
属性可以访问和修改每个属性pointMsg
句柄。
pointMsg。Y = 2
pointMsg = ROS带有属性的点消息:MessageType: 'geometry_msgs/Point' X: 0 Y: 2 Z: 0使用showdetails显示消息的内容
ROS消息的局限性MATLAB
由于ROS消息使用独立的属性,因此不能验证具有多个值的某些消息。因为每个值都可以单独设置,所以消息不会将属性作为一个整体进行验证。例如,四元数消息包含w,x,y,z属性,但该消息并不强制四元数作为一个整体是有效的。在修改属性时,应该确保维护该消息所需的规则。
消息属性还可以具有各种数据类型。MATLAB使用ROS设置的规则来确定这些数据类型。但是,如果要在计算中使用它们,则可能必须将数据类型转换为另一个值。ROS数据类型不能直接转换为MATLAB数据类型。有关ROS数据类型及其MATLAB等效内容的详细列表,请参见ROS数据类型转换.
ROS数据类型转换
ROS消息类型具有预定的属性和这些属性值的数据类型。这些数据类型必须映射到MATLAB数据类型才能在MATLAB中使用。下表总结了如何将ROS数据类型转换为MATLAB数据类型。
ROS数据类型 | 描述 | MATLAB |
---|---|---|
保龄球 |
布尔/无符号8位整数 |
|
int8 |
签署了8位整数 |
|
uint8 |
Unsigned 8位整数 |
|
int16 |
签署了16位整数 |
|
uint16 |
16位无符号整数 |
|
int32 |
签署了32位整数 |
|
uint32 |
32位无符号整数 |
|
int64 |
签署了64位整数 |
|
uint64 |
未签名的64位整数 |
|
float32 |
32位IEEE浮点数 |
|
float64 |
64位IEEE浮点数 |
|
字符串 |
ASCII字符串(仅限utf-8) |
|
时间 |
秒和纳秒为带符号的32位整数 |
|
持续时间 |
秒和纳秒为带符号的32位整数 |
|
支持消息
下面是按字母顺序排列的支持ROS软件包列表。包可以包含消息类型、服务类型或操作类型。
要获取支持的消息类型的完整列表,请调用rosmsg列表
在MATLAB命令窗口中。
ROS工具箱支持ROS Indigo和Hydro平台,但您自己的ROS安装可能有不同的消息版本。要覆盖当前消息目录,可以使用ROS自定义消息支持以生成新的消息定义。
指定消息类型时,输入字符向量必须与中列出的字符向量匹配rosmsg列表
完全正确。为了使用自定义消息类型,MATLAB还提供了一个自定义消息支持包。有关更多信息,请参见ROS自定义消息支持.
Ackermann_msgs actionlib actionlib_msgs actionlib_tutorials adhoc_communication app_manager applanix_msgs ar_track_alvar arbotix_msgs ardrone_autonomy asmach_tutorials audio_common_msgs axis_camera base_local_planner baxter_core_msgs baxter_maintenance_msgs bayesian_belief_networks blob bond brics_actuator bride_tutorials bwi_planning bwi_planning_common calibration_msgs capabilities clearpath_base cmvision cob_base_drive_chain cob_camera_sensors cob_footprint_observer cob_grasp_generationCob_kinematics cob_light cob_lookat_action cob_object_detection_msgs cob_perception_msgs cob_phidgets cob_pick_place_action cob_relayboard cob_script_server cob_sound cob_srvs cob_tracky_controller concert_msgs control_msgs control_toolbox controller_manager_msgs costmap_2d create_node data_vis_msgs designator_integration_msgs diagnostic_msgs dna_extraction_msgs driver_base dynamic_reconfigure dynamic_tf_publisher dynamixel_controllers dynamixel_msgs epos_driver ethercat_hardwareEthercat_trigger_controllers ethzasl_icp_mapper explorer face_detector fingertip_pressure frontier_exploration gateway_msgs gazebo_msgs geographic ic_msgs geometry_msgs gps_common graft graph_msgs grasp_stability_msgs grasping_msgs grizzly_msgs handle_detector hector_mapping hector_nav_msgs hector_uav_msgs hector_worldmodel_msgs housed_objects_database_msgs hrpsy_gazebo_msgs humanoid_nav_msgs iai_content_msgs iai_kinematics_msgs iai_pancake_perception_action image_cb_detectorImage_exposure_msgs image_view2 industrial_msgs interaction_cursor_msgs interactive_marker_proxy interval_intersection jaco_msgs joint_states_settler jsk_footstep_controller jsk_footstep_msgs jsk_gui_msgs jsk_hark_msgs jsk_network_tools jsk_pcl_ros jsk_hark_msgs jsk_network_tools jsk_pcl_ros jsk_rviz_plugins jsk_topic_tools keyboard kingfish_msgs kobuki_msgs kobuki_testsuite laser_assembler laser_cb_detector leap_motion linux_hardware lizi operation_msgs map_merger map_msgs map_store mavros microstrain_3dmgx2_imuMl_classifiers mln_robosherlock_msgs mongodb_store mongodb_store_msgs monocam_settler move_base_msgs moveit_msgs moveit_simple_grasps multimaster_msgs_fkie multisense_ros nao_interaction_msgs nao_msgs nav_msgs nav2d_msgs nav2d_msgs nav2d_navigator nav2d_operator navfn network_monitor_udp nmea_msgs nodelet object_recognition_msgs octomap_msgs p2os_driver pano_ros pcl_msgs pcl_motion_msgs pr2_calibration_launch pr2_common_action_msgsPr2_controllers_msgs pr2_gazebo_plugins pr2_gripper_sensor_msgs pr2_mechanism_controllers pr2_mechanism_msgs pr2_power_board pr2_precise_trajectory pr2_self_test_msgs pr2_tilt_laser_interface program_queue ptu_control qt_tutorials r2_msgs razer_hydra rmp_msgs robot_mechanism_controllers robot_pose_ekf roboteq_msgs robotnik_msgs rocon_app_manager_msgs rocon_service_pair_msgs rocon_std_msgs rosapi rosauth rosbridge_library roscpp roscpp_tutorials roserosgraph_msgsRospy_message_converter rospy_tutorials rosruby_tutorials rosserial_arduino rosserial_msgs rovio_shared rtt_ros_msgs s3000_laser saphari_msgs scanning_table_msgs scheduler_msgs schunk_sdh segbot_gui segbot_sensors segbot_sensors segbot_msgs shared_serial sherlock_sim_msgs simple_robot_control smach_msgs sound_play speech h_recognition_msgs sr_edc_ethercat_drivers sr_robot_msgs sr_ronex_msgs sr_utilities statistics_msgs std_msgs std_srvs stdr_msgs stereo_msgsStereo_wall_detection tf tf2_msgs理论a_image_transport topic_proxy topic_tools轨迹y_msgs turtle_actionlib turtlebot_actions turtlebot_calibration turtlebot_msgs turtlesim um6 underwater_sensor_msgs universal_teleop uuid_msgs velodyne_msgs view_controller_msgs visp_camera_calibration visp_hand2eye_calibration visp_tracker visualization_msgs wfov_camera_msgs wge100_camera wifi_ddwrt wireless_msgs yocs_msgs zeroconf_msgs