我正在尝试编写一个将在 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();
}
}
播放器驱动程序编译并创建一个共享库,我有一个 cfg 文件。它由“player playerdriver.cfg”调用并且工作正常,连接到播放器客户端但它不会在 ROS 上发布消息。
由于 Player Main() 方法不接受参数,我相信这是我做错的地方。欢迎任何建议。