ROS1-基于python的简单实现过程记录
1. 前言
砚上三五笔,落墨鹧鸪啼
本文用于记录:ROS启动初级-中级-高级
如有不对,欢迎评论区指正!
2. 正文
2.1 创建环境+话题发布接收
mkdir my_ws/src
cd my_ws
caikin_init_workspace
cd src
catkin_create_pkg topic_pkg rospy rosmsg roscpp # 创建功能包
cd topic_pkg
mkdir scripts # 存放脚本python文件
vim publisher.py
chmod +x publisher.py # 可执行文件的形式
vim subscriber.py
chmod +x subscriber.py # 可执行文件的形式
cd my_ws
catkin build topic_pkg -DPYTHON_EXECUTABLE/usr/bin/python3 # 编译
rosrun topic_pkg publisher.py # 包名 文件名
其中 publisher.py :
#! /sur/bin/env python
import rospy
from std_msgs.msg import String #发布的消息类型
"""
使用python实现消息发布:
1.导包
2.初始化ROS节点
3.创建发布者对象
4.编写发布逻辑并发布数据
"""
if __name__=="__main__":
#2.初始化ROS节点
rospy.init_node("publisher")
#3.创建发布者对象
pub = rospy.Publisher("topic-1",String,queue_size=10)
#4.编写发布逻辑并发布数据
msg = String()
#指定发布频率
rate = rospy.Rate(1)
#设置计数器
count = 0
#使用循环发布数据
while not rospy.is_shutdown():
count += 1
msg.data = "hello" + str(count)
#发布数据
pub.publish(msg)
#日志输出
rospy.loginfo("发布的数据是:%s",msg.data)
#延迟一秒
rate.sleep()
其中subscriber.py:
#! /sur/bin/env python
import rospy
from std_msgs.msg import String #发布的消息类型
"""
使用python实现消息订阅:
1.导包
2.初始化ROS节点
3.创建订阅者对象
4.编写回调函数处理数据
5.spin()
"""
def doMsg(msg):
rospy.loginfo("我订阅的数据:%s",msg.data)
if __name__=="__main__":
#2.初始化ROS节点
rospy.init_node("subscriber")
#3.创建订阅者对象
sub = rospy.Subscriber("topic-1",String,doMsg,queue_size=10)
#4.编写回调函数处理数据
#5.spin()
rospy.spin()
2.2 创建launch文件
原因:launch文件相当于可以一次性启动包内的多个节点,或者不同包的节点
在pkg的下一级目录下新建launch文件夹,并新建topic_launch.launch文件,类型为xml

cd topic_pkg
mkdir launch
vim topic_launch.launch # 创建文件
chmod +x topic_launch.launch # 可执行文件
roslaunch topic_pkg topic_launch.launch # 运行代码
launch.launch文件的内容:
<launch>
<node pkg="topic_pkg" name="Publisher" type="publisher.py" output="screen"/>
<node pkg="topic_pkg" name="Subscriber" type="subscriber.py" output="screen"/>
</launch>
其中pkg为包名,name为随便名字,type为节点,output为控制条调试输出,不加即不进入调试状态,ns是命名空间,这里没写
3. 后记
To be continued.......

浙公网安备 33010602011771号