ROS API

  1. init 函数

    1
    2
    //有3个重载,常用以下
    void ros::init(int &argc, char **argv, const std::string &name, uint32_t options = 0U)
    作用: 初始化ROS系统,并创建一个节点,节点名称为name
    argc 参数个数
    argv 参数数组,需要符合ros的特定格式
    name 节点名称,默认为argv[0],不允许重复
    options ROS中同一个节点不能重复启动,此时可以通过options选项来设置是否允许重复启动,原理是在节点名称后加上生成随机数字尾缀。使用方法:ros::init_options::AnonymousName
    使用细节
  2. 发布对象

    1
    2
    3
    4
    //使用示例
    ros::Publisher pub = nh.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel",1000);
    //函数原型
    inline ros::Publisher ros::NodeHandle::advertise<std_msgs::String>(const std::string &topic, uint32_t queue_size, bool latch = false)
    作用: 创建发布者对象
    模板 被发布者的消息类型
    topic 话题名称
    queue_size 缓存消息个数,如果满了丢弃之前的
    latch 如果为ture,会保存发布方的最后一条消息,并且当新的订阅者连接到发布方时,发布方会将这条信息发送给订阅者。应用场景:静态地图
    使用细节
  3. 回旋函数
    有回调就伴随着回旋

    1
    2
    void ros::spin()
    void ros::spinOnce()
    作用: 处理回调函数
    spin() 是进入了循环执行回调函数,进入循环后不会自己退出,在 ros::spin() 后的语句不会执行到
    spinOnce() 只会执行一次回调函数(没有循环),ros::spinOnce() 后的语句可以执行
  4. 时刻
    参考系1970年1月1日0时0分0秒

    1
    2
    3
    4
    ros::Time::now()
    //now() 返回一个ros::Time对象,表示当前时间
    //ros::Time::now().toSec()
    //ros::Time::now().sec
  5. 定时器

    1
    2
    ros::Timer timer = nh.createTimer(ros::Duration(0.5),doSomeThing,true);//只执行一次

    https://support.3dsystems.com/s/article/OpenHaptics-for-Linux-Developer-Edition-v34?language=en_US