前提・実現したいこと
ROSチュートリアルのシンプルな配信者(Publisher)と購読者(Subscriber)を書く(C++)とほぼ同等の内容をROS講座03 Pub & Sub 通信https://qiita.com/srs/items/26ca826802d07a9e3d4e
を参考に行いたいと思っています。
パブリッシャとサブスクライバのノードを実装し、通信を行うという演習をしています。
そこで。ビルドが通らない状況にあります。
Publisher,Subscriber,CmakeListの設定は参考サイトのサンプルプログラムをそのまま使用しています。
ワークスペース catkin_ws
catkin_wsの直下 build, devel, src, .catkin_woekspace.CATKIN_WORKSPACE
srcの直下 basic_lecture, CMakeLists.txt
basic_lectureの直下 include, src, CMakeLists.txt, package.xml
srcの直下 basic_simple_listener.cpp, basic_simple_talker.cpp
発生している問題・エラーメッセージ
ビルドを通すと、以下のような画面になります。
CMake Error at basic_lecture/CMakeLists.txt:20 (add_executable): Cannot find source file: src/basic_simple_talker.cpp Tried extensions .c .C .c++ .cc .cpp .cxx .cu .m .M .mm .h .hh .h++ .hm .hpp .hxx .in .txx .f .F .for .f77 .f90 .f95 .f03 .ispc CMake Error at basic_lecture/CMakeLists.txt:25 (add_executable): Cannot find source file: src/basic_simple_listener.cpp Tried extensions .c .C .c++ .cc .cpp .cxx .cu .m .M .mm .h .hh .h++ .hm .hpp .hxx .in .txx .f .F .for .f77 .f90 .f95 .f03 .ispc CMake Error at basic_lecture/CMakeLists.txt:20 (add_executable): No SOURCES given to target: basic_simple_talker CMake Error at basic_lecture/CMakeLists.txt:25 (add_executable): No SOURCES given to target: basic_simple_listener CMake Generate step failed. Build files cannot be regenerated correctly. make: *** [Makefile:339: cmake_check_build_system] Error 1 Invoking "make cmake_check_build_system" failed
該当のソースコード(basic_lectureの直下CMakeLists.txt,basic_simple_listener.cpp, basic_simple_talker.cpp)
basic_lectureの直下CMakeLists.txt
cmake_minimum_required(VERSION 3.0.2) project(basic_lecture) find_package(catkin REQUIRED COMPONENTS roscpp std_msgs ) #catkin_package( #INCLUDE_DIRS include #LIBRARIES basic_lecture #CATKIN_DEPENDS roscpp std_msgs #DEPENDS system_lib #) include_directories( ${catkin_INCLUDE_DIRS} ) add_executable(basic_simple_talker src/basic_simple_talker.cpp) target_link_libraries(basic_simple_talker ${catkin_LIBRARIES} ) add_executable(basic_simple_listener src/basic_simple_listener.cpp) target_link_libraries(basic_simple_listener ${catkin_LIBRARIES} )
basic_simple_listener.cpp
c++
1#include <ros/ros.h> 2#include <std_msgs/String.h> 3 4void chatterCallback(const std_msgs::String & msg) { 5 ROS_INFO("subscribe: %s",msg.data.c_str()); 6} 7 8int main(int argc, char** argv) { 9 ros::init(argc, argv, "basic_simple_listener"); 10 ros::NodeHandle nh; 11 ros::Subscriber sub = nh.subscribe("chatter",10,chatterCallback); 12 13 ros::spin(); 14 return 0; 15}
basic_simple_talker.cpp
c++
1#include <ros/ros.h> 2#include <std_msgs/String.h> 3 4int main(int argc,char** argv) { 5 ros::init(argc, argv, "basic_simple_talker"); 6 ros::NodeHandle nh; 7 ros::Publisher chatter_pub = nh.advertise < std_msgs::String >("chatter",10); 8 ros::Rate loop_rate(10); 9 10 while (ros::ok()) { 11 std_msgs::String msg; 12 msg.data = "hello world!"; 13 ROS_INFO("publish: %s", msg.data.c_str()); 14 chatter_pub.publish(msg); 15 16 ros::spinOnce(); 17 loop_rate.sleep(); 18 } 19 return 0; 20}
試したこと
basic_simple_listener.cpp, basic_simple_talker.cppの位置がおかしいのかなと移動させてビルドしてみたり、basic_lectureの直下CMakeLists.txtのadd_executable(basic_simple_talker src/basic_simple_talker.cpp)
add_executable(basic_simple_listener src/basic_simple_listener.cpp)
のソース名が間違っているのかと変更してビルドしてみましたが通りませんでした。
basic_lecture/src/の中身を確認してみました。
:~/catkin_ws/src/basic_lecture/src$ ls basic_simple_listener.cpp basic_simple_talker.cpp
上記よりcppファイルは存在しているはずですが Cannot find source fileと表示されてしまいます。
補足情報(FW/ツールのバージョンなど)
環境は
Windows10
Ubuntu 20.04.2.0 LTS
ROS noetic
です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。