十二、ROS常用API汇总(Python)

1、rospy.init_node(name, argv, anonymous,…)

  • 作用:
    节点初始化
  • 参数:
    • name: 节点名,具有唯一性
    • argv: 默认为Node,封装节点调用时的参数
    • anonymous: 默认为False,当设置为True时,可以通过添加随机数的方式,来解决重名问题
  • 使用:
    同C++
  • 代码实现:
    rospy.init_node("turtle_control_p",anonymous=True)#解决了重名问题
    

2、pub = rospy.Publisher(“name”,data_class,latch=, queue_size=)

  • 作用:
    创建发布者对象
  • 参数:
    • name: 话题名称
    • data_class: 发布的数据类型
    • latch: 默认为False,当设置为True时,发布方会保留最后一条消息,当有新的订阅方订阅时,发送给订阅方,且只发送一次
  • 使用:
    同C++

3、rospy.spin()

  • 作用:
    用于处理回调函数
  • 注意:
    只有spin函数,没有spinOnce()函数

4、时间函数

#! /usr/bin/env python
import rospy

def doMsg(event):
    rospy.loginfo("调用回调函数的时刻:%.2f",event.current_real.to_sec())
if __name__ == "__main__":

    rospy.init_node("hello_time_p")

    #获取时刻
    begin = rospy.Time.now()#获取当前时刻,返回一个时间对象
    rospy.loginfo("当前时刻:%.2f",begin.to_sec())#浮点数
    rospy.loginfo("当前时刻:%d",begin.secs)#整数

    #设置指定时刻
    t1 = rospy.Time(12.3)#定义一个时间对象
    t2 = rospy.Time(12,234567)#定义一个时间对象,秒和毫秒拼接
    rospy.loginfo("t1=%.2f",t1.to_sec())
    rospy.loginfo("t2=%.2f",t2.to_sec())

    #从某个时刻获取时间对象
    t3 = rospy.Time.from_sec(22.4444)
    rospy.loginfo("t3=%.2f",t3.to_sec())

    #持续时间
    rospy.loginfo("休眠前——————————————————————")
    du1 = rospy.Duration(4)#创建一个持续时间对象
    rospy.sleep(du1)#休眠
    rospy.loginfo("休眠后——————————————————————")

    #持续时间与时刻的运算
    du2 = rospy.Duration(5)
    t4 = begin + du2
    rospy.loginfo("结束时刻:%.2f",t4.to_sec())

    #持续时间相加减
    du_sum = du1 + du2
    rospy.loginfo("持续时间相加:%.2f",du_sum.to_sec())

    #时刻之间可以相加,不可以相减

    #创建定时器
    '''
        @param period: desired period between callbacks
        @type  period: rospy.Duration
        @param callback: callback to be called
        @type  callback: function taking rospy.TimerEvent
        @param oneshot: if True, fire only once, otherwise fire continuously until shutdown is called [default: False]
        @type  oneshot: bool
    '''
    timer = rospy.Timer(rospy.Duration(2),doMsg,True)#只执行一次
    
    
    #设置运行频率
    rate = rospy.Rate(1)
    while not rospy.is_shutdown():
        rate.sleep()
        rospy.loginfo("设置运行频率")

5、节点相关函数

  • rospy.is_shutdown():
    • 作用: 判断节点是否关闭
    • 返回结果: bool值,关闭:True; 未关闭:False
  • rospy.on_shutdown(callback):
    • 作用: 关闭节点的时候,执行回调函数
    • callback: 回调函数
  • rospy.signal_shutdown(“节点已关闭”):
    • 作用: 关闭节点,并输出信息

6、日志函数

rospy.logdebug("hello,debug")  #不会输出
rospy.loginfo("hello,info")  #默认白色字体
rospy.logwarn("hello,warn")  #默认黄色字体
rospy.logerr("hello,error")  #默认红色字体
rospy.logfatal("hello,fatal") #默认红色字体
  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值