ROS2安裝及使用過程中遇到的問題


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM