ROS(Noetic)にopenposeのpackageを使おうとしたら詰まったので、そのときのことを書き残しておきます。今回使用したものはこちら。
github.comInstallstion stepsの通りに行ったあとcatkin_makeを行ったら
CMake Error at openpose_ros/openpose_ros/CMakeLists.txt:23 (find_package):
By not providing "FindOpenPose.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "OpenPose",
but CMake did not find one.
Could not find a package configuration file provided by "OpenPose" with any
of the following names:
OpenPoseConfig.cmake
openpose-config.cmake
とか、
No rule to make target '/home/yoshimi/openpose/build/lib/libopenpose.so', needed by '/home/yoshimi/catkin_ws/devel/lib/openpose_ros/openpose_ros_node'. Stop.
CMakeLists.txtを以下のように書き換えた(yoshimiの部分は各自のPCのユーザー名に変えて下さい)また、homeディレクトリにopenposeをインストールしていない人は適宜パスを変更してください
cmake_minimum_required(VERSION 3.12.0)
project(openpose_ros)
## Add support for C++11, supported in ROS Kinetic and newer
add_definitions(-std=c++11)
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
openpose_ros_msgs
sensor_msgs
cv_bridge
image_transport
)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules")
find_package(CUDA REQUIRED) # Uncomment this line if you have trouble compiling
find_package(OpenCV REQUIRED)
find_package(GFlags)
find_package(Glog)
#find_package(OpenPose REQUIRED) #comment
catkin_package(
INCLUDE_DIRS include
CATKIN_DEPENDS roscpp rospy std_msgs
)
set(OPENPOSE_DIR /home/yoshimi/openpose)
set(OPENPOSE_INCLUDE_DIRS ${OPENPOSE_DIR}/include) #add
#set(OPENPOSE_LINK_LIBRARY ${OPENPOSE_DIR}/build/lib/libopenpose.so) #comment
set(OPENPOSE_LINK_LIBRARY ${OPENPOSE_DIR}/build/src/openpose/libopenpose.so) #add
include_directories(
include
${catkin_INCLUDE_DIRS}
${CUDA_INCLUDE_DIRS}
${CAFFE_INCLUDE_DIRS}
${OPENPOSE_INCLUDE_DIRS}
${GFLAGS_INCLUDE_DIR}
${GLOG_INCLUDE_DIR}
${OpenCV_INCLUDE_DIRS}
)
add_executable(${PROJECT_NAME}_node src/openpose_ros_node.cpp src/openpose.cpp src/openpose_ros_io.cpp
src/openpose_flags.cpp)
add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
target_link_libraries(${PROJECT_NAME}_node
${catkin_LIBRARIES}
${OpenCV_LIBS}
${OPENPOSE_LINK_LIBRARY}
${GFLAGS_LIBRARY}
${GLOG_LIBRARY}
)
また、
cpp:153:85: error: ‘CV_FOURCC’ was not declared in this scope
153 | original_video_writer_ = cv::VideoWriter(original_video_file_name_, CV_FOURCC('M','J','P','G'), video_fps_, current_image.size());
こんなエラーが吐かれたらopenpose_ros_io.cppのCV_FOURCC, をcv::VideoWriter::fourcc に書き換えるとうまくいった(多分2箇所)
これでうまく行くと思う
Reference
find_package(OpenPose REQIRED) in CMakeLists.txt fails · Issue #10 · firephinx/openpose_ros · GitHub
error: ‘CV_FOURCC’ was not declared in this scope · Issue #42 · YuvalNirkin/face_swap · GitHub
【make】エラーメッセージ「make: *** No rule to make target `○○.c', needed by `××.exe'. Stop.」 - Muni Bus