test(包名)/scripts/file_name.py
小点的脚本放在这里去运行。如果程序大了又不可避免的搞一个功能包
__init__.py 文件的作用是将文件夹变为一个Python模块,Python 中的每个模块的包中,都有__init__.py 文件。
通常__init__.py 文件为空,但是还可以为它增加其他的功能。在导入一个包时,实际上是导入了它的__init__.py文件。这样我们可以在__init__.py文件中批量导入所需要的模块,而不再需要一个一个的导入。
__init__.py中还有一个重要的变量,__all__, 它用来将模块全部导入。
# __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
节点相关
话题发布
信息发布
时钟类
string state
float x
float y
自定义一个信息的类型
find_package(catkin REQUIRED COMPONENTS
rospy
std_msgs
message_generation
)
add_message_files(
FILES
gps.msg
)
generate_messages(DEPENDENCIES std_msgs)
编写一个CMakeLists.txt
<build_depend>message_generation</build_depend>
<run_depend>message_runtion</run_depend>
package.xml
对创建的msg进行catkin_make会在:
~/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/
路径中中。
https://blog.csdn.net/weixin_44682965/article/details/107748350
https://github.com/ros/ros_comm/tree/lunar-devel/tools
https://www.cnblogs.com/Lands-ljk/p/5880483.html
联系客服