ROS学习笔记5:常用API和模块导入

前言

本人ROS小白,利用寒假时间学习ROS,在此以笔记的方式记录自己每天的学习过程。争取写满15篇(5/15)。
环境:Ubuntu20.04、ROS1:noetic
环境配置:严格按照下方学习链接的教程配置,基本一次成功。
学习链接:【Autolabor初级教程】ROS机器人入门
对应链接文档:ROS机器人入门课程《ROS理论与实践》
笔记绝大部分代码使用Python语言编写。
本期关键词:初始化,话题服务,时间,Python模块导入

常用API

初始化API

  1. 初始化API我们在编写节点时都会用到:
rospy.init_node("turtle_cir")

大多情况下只使用了“name"这个参数,接下来介绍另外两个常用的参数,先看看init_node的定义:

def init_node(name, argv=None, anonymous=False, log_level=None, disable_rostime=False, disable_rosout=False, disable_signals=False, xmlrpc_port=0, tcpros_port=0):

具体的定义内容很长,这里就不列举了。
2. 常用的大概就是前三个:name, argv=None, anonymous=False
3. name就是节点名称,节点名称中不能包含’/'字符。
4. argv使用时不用在代码里单独列写,只需要在执行rosrun指令时添加参数即可:(注意添加参数的格式,_:=,执行指令后可通过rosparam listrosparam get 参数名来查看)

rosrun helloworld demo_pub.py _A:=100
  1. anonymous使用时需要令anonymous=True,此时程序会为节点名称后缀随机编号,能保证节点名称的唯一性,在多个终端同时执行同一指令时不会报错。
rospy.init_node("talker_pub",anonymous=True)

# 在两个终端同时运行该py文件,再通过rosnode list查看,结果如下:
/rosout
/talker_pub_219549_1706194705863
/talker_pub_219598_1706194710878

话题服务API

  1. rospy.Publisherlatch参数:默认是False,设置成True后,发布方发送的最后一条消息会被保存,当新的订阅方订阅该话题时,将最后一条消息发送给订阅方。可以用在发送雷达地图数据上。建好图后,地图数据都是一样的,循环发送没有意义。可以令latch=True,如果有新的订阅者则发送。
  2. latch是我目前遇到比较常见的参数,其他函数可以在VScode中“转到定义”查看。

回旋函数API

Python中只有rospy.spin(),作用是循环处理回调函数

时间API

1.获取时刻
  • rospy.Time.now()是获取当前时间
  • rospy.Time(时间)是设置时间,基准是1970年1月1日 00:00:00
#! usr/bin/env python

import rospy

if __name__=="__main__":
    rospy.init_node("time_test")
    right_now

你可能感兴趣的:(ROS学习笔记5:常用API和模块导入)