ros0基础-day13
1、ROS通信常用API(python)
1.1、初始化API:
使用anonymous默认值
将anonymous设置为True
1.2、话题与服务相关对象
1.3、回旋函数
def spin():"""进入循环处理回调 """
1.4、时间
1.4.1、演示时间相关操作
1.4.2、持续时间
1.4.3、时间运算
t2 = t1 + du2
t2 = t1 - du2
持续时间可以相加减,时刻之间不能相加减
1.4.4、运行频率与定时器
运行频率
# 设置执行频率
rate = rospy.Rate(0.5)
while not rospy.is_shutdown():rate.sleep() #休眠rospy.loginfo("+++++++++++++++")
定时器
1.5、其他函数
节点
def is_shutdown():"""@return: True 如果节点已经被关闭@rtype: bool"""
def signal_shutdown(reason):"""关闭节点@param reason: 节点关闭的原因,是一个字符串@type reason: str"""
def on_shutdown(h):"""节点被关闭时调用的函数@param h: 关闭时调用的回调函数,此函数无参@type h: fn()"""
日志函数
2、ROS的头文件与源文件
本节主要介绍ROS的C++实现中,如何使用头文件与源文件的方式封装代码,具体内容如下:
- 设置头文件,可执行文件作为源文件;
- 分别设置头文件,源文件与可执行文件。
在ROS中关于头文件的使用,核心内容在于CMakeLists.txt文件的配置,不同的封装方式,配置上也有差异。
2.1、
自定义头文件调用
需求:设计头文件,可执行文件本身作为源文件。
流程:
1、编写头文件;
2、编写可执行文件(同时也是源文件);
3、编辑配置文件并执行。
配置CMakeLists.txt文件,头文件相关配置如下:
include_directories(
include${catkin_INCLUDE_DIRS}
)
可执行配置文件配置方式与之前一致:
add_executable(hello src/hello.cpp)add_dependencies(hello ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})target_link_libraries(hello${catkin_LIBRARIES}
)
编译执行
2.2、
自定义源文件调用
需求:设计头文件与源文件,在可执行文件中包含头文件。
流程:
1、编写头文件;
2、编写源文件;
3、编写可执行文件;
4、编辑配置文件并执行。
头文件与源文件相关配置:
include_directories(
include${catkin_INCLUDE_DIRS}
)## 声明C++库
add_library(headinclude/test_head_src/haha.hsrc/haha.cpp
)add_dependencies(head ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})target_link_libraries(head${catkin_LIBRARIES}
)
可执行文件配置:
add_executable(use_head src/use_head.cpp)add_dependencies(use_head ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})#此处需要添加之前设置的 head 库
target_link_libraries(use_headhead${catkin_LIBRARIES}
)
编译执行
3、
Python模块导入
与C++类似的,在Python中导入其他模块时,也需要相关处理。
需求:首先新建一个Python文件A,再创建Python文件UseA,在UseA中导入A并调用A的实现。
实现:
1、新建两个Python文件,使用 import 实现导入关系;
2、添加可执行权限、编辑配置文件并执行UseA。
编译执行