ROS サービス通信について質問
解決したいこと
ROSをC++でやっていて,サービス通信のところで詰まったので助けてほしいです.
分からない事が3つあって,
1.pythonでいうrospy.wait_for_serviceをc++での書き方.
2.作ったサービスの呼び出し方.
3.CMakeLists.txtでのサービスを使用したノードの登録の仕方.
1. wait_for_service
bool ros::service::waitForService(const std::string& motor_on, int 32_t timeout)
{
return waitForService(パッケージ名, ros::Duration(timeout / 1000.0));
}
上のコードの様にwait_for_serviceを書いているんですが,あってますでしょうか?
2.サービスの呼び出し
サービスサーバー↓
ros::ServiceServer srv_on = nh.advertiseService("motor_on", &Motor::callback_on, this);
callback_onの部分は下のコードです.
bool callback_on(std_srvs::TriggerRequest& req, std_srvs::TriggerResponse& resp)
{
resp = onoff_response(true);
return resp.success;
}
サービスクライアント↓
ros::ServiceClient client_1 = nh.serviceClient<std_srvs::Trigger>("motor_on");
呼び出し↓
std_srvs::Trigger srv;
client_1.call(srv);
3.CMakeListsでの登録方法
add_executable(motor_freq src/ノード名.cpp)
target_link_libraries(motor_freq ${catkin_LIBRARIES})
add_dependencies(motor_freq ${myros}_generate_messages_cpp)
こんな感じで書いたんですがadd_dependenciesの部分でエラーが発生して,何度か違う書き方で試しても同じエラーが出続けて困ってます.
エラー内容と試したこと
・試したこと
add_dependencies(ノード名 ${PROJECT_NAME}_gencpp)
add_dependencies(ノード名 ${パッケージ}_gencpp)
add_dependencies(ノード名 パッケージ名_gencpp)
特に3つ目のCMakeについて詳しい方がいましたらアドバイ欲しいです.