ros1 简单节点demo(Python)

本文详细描述了如何将C++的ROStalker_listener_demo示例转换为Python,包括创建ROS包、编写Python节点代码、添加依赖和构建过程,以及在终端中运行节点的步骤。
摘要由CSDN通过智能技术生成

好的,下面是将 talker_listener_demo 从C++版本转换为Python版本的详细步骤和代码示例:

步骤 1:创建ROS包

在终端中执行以下命令:

catkin_create_pkg talker_listener_demo rospy std_msgs

这将在你的Catkin工作空间中创建一个名为 talker_listener_demo 的ROS包,并将 rospystd_msgs 添加为依赖项。

步骤 2:创建Python脚本

src 文件夹下创建两个Python脚本:talker.pylistener.py

cd ~/catkin_ws/src/talker_listener_demo/src
touch talker.py
touch listener.py

步骤 3:编写Python节点代码

编辑 talker.pylistener.py 文件,编写发布者节点和订阅者节点的Python代码。

talker.py:
#!/usr/bin/env python

import rospy
from std_msgs.msg import String

def talker():
    rospy.init_node('talker', anonymous=True)
    pub = rospy.Publisher('chatter', String, queue_size=10)
    rate = rospy.Rate(1) # 1 Hz
    while not rospy.is_shutdown():
        hello_str = "hello world %s" % rospy.get_time()
        rospy.loginfo(hello_str)
        pub.publish(hello_str)
        rate.sleep()

if __name__ == '__main__':
    try:
        talker()
    except rospy.ROSInterruptException:
        pass
listener.py:
#!/usr/bin/env python

import rospy
from std_msgs.msg import String

def callback(data):
    rospy.loginfo("I heard %s", data.data)

def listener():
    rospy.init_node('listener', anonymous=True)
    rospy.Subscriber('chatter', String, callback)
    rospy.spin()

if __name__ == '__main__':
    listener()

步骤 4:添加依赖项到package.xml(正常应该不需要修改)

talker_listener_demo 包的 package.xml 文件中添加以下内容:

<depend>rospy</depend>
<depend>std_msgs</depend>

步骤 5:更新CMakeLists.txt

talker_listener_demo 包的 CMakeLists.txt 文件中确保 rospystd_msgs 被正确声明为依赖项。

find_package(catkin REQUIRED COMPONENTS
  rospy
  std_msgs
)

catkin_package(
  CATKIN_DEPENDS rospy std_msgs
)

编译和运行

在Catkin工作空间中执行以下命令来编译ROS包:

cd ~/catkin_ws
catkin_make

也可以编译指定的

catkin_make --only-pkg-with-deps talker_listener_demo

然后,在两个不同的终端中分别运行发布者节点和订阅者节点:
执行前需要source一下

source ~/catkin_ws/devel/setup.bash

同时给python脚本添加执行权限

chmod +x talker.py
chmod +x listener.py

可以用下面命令查看包是否存在

rospack list|grep talker_listener_demo

有时python命令不行,需要将python命令指向python3做符号链接

sudo ln -s /usr/bin/python3 /usr/bin/python
# 首先需要启动Master
roscore

# Terminal 1: Run the talker node
rosrun talker_listener_demo talker.py

# Terminal 2: Run the listener node
rosrun talker_listener_demo listener.py

现在,你应该能够在终端中看到发布者节点发布的消息被订阅者节点成功接收并打印出来了。

提示:更多内容可以访问Clang’s Blog:https://www.clang.asia

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值