2

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() メソッドは引数を取らないので、ここで間違いを犯していると思います。どんな提案でも大歓迎です。

4

1 に答える 1