I found out that I incorrectly named a dependency "std_msgs" as "std_msg". So I fixed!, but wait, catkin still thinks that lawnbot_description is wants "std_msg" as a dependency even though I fixed the dependency:
<?xml version="1.0"?>
<package format="2">
<name>lawnbot_description</name>
<version>0.0.0</version>
<description>The lawnbot_description package</description>
<buildtool_depend>catkin</buildtool_depend>
<build_depend>roscpp</build_depend>
<build_depend>rospy</build_depend>
<build_depend>std_msgs</build_depend>
<build_export_depend>roscpp</build_export_depend>
<build_export_depend>rospy</build_export_depend>
<build_export_depend>std_msgs</build_export_depend>
<exec_depend>roscpp</exec_depend>
<exec_depend>rospy</exec_depend>
<exec_depend>std_msgs</exec_depend>
Error output when doing catkin_make --force-cmake:
Base path: /home/josiah/PycharmProjects/lawnbot_ws
Source space: /home/josiah/PycharmProjects/lawnbot_ws/src
Build space: /home/josiah/PycharmProjects/lawnbot_ws/build
Devel space: /home/josiah/PycharmProjects/lawnbot_ws/devel
Install space: /home/josiah/PycharmProjects/lawnbot_ws/install
####
#### Running command: "make cmake_check_build_system" in
"/home/josiah/PycharmProjects/lawnbot_ws/build"
####
-- Using CATKIN_DEVEL_PREFIX: /home/josiah/PycharmProjects/lawnbot_ws/devel
-- Using CMAKE_PREFIX_PATH: /opt/ros/kinetic
-- This workspace overlays: /opt/ros/kinetic
-- Using PYTHON_EXECUTABLE: /usr/bin/python
-- Using Debian Python package layout
-- Using empy: /usr/bin/empy
-- Using CATKIN_ENABLE_TESTING: ON
-- Call enable_testing()
-- Using CATKIN_TEST_RESULTS_DIR: /home/josiah/PycharmProjects/lawnbot_ws/build/test_results
-- Found gtest sources under '/usr/src/gtest': gtests will be built
-- Using Python nosetests: /usr/bin/nosetests-2.7
-- catkin 0.7.6
-- BUILD_SHARED_LIBS is on
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ~~ traversing 8 packages in topological order:
-- ~~ - turtlebot3 (metapackage)
-- ~~ - turtlebot3_bringup
-- ~~ - turtlebot3_slam
-- ~~ - lawnbot_description
-- ~~ - lawnbot_gazebo
-- ~~ - turtlebot3_navigation
-- ~~ - turtlebot3_teleop
-- ~~ - turtlebot3_description
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- +++ processing catkin metapackage: 'turtlebot3'
-- ==> add_subdirectory(turtlebot3/turtlebot3)
-- +++ processing catkin package: 'turtlebot3_bringup'
-- ==> add_subdirectory(turtlebot3/turtlebot3_bringup)
-- +++ processing catkin package: 'turtlebot3_slam'
-- ==> add_subdirectory(turtlebot3/turtlebot3_slam)
-- +++ processing catkin package: 'lawnbot_description'
-- ==> add_subdirectory(lawnbot_description)
CMake Warning at /opt/ros/kinetic/share/catkin/cmake/catkinConfig.cmake:76 (find_package):
Could not find a package configuration file provided by "std_msg" with any
of the following names:
std_msgConfig.cmake
std_msg-config.cmake
Add the installation prefix of "std_msg" to CMAKE_PREFIX_PATH or set
"std_msg_DIR" to a directory containing one of the above files. If
"std_msg" provides a separate development package or SDK, be sure it has
been installed.
Call Stack (most recent call first):
lawnbot_description/CMakeLists.txt:10 (find_package)
-- Could not find the required component 'std_msg'. The following CMake error indicates that you either need to install the package with the same name or change your environment so that it can be found.
CMake Error at /opt/ros/kinetic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
Could not find a package configuration file provided by "std_msg" with any
of the following names:
std_msgConfig.cmake
std_msg-config.cmake
Add the installation prefix of "std_msg" to CMAKE_PREFIX_PATH or set
"std_msg_DIR" to a directory containing one of the above files. If
"std_msg" provides a separate development package or SDK, be sure it has
been installed.
Call Stack (most recent call first):
lawnbot_description/CMakeLists.txt:10 (find_package)
-- Configuring incomplete, errors occurred!
See also "/home/josiah/PycharmProjects/lawnbot_ws/build/CMakeFiles/CMakeOutput.log".
See also "/home/josiah/PycharmProjects/lawnbot_ws/build/CMakeFiles/CMakeError.log".
Makefile:290: recipe for target 'cmake_check_build_system' failed
make: *** [cmake_check_build_system] Error 1
Invoking "make cmake_check_build_system" failed
It still thinks that the lawnbot_description package wants "std_msg". Why is this so hard? It cant be this complicated to modify package information and update it.
I have found that there is a package called : catkin_tools clean, but why should I have to download an extra package to simply update my workspace?
I have tried:
-catkin_make
-catkin_make --force-cmake
- I have seen solutions that involve deleting entire build/devel directories which horrifies me. That seems like a ton of work just to add an 's' to the end of a name
I am worried that catkin clean lawnbot_description will just delete the entire package. Is this my best option?
Local lawnbot_description cmake file:
cmake_minimum_required(VERSION 2.8.3)
project(lawnbot_description)
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msg # I am not supposed to edit this right??? I tried editing and it still does not work
)
I found that editing the CMakeLists fixes the problem. However it is annoying that I need to change the package.xml and the CMakeLists to indicate a change in dependencies.
I thought that if I fix the package.xml the CMakeLists would be updated.
So future reference, edit the CMakeLists in your package to reflect changes made to the package. catkin_make will not do this for you it seems.
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msg
)
Should be:
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
)
Along with updating the package.xml