博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ROS2安装及使用过程中遇到的问题
阅读量:7222 次
发布时间:2019-06-29

本文共 3057 字,大约阅读时间需要 10 分钟。

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安装指导链接:

转载于:https://www.cnblogs.com/tuxinbang/p/10705419.html

你可能感兴趣的文章
吐槽Javascript系列二:数组中的splice和slice方法
查看>>
HashMap剖析之内部结构
查看>>
什么是Javascript函数节流?
查看>>
【技术性】Search知识
查看>>
区块链共识机制优缺点对比都是什么
查看>>
如何进阶一名有竞争力的程序员?
查看>>
seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
查看>>
前端_面试
查看>>
Promise面试题,控制异步流程
查看>>
MQ框架的比较
查看>>
Spark in action on Kubernetes - Playground搭建与架构浅析
查看>>
详解NodeJs流之一
查看>>
Fundebug计费标准解释:事件数是如何定义的?
查看>>
理解这几张图,你就是js小牛了
查看>>
【EOS】Cleos基础
查看>>
iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
查看>>
使用parted解决大于2T的磁盘分区
查看>>
oschina
查看>>
Octave 入门
查看>>
深度学习入门:10门免费线上课程推荐
查看>>