Ubuntu20.04 instala ROS1 e ROS2 ao mesmo tempo
Excerto
Cada versão do sistema Ubuntu tem uma versão ROS correspondente, e cada versão do ROS tem sua versão correspondente do Ubuntu, que não pode ser instalada casualmente. ubuntu20.04 corresponde às versões ROS1 noetic e ROS2 foxy. _ros1 e ros2 coexistem
Ubuntu20.04 instala ROS1 e ROS2 ao mesmo tempo
Diretório de artigos
- Ubuntu20.04 instala ROS1 e ROS2 ao mesmo tempo
- 1. Alterar fonte
- 2. Instale ROS1 (noético)
- 3. Instale ROS2 (raposa)
- 4. Instale ROS2 (Galáctico)
- Cinco, ambiente de configuração mista ROS1 e ROS2
- Seis, comandos comuns do ROS e suas diferenças
Cada versão do sistema Ubuntu tem uma versão ROS correspondente, e cada versão do ROS tem sua versão correspondente do Ubuntu, que não pode ser instalada casualmente. ubuntu20.04 corresponde às versões ROS1 noetic e ROS2 foxy ROS2 Galactic. Claro, o mais conveniente é usar a instalação com um clique do Yuxiang ROS:
wget http://fishros.com/install -O fishros && . fishros
Mas usaremos a instalação manual a seguir.
1. Alterar fonte
Regras antigas, mude a fonte primeiro
1.1 Através de atualização de software
atualização de software aberta
Selecione Baixar de->Outro, encontre a China e selecione a fonte. Feche a interface e aguarde a fonte de atualização automática
1.2 Modificando o arquivo de origem (recomendado)
(1) Arquivos de origem de backup:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.old
(2) Abra o arquivo:
sudo gedit /etc/apt/sources.list
(3) Altere a fonte: recomende a fonte de Tsinghua, Alibaba Cloud e Huawei Cloud: endereço de origem Tsinghua , selecione a versão do Ubuntu (verifique o comando da versão do Ubuntu:) cat /etc/issue
e copie o conteúdo da fonte, substituindo sources.list
o conteúdo original do arquivo:
(4) Após alterar a fonte, atualize:
sudo apt-get atualização
2. Instale ROS1 (noético)
(1) Adicionar fonte 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) Adicionar chave
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
(3) Atualize a fonte do software
sudo apt update
Substitua o acima pelo problema:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
(4) Instale o ROS noético
sudo apt install ros-noetic-desktop-full
(5) Inicializar rosdep
sudo rosdep init
- Se o comando não for encontrado:
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.
sudo gedit /etc/hosts
Adicione o seguinte conteúdo ao arquivo hosts aberto, salve e saia
199.232.28.133 raw.githubusercontent.com
Se aparecer ERROR: cannot download default sources list from
:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
O site pode estar fora do ar.
Visite https://www.ipaddress.com/ para consultar o endereço IP de raw.githubusercontent.com
-
sudo gedit /etc/hosts ##################### 127.0.0.1localhost 127.0.1.1iron-virtual-machine ###增加下面的解析 185.199.108.133 raw.githubusercontent.com
sudo apt update
sudo apt upgrade
Então
rosdep update
(6) Instale o rosinstall
sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool
(7) Ambiente de configuração
sudo gedit ~/.bashrc
# 末尾添加
source /opt/ros/noetic/setup.bash
# 保存退出
source ~/.bashrc
(8) Verificação
roscore
Command ‘roscore’ not found, but can be installed with:sudo apt install python3-roslaunch
, siga as instruções para instalar:
sudo apt install python3-roslaunch
Resorce not found: roslaunch
Indica que a instalação anterior não foi concluída, continue a instalação
sudo apt install ros-noetic-desktop-full
(9) A pequena tartaruga testa o ROS:
roecore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
3. Instale ROS2 (raposa)
(1) Definir codificação UTF-8
Entrada do terminal: locale
verifique se UTF-8 é compatível
Se não for compatível:
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) Verifique se o repositório do universo 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
Observe que usar 1.2 para alterar a fonte está habilitado por padrão, mas não está marcado na interface, não se preocupe, se não estiver habilitado não haverá saída, então:
sudo apt install software-properties-common
sudo add-apt-repository universe
(3) Defina a chave
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
- Se um erro for relatado
ailed to connect to raw.githubusercontent.com port 443 after 13 ms: 拒绝连接
, consulte o método da seção anterior/etc/hosts
para adicionar o IP de raw.githubusercontent.com ao arquivo; - Se não houver resposta, espere mais um pouco
(4) Instalação
sudo apt update
# 推荐桌面版,注意安装时间较长,耐心等待
sudo apt install ros-foxy-desktop
(5) Ambiente de configuração
echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc
source .bashrc
(6) Teste de demonstração oficial
ros2 run demo_nodes_cpp talker
ros2 run demo_nodes_cpp listener
(7) A pequena tartaruga não precisa mais de mestre
ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key
4. Instale ROS2 (Galáctico)
Para depurar o Autoware.universe, você deve instalar o Galactic, se precisar desinstalar o foxy primeiro
sudo apt remove ros-foxy-* && sudo apt autoremove
(1) Teste o ambiente de linguagem, que foi tratado no capítulo anterior;
(2) Verifique se o repositório ubuntu Universe está habilitado, o que foi tratado no capítulo anterior; (
3) Adicione o repositório ROS 2 apt
sudo apt update && sudo apt install curl
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 $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
(4) Instalação
sudo apt update
sudo apt install ros-galactic-desktop
sudo apt install ros-galactic-ros-base
sudo apt install ros-dev-tools
(5) Ambiente de configuração
echo "source /opt/ros/galactic/setup.bash" >> ~/.bashrc
source .bashrc
(6) Verificação da pequena tartaruga
ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key
Cinco, ambiente de configuração mista ROS1 e ROS2
Consulte Ubuntu 20.04 ROS1 e ROS2 para instalar e usar ao mesmo tempo
. Se apenas uma versão do ROS estiver instalada, esta seção não precisa ser executada, caso contrário, uma configuração mista de ROS1 e ROS2 será necessária.
sudo gedit ~/.bashrc
Abra o arquivo .bashrc e exclua o conteúdo de configuração nas duas seções anteriores:
source /opt/ros/noetic/setup.bash
source /opt/ros/foxy/setup.bash
source /opt/ros/galactic/setup.bash
Em seguida, adicione o seguinte código no final para concluir a configuração da variável de ambiente. Durante o uso, você pode alternar a versão do ros conforme necessário. Lembre-se de que você precisa pressionar "1" ou "2" para selecionar a versão do ros sempre que abrir um novo terminal (galáctico é o mesmo que razão)
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
Seis, comandos comuns do ROS e suas diferenças
6.1 Comandos comuns
(1) compilar
# ROS1
catkin_make
catkin_make -DCATKIN_WHITELIST_PACKAGES=""
# ROS2
colcon build
# 只编译指定包
colcon build --packages-select PACKAGE_NAME
# 忽略指定包
colcon build --packages-ignore PACKAGE_NAME
# 遇到编译错误继续编译其他模块
colcon build --continue-on-error
(2) Configuração do espaço de trabalho bashrc
source ~/catkin_ws/devel/setup.bash
source ~/colcon_ws/install/setup.bash
(3) comando de terminal
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
6.2 Outros comandos (minhas notas)
(1) Altere a frequência de publicação e largura de banda do tópico por meio 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
Como escrever roslaunch:
<node pkg="topic_tools" type="throttle" name="camera_throttle" args="messages /imu_raw 100 /imu_raw_low_freq" output="screen" respawn="true"/>
(2) gravação e reprodução 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 visualizar as informações detalhadas dos dados lidar (como frame_id)
Use rostopic echo / lidar topic name para visualizar os dados retornados pelo lidar, e nada pode ser exibido, exceto o número. Se você deseja visualizar o frame_id e outras informações dos dados lidar, basta adicionar o parâmetro –noarr para excluir as informações do array nos dados do tópico.
rostopic echo --noarr /velodyne_points
(4) Visualize a bolsa através do comando rqt_bag
rqt_bag <bagname>