Los artículos anteriores son algunas aplicaciones basadas en el ROS instalado, aquí instalamos el sistema operativo del robot ROS desde cero.
Robot Operating System (Robot Operating System, ROS) es un marco para el desarrollo de software de robots, que contiene una serie de herramientas, bibliotecas y convenciones , cuyo propósito es simplificar la construcción de comportamientos de robots complejos y estables entre una gran cantidad de diferentes. plataformas de robots
ROS sigue la filosofía de desarrollo de software de Unix, por lo que aquellos con conocimientos previos de Unix se sentirán muy familiarizados y comenzarán rápidamente. Una característica notable de ROS es que se puede desarrollar en múltiples lenguajes, incluidos C ++, Python, Lisp, Java, Javascript, Matlab, Ruby, R, etc. Ingrese al campo de la robótica.
Más importante aún, ROS es de código abierto y gratuito, publicado bajo el protocolo BSD, por lo que está disponible comercialmente sin autorización, y debido a que el acoplamiento entre los módulos ROS es muy bajo, los módulos desarrollados por ellos mismos pueden obtener licencias detalladas autorizadas.
Aquí presentaré cómo instalar ROS en Ubuntu (una distribución de Linux popular y relativamente amigable). Mi versión es 18.04. Me enfocaré en el número de versión aquí porque la siguiente instalación está relacionada con la versión de su sistema.
1. Actualice la fuente del software
El primero es agregar la fuente del software al archivo ros-latest.list , para que el sistema operativo pueda saber qué sitio descargar:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu trusty main" > /etc/apt/sources.list.d/ros-latest.list'
Podemos ver el archivo, el contenido de origen se ha escrito en él
cat /etc/apt/sources.list.d/ros-latest.list
deb http://packages.ros.org/ros/ubuntu trusty main
Cabe señalar aquí que si desea instalar, no se apresure a ingresar el comando anterior e instálelo después de leer el texto completo, ya que la instalación de ROS está relacionada con la versión de su sistema Ubuntu .
2. Establecer la clave
wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
La clave aquí, en la instalación posterior, la segunda línea de comando puede ignorarla, no debería ser necesaria
3. Instale la biblioteca de desarrollo de robots
Instale la suite de escritorio completa, incluidas las bibliotecas y las herramientas necesarias para el desarrollo de robots
sudo apt-get update
sudo apt-get install ros-indigo-desktop-full python-rosinstall
Si ocurre un error como el siguiente:
Leyendo listas de paquetes... Listo
Creando árbol de dependencias
Leyendo información de estado... Listo
No se pudieron instalar algunos paquetes. Esto puede significar que ha
solicitado una situación imposible o que, si está utilizando la
distribución inestable, algunos paquetes necesarios aún no se han creado
o se han movido de Incoming.
La siguiente información puede ayudar a resolver la situación:Los siguientes paquetes tienen dependencias no satisfechas:
ros-indigo-desktop-full : Depende: ros-indigo-desktop pero no se va a instalar
Depende: ros-indigo-perception pero no se va a instalar
Depende: ros-indigo -simulators pero no se va a instalar
Depende: ros-indigo-urdf-tutorial pero no se va a instalar
E: No se pueden corregir los problemas, tiene paquetes rotos.
E: Tienes un paquete roto debido a un problema que no se puede corregir. ¡Así que aquí hay realmente una discrepancia de versión!
Mi distribución de Ubuntu es:
uname -v
#161~18.04.1-Ubuntu SMP Fri Feb 10 15:55:22 UTC 2023
Puede ver que es la versión 18.04 , y la versión correspondiente de Ubuntu se enumera aquí:
versión de Ubuntu | versión rosa |
Ubuntu 20.04 | noético |
Ubuntu 18.04 | melódico |
Ubuntu16.04 | cinético |
Ubuntu 14.04 | índigo |
Entonces necesitas modificar indigo a melódico , y cuando lo instalas de nuevo, todavía hay problemas:
sudo apt-get install ros-melodic-desktop-full python-rosinstall
报错:E: No se pudo ubicar el paquete ros-melodic-desktop-full
Se encuentra que el motivo del error informado aquí no es solo el problema de la correspondencia de la versión, sino también la elección de la fuente del software .
También es posible usar el comando lsb_release -sc para obtener directamente la versión, que se muestra aquí como bionic
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu bionic main" > /etc/apt/sources.list.d/ros-latest.list'
O para una mejor portabilidad en otros sistemas inciertos, ingrese el siguiente comando (recomendado):
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
Vuelva a ver el contenido del archivo ros-latest.list :
cat /etc/apt/sources.list.d/ros-latest.list
deb http://packages.ros.org/ros/ubuntu bionic main
Luego, después de sudo apt-get update update, no hay problema para instalarlo nuevamente
Después de instalar ros , el directorio ros aparecerá en el directorio opt , marque: ls /opt
nvidia rosa
Puedes entrar en el ros y echar un vistazo.Es la versión melódica.Qué directorios y archivos hay: cd /opt/ros/melodic
bin incluir local_setup.sh setup.sh compartir
env.sh lib local_setup.zsh _setup_util.py
etc. local_setup.bash setup.bash setup.zsh
4. Instalar paquetes dependientes
rosdep es una utilidad de administración de dependencias para ROS. Rosdep se puede usar con paquetes ROS y bibliotecas externas. Es una utilidad de línea de comandos para identificar e instalar dependencias para crear o instalar paquetes.
sudo rosdep init
Si hay un error como sudo: rosdep: comando no encontrado , debe instalar el comando de instalación python-rosdep : sudo apt-get install python-rosdep
rosdep update
Si hay un error al que no se puede acceder debido a la red
ERROR: no se puede descargar la lista de fuentes predeterminadas desde:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
El sitio web puede estar inactivo.
Método de procesamiento, cree un nuevo directorio y archivo:
sudo mkdir -p /etc/ros/rosdep/sources.list.d
cd /etc/ros/rosdep/sources.list.d
sudo gedit 20-default.list
Luego pegue el siguiente contenido en el archivo 20-default.list :
# listados específicos del sistema operativo primero
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx# genérico
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
yaml https:/ /raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
gbpdistro https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml fuerte# las distribuciones más nuevas (Groovy, Hydro, ...) ya no deben aparecer en la lista; en su lugar, se obtienen de rosdistro index.yaml
Si no puede acceder a él en el frente, el mismo sitio en el interior también será inaccesible.Modifique el archivo de hosts :
sudo gedit /etc/hosts
#在文件末尾添加
151.101.84.133 raw.githubusercontent.com
Luego rosdep update y, a veces, inténtalo unas cuantas veces más.
5. El terminal recién abierto se inicia automáticamente
Finalmente, agregue setup.bash a ~/.bashrc , para que el terminal se ejecute automáticamente cada vez que lo inicie, para que pueda ejecutar los comandos provistos por ROS en el shell
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
De lo contrario, sería más problemático necesitar source /opt/ros/melodic/setup.bash cada vez que abra la terminal .
6. Comprobar ROS
Después de instalar ROS, ingresamos el comando: roscore para verificar si el administrador de nodos se puede iniciar normalmente, como se muestra en la figura:
Bueno, no hay problema, este roscore puede entenderse como que cada nodo necesita interactuar y debe informarle, porque ROS es un método de organización débilmente acoplado, si se van a transmitir mensajes entre nodos, se necesita roscore para proporcionar información de conexión, es decir es decir, cuando arranca cada nodo, se conectará a roscore y registrará los mensajes publicados y suscritos por el nodo. Cuando aparece un nuevo nodo, roscore le proporcionará otros nodos con el mismo tema de mensaje, para establecer una relación de conexión, si no hay roscore , los nodos no podrán comunicarse.
Además, también vimos ROS_MASTER_URI=http://YAB:11311/ , donde YAB es el nombre de host y 11311 es el puerto predeterminado, por lo que podemos acceder a él a través de esta URI.
Ahora vamos a abrir dos nodos para probar. Los dos nuevos nodos son hablante y oyente . Uno habla y uno escucha, es decir, uno publica y otro se suscribe. Haz un dibujo para mostrar la relación entre ellos de la siguiente manera:
Cabe señalar que los nodos en la figura llaman periódicamente a los servicios proporcionados por roscore para encontrar otros nodos. Aquí, el hablante y el oyente llaman a roscore periódicamente , y la comunicación entre estos dos nodos se completa directamente. Roscore es solo una conexión transitoria.
Ahora abra una terminal por separado y ejecute el nodo:
rosrun rospy_tutorials talker
rosrun rospy_tutorials listener
Como se muestra en la imagen:
Este oyente siempre escuchará los mensajes publicados por el hablante . Si el nodo hablante finaliza con Ctrl+C , el nodo oyente también dejará de mostrar información y seguirá estando en estado de escucha.