Я пытаюсь написать драйвер проигрывателя, который будет публиковать сообщения в 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() не принимает аргументов, я считаю, что здесь я делаю некоторую ошибку. Любые предложения приветствуются.