ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

All the commands ran successfully but when I do roscd sbpl after it, the output is : roscd: No such package/stack 'sbpl' . Does anyone have any idea why is it still not able to find sbpl and what am I doing wrong?

Judging by the contents of the repository you linked, I'd say SBPL is not a catkin/rosbuild package, but a regular CMake package. The way you built and installed it also seems to point in that direction.

As such, you cannot roscd to it, as that only works with ROS packages.

All the commands ran successfully but when I do roscd sbpl after it, the output is : roscd: No such package/stack 'sbpl' . Does anyone have any idea why is it still not able to find sbpl and what am I doing wrong?

Judging by the contents of the repository you linked, I'd say SBPL is not a catkin/rosbuild package, but a regular CMake package. The way you built and installed it also seems to point in that direction.

As such, you cannot roscd to it, as that only works with ROS packages.


Edit:

Does anyone have any idea why is it still not able to find sbpl and what am I doing wrong?

Yes: SBPL is still not a ROS package. You adding it to your ROS_PACKAGE_PATH and trying to build it using rosmake does not change that.

Afaict, SBPL is not meant to be a ROS package. It's used as a system dependency (see CMakeLists.txt - lines 13 to 15 of sbpl_lattice_planner).

All the commands ran successfully but when I do roscd sbpl after it, the output is : roscd: No such package/stack 'sbpl' . Does anyone have any idea why is it still not able to find sbpl and what am I doing wrong?

Judging by the contents of the repository you linked, I'd say SBPL is not a catkin/rosbuild package, but a regular CMake package. The way you built and installed it also seems to point in that direction.

As such, you cannot roscd to it, as that only works with ROS packages.


Edit:

Also, I tried installing and using SBPL as a ROS package but that does not seem to be working

[..]

Does anyone have any idea why is it still not able to find sbpl and what am I doing wrong?

Yes: SBPL is still not a ROS package. You adding it to your ROS_PACKAGE_PATH and trying to build it using rosmake does not change that.

Afaict, SBPL is not meant to be a ROS package. It's used as a system dependency (see CMakeLists.txt - lines 13 to 15 of sbpl_lattice_planner).

All the commands ran successfully but when I do roscd sbpl after it, the output is : roscd: No such package/stack 'sbpl' . Does anyone have any idea why is it still not able to find sbpl and what am I doing wrong?

Judging by the contents of the repository you linked, I'd say SBPL is not a catkin/rosbuild package, but a regular CMake package. The way you built and installed it also seems to point in that direction.

As such, you cannot roscd to it, as that only works with ROS packages.


Edit:

Also, I tried installing and using SBPL as a ROS package but that does not seem to be working

[..]

Does anyone have any idea why is it still not able to find sbpl and what am I doing wrong?

Yes: SBPL is still not a ROS package. You adding it to your ROS_PACKAGE_PATH and trying to build it using rosmake does not change that.

Afaict, SBPL is not meant to be a ROS package. It's used as a system dependency (see CMakeLists.txt - lines 13 to 15 of sbpl_lattice_planner).


Edit 3:

It looks like sbpl_lattice_planner is not able to find the necessary sbpl library and is throwing an error and hence its not able to run.

I'm pretty certain it should've worked after you sudo make installed your version of SBPL and then tried to build sbpl_lattice_planner from source (PkgConfig should've picked up your customised version, if you got the PKG_CONFIG_PATH setup correctly).

But looking at one of the forks (the tu-darmstadt-ros-pkg one) recommended to you in your other question about sbpl_lattice_planner, it could also be that CMake needs a little help determining the correct path to libsbpl.so (from here):

[..]
find_library(SBPL_LIBRARY NAMES sbpl PATHS ${SBPL_LIBRARY_DIRS} NO_DEFAULT_PATH)
set(SBPL_LIBRARIES ${SBPL_LIBRARY})
[..]

This snippet adds the full path to libsbpl.so, which then gets linked later on. Any reason you are not using this fork?

All the commands ran successfully but when I do roscd sbpl after it, the output is : roscd: No such package/stack 'sbpl' . Does anyone have any idea why is it still not able to find sbpl and what am I doing wrong?

Judging by the contents of the repository you linked, I'd say SBPL is not a catkin/rosbuild package, but a regular CMake package. The way you built and installed it also seems to point in that direction.

As such, you cannot roscd to it, as that only works with ROS packages.


Edit:

Also, I tried installing and using SBPL as a ROS package but that does not seem to be working

[..]

Does anyone have any idea why is it still not able to find sbpl and what am I doing wrong?

Yes: SBPL is still not a ROS package. You adding it to your ROS_PACKAGE_PATH and trying to build it using rosmake does not change that.

Afaict, SBPL is not meant to be a ROS package. It's used as a system dependency (see CMakeLists.txt - lines 13 to 15 of sbpl_lattice_planner).


Edit 3:2:

It looks like sbpl_lattice_planner is not able to find the necessary sbpl library and is throwing an error and hence its not able to run.

I'm pretty certain it should've worked after you sudo make installed your version of SBPL and then tried to build sbpl_lattice_planner from source (PkgConfig should've picked up your customised version, if you got the PKG_CONFIG_PATH setup correctly).

But looking at one of the forks (the tu-darmstadt-ros-pkg one) recommended to you in your other question about sbpl_lattice_planner, it could also be that CMake needs a little help determining the correct path to libsbpl.so (from here):

[..]
find_library(SBPL_LIBRARY NAMES sbpl PATHS ${SBPL_LIBRARY_DIRS} NO_DEFAULT_PATH)
set(SBPL_LIBRARIES ${SBPL_LIBRARY})
[..]

This snippet adds the full path to libsbpl.so, which then gets linked later on. Any reason you are not using this fork?

All the commands ran successfully but when I do roscd sbpl after it, the output is : roscd: No such package/stack 'sbpl' . Does anyone have any idea why is it still not able to find sbpl and what am I doing wrong?

Judging by the contents of the repository you linked, I'd say SBPL is not a catkin/rosbuild package, but a regular CMake package. The way you built and installed it also seems to point in that direction.

As such, you cannot roscd to it, as that only works with ROS packages.


Edit:

Also, I tried installing and using SBPL as a ROS package but that does not seem to be working

[..]

Does anyone have any idea why is it still not able to find sbpl and what am I doing wrong?

Yes: SBPL is still not a ROS package. You adding it to your ROS_PACKAGE_PATH and trying to build it using rosmake does not change that.

Afaict, SBPL is not meant to be a ROS package. It's used as a system dependency (see CMakeLists.txt - lines 13 to 15 of sbpl_lattice_planner).


Edit 2:

It looks like sbpl_lattice_planner is not able to find the necessary sbpl library and is throwing an error and hence its not able to run.

I'm pretty certain it should've worked after you sudo make installed your version of SBPL and then tried to build sbpl_lattice_planner from source (PkgConfig should've picked up your customised version, if you got the PKG_CONFIG_PATH setup correctly).

But looking at one of the forks (the tu-darmstadt-ros-pkg one) recommended to you in your other question about sbpl_lattice_planner, it could also be that CMake needs a little help determining the correct path to libsbpl.so (from here):

[..]
find_library(SBPL_LIBRARY NAMES sbpl PATHS ${SBPL_LIBRARY_DIRS} NO_DEFAULT_PATH)
set(SBPL_LIBRARIES ${SBPL_LIBRARY})
[..]

This snippet adds the full path to libsbpl.so, which then gets linked later on. Any reason you are not using this fork?

Btw: the error is not 'thrown' by sbpl_lattice_planner, but is reported by make. It just can't resolve the dependency on libsbpl.so needed for the sbpl_lattice_planner target.

All the commands ran successfully but when I do roscd sbpl after it, the output is : roscd: No such package/stack 'sbpl' . Does anyone have any idea why is it still not able to find sbpl and what am I doing wrong?

Judging by the contents of the repository you linked, I'd say SBPL is not a catkin/rosbuild package, but a regular CMake package. The way you built and installed it also seems to point in that direction.

As such, you cannot roscd to it, as that only works with ROS packages.


Edit:

Also, I tried installing and using SBPL as a ROS package but that does not seem to be working

[..]

Does anyone have any idea why is it still not able to find sbpl and what am I doing wrong?

Yes: SBPL is still not a ROS package. You adding it to your ROS_PACKAGE_PATH and trying to build it using rosmake does not change that.

Afaict, SBPL is not meant to be a ROS package. It's used as a system dependency (see CMakeLists.txt - lines 13 to 15 of sbpl_lattice_planner).


Edit 2:

It looks like sbpl_lattice_planner is not able to find the necessary sbpl library and is throwing an error and hence its not able to run.

I'm pretty certain it should've worked after you sudo make installed your version of SBPL and then tried to build sbpl_lattice_planner from source (PkgConfig should've picked up your customised version, if you got the PKG_CONFIG_PATH setup correctly).

But looking at one of the forks (the tu-darmstadt-ros-pkg one) recommended to you in your other question about sbpl_lattice_planner, it could also be that CMake needs a little help determining the correct path to libsbpl.so (from here):

[..]
find_library(SBPL_LIBRARY NAMES sbpl PATHS ${SBPL_LIBRARY_DIRS} NO_DEFAULT_PATH)
set(SBPL_LIBRARIES ${SBPL_LIBRARY})
[..]

This snippet adds the full path to libsbpl.so, which then gets linked later on. Any reason you are not using this fork?

Btw: the error is not 'thrown' by sbpl_lattice_planner, but is reported by make. It just can't resolve the dependency on libsbpl.so needed for the sbpl_lattice_planner target.


Edit 3:

@gvdhoorn: I am using the fork you mentioned.

That would've nice to know before we started all this. Why did you link to the original sbpl repository then in your question?

My PKG_CONFIG_PATH is:

/home/naman/catkin_ws/devel/lib/pkgconfig:/home/naman/catkin_ws/devel/lib/x86_64-linux gnu/pkgconfig:/opt/ros/indigo/lib/x86_64-linux-gnu/pkgconfig:/opt/ros/indigo/lib/pkgconfig

Therefore, sbpl_lattice_planner looks for libsbpl.so in /opt/ros/indigo/lib and is not able to find it.

No. make can't find the library, sbpl_lattice_planner has not even been built yet. It is not involved here at all.

Please add the output of pkg-config --libs --cflags sbpl and PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH pkg-config --libs --cflags sbpl to your question. Both times after you've sourced your workspace.

Once, I build sbpl as mentioned above, it installs libsbpl.so in /usr/local/lib and sbpl.pc in /usr/local/lib/pkgconfig but its not in the PKG_CONFIG_PATH and therefore its not able to find the required files BUT even if I add /usr/local/lib/pkgconfig to PKG_CONFIG_PATH, it still looks for the file in /opt/ros/indigo/lib and hence gives the same error as mentioned above which is really confusing for me.

And this is with the tu-darmstadt-ros-pkg fork? Can you make sure those two lines (with find_library(..)) are present in the CMakeLists.txt of your sbpl_lattice_planner? Can you add:

message("SBPL_LIBRARIES: ${SBPL_LIBRARIES}")

right before the # Generate messages line and add the output of this in a new run of catkin_make to your question?

All the commands ran successfully but when I do roscd sbpl after it, the output is : roscd: No such package/stack 'sbpl' . Does anyone have any idea why is it still not able to find sbpl and what am I doing wrong?

Judging by the contents of the repository you linked, I'd say SBPL is not a catkin/rosbuild package, but a regular CMake package. The way you built and installed it also seems to point in that direction.

As such, you cannot roscd to it, as that only works with ROS packages.


Edit:

Also, I tried installing and using SBPL as a ROS package but that does not seem to be working

[..]

Does anyone have any idea why is it still not able to find sbpl and what am I doing wrong?

Yes: SBPL is still not a ROS package. You adding it to your ROS_PACKAGE_PATH and trying to build it using rosmake does not change that.

Afaict, SBPL is not meant to be a ROS package. It's used as a system dependency (see CMakeLists.txt - lines 13 to 15 of sbpl_lattice_planner).


Edit 2:

It looks like sbpl_lattice_planner is not able to find the necessary sbpl library and is throwing an error and hence its not able to run.

I'm pretty certain it should've worked after you sudo make installed your version of SBPL and then tried to build sbpl_lattice_planner from source (PkgConfig should've picked up your customised version, if you got the PKG_CONFIG_PATH setup correctly).

But looking at one of the forks (the tu-darmstadt-ros-pkg one) recommended to you in your other question about sbpl_lattice_planner, it could also be that CMake needs a little help determining the correct path to libsbpl.so (from here):

[..]
find_library(SBPL_LIBRARY NAMES sbpl PATHS ${SBPL_LIBRARY_DIRS} NO_DEFAULT_PATH)
set(SBPL_LIBRARIES ${SBPL_LIBRARY})
[..]

This snippet adds the full path to libsbpl.so, which then gets linked later on. Any reason you are not using this fork?

Btw: the error is not 'thrown' by sbpl_lattice_planner, but is reported by make. It just can't resolve the dependency on libsbpl.so needed for the sbpl_lattice_planner target.


Edit 3:

@gvdhoorn: I am using the fork you mentioned.

That would've nice to know before we started all this. Why did you link to the original sbpl repository then in your question?

My PKG_CONFIG_PATH is:

/home/naman/catkin_ws/devel/lib/pkgconfig:/home/naman/catkin_ws/devel/lib/x86_64-linux gnu/pkgconfig:/opt/ros/indigo/lib/x86_64-linux-gnu/pkgconfig:/opt/ros/indigo/lib/pkgconfig

Therefore, sbpl_lattice_planner looks for libsbpl.so in /opt/ros/indigo/lib and is not able to find it.

No. make can't find the library, sbpl_lattice_planner has not even been built yet. It is not involved here at all.

Please add the output of pkg-config --libs --cflags sbpl and PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH pkg-config --libs --cflags sbpl to your question. Both times after you've sourced your workspace.

Once, I build sbpl as mentioned above, it installs libsbpl.so in /usr/local/lib and sbpl.pc in /usr/local/lib/pkgconfig but its not in the PKG_CONFIG_PATH and therefore its not able to find the required files BUT even if I add /usr/local/lib/pkgconfig to PKG_CONFIG_PATH, it still looks for the file in /opt/ros/indigo/lib and hence gives the same error as mentioned above which is really confusing for me.

And this is with the tu-darmstadt-ros-pkg fork? Can you make sure those two lines (with find_library(..)) are present in the CMakeLists.txt of your sbpl_lattice_planner? Can you add:

message("SBPL_LIBRARIES: ${SBPL_LIBRARIES}")

right before the # Generate messages line and add the output of this in a new run of catkin_make to your question?


Edit 4:

and the output of PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH pkg-config --libs --cflags sbpl:

-I/usr/local/include  -L/usr/local/lib -lsbpl

I'm guessing you don't have ros-indigo-sbpl installed on that system?

Just to be sure: are you trying to cross-compile? Or are you building on your Jetson board itself?

As to the rest: I cannot reproduce this on my system. I've installed SBPL from the repository you linked (installs into /usr/local), then made sure there is a sbpl.pc in /usr/local/lib/pkgconfig.

Running catkin_make in a freshly created catkin workspace with just sbpl_lattice_planner in it returns the correct paths (ie: cmake finds sbpl in the right place). The planner pkg builds successfully.

The only thing that requires some care is when the system does have the ROS provided ros-indigo-sbpl installed. As PKG_CONFIG_PATH is set to /opt/ros/indigo/lib/pkgconfig, pkg-config will ignore the sbpl.pc in /usr/local/lib/pkgconfig. Explicitly setting PKG_CONFIG_PATH to have the /usr/local location first resolves this, and the from-source compiled SBPL will be found again.

In summary, this gets me a working sbpl_lattice_planner:

mkdir -p /tmp/sbpl_ws/src
cd /tmp/sbpl_ws/src
git clone https://github.com/tu-darmstadt-ros-pkg/sbpl_lattice_planner.git

cd /tmp/sbpl_ws
git clone https://github.com/sbpl/sbpl.git
# create build dir, config, make, sudo make install
# sbpl is now installed in '/usr/local'

source /opt/ros/indigo/setup.bash
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH

catkin_make

# output here is (among other things)
SBPL_LIBRARIES: /usr/local/lib/libsbpl.so
SBPL_LIBRARY_DIRS: /usr/local/lib
SBPL_INCLUDE_DIRS: /usr/local/include