ROS2常規的安裝流程在網上可以找到,正常安裝基本沒問題。但是,由於操作系統和后台運行程序的差異,還是會遇到一些問題。我把我在安裝過程中遇到的問題記錄如下:
1.安裝版本的選擇
ROS2有多個發行版(ros_distro),目前出來的有Crystal、Bouncy、Ardent。具體多少個,可去ROS2的網站上去查詢。
選擇安裝版本shell命令:
$ export ROS_DISTRO=crystal # or bouncy or ardent
$ sudo apt update
就是同一個發行版,也分桌面版和基礎版:
建議安裝桌面版,有界面:
$ sudo apt install ros-$ROS_DISTRO-desktop
若安裝基礎版:
$ sudo apt install ros-$ROS_DISTRO-ros-base
2.ROS2命令不能執行
比如執行一條ros2命令:
$ ros2 run demo_nodes_cpp talker
但shell卻提示 ros2: command not found。
這時應該檢查環境變量ROS_DISTRO的值是否是對應的ROS2發行版名稱:
$ echo $ROS_DISTRO
若不正確則要改正,比如:
$ export ROS_DISTRO=Crystal
接着設置環境變量:
$ source /opt/ros/$ROS_DISTRO/setup.bash
3.colcon命令不能運行
ROSwiki官網推薦了新的軟件包編譯工具colcon。ROS編譯工具目前經歷了三個階段:1. catkin 2. ament 3. colcon。
shell提示"“command not found”,這是因為相應的編譯系統還沒有安裝。使用以下命令進行安裝:
sudo apt update && sudo apt install -y \
build-essential \
cmake \
git \
python3-colcon-common-extensions \
python3-pip \
python-rosdep \
python3-vcstool \
wget
# install some pip packages needed for testing
sudo -H python3 -m pip install -U \
argcomplete \
flake8 \
flake8-blind-except \
flake8-builtins \
flake8-class-newline \
flake8-comprehensions \
flake8-deprecated \
flake8-docstrings \
flake8-import-order \
flake8-quotes \
pytest-repeat \
pytest-rerunfailures
# [Ubuntu 16.04] install extra packages not available or recent enough on Xenial
python3 -m pip install -U \
pytest \
pytest-cov \
pytest-runner \
setuptools
# install Fast-RTPS dependencies
sudo apt install --no-install-recommends -y \
libasio-dev \
libtinyxml2-dev
---------------------
引用自https://blog.csdn.net/sad490/article/details/81461507
注意命令不要寫錯字。
4.不能運行gazebo
shell提示:VMware: vmw_ioctl_command error Invalid argument.
這是在虛擬機上運行遇到的問題,解決辦法:
$ export SVGA_VGPU10=0
shell運行指令之后即可運行gazebo。
5.環境變量設置
為了能正常使用ROS2中的命令,必須在安裝完畢后添加環境變量。
source /opt/ros/crystal/setup.bash
注意,命令中的crystal是ROS2的發行版名稱,應根據自己安裝的版本選擇正確的名稱。
6.ROS 2 軟件包
ROS2 中有很多功能包(也可以理解為插件包),若是沒有這些功能包,很多ROS2程序可能就無法編譯、運行。所以,我們必須要安裝這些功能包。
可以一個個安裝,如安裝3D顯示功能包:
sudo apt-get install ros-crystal-rviz
也可以全部安裝,用如下shell命令:
sudo apt install 'apt list ros-crystal-* 2> /dev/null | grep "/" | awk -F/ '{print $1}' | grep -v -e ros-crystal-ros1-bridge -e ros-crystal-turtlebot2- | tr "\n" " "'
建議全部安裝,因為后面開發會用到很多ROS 2自帶的功能包。
7.不能安裝應用程序
在Ubuntu中,有時候運用sudo apt-get install xxx 安裝軟件時,會出現下面的情況:
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
這是因為有apt還在運行,解決辦法是查找所有apt相關的進程,然后用命令殺死。
~$ ps afx|grep apt
3284 pts/0 S+ 0:00 \_ grep --color=auto apt
2869 ? Ss 0:00 /bin/sh /usr/lib/apt/apt.systemd.daily install
2873 ? S 0:00 \_ /bin/sh /usr/lib/apt/apt.systemd.daily lock_is_held install
~$ sudo kill -9 2873
~$ sudo kill -9 2869
8.功能包不能識別
明明是已經通過 ros2 pkg create創建好的包,但運行時shell提示找不到包:
這可能是因為我們在創建包時,只是在功能包的目錄下source了局部環境變量:
source ./install/setup.bash
這樣產生的環境變量只是暫時生效,如果關閉shell或系統,該環境變量失效,必須重新source一次。
若是還遇到其他問題,百度一下。
給出兩個ROS2安裝指導鏈接:
①http://www.guyuehome.com/2309
②https://blog.csdn.net/sad490/article/details/81460395#comments