前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ROS教程-节点广播和接收自定义信息

ROS教程-节点广播和接收自定义信息

作者头像
云深无际
发布2022-04-15 08:31:54
5430
发布2022-04-15 08:31:54
举报
文章被收录于专栏:云深之无迹
代码语言:javascript
复制
test(包名)/scripts/file_name.py

小点的脚本放在这里去运行。如果程序大了又不可避免的搞一个功能包

__init__.py 文件的作用是将文件夹变为一个Python模块,Python 中的每个模块的包中,都有__init__.py 文件。

通常__init__.py 文件为空,但是还可以为它增加其他的功能。在导入一个包时,实际上是导入了它的__init__.py文件。这样我们可以在__init__.py文件中批量导入所需要的模块,而不再需要一个一个的导入。

__init__.py中还有一个重要的变量,__all__, 它用来将模块全部导入。

代码语言:javascript
复制
# __init__.py
__all__ = ['os', 'sys', 're', 'urllib']

# a.py
from package import *

这时就会把注册在__init__.py文件中__all__列表中的模块和包导入到当前文件中来。可以了解到,__init__.py主要控制包的导入行为。

ROS 通信相关的包,包括核心客户端库(roscpp、rospy、roslisp)和图自省工具(rostopic、rosnode、rosservice、rosparam)

常用的ROS命令大多数都是Python模块,源码存放在ros_comm仓库的tools路径下,每一个命令行工具(如rosbag、rosmsg)都是用模块的形式组成核心代码,然后在script/下建立一个脚本来调用。

脚本的组织形式:

test/src/test(与package同名)/init.py

test/src/test(与package同名)/modulefiles.py

test/scripts/your_script.py

test/scripts/setup.py

节点相关

话题发布

信息发布

时钟类

代码语言:javascript
复制
string state
float x
float y

自定义一个信息的类型

代码语言:javascript
复制
find_package(catkin REQUIRED COMPONENTS
  rospy
  std_msgs
  message_generation
)
add_message_files(
  FILES
  gps.msg
)
generate_messages(DEPENDENCIES std_msgs)

编写一个CMakeLists.txt

代码语言:javascript
复制
<build_depend>message_generation</build_depend>
<run_depend>message_runtion</run_depend>

package.xml

对创建的msg进行catkin_make会在:

代码语言:javascript
复制
~/catkin_ws(workspace)/devel/lib/python2.7/dist-packages/topic_demo

下生成msg模块(module),即可在Python程序中通过from test.msg import gps进行gps类型的消息的操作。

可以看到直接导入

发布的样子就是这样

首先是发布的频率,1s一下,现在给值初始化了,加入了一个字符串,工作ing~。死循环一直,打印日志,接着发送。

这是发,一定还有接收的code。

导包

这就是监听的代码,为什么是监听?其实上面的程序是无指向的乱发,只有感兴趣的才会收这个东西。

使用回调函数来把感兴趣的东西解出来

总结一下:

ROS程序中有可能有一些自定义的消息/服务/动作文件,为程序的发者所设计的数据结构,这类的文件以.msg,.srv,.action结尾,通常放在package的msg/,srv/,action/路径下。

那lunch也总结一下:

launch文件一般以.launch或.xml结尾,它对ROS需要运行程序进行了打包,通过一句命令来启动。一般launch文件中会指定要启动哪些package下的哪些可执行程序,指定以什么参数启动,以及一些管理控制的命令。launch文件通常放在软件包的launch/路径中中。

代码语言:javascript
复制
https://blog.csdn.net/weixin_44682965/article/details/107748350
代码语言:javascript
复制
https://github.com/ros/ros_comm/tree/lunar-devel/tools
代码语言:javascript
复制
https://www.cnblogs.com/Lands-ljk/p/5880483.html
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档