ROS API
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 使用细节 发布对象
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,会保存发布方的最后一条消息,并且当新的订阅者连接到发布方时,发布方会将这条信息发送给订阅者。应用场景:静态地图 使用细节 回旋函数
有回调就伴随着回旋1
2void ros::spin()
void ros::spinOnce()作用: 处理回调函数 spin() 是进入了循环执行回调函数,进入循环后不会自己退出,在 ros::spin() 后的语句不会执行到 spinOnce() 只会执行一次回调函数(没有循环),ros::spinOnce() 后的语句可以执行 时刻
参考系1970年1月1日0时0分0秒1
2
3
4ros::Time::now()
//now() 返回一个ros::Time对象,表示当前时间
//ros::Time::now().toSec()
//ros::Time::now().sec定时器
1
2ros::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