【ROS记录基础五】自用 / 常用API / init_node() / Publisher() / spin() / Time() / Duration() / Timer() / log()

目录

致谢:ROS赵虚左老师

一、【自带工具】topic_tools

二、【基本消息类型】common_msgs

三、【C++接口】roscpp

1.初始化ros::init() 

2.发布函数ros::Publisher <参数> = nh.advertise()

3.回调函数ros::spin()

4.时间函数ros::Time()

5.持续时间:ros::Duration()

6.时间运算

7.定时器ros::Timer()

8.节点状态ros::ok()  | rospy.shutdown()

9.输出日志函数ROS_INFO()

四、【Python接口】rospy

1.初始化rospy.init_node()

2.发布函数rospy.Publisher()

3.回调函数rospy.spin()

4.时间函数rospy.Time.now()

5.持续时间rospy.Duration()

6.时间运算

7.定时器rospy.Timer()

8.节点状态rospy.is_shutdown()

9.输出日志函数rospy.loginfo()


致谢:ROS赵虚左老师

Introduction · Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程

参考赵虚左老师的实战教程

【ROS官方API文档】http://wiki.ros.org/APIs

Ctrl + Shift + B    # Vscode快速编译C++

一、【自带工具】topic_tools

ROS的自带工具说明

【topic_tools官网】http://wiki.ros.org/topic_tools

二、【基本消息类型】common_msgs

 【commom_msgs官网】

三、【C++接口】roscpp

【roscpp官网】https://docs.ros.org/en/api/roscpp/html/ 

1.初始化ros::init() 

void init(int &argc, char **argv, const std::string& name, uint32_t options = 0);


该函数可以解析并使用节点启动时传入的参数(通过参数设置节点名称、命名空间...) 
该函数有多个重载版本,如果使用NodeHandle建议调用该版本。 
\param argc 参数个数
\param argv 参数列表
\param name 节点名称,需要保证其唯一性,不允许包含命名空间
\param options 节点启动选项,被封装进了ros::init_options

2.发布函数ros::Publisher <参数> = nh.advertise()

主要是ros::nodehandle节柄

Publisher advertise(const std::string& topic, uint32_t queue_size, bool latch = false)

\brief 根据话题生成发布对象
在 ROS master 注册并返回一个发布者对象,该对象可以发布消息

使用示例如下:
ros::Publisher pub = handle.advertise<std_msgs::Empty>("my_topic", 1);
\param topic 发布消息使用的话题
\param queue_size 等待发送给订阅者的最大消息数量
\param latch (optional) 如果为 true,该话题发布的最后一条消息将被保存,并且后期当有订阅者连接时会将该消息发送给订阅者
\return 调用成功时,会返回一个发布对象

3.回调函数ros::spin()

ROSCPP_DECL void spin();

进入循环处理回调 


ROSCPP_DECL void spinOnce();

 \brief 处理一轮回调
 一般应用场景:
 在循环体内,处理所有可用的回调函数

4.时间函数ros::Time()

5.持续时间:ros::Duration()

6.时间运算

7.定时器ros::Timer()

回旋函数cb :里面的时间事件TimerEvent

8.节点状态ros::ok()  | rospy.shutdown()

9.输出日志函数ROS_INFO()

  • DEBUG(调试):只在调试时使用,此类消息不会输出到控制台;
  • INFO(信息):标准消息,一般用于说明系统内正在执行的操作;
  • WARN(警告):提醒一些异常情况,但程序仍然可以执行;
  • ERROR(错误):提示错误信息,此类错误会影响程序运行;
  • FATAL(严重错误):此类错误将阻止节点继续运行。
ROS_DEBUG()
ROS_INFO()
ROS_WARN()
ROS_ERROR()
ROS_FATAL()

四、【Python接口】rospy

【rospy官网】http://docs.ros.org/en/api/rospy/html/

ros官方暂时还未维护好....... 

1.初始化rospy.init_node()

2.发布函数rospy.Publisher()

3.回调函数rospy.spin()

和C++一样的

4.时间函数rospy.Time.now()

time1 = rospy.Time(100)  设置时间 

5.持续时间rospy.Duration()

6.时间运算

7.定时器rospy.Timer()

回调函数: 是一个事件event

定时器:

My_Timer = rospy.Timer(<间隔时间>, <回调函数>, <是否一次性>)

8.节点状态rospy.is_shutdown()

判断节点状态:
rospy.is_shutdown()

关闭节点:
rospy.signal_shutdown("注释")

关闭节点且执行回调函数:
rospy.on_shutdown(<回调函数>)

9.输出日志函数rospy.loginfo()

  • DEBUG(调试):只在调试时使用,此类消息不会输出到控制台;
  • INFO(信息):标准消息,一般用于说明系统内正在执行的操作;
  • WARN(警告):提醒一些异常情况,但程序仍然可以执行;
  • ERROR(错误):提示错误信息,此类错误会影响程序运行;
  • FATAL(严重错误):此类错误将阻止节点继续运行。
rospy.logdebug("hello,debug")    # 不会输出
rospy.loginfo("hello,info")      # 默认白色字体
rospy.logwarn("hello,warn")      # 默认黄色字体
rospy.logerr("hello,error")      # 默认红色字体
rospy.logfatal("hello,fatal")    # 默认红色字体

2023.11.10-12

渝北仙桃数据谷

猜你喜欢

转载自blog.csdn.net/Akaxi1/article/details/134316552