我可以在播放器(播放器/舞台)驱动程序中调用ROS“ros :: init(...)”吗?

时间:2012-07-24 16:28:02

标签: ros player-stage

我正在尝试编写一个将在ROS上发布消息的播放器驱动程序。

播放器驱动程序不会创建可执行文件,因此我不确定如何在播放器驱动程序中调用ROS初始化。

玩家驱动程序的主要功能如下所示......

void PlayerDriver::Main() 
{

int argc; // Player Main() method does not take argument 
char **argv; // What to do with argc and argv??

geometry_msgs::Point commandInput;
ros::init(argc, argv, "Command");

ros::NodeHandle n;
ros::Publisher command_pub = n.advertise<geometry_msgs::Point>("servocommand", 1000);
ros::Rate loop_rate(1);

while (ros::ok())
{


ros::spinOnce();   

ProcessMessages();

//Do some stuff
commandInput.x = globalVel.v;
commandInput.y = globalVel.w;
commandInput.z = 0.0;
command_pub.publish(commandInput);

//Do some stuff

loop_rate.sleep();
}

}

Player驱动程序编译并创建一个共享库,我有一个cfg文件。 它由“player playerdriver.cfg”调用并且工作正常,连接到Player Client但它不会在ROS上发布消息。

由于Player Main()方法不接受参数,我相信这是我在做错的地方。欢迎任何建议。

1 个答案:

答案 0 :(得分:0)

看这里link。并且还要查看ROS的发布者/订阅者教程。你可以从这里开始研究 - &gt; Example publisher