ros自定义msg记录

自定义msg

ros 版本:kinetic
自定义test包的文件结构如下

|-- test
|   |-- CMakeLists.txt
|   |-- msg
|   |   `-- Complex.msg
|   |-- package.xml
|   |-- scripts
|   |   |-- message_publisher.py
|   |   `-- message_subscriber.py

1. 定义msg文件

Complex.msg #通常大写字母开头

float32 real
float32 imaginary

2. 修改 package.xml

向其中添加如下信息,首先是<build_depend>message_generation</build_depend><exec_depend>message_runtime</exec_depend>;其次,需要使用那些包就添加进去,例如 std_msgsroscpp

  <buildtool_depend>catkin</buildtool_depend>
  <build_depend>rospy</build_depend>
  <build_export_depend>rospy</build_export_depend>
  <build_depend>message_generation</build_depend>
  <build_depend>std_msgs</build_depend>
  <build_depend>roscpp</build_depend>
  <exec_depend>roscpp</exec_depend>
  <exec_depend>rospy</exec_depend>
  <exec_depend>message_runtime</exec_depend>
  <exec_depend>std_msgs</exec_depend>

3. 修改 CMakeLists.txt

find_package(catkin REQUIRED COMPONENTS
  rospy
  roscpp
  std_msgs
  message_generation
)

添加自定义的msg文件

add_message_files(
  FILES
  Complex.msg
)
## Generate added messages and services with any dependencies listed here
generate_messages(
  DEPENDENCIES
  std_msgs  # Or other packages containing msgs
)
catkin_package(
#   INCLUDE_DIRS include
#   LIBRARIES test
   CATKIN_DEPENDS rospy message_runtime std_msgs roscpp
#   DEPENDS system_lib
)
## Mark executable scripts (Python etc.) for installation
## in contrast to setup.py, you can choose the destination
catkin_install_python(PROGRAMS
  scripts/message_publisher.py
  scripts/message_subscriber.py
  DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

4. message_publisher.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import rospy
from test.msg import Complex
from random import random

rospy.init_node("message_publisher")
pub = rospy.Publisher("complex", Complex)

rate = rospy.Rate(2)

while not rospy.is_shutdown():
    msg = Complex()
    msg.real = random()
    msg.imaginary = random()
    
    pub.publish(msg)
    rate.sleep()

5. message_subscriber.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-


import rospy
from test.msg import Complex

def callback(msg):
    print("real:", msg.real)
    print("imaginary:", msg.imaginary)
    print("\n") 
     
rospy.init_node("message_subscriber")
sub = rospy.Subscriber("complex", Complex, callback)

rospy.spin()

6. 运行 catkin build

测试

roscore
rosrun test message_publisher.py
rosrun test message_subscriber.py
rqt_graph  #看一下 ros 节点图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值