質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

3864閲覧

あるソースファイルから同じパッケージ配下の.msgファイルを include する方法はありますか?

YUKI007

総合スコア10

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/07/12 09:43

前提・実現したいこと

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

どなたか解決法をわかる方いらっしゃいましたら,教えていただけると幸いです.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ROSについては良く知りませんが、察するに CMake で MyMessage.msg から MyMessage.h を作成する仕組みかと思います。となると、 #include に失敗する原因は MyMessage.h ではなく Mymessage.h をインクルードしようとしているからではないでしょうか?

投稿2020/07/13 04:50

kazatsuyu

総合スコア158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問