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

OK, so if anyone who is flailing trying to understand ROS in the future stumbles across this, here's the answer:

ROS installs a script called "setup.bash" in /opt/ros/kinetic that you have to source before anything will run. If you also install some third-party code that you have to build from source (as opposed to installing from packages), that code resides in a directory somewhere on your system called "catkin_ws" or similar. There will be a couple of directories inside of this called "devel" and maybe "install". Inside those directories there are also "setup.bash" files that tell the system about the new stuff you've built. You can source them using an "--extend" flag in order to add the extra search paths to your ROS system.

Here's the key, though: you have to source all of the setup scripts in all of the terminals, even ones that you aren't using to call your new code.

That was my problem: I was sourcing /opt/ros/kinetic/setup.bash in all of my terminals, but only sourcing devel/setup.bash in the terminal I was using to call the code that lived in my catkin workspace.