前提・実現したいこと
ROSで自作のカスタムメッセージを作成する場合,メッセージを作るパッケージと呼び出すパッケージは分けるのが普通であると,あるサイトで学びました.
そこで,あるカスタムメッセージを同じパッケージから呼び出すことは可能なのでしょうか?
今回,sample_pke
というパッケージの中に,次のようにファイルを配置しました.
sample_pkg/src/msg.cpp
sample_pkg/msg/MyMessage.msg
sample_pkg/CMakeLists.txt
sample_pkg/package.xml
下記にそれぞれのファイルの中身を記します.
なお,入力の都合上,ファイルタイトル部にピリオド.
が使えなかったため,下記のファイルタイトルはピリオドだけ抜けています.実際のファイル名は上記のとおりとなっています.
msgcpp
1#include <ros/ros.h> 2#include <sample_pkg/Mymessage.h> 3 4int main(int argc, char **argv) 5{ 6 …… 7}
main.cpp 具体的な中身は,それ以前に#include <sample_pkg/Mymessage.h>
の時点でerror
となってしまっているため,ここでは省略して記しています.
MyMessagemsg
1string word 2int32 number
CMakeListstxt
1cmake_minimum_required(VERSION 3.0.2) 2project(sample_pkg) 3 4find_package(catkin 5 REQUIRED 6 COMPONENTS message_generation roscpp rospy std_msgs 7) 8 9add_message_files(FILES MyMessage.msg) 10 11generate_messages(DEPENDENCIES std_msgs) 12 13catkin_package( 14# INCLUDE_DIRS include 15# LIBRARIES sample_pkg 16 CATKIN_DEPENDS message_runtime roscpp rospy std_msgs 17# DEPENDS system_lib 18) 19 20add_executable(msg_node src/msg.cpp) 21add_dependencies(msg_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) 22target_link_libraries(msg_node ${catkin_LIBRARIES})
packagexml
1<?xml version="1.0"?> 2<package format="2"> 3 <name>sample_pkg</name> 4 <version>0.0.0</version> 5 <description>The sample_pkg package</description> 6 <maintainer email="system6@todo.todo">system6</maintainer> 7 <license>TODO</license> 8 9 <build_depend>message_generation</build_depend> 10 <exec_depend>message_runtime</exec_depend> 11 12 <buildtool_depend>catkin</buildtool_depend> 13 <build_depend>roscpp</build_depend> 14 <build_depend>rospy</build_depend> 15 <build_depend>std_msgs</build_depend> 16 17 <build_export_depend>roscpp</build_export_depend> 18 <build_export_depend>rospy</build_export_depend> 19 <build_export_depend>std_msgs</build_export_depend> 20 <exec_depend>roscpp</exec_depend> 21 <exec_depend>rospy</exec_depend> 22 <exec_depend>std_msgs</exec_depend> 23 24 </export> 25</package>
発生している問題・エラーメッセージ
~/ros/test_ws/src/sample_pkg/src/msg.cpp:13:34: fatal error: sample_pkg/Mymessage.h: そのようなファイルやディレクトリはありません compilation terminated. sample_pkg/CMakeFiles/msg_node.dir/build.make:62: ターゲット 'sample_pkg/CMakeFiles/msg_node.dir/src/msg.cpp.o' のレシピで失敗しました make[2]: *** [sample_pkg/CMakeFiles/msg_node.dir/src/msg.cpp.o] エラー 1 CMakeFiles/Makefile2:2716: ターゲット 'sample_pkg/CMakeFiles/msg_node.dir/all' のレシピで失敗しました make[1]: *** [sample_pkg/CMakeFiles/msg_node.dir/all] エラー 2 Makefile:138: ターゲット 'all' のレシピで失敗しました make: *** [all] エラー 2 Invoking "make -j4 -l4" failed
どなたか解決法をわかる方いらっしゃいましたら,教えていただけると幸いです.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。