首先打开终端输入
mkdir pub_sub1_ws
创建一个名为pub_sub1_ws的文件夹
再输入
cd pub_sub1_ws/
进入名为pub_sub1_ws的文件夹
输入
mkdir src
创建src文件
输入
catkin_make
创造工作空间
输入
cd src
进入名为src的文件夹
输入
catkin_create_pkg pub_sub1 roscpp rospy std_msgs
创建功能包
输入
cd pub_sub1/
进入名为pub_sub1的文件夹
输入
mkdir scripts
创建一个名为scripts的文件夹
输入
mkdir msg
创建一个名为msg的文件夹
输入
cd msg
进入名为msg的文件夹
输入
touch Person.msg
创建名为Person的msg文件(Msg:描述ROS messages内容的简单text文件,它们用来生成不同语言的messages源码)
连续
cd ..
进入到~/pub_sub1_ws目录 输入
code .
进入到vs code
找到pub_sub1_ws文件下的src文件下的pub_sub1文件下的msg文件下的Person.msg
输入
string name
uint16 age
float64 height
然后修改pub_sub1目录下的CMakeLists.txt文件
在以下行代码中
加入
message_generation
使其成为
更改代码
使其成为
## Generate messages in the 'msg' folder
add_message_files(
FILES
Person.msg
)
修改以下行代码
删除注释使之成为
找到以下代码
加入
CATKIN_DEPENDS roscpp rospy std_msgs message_runtime
使其成为
然后Ctrl+s!!!!!保存
找到pub_sub1目录下的package.xml文件
找到以下代码
在文件里增加编译依赖项和运行依赖项如下
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
使之成为
Ctrl+Shift+B 运行catkin_make:build
显示以下即为成功
在srcipts文件下新建两个python文件
右键scripts点击新建文件命名为
pub.py
和
sub.py
pub.py中复制以下内容
#!/usr/env/bin python
import rospy
from pub_sub1.msg import Person
if __name__ == '__main__':
rospy.init_node('pub')
pub= rospy.Publisher('info',Person,queue_size=10)
Info = Person()
Info.name = "潘富"
Info.age = 38
Info.height = 1.75
rate = rospy.Rate(1)
while not rospy.is_shutdown():
pub.publish(Info)
rospy.loginfo('发布的消息是:%s,%d,%2f',Info.name,Info.age,Info.height)
rate.sleep()
sub.py中复制以下内容
#!/usr/env/bin python
import rospy
from pub_sub1.msg import Person
def doMsg(info):
rospy.loginfo('发布的消息是:%s,%d,%2f',info.name,info.age,info.height)
if __name__ == '__main__':
rospy.init_node('sub')
sub=rospy.Subscriber('info',Person,doMsg,queue_size=10)
rospy.spin()
修改pub_sub1目录下的CMakeLists.txt文件
输入
scripts/pub.py
scripts/sub.py
使之成为
Ctrl+Shift+B 运行catkin_make:build
打开新的终端运行
roscore
如已经运行则跳过此步
打开新的终端运行
source ./devel/setup.bash
然后运行
rosrun pub_sub1 pub.py
打开新的终端运行
source ./devel/setup.bash
然后运行
rosrun pub_sub1 sub.py
即可出现以下结果