(!) Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.

Administrando dependências do sistema

Description: Explica como usar rosdep para instalar dependências do sistema.

Tutorial Level: INTERMEDIATE

Next Tutorial: Dicas de Roslaunch para projetos grandes

  Show EOL distros: 

Dependências do sistema

Pacotes do ROS às vezes requerem bibliotecas externas e ferramentas que são oferecidas pelo sistema operacional e não são pacotes do ROS. Essas bibliotecas e ferramentas geralmente são chamadas de dependências do systema, ou system dependencies. Em alguns casos, essas dependências ainda não estão instaladas no sistema. ROS oferece uma ferramenta, rosdep, que pode ser usada para baixar e instalar dependências do sistema.

Pacotes do ROS devem declarar que eles precisam dessas dependências do sistema no arquivo package.xml. Vamos dar uma olhada no arquivo do pacote turtlesim:

$ roscd turtlesim

E depois,

$ cat package.xml
  • <package>
    
    ...
    ...
      <build_depend>message_generation</build_depend>
      <build_depend>libqt4-dev</build_depend>
      <build_depend>qt4-qmake</build_depend>
      <build_depend>rosconsole</build_depend>
      <build_depend>roscpp</build_depend>
      <build_depend>roscpp_serialization</build_depend>
      <build_depend>roslib</build_depend>
      <build_depend>rostime</build_depend>
      <build_depend>std_msgs</build_depend>
      <build_depend>std_srvs</build_depend>
    </package>

Como pode ver, o turtlesim precisa dessas bibliotecas e pacotes.

$ cat manifest.xml
  • <package>
    
    ...
    ...
        <rosdep name="libqt4-dev"/>
        <rosdep name="qt4-qmake"/>
    </package>

As you can see turtlesim needs libqt4-dev and qt4-qmake.

$ cat manifest.xml
  • <package>
    
    ...
    ...
        <rosdep name="libqt4-dev"/>
        <rosdep name="qt4-qmake"/>
    
    </package>

As you can see turtlesim needs libqt4-dev and qt4-qmake.

$ cat package.xml
  • <package>
    
    ...
    ...
      <buildtool_depend>catkin</buildtool_depend>
    
      <build_depend>geometry_msgs</build_depend>
      <build_depend>qtbase5-dev</build_depend>
      <build_depend>message_generation</build_depend>
      <build_depend>qt5-qmake</build_depend>
      <build_depend>rosconsole</build_depend>
      <build_depend>roscpp</build_depend>
      <build_depend>roscpp_serialization</build_depend>
      <build_depend>roslib</build_depend>
      <build_depend>rostime</build_depend>
      <build_depend>std_msgs</build_depend>
      <build_depend>std_srvs</build_depend>
    
      <run_depend>geometry_msgs</run_depend>
      <run_depend>libqt5-core</run_depend>
      <run_depend>libqt5-gui</run_depend>
      <run_depend>message_runtime</run_depend>
      <run_depend>rosconsole</run_depend>
      <run_depend>roscpp</run_depend>
      <run_depend>roscpp_serialization</run_depend>
      <run_depend>roslib</run_depend>
      <run_depend>rostime</run_depend>
      <run_depend>std_msgs</run_depend>
      <run_depend>std_srvs</run_depend>
    
    </package>

Como pode ver, o turtlesim precisa de dependências do sistema como libqt5-core and qt5-qmake.

rosdep

rosdep é uma ferramenta que você pode usar para instalar dependências dos seus pacotes de ROS, tanto outros pacotes de ROS quanto dependências do sistema.

Uso:

rosdep install [package]

Para baixar e instalar as dependências do turtlesim:

$ rosdep install turtlesim

Se você está seguindo os tutorials, esta é provavelmente a primeira vez que você usa rosdep. Quando rodar este comando pela primeira vez, você verá uma mensagem de erro:

  • ERROR: your rosdep installation has not been initialized yet.  Please run:
            
        sudo rosdep init
        rosdep update

Rode os dois comandos sugeridos e depois tente instalar as dependências do turtlesim novamente.

Se você instalou turtlesim de binaries, você verá uma mensagem indicando que todas as dependências já tinham sido instaladas com sucesso:

  • All required rosdeps installed successfully

Senão, você verá o resultado do 'rosdep' instalando as dependências:

  • set -o errexit
    set -o verbose
    
    
    if [ ! -f /opt/ros/lib/libboost_date_time-gcc42-mt*-1_37.a ] ; then
      mkdir -p ~/ros/ros-deps
      cd ~/ros/ros-deps
      wget --tries=10 http://pr.willowgarage.com/downloads/boost_1_37_0.tar.gz
      tar xzf boost_1_37_0.tar.gz
      cd boost_1_37_0
      ./configure --prefix=/opt/ros
      make
      sudo make install
    fi
    
    
    if [ ! -f /opt/ros/lib/liblog4cxx.so.10 ] ; then
      mkdir -p ~/ros/ros-deps
      cd ~/ros/ros-deps
      wget --tries=10 http://pr.willowgarage.com/downloads/apache-log4cxx-0.10.0-wg_patched.tar.gz
      tar xzf apache-log4cxx-0.10.0-wg_patched.tar.gz
      cd apache-log4cxx-0.10.0
      ./configure --prefix=/opt/ros
      make
      sudo make install
    fi

rosdep roda o script acima e sai quando termina.

Wiki: pt_BR/ROS/Tutorials/rosdep (last edited 2020-04-18 22:48:20 by chapulina)