Ubuntu20.04 instala ROS1 y ROS2 al mismo tiempo
Directorio de artículos
Cada versión de la versión del sistema Ubuntu tiene su correspondiente versión de ROS, y cada versión de ROS tiene su correspondiente versión de Ubuntu, que no se puede instalar casualmente.ubuntu20.04 corresponde a las versiones ROS1 noetic y ROS2 foxy.
1. Cambiar fuente
Reglas antiguas, primero cambia la fuente
1.1 Mediante actualización de software
abrir actualización de software
Seleccione Descargar desde -> Otro, busque China y seleccione la fuente. Cierre la interfaz y espere la fuente de actualización automática
1.2 Modificando el archivo fuente (recomendado)
(1) Archivos de origen de copia de seguridad:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.old
(2) Abra el archivo:
sudo gedit /etc/apt/sources.list
(3) Cambie la fuente: recomiende la fuente de Tsinghua o Alibaba Cloud (pruebe de acuerdo con su propia red, elija la más rápida): dirección de fuente de Tsinghua , seleccione la versión de Ubuntu (verifique el comando de versión de ubuntu:) cat /etc/issue
y copie el contenido de la fuente , sobrescribiendo sources.list
el contenido del archivo original:
(4) Después de cambiar la fuente, actualice:
sudo apt-obtener actualización
2. Instalar ROS1 (noético)
Referencia Introduce en detalle cómo instalar el sistema ROS en ubuntu20.04. La instalación se completa súper rápido (la última versión del tutorial) . La explicación es muy detallada. Se dan soluciones a muchos errores durante el proceso de instalación. Aquí está el general proceso
(1) Agregar fuente de software ROS
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'
(2) Añadir clave
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
(3) Actualice la fuente del software
sudo apt update
Reemplace lo anterior con el problema:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
(4) Instalar ROS noético
sudo apt install ros-noetic-desktop-full
(5) Inicializar rosdep
sudo rosdep init
- Si no se encuentra el comando:
sudo apt install python-rosdep2
# 或者
sudo apt install python3-rosdep2
ERROR: cannot download default sources list from:https : //raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.listWebsite may be down.
udo gedit /etc/hosts
Agregue el siguiente contenido al archivo de hosts abierto, luego guarde y salga
199.232.28.133 raw.githubusercontent.com
Si aparece ERROR: cannot download default sources list from
:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
El sitio web puede estar inactivo.
Visite https://www.ipaddress.com/ para consultar la dirección IP de raw.githubusercontent.com
Reemplace 199.232.28.133 raw.githubusercontent.com con:
185.199.108.133 raw.githubusercontent.com
ERROR: default sources list file already exists: /etc/ros /rosdep/sources.list.d/20-default.listPlease delete if you wish to re-initialize
sudo rm /etc/ros/rosdep/sources.list.d/20-default.list
Entonces
rosdep update
(6) Instalar rosinstall
sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool
(7) entorno de configuración
sudo gedit ~/.bashrc
# 末尾添加
source /opt/ros/noetic/setup.bash
# 保存退出
source ~/.bashrc
(8) Verificación
roscore
Command ‘roscore’ not found, but can be installed with:sudo apt install python3-roslaunch
, siga las instrucciones para instalar:
sudo apt install python3-roslaunch
Resorce not found: roslaunch
Indica que la instalación anterior no está completa, continúe con la instalación
sudo apt install ros-noetic-desktop-full
(9) La tortuguita prueba ROS:
roecore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
3. Instalar ROS2 (astuto)
Consulte ubuntu20.04 para instalar ros2 y coexistir con ros1
(1) Configure la codificación UTF-8
Entrada de terminal: locale
compruebe si se admite UTF-8
Si no es compatible:
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 export LANG=en_US.UTF-8
(2) Compruebe si el repositorio del universo de ubuntu está habilitado
apt-cache policy | grep universe
## 输出应如下:
500 http://security.ubuntu.com/ubuntu focal-security/universe i386 Packages
release v=20.04,o=Ubuntu,a=focal-security,n=focal,l=Ubuntu,c=universe,b=i386
500 http://security.ubuntu.com/ubuntu focal-security/universe amd64 Packages
release v=20.04,o=Ubuntu,a=focal-security,n=focal,l=Ubuntu,c=universe,b=amd64
Tenga en cuenta que el uso de 1.2 para cambiar la fuente se ha habilitado de forma predeterminada, pero no está marcado en la interfaz, no se preocupe, si no está habilitado, no habrá salida, entonces:
sudo apt install software-properties-common
sudo add-apt-repository universe
(3) Establecer la clave
sudo apt update && sudo apt install curl gnupg2 lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
- Si se informa un error
ailed to connect to raw.githubusercontent.com port 443 after 13 ms: 拒绝连接
, consulte el método en la sección anterior/etc/hosts
para agregar la IP de raw.githubusercontent.com al archivo; - Si no hay respuesta, espera un poco más
(4) Instalación
sudo apt update
# 推荐桌面版,注意安装时间较长,耐心等待
sudo apt install ros-foxy-desktop
(5) entorno de configuración
echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc
source .bashrc
(6) Prueba de demostración oficial
ros2 run demo_nodes_cpp talker
ros2 run demo_nodes_cpp listener
(7) La tortuguita ya no necesita amo
ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key
Cuatro, entorno de configuración mixta ROS1 y ROS2
Consulte Ubuntu 20.04 ROS1 y ROS2 para instalar y usar al mismo tiempo
Si solo se instala una versión de ROS, no es necesario realizar esta sección, de lo contrario, se requiere una configuración mixta de ROS1 y ROS2.
sudo gedit ~/.bashrc
Abra el archivo .bashrc y elimine el contenido de configuración en las dos secciones anteriores:
source /opt/ros/noetic/setup.bash
source /opt/ros/foxy/setup.bash
Luego agregue el siguiente código al final para completar la configuración de la variable de entorno. Durante el uso, puede cambiar la versión de ros según sea necesario. Recuerde que debe presionar "1" o "2" para seleccionar la versión de ros cada vez que abra un nueva terminal
echo "ros noetic(1) or ros2 foxy(2)?"
read edition
if [ "$edition" -eq "1" ];then
source /opt/ros/noetic/setup.bash
else
source /opt/ros/foxy/setup.bash
fi
Cinco, comandos comunes de ROS y sus diferencias
5.1 Comandos comunes
(1) compilar
# ROS1
catkin_make
catkin_make -DCATKIN_WHITELIST_PACKAGES=""
# ROS2
colcon build
colcon build --packages-select PACKAGE_NAME
(2) Configuración del espacio de trabajo bashrc
source ~/catkin_ws/devel/setup.bash
source ~/colcon_ws/install/setup.bash
(3) terminal de comando
rosrun --> ros2 run
rosnode --> ros2 node
roslaunch --> ros2 launch
rosparam --> ros2 param
rospkg --> ros2 pkg
rosservice --> ros2 service
rossrv --> ros2 srv
rostopic --> ros2 topic
rosaction --> ros2 action
5.2 Otros comandos (mis notas)
(1) Cambie la frecuencia de publicación y el ancho de banda del tema a través de topic_tools/throttle
# 参数解释:intopic: 订阅的输入话题、msgs_per_sec: 每秒允许通过的最大messages数、outtopic: 发布的输出话题 (default: intopic_throttle)
throttle messages <intopic> <msgs_per_sec> [outtopic]
# 举例,将原来200Hz的IMU数据降低至100
rosrun topic_tools throttle messages /imu_raw 100 /imu_raw_low_freq
Cómo escribir roslaunch:
<node pkg="topic_tools" type="throttle" name="camera_throttle" args="messages /imu_raw 100 /imu_raw_low_freq" output="screen" respawn="true"/>
(2) grabación y reproducción de bolsa
# 1 录制指定话题数据并保存,-O需要大写
rosbag record -O <bagname> <topic_name1> <topic_name2> <topic_name3> ...
# 2 查看数据包中包含的话题名称,话题数量,话题消息类型等信息
rosbag info <bagname>
# 3 bag播放
rosbag play <bagname> # 回放指定bag
rosbag play * # 回放当前目录下所有bag
rosbag play -s n <bagname> # 从指定时间(n = 指定时间s)开始回放bag
rosbag play -s n -u m <bagname> # 从指定时间(n = 开始时间s)开始播放指定时间(m = 指定播放时间s)的bag
rosbag play -r n <bagname> # 按指定倍率(n = 倍率)回放bag
rosbag play <topic_name1>:=<topic_name2> # 某个话题重命名播放
# 4 回放不成功,提示 reindex ,则:
rosbag reindex <bagname>
(3) rostopic echo --noarr para ver la información detallada de los datos lidar (como frame_id)
Use rostopic echo / lidar topic name para ver los datos devueltos por el lidar, y no se puede mostrar nada excepto el número. Si desea ver el frame_id y otra información de los datos LIDAR, simplemente agregue el parámetro –noarr para excluir la información de la matriz en los datos del tema.
rostopic echo --noarr /velodyne_points
(4) Visualiza la bolsa a través del comando rqt_bag
rqt_bag <bagname>