写这篇博客的初衷是因为在我上一篇所写的《同时在一个节点中订阅多个topic并发布消息》,有小伙伴评论和私信问的最多的就是,如何用python去实现一个ROS节点的问题,那么这就来啦!

编写一个简单的发布器和订阅器。

1.创建工作空间

首先建立文件夹,再在该目录下建立子目录,然后cd到这个子目录中去,运行下列代码(创建工作包):

catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

2.编写发布器和订阅器

进入之前创建的beginner-tutorials包,代码如下:

roscd beginner_tutorials

创建scripts目录存放Python代码,代码如下:

mkdir scripts
cd scripts

下载例子脚本talker.py到scripts目录,并修改权限为可执行(发布节点),代码如下:

wget https://raw.github.com/ros/ros_tutorials/kinetic-devel/rospy_tutorials/001_talker_listener/talker.py
chmod +x talker.py

下载listener.py到scripts目录,并修改权限为可执行(订阅节点),代码如下:

wget https://raw.github.com/ros/ros_tutorials/kinetic-devel/rospy_tutorials/001_talker_listener/listener.py
chmod +x listener.py

构建节点:

cd ~/hello_rospy
catkin_make

3.测试发布器和订阅器

启动发布器,打开终端输入:

roscore

(这一步是为了确保咱roscore可以用嗷)

再打开新的终端,输入:

cd ~/hello_rospy
source ./devel/setup.bash
rosrun beginner_tutorials talker.py

(如果使用catkin,要确保你在调用catkin-make后,且在你运行自己程序之前,已经source了catkin工作空间下的setup.sh文件!)

这个时候你就会看到以下信息:

[INFO] [1534388269.223655]: hello world 1534388269.2233906
[INFO] [1534388269.323618]: hello world 1534388269.3233504
[INFO] [1534388269.423586]: hello world 1534388269.4233208
[INFO] [1534388269.523613]: hello world 1534388269.5233488
[INFO] [1534388269.623685]: hello world 1534388269.6233852
[INFO] [1534388269.723714]: hello world 1534388269.7234194
[INFO] [1534388269.823649]: hello world 1534388269.8233697
[INFO] [1534388269.923647]: hello world 1534388269.9233446
[INFO] [1534388270.023622]: hello world 1534388270.023337
[INFO] [1534388270.123665]: hello world 1534388270.1233444
[INFO] [1534388270.223655]: hello world 1534388270.2233653
[INFO] [1534388270.323668]: hello world 1534388270.3233645
[INFO] [1534388270.423637]: hello world 1534388270.423357
[INFO] [1534388270.523678]: hello world 1534388270.5233543
[INFO] [1534388270.623646]: hello world 1534388270.6233633
[INFO] [1534388270.723670]: hello world 1534388270.723355
[INFO] [1534388270.823638]: hello world 1534388270.8233557
[INFO] [1534388270.923635]: hello world 1534388270.9233434
[INFO] [1534388271.023646]: hello world 1534388271.0233815

这个时候发布器节点已经启动运行,需要一个订阅器节点来接受发布的消息。

接下来,启动订阅器,打开一个新的终端输入:

cd ~/hello_rospy
source ./devel/setup.bash
rosrun beginner_tutorials listener.py

(友友们这里注意一下,不要直接去复制我的代码,就像这里的,“hello-rospy”是我一开始建的文件夹名称,所以你们在第一步一开始文件夹名字叫什么,你们就写什么哦)

此时你会看到以下信息:

[INFO] [1534388451.225271]: /listener_32238_1534388451115I heard hello world 1534388451.2233224
[INFO] [1534388451.325214]: /listener_32238_1534388451115I heard hello world 1534388451.3234394
[INFO] [1534388451.425159]: /listener_32238_1534388451115I heard hello world 1534388451.4234073
[INFO] [1534388451.525082]: /listener_32238_1534388451115I heard hello world 1534388451.5234268
[INFO] [1534388451.624949]: /listener_32238_1534388451115I heard hello world 1534388451.6233602
[INFO] [1534388451.724969]: /listener_32238_1534388451115I heard hello world 1534388451.723355
[INFO] [1534388451.825018]: /listener_32238_1534388451115I heard hello world 1534388451.823384
[INFO] [1534388451.925162]: /listener_32238_1534388451115I heard hello world 1534388451.923369
[INFO] [1534388452.025092]: /listener_32238_1534388451115I heard hello world 1534388452.0234113
[INFO] [1534388452.125054]: /listener_32238_1534388451115I heard hello world 1534388452.1233687

最后,到这里就结束啦!熬夜写这一个一个字打的!博客是不允许复制的qwq,所以希望可以帮助到你们解决掉问题!