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 testingsudo -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 Xenialpython3 -m pip install -U \ pytest \ pytest-cov \ pytest-runner \ setuptools# install Fast-RTPS dependenciessudo 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安装指导链接:
①
②