ROS でメッセージをパブリッシュする Player ドライバーを作成しようとしています。
プレーヤー ドライバーは実行可能ファイルを作成しないため、プレーヤー ドライバー内で 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() メソッドは引数を取らないので、ここで間違いを犯していると思います。どんな提案でも大歓迎です。