IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 快速记录 ros 写publisher 与 subscriber 节点 -> 正文阅读

[人工智能]快速记录 ros 写publisher 与 subscriber 节点

之前草草的“过了”下ros的基本操作,没有好好实践,这次重新记录下自己的实践主要步骤,方便下次再切换工作时快速捡起来:

此贴仅供个人参考~ 更多 直接移步 ros doc 官网

。。。。。。

工作空间: ~/catkin_ws/

代码一般放在: ~/catkin_ws/ src/

在~/catkin_ws/ src/

下面快速创建个功能包: (命令 + 包名 + 依赖包名 )

$catkin_create_pkg test_pkg_retro std_msgs rospy roscpp

$cd ../ ? ?(到工作空间 ~/catkin_ws/下?)?

$ catkin_make?

$ source ./devel/setup.bash?

$ rospack list 可以看到 这个 包了

$ roscd ?test_pkg_retro ??

$ mkdir scripts?

在scripts下书写代码(节点这些)

快速写一个发布节点,?

topic 叫:'chatting_topic'

node 名字叫:talker_node (实际启动后会随机添加后缀名,这是 ros里避免重名的操作)?

#! /usr/bin/python

from numpy import rate
import rospy
from std_msgs.msg import String


def talker():
    pub = rospy.Publisher('chatting_topic',String, queue_size=10)
    rospy.init_node('talker_node', anonymous=True)
    rate = rospy.Rate(10) # 10 hz 
    while not rospy.is_shutdown():
        hi_str = "hi this is a new publisher...%s " % rospy.get_time()
        rospy.loginfo('publish a new msg! %s' % hi_str)
        pub.publish(hi_str)
        rate.sleep()


if __name__ == "__main__":
    try:
        talker()
    except rospy.ROSInterruptException:
        pass

运行节点:

$ chmod +x talker.py ? ? ? # 这个很重要,必须确保 talker.py具有可执行权限

$rosrun test_pkg_retro talker.py?

下面快速写一个 订阅(subscrpber):

在运行发布者之后,可通过

$ rostopic echo /chatting_topic

查看topic 发布的消息

#!/usr/bin/python

import rospy
from std_msgs.msg import String


def callback_func(data):
    # data.data 
    # data is the variable passed in 
    # .data means the datatype is String 
    # rosmsg show std_msgs/String 
    # String class include one element data
    rospy.loginfo('I received the msg: %s' % data.data)



def listener_node():
    rospy.init_node('listener_node',anonymous=True)
    rate = rospy.Rate(10)
    rospy.Subscriber("chatting_topic", String, callback_func)    
    
    # this is similar to rospy.spin
    #while not rospy.is_shutdown():
    #   rate.sleep()
    
    rospy.spin()


if __name__  == "__main__":
    try:
        listener_node()
    except rospy.ROSInterruptException:
        pass

修改包内的CMakeLists.txt?

将新写的 talker 与listener 脚本名称更新上去

catkin_install_python(PROGRAMS
? ?scripts/talker.py
? ?scripts/listener.py
? ?DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

重新构建一次 ,切换到工作空间目录? ~/catkin_ws/

$catkin_make?

$ source ./devel/setup.bash?

运行订阅者

$ rosrun test_pkg_retro listener.py

如果此时关掉发布者节点,订阅者不再接收到消息,但此时通过

$rostopic pub /chatting_topic std_msgs/String "nihao"

来发布一条消息到?/chatting_topic 主题上来,订阅者则可以收到。

发布者与订阅者快速回顾完毕!

-----------------------------------------------

--------- ? ? ?新增msg的定义与使用 ----------------

在test_pkg_retro下新建 msg 文件夹并创建HelloMsg.msg空文件

写入内容:

String Name
int32 Age
float32 score

需要修改包中设置:

1)package.xml

对以下两行内容去掉注释:

  <build_depend>message_generation</build_depend>
  <exec_depend>message_runtime</exec_depend>

2)去掉注释的行,并加入“message_generation” 找到对应包

find_package(catkin REQUIRED COMPONENTS
   roscpp
   rospy
   std_msgs
   message_generation
)

3)catkin 编译的依赖:

catkin_package(
  ...
  CATKIN_DEPENDS message_runtime ... (手动加入)
  ...)

4)增加文件

add_message_files(
  FILES
  HelloMsg.msg
)

5)取消注释:

generate_messages(
  DEPENDENCIES
  std_msgs
)

在使用时:py脚本中:
?

from?test_pkg_retro.msg import HelloMsg

# 建立一个消息类型(HelloMsg)的对象
# 参数顺序与 HelloMsg.msg中的顺序相同 
data_transition = HelloMsg('cc',22,23.2)
?

?

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-03-08 22:28:33  更:2022-03-08 22:30:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 16:32:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码