你能解释一下这个语法吗: ros::Rate loop_rate(10);
Can you explain this syntax: ros::Rate loop_rate(10);
我正在尝试理解这行代码
ros::Rate loop_rate(10);
它似乎在创建某种对象,但这看起来像是一个函数调用,我看不到该对象的命名位置。这行代码在做什么? ros中的loop_rate是什么我懂,但是我是c++新手,不懂语法
#include "ros/ros.h"
#include "std_msgs/String.h"
#include <sstream>
int main(int argc, char **argv)
{
ros::init(argc, argv, "talker");
ros::NodeHandle n;
ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000);
ros::Rate loop_rate(10);
int count = 0;
while (ros::ok())
{
std_msgs::String msg;
std::stringstream ss;
ss << "hello world " << count;
msg.data = ss.str();
ROS_INFO("%s", msg.data.c_str());
chatter_pub.publish(msg);
ros::spinOnce();
loop_rate.sleep();
++count;
}
return 0;
}
没什么险恶的。
事实上,这是一个非常简单的变量声明。
类型为 ros::Rate
,名称为 loop_rate
,唯一的构造函数参数为 10
。
它看起来确实有点像函数调用,但它不是。 (它看起来也有点像函数声明,一不小心就can cause problems!)
就像:
std::string str("Hi!");
或:
Rectangle rect(10, 5);
甚至:
int x(42);
在built-ins的情况下,我们很多人倾向于使用old-style copy-initialisation代替:
int x = 42;
…虽然这对大多数 class 类型来说不太可行。
您可能需要查看 your C++ book 中的声明语法吗?
Rate
是ros/ros.h
中包含的一种类型,用于给出任务的特定时间段。
因此它被写成:
ROS:: Rate variable_name(time_delay_HZ);
你可以给他们给你的变量起任何名字 loop_rate
你可以给任何时间延迟 HZ
(10HZ=100ms
).
我正在尝试理解这行代码
ros::Rate loop_rate(10);
它似乎在创建某种对象,但这看起来像是一个函数调用,我看不到该对象的命名位置。这行代码在做什么? ros中的loop_rate是什么我懂,但是我是c++新手,不懂语法
#include "ros/ros.h"
#include "std_msgs/String.h"
#include <sstream>
int main(int argc, char **argv)
{
ros::init(argc, argv, "talker");
ros::NodeHandle n;
ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000);
ros::Rate loop_rate(10);
int count = 0;
while (ros::ok())
{
std_msgs::String msg;
std::stringstream ss;
ss << "hello world " << count;
msg.data = ss.str();
ROS_INFO("%s", msg.data.c_str());
chatter_pub.publish(msg);
ros::spinOnce();
loop_rate.sleep();
++count;
}
return 0;
}
没什么险恶的。
事实上,这是一个非常简单的变量声明。
类型为 ros::Rate
,名称为 loop_rate
,唯一的构造函数参数为 10
。
它看起来确实有点像函数调用,但它不是。 (它看起来也有点像函数声明,一不小心就can cause problems!)
就像:
std::string str("Hi!");
或:
Rectangle rect(10, 5);
甚至:
int x(42);
在built-ins的情况下,我们很多人倾向于使用old-style copy-initialisation代替:
int x = 42;
…虽然这对大多数 class 类型来说不太可行。
您可能需要查看 your C++ book 中的声明语法吗?
Rate
是ros/ros.h
中包含的一种类型,用于给出任务的特定时间段。
因此它被写成:
ROS:: Rate variable_name(time_delay_HZ);
你可以给他们给你的变量起任何名字 loop_rate
你可以给任何时间延迟 HZ
(10HZ=100ms
).