ROS ros/ros.hが見つからない問題
解決したいこと
ROSを開発し始めた学生です。
以前に作ったパッケージではビルドは通るのですが、
最近に作ったパッケージをビルドしようとすると、毎回同じエラーが発生します。
解決方法を教えていただけると助かります。
発生しているエラー
Errors << rospackage_test:make /home/takeuchi/catkin_ws/logs/rospackage_test/build.make.000.log
/home/takeuchi/catkin_ws/src/rospackage_test/src/basic_simple_listener.cpp:1:10: fatal error: ros/ros.h: そのようなファイルやディレクトリはありません
1 | #include <ros/ros.h>
| ^~~~~~~~~~~
/home/takeuchi/catkin_ws/src/rospackage_test/src/basic_simple_talker.cpp:1:10: fatal error: ros/ros.h: そのようなファイルやディレクトリはありません
1 | #include <ros/ros.h>
| ^~~~~~~~~~~
compilation terminated.
compilation terminated.
make[2]: *** [CMakeFiles/basic_simple_talker.dir/build.make:63: CMakeFiles/basic_simple_talker.dir/src/basic_simple_talker.cpp.o] エラー 1
make[2]: *** [CMakeFiles/basic_simple_listener.dir/build.make:63: CMakeFiles/basic_simple_listener.dir/src/basic_simple_listener.cpp.o] エラー 1
make[1]: *** [CMakeFiles/Makefile2:305: CMakeFiles/basic_simple_listener.dir/all] エラー 2
make[1]: *** 未完了のジョブを待っています....
make[1]: *** [CMakeFiles/Makefile2:251: CMakeFiles/basic_simple_talker.dir/all] エラー 2
make: *** [Makefile:141: all] エラー 2
cd /home/takeuchi/catkin_ws/build/rospackage_test; catkin build --get-env rospackage_test | catkin env -si /usr/bin/make --jobserver-auth=3,4; cd -
.............................................................................................
Failed << rospackage_test:make [ Exited with code 2 ]
Failed <<< rospackage_test [ 0.9 seconds ]
[build] Summary: 2 of 3 packages succeeded.
[build] Ignored: 16 packages were skipped or are skiplisted.
[build] Warnings: None.
[build] Abandoned: None.
[build] Failed: 1 packages failed.
[build] Runtime: 1.3 seconds total.
該当するソースコード
basic_simple_listener.cpp
#include <ros/ros.h>
#include <std_msgs/String.h>
void chatterCallback(const std_msgs::String& msg)
{
ROS_INFO("subscribe: %s", msg.data.c_str());
}
int main(int argc, char** argv)
{
ros::init(argc, argv, "basic_simple_listener");
ros::NodeHandle nh;
ros::Subscriber sub = nh.subscribe("chatter", 10, chatterCallback);
ros::spin();
return 0;
}
basic_simple_talker.cpp
#include <ros/ros.h>
#include <std_msgs/String.h>
int main(int argc, char** argv)
{
ros::init(argc, argv, "basic_simple_talker");
ros::NodeHandle nh;
ros::Publisher chatter_pub = nh.advertise<std_msgs::String>("chatter", 10);
ros::Rate loop_rate(10);
while (ros::ok())
{
std_msgs::String msg;
msg.data = "hello world!";
ROS_INFO("publish: %s", msg.data.c_str());
chatter_pub.publish(msg);
ros::spinOnce();
loop_rate.sleep();
}
return 0;
}
CMakeLists
CMakeLists.txt
cmake_minimum_required(VERSION 3.0.2)
project(rospackage_test)
find_package(catkin REQUIRED COMPONENTS
roscpp
std_msgs
)
catkin_package(
# INCLUDE_DIRS include
# LIBRARIES rospackage_test
# CATKIN_DEPENDS roscpp std_msgs
# DEPENDS system_lib
)
include_directories(
# include
${catkin_INCLUDE_DIRS}
)
target_link_libraries(basic_simple_talker
${catkin_LIBRARIES}
)
target_link_libraries(basic_simple_listener
${catkin_LIBRARIES}
)
自分で試したこと
・include_directoriesに直接rosディレクトリを指定したが失敗。
・以前作成したビルドが通るパッケージをコピーし、ビルドを行ったが失敗。
備考
VSCode側ではパスは通してあり、エラーは出ていません。
記載したコードはQiitay上にあるROS講座03から使用していますが、その他のプログラムでもこのエラーが必ず発生します。
環境
ROS noeticを使用。
OS: Ubuntu 20.04 64bit
追記
ROSを再インストールしたが失敗(2023/02/18)
・${catkin_INCLUDE_DIRS}
や${catkin_LIBRARIS}
の中身を確認。中身は空であったので、設定する方法をご存知の方がいらっしゃいましたら教えていただけると助かります。(2023/02/21)
0