当前位置: 首页 > news >正文

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++实现中,如何使用头文件与源文件的方式封装代码,具体内容如下:

  1. 设置头文件,可执行文件作为源文件;
  2. 分别设置头文件,源文件与可执行文件。

在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。

编译执行

http://www.dtcms.com/a/284103.html

相关文章:

  • java之json转excel生成
  • Oracle11.2.0.4 RAC迁移升级Oracle19.3 RAC
  • R语言基础| 基本图形绘制(条形图、堆积图、分组图、填充条形图、均值条形图)
  • 规则引擎rule-engine(三)可视化api设计和实现解释
  • 解读一个大学专业——信号与图像处理
  • 2025年Java后端秋招面试的高频八股文+场景题
  • NFS、iSCSI 和lnmp部署操作
  • 深度学习之神经网络(二)
  • 神经网络常见激活函数 15-B-SiLU 函数
  • OCR 赋能档案数字化:让沉睡的档案 “活” 起来
  • 无线充电技术详解:原理、芯片选型与应用场景
  • Android开发中Retrofit使用方法与底层原理详解
  • 学习设计模式《十八》——备忘录模式
  • 第5天 | openGauss中一个用户可以访问多个数据库
  • 数据分析:从数据到决策的核心逻辑与实践指南
  • 微信小程序地理定位功能
  • SLG 游戏如何进行防破解和防盗版保护?
  • 从 SEO 到 GEO:解锁 AI 时代的搜索优化新机遇
  • 数据结构:集合操作(Set Operations): 并集(Union)、交集(Intersection)、 差集(Difference)
  • HTTP相关知识
  • os.path 常用的使用方法
  • 高光谱相机有多少种类型?分别有什么特点?
  • Odoo最佳业务实践:从库存管理重构到全链路协同
  • 【数据结构】链表(linked list)
  • slot=“trigger“ 覆盖了组件内部的 ref=“trigger“【详细来龙去脉版 5min】
  • 网络服务(设置邮箱发送告警功能,每1分钟发送一封邮件)
  • CMake综合学习1: Cmake的模块化设计
  • vue3实现web端和小程序端个人签名
  • 《迭代器 VS 生成器:Python 惰性计算的两种实现方案详解》
  • Zabbix 分布式监控系统架构设计与优化