我正在尝试编写一个将在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()方法不接受参数,我相信这是我在做错的地方。欢迎任何建议。