1 votos

ROS sobre cuestiones básicas de Ubuntu

Estoy teniendo algunos problemas con Ubuntu Core y ROS. Estoy usando Snapcraft. Yo era capaz de hacer "crear tu primer complemento" tutorial (https://snapcraft.io/docs/build-snaps/your-first-snap) y que todo estaba bien.

Luego he seguido el ROS tutorial (https://github.com/snapcore/snapcraft/blob/master/docs/ros-snap.md). En lugar de hacer un hablante y un oyente sólo tengo un "hola mundo" nodo que envía un mensaje a la pantalla. Soy capaz de construir e instalar bien, pero en ejecutar me sale el siguiente resultado:

$USER@localhost:~$ ros-example.launch-project  
... logging to /home/$USER/snap/ros-example/x1/ros/log/a413e04a-efb3-11e6-bf45-3d232f894a41/roslaunch-localhost.localdomain-7392.log 
Checking log directory for disk usage. This may take awhile. 
Press Ctrl-C to interrupt

Traceback (most recent call last):   
  File "/snap/ros-example/x1/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/__init__.py", line 307, in main
      p.start()   
  File "/snap/ros-example/x1/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/parent.py", line 268, in start
    self._start_infrastructure()
  File "/snap/ros-example/x1/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/parent.py", line 217, in _start_infrastructure
    self._load_config()   
  File "/snap/ros-example/x1/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/parent.py", line 132, in _load_config
    roslaunch_strs=self.roslaunch_strs, verbose=self.verbose)   
  File "/snap/ros-example/x1/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/config.py", line 471, in load_config_default
    config.assign_machines()   
  File "/snap/ros-example/x1/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/config.py", line 222, in assign_machines
    if [m for m in machine_unify_dict.values() if not is_machine_local(m)]:   
  File "/snap/ros-example/x1/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/core.py", line 97, in is_machine_local
    local_addresses = ['localhost'] + rosgraph.network.get_local_addresses()   
  File "/snap/ros-example/x1/opt/ros/kinetic/lib/python2.7/dist-packages/rosgraph/network.py", line 218, in get_local_addresses
    for iface in netifaces.interfaces(): 
OSError: [Errno 13] Permission denied

He añadido la instalación de las reglas para el .cpp, .hpp, y .el lanzamiento de los archivos en el cmake lista, y la ejecución de la roslaunch trabajos de comando para ejecutar el nodo. Pero que se ejecuta en el Núcleo de entorno como un complemento no funciona. Cualquier sugerencia sería muy apreciada.

Aquí está mi cmakelist:

cmake_minimum_required(VERSION 2.8.3)
project(hello_world)

find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
)

catkin_package()

include_directories(${catkin_INCLUDE_DIRS})

add_executable(write_prompt src/write_prompt.cpp)
target_link_libraries(write_prompt ${catkin_LIBRARIES})

install(TARGETS write_prompt
  ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
  LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
  RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

install(DIRECTORY include/${PROJECT_NAME}/
  DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
  FILES_MATCHING PATTERN "*.h"
  PATTERN "*.hpp"
  PATTERN ".svn" EXCLUDE
)

install(FILES
  launch/run_code.launch
  DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
)

Y mi snapcraft.yaml:

name: ros-example
version: 1.0
summary: ROS Example
description: Runs a modified Hello World node
confinement: strict

apps:
  launch-project:
    command: roslaunch hello_world run_code.launch

parts:
  ros-project:
    plugin: catkin
    source: .
    catkin-packages:
      - hello_world
    rosdistro: kinetic

3voto

Kyle Puntos 624

Estás tan cerca! Su complemento no está solicitando el acceso a la red, que, por defecto, de encaje que no entiendo. Puede hacerlo mediante la configuración de la plugs de la propiedad de la aplicación en cuestión. Trate de hacer su apps sección de este aspecto:

apps:
  launch-project:
    command: roslaunch hello_world run_code.launch
    plugs: [network, network-bind]

Una vez instalado, ejecute snap interfaces y verá el network y network-bind enchufes conectados a la base de la ranura. Para aprender más acerca de estos, retirar el snapd interfaces wiki.

Como ejercicio adicional, una vez que funciona, pruebe a desconectar de las interfaces:

sudo snap disconnect ros-example:network
sudo snap disconnect ros-example:network-bind

Y ejecutar la aplicación de nuevo. Usted debe ver que no otra vez con el mismo error.

Como nota final, mientras que usted está en desarrollo/pruebas de las cosas, recuerde que usted puede instalar con --devmode a saltar de aislamiento: sudo snap install --devmode <my snap>.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: