• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

ROS学习记录④:msg消息和srv消息

人工智能 小黑鸭 3055次浏览 0个评论

msg消息和srv消息

  • 八、msg消息
    • 8.1 基本概念
    • 8.2 常见Msg消息
      • 8.2.1 std消息
      • 8.2.2 geometry消息
      • 8.2.3 sensor消息
    • 8.3 ROS消息类型对照表
    • 8.4 自定义消息
      • 8.4.1 创建 package
      • 8.4.2 创建`.msg`文件
      • 8.4.3 配置package.xml
      • 8.4.4 配置CMakeLists.txt
      • 8.4.5 编译项目
    • 8.5 校验
  • 九 srv消息

八、msg消息

 

8.1 基本概念

  msg消息 是ROS topic通讯节点间传递的内容。 msg消息描述的是业务间传递数据,也可以理解为业务间数据的抽象化。  

8.2 常见Msg消息

 

8.2.1 std消息

  std消息属于基本数据类型消息,和python类似,描述的是数字,字符串,布尔类型等。  

std_msgs/Bool std_msgs/Byte std_msgs/ByteMultiArray std_msgs/Char std_msgs/ColorRGBA std_msgs/Duration 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/Time std_msgs/UInt16 std_msgs/UInt16MultiArray std_msgs/UInt32 std_msgs/UInt32MultiArray std_msgs/UInt64 std_msgs/UInt64MultiArray std_msgs/UInt8 std_msgs/UInt8MultiArray

 

8.2.2 geometry消息

  空间数据描述  

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

 

8.2.3 sensor消息

  传感器消息  

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/Temperature sensor_msgs/TimeReference

 

8.3 ROS消息类型对照表

 

msg类型 C++对应类型 Python对应类型
bool uint8_t bool
int8 int8_t int
int16 int16_t int
int32 int32_t int
int64 int64_t int,long
uint8 uint8_t int
uint16 uint16_t int
uint32 uint32_t int
uint64 uint64_t int,long
float32 float float
float64 float float
string std:string str,bytes
time ros:Time rospy.Time
duration ros::Duration rospy.Duration

   

8.4 自定义消息

 

8.4.1 创建 package

  包名取名一般为:业务名_msgs 在package包下新建msg文件夹  

8.4.2 创建.msg文件

  在msg文件夹下创建 .msg 文件,.msg 文件就是自定义消息文件,用来描述消息格式的。 如新建 hello1.msg ,内容如下:  

string name1
int64 name2

  新建 hello2.msg,内容如下:  

string name3
hello1 name4
std_msgs/String name5
hello1[] name4

  其中 hello1.msg 和 hello2.msg 在同一个包下,可以直接 hello1 name4 ;而引用标准库,格式如下 包/类型 名 如 std_msgs/String name5 ;加中括号 [] 表示数组,含有多个数据  

8.4.3 配置package.xml

  在package.xml种添加如下配置:  

<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>

 

8.4.4 配置CMakeLists.txt

  find_package配置   在find_package添加message_generation,结果如下:  

find_package(catkin REQUIRED COMPONENTS
	roscpp
	rosmsg
	rospy
	message_generation
)

 

根据需求添加其他包,如 geometry_msgs 等

  add_message_file配置   添加add_message_file,结果如下:  

add_message_files(
	FILES
	hello1.msg
	hello2.msg
)

 

这里的 hello.msg 要和你创建的msg文件名称一致,且必须时在msg目录下,否则编译会出现问题

  generation_msg配置   添加generation_msg,结果如下:  

generate_messages(
	DEPENDENCIES
	std_msgs
)

  这个配置的作用是添加生成消息的依赖,默认的时候要添加 std_msgs,根据需求添加 geometry_msgs 等其他包   catkin_package配置   修改catkin_package,结果如下:  

catkin_package(
#  INCLUDE_DIRS include
#  LIBRARIES demo_msg
   CATKIN_DEPENDS roscpp rosmsg rospy message_runtime
#  DEPENDS system_lib
)

 

为catkin编译提供了依赖message_runtime

 

8.4.5 编译项目

 

cd 工作空间
catkin_make

  踩坑   如果编译报错,删除 devel 和 build 再重新编译  

sudo rm -rf build/
sudo rm -rf devel/
catkin_make

 

8.5 校验

 

rosmsg show hello_msgs/hello

  或者来到 devel 的 lib/python2.7/dist-package 目录下,查看是否生成和package名称相同的目录,以及目录内是否生成对应的py文件。  

九 srv消息


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明ROS学习记录④:msg消息和srv消息
喜欢 (0)

您必须 登录 才能发表评论!

加载中……