Ubuntu-18.04 安装 ROS 系统

参考资料:ROS入门教程-安装并配置ROS环境(melodic版本)https://www.ncnynl.com/archives/201906/3147.html

源码安装ROS Melodic Python3 源码安装ROS Melodic Python3 指南 (转) + 安装记录 - 菠菜僵尸 - 博客园

在ROS中使用Python3  在ROS中使用Python3 - 简书

ROS环境配置:手把手ROS(1)---ROS环境配置_哔哩哔哩_bilibili

ROS (Kinetic)安装: 2019-08-21 Ubuntu 16 安装ROS Kinetic版本_哔哩哔哩_bilibili

STEP-1,添加 sources.list,设置 ROS 更新源(可以使用USTC或TU的镜像)

STEP-2,更新KEYs

STEP-3,安装并更新

ROS 编译系统 catkin 详解 - 简书

表1-1 ROS的历史版本

发行版本    发布日期    截止日期    Ubuntu版本    备注
Melodic Morenia    2018年5月    2023年5月    18.04 LTS    LTS
Lunar Loggerhead    2017年5月    2019年5月    17.04    
Kinetic Kame    2016年5月    2021年5月    16.04 LTS    LTS
Jade Turtle    2015年5月    2017年5月    15.04    
Indigo Igloo    2014年7月    2019年4月    14.04 LTS    LTS
Hydro Medusa    2013年9月    2015年5月    13.04    
Groovy Galapagos    2012年12月    2014年7月    12.10    
Fuerte Turtle    2012年4月        12.04 LTS    
Electric Emys    2011年8月        11.10    
Diamondback    2011年3月        11.04    
C Turtle    2010年8月        10.04 LTS    
Box Turtle    2010年3月        9.10    
文章采用ROS版本为ROS Melodic,操作系统为Ubuntu 18.04 LTS 64bit。操作系统安装教程请参考作者上一篇博文推荐的链接。
详细安装步骤如下:
 

(一)ROS的安装与环境配置

1.设置教程

1.1 打开system setting(系统设置)->Software&Updates(软件与更新)

1.2点击上方Other software(其他软件),点击左下角add(添加)按钮

1.3下面一段复制进去

deb http://ros.exbot.net/rospackage/ros/ubuntu/ bionic main

1.4 确定点Add Source 勾选选项

就可以愉快地在终端(快捷键:CTRL+ALT+T)里sudo apt-get update

sudo apt-get update

2正式安装和配置环境:Documentation - ROS Wiki

2.1 添加 sources.list

配置你的电脑使其能够安装来自 packages.ros.org的软件。

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

或者在终端使用镜像(USTC):

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

或者在终端使用镜像(Tsinghua University):

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

2.2 添加 keys

sudo apt-key adv --keyserver hkp://pool.sks-keyservers.net --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

2.3 更新并安装

确保你的Debian软件包索引是最新的:

sudo apt-get update

安装桌面完整版:(推荐) 包含ROS、rqt、rviz、通用机器人函数库、2D/3D仿真器、导航以及2D/3D感知功能。

sudo apt install ros-melodic-desktop-full

如果出现以下错误:

The following packages have unmet dependencies:
 ros-melodic-desktop : Depends: ros-melodic-common-tutorials but it is not going to be installed
                       Depends: ros-melodic-geometry-tutorials but it is not going to be installed
                       Depends: ros-melodic-robot but it is not going to be installed
                       Depends: ros-melodic-ros-tutorials but it is not going to be installed
                       Depends: ros-melodic-urdf-tutorial but it is not going to be installed
                       Depends: ros-melodic-visualization-tutorials but it is not going to be installed
                       Depends: ros-melodic-viz but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

解决方案——安装 aptitude,然后继续:

$ sudo apt install aptitude
$ sudo aptitude -y install ros-melodic-desktop-full
The following NEW packages will be installed:

 然后就成功了


 有的问题 apt-get 解决不了,必须使用 aptitude 解决,有的问题,用 aptitude 解决不了,必须使用apt-get.

  •     aptitude 解决得更好的地方: install, remove, reinstall(apt-get无此功能), show(apt-get无此功能), search(apt-get无此功能), hold(apt-get无此功能), unhold(apt-get无此功能),
  •      apt-get 解决得更好的地方: source(aptitude无此功能), build-dep (低版本的aptitude没有build-dep功能)
  •      apt-get 跟 aptitude 没什么区别的地方:update, upgrade (apt-get upgrade=aptitude safe-upgrade, apt-get dist-upgrade=aptitude full-upgrgade)

解决aptitude 安装软件时 package XXX is not configure yet

$ sudo mv /var/lib/dpkg/info /var/lib/dpkg/info_old //现将info文件夹更名
$ sudo mkdir /var/lib/dpkg/info //再新建一个新的info文件夹
$ sudo apt-get update
$ sudo apt-get -f install
$ sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/info_old //

2.4 初始化 rosdep

在开始使用 ROS 之前你还需要初始化 rosdep。rosdep 可以方便在你需要编译某些源码的时候为其安装一些系统依赖,同时也是某些 ROS 核心功能组件所必需用到的工具。

有可能会存在提示 rosdep 不存在或者无法安装的问题。解决方法:尝试找到 rosdep.py,一般都在 /usr/bin/ 的目录下。确定了 python 的版本是 2.7 之后,

python rosdep.py

应该也能解决问题。然后,执行 ROS 初始化过程。

sudo rosdep init

可能出现如下错误(pkg-resources改出问题了):

U303L:~/ros_ws$ sudo rosdep init
Traceback (most recent call last):
  File "/usr/bin/rosdep", line 11, in <module>
    load_entry_point('rosdep==0.19.0', 'console_scripts', 'rosdep')()
  File "/home/npuyin/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 489, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/home/npuyin/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2852, in load_entry_point
    return ep.load()
  File "/home/npuyin/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2443, in load
    return self.resolve()
  File "/home/npuyin/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2449, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
ImportError: No module named rosdep2.main

解决办法——卸载 python-pkg-resources 然后重新安装:

sudo rm -rf /var/lib/dpkg/info/python-pkg-resources
sudo dpkg --remove --force-remove-reinstreq python-pkg-resources
sudo apt-get purge python-pkg-resources

pip install distribute
sudo apt install --fix-missing python-rosdep

运行 rosdep init 还是出现的问题(这个链接遇到墙了)

U303L:~/ros_ws$ sudo rosdep init
ERROR: cannot download default sources list from:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
Website may be down.

解决办法很多,本文使用跳过初始化然后修改20-default.list文件直接更新的方法:

彻底解决各种浏览器访问不了GitHub问题

准备工作,从 github 或者 gitee 上将 ros/rosdistro/ 整个git下来,并放置到用户更目录下:

cd ~/
git clone https://github.com/ros/rosdistro.git

或者从gitee镜像下载

cd ~/
git clone https://gitee.com/zksg/rosdistro.git

首先,修改新建 20-default.list 文件到指定目录 /etc/ros/rosdep/sources.list.d/

sudo mkdir -p /etc/ros/rosdep/sources.list.d
cd /etc/ros/rosdep/sources.list.d
sudo gedit 20-default.list

然后,修改 20-default.list 的内容

# os-specific listings first
yaml file:///home/yourname/rosdistro/rosdep/osx-homebrew.yaml osx

# generic
yaml file:///home/yourname/rosdistro/rosdep/base.yaml
yaml file:///home/yourname/rosdistro/rosdep/python.yaml
yaml file:///home/yourname/rosdistro/rosdep/ruby.yaml
gbpdistro file:///home/yourname/rosdistro/releases/fuerte.yaml fuerte

# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead

接着,修改相关文件的链接:

  • /usr/lib/python2.7/dist-packages/rosdep2/main.py
  • #for"targets.yaml"
  • /usr/lib/python2.7/dist-packages/rosdep2/rep3.py
cd /usr/lib/python2.7/dist-packages/rosdep2/
sudo gedit rep3.py

更改与替换:

# REP3_TARGETS_URL = 'https://raw.githubusercontent.com/ros/rosdistro/master'\
#                    '/releases/targets.yaml'
REP3_TARGETS_URL = 'file:///home/yourname/rosdistro/releases/targets.yaml'
  • # for "index-v4.yaml"
  • /usr/lib/python2.7/dist-packages/rosdistro/__init__.py   
cd /usr/lib/python2.7/dist-packages/rosdep2/
sudo gedit __init__.py  

更改与替换:

#DEFAULT_INDEX_URL = 'https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml'
DEFAULT_INDEX_URL = 'file:///home/yourname/rosdistro/index-v4.yaml'
  • # for "fuerte.yaml"
  • /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py 
cd /usr/lib/python2.7/dist-packages/rosdep2/
sudo gedit gbpdistro_support.py 

更改与替换:

# FUERTE_GBPDISTRO_URL = 'https://raw.githubusercontent.com/ros/rosdistro/' \
#    'master/releases/fuerte.yaml'
FUERTE_GBPDISTRO_URL = 'file:///home/yourname/rosdistro/releases/fuerte.yaml'
  • /usr/lib/python2.7/dist-packages/rosdistro/init.py

直接进入下一步:

rosdep update

更新ROS源代码。这个命令相当于 Linux 使用 sudo apt-get update 来更新系统软件,它的作用就是更新 ROS 系统中的软件包

可以参考:

1-《解决rosdep init报错“Website may be down”》,解决rosdep init报错“Website may be down” - 知乎

2-《ROS:sudo rosdep init出错常规方法都无效后解决办法记录》,ROS:sudo rosdep init出错常规方法都无效后解决办法记录 - 知乎

3- 控制台使用SSR代理,在 ~/.bashrc 中添加如下内容并使用 source 更新,能够完成后续的 ros 系统更新(已经失效)

alias setproxy="export ALL_PROXY=http://127.0.0.1:12333"
alias unsetproxy="unset ALL_PROXY"
alias ip="curl -i http://ip.cn"

2.5 环境设置

如果需要每次新的终端都能将 ROS环境变量都能够自动配置好(即添加到bash会话中),则需要进行以下操作:

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
上述命令的意思是:将 source /opt/ros/indigo/setup.bash 这句话 ,添加(追加)到 ~/.bashrc 的尾部。 
(注意: )
 文件中。
  • Q: 为什么使用 >> 而不是 > ?
  • A: 如果使用的是 > 则表示 命令用于 覆盖原来文件的内容;使用 >> 则表示 命令用于追加到原来文件的尾部。
  • Q: 为什么要添加这个 ros 环境变量到~/.bashrc文件?
    A: 我们要想在终端中使用 ros 相关的命令的话,必须要先添加 ros 的环境变量,就是必须要先执行命令:source /opt/ros/melodic/setup.bash,然后才能使用 ros 相关的命令。所以,每次新打开一个终端,就要执行一次 source /opt/ros/melodic/setup.bash 命令,这样很麻烦。.bashrc 文件是终端的启动文件,我们将这句话添加到启动文件中的效果就是,我们每次新打开一个终端,都会自动执行这句话。所以,直接将这条命令写到 ~/.bashrc 文件里。

2.6 安装 rosinstall

   rosinstall是 ROS 中一个独立分开的常用命令行工具,它可以方便让你通过一条命令就可以给某个 ROS 软件包下载很多源码树。

sudo apt-get install python-rosinstall

2.7 检查你的ROS已经配置好了

一个检查的好方法是确保你已经设置了像ROS_ROOTROS_PACKAGE_PATH这样的环境变量,可以通过以下命令查看:

export | grep ROS
U303L:~$ export | grep ROS
declare -x ROSLISP_PACKAGE_DIRECTORIES=""
declare -x ROS_DISTRO="melodic"
declare -x ROS_ETC_DIR="/opt/ros/melodic/etc/ros"
declare -x ROS_MASTER_URI="http://localhost:11311"
declare -x ROS_PACKAGE_PATH="/opt/ros/melodic/share"
declare -x ROS_PYTHON_VERSION="2"
declare -x ROS_ROOT="/opt/ros/melodic/share/ros"
declare -x ROS_VERSION="1"

 或者输入以下指令进行检查:

roswtf
U303L:~$ roswtf
Loaded plugin tf.tfwtf
No package or stack in the current directory
================================================================================
Static checks summary:

No errors or warnings
================================================================================

ROS Master does not appear to be running.
Online graph checks will not be run.
ROS_MASTER_URI is [http://localhost:11311]

注意:如果什么都没有,我们必须对 ROS 进行配置环境变量,才可以在终端中使用 ROS 的相关命令和工具,即:

source /opt/ros/melodic/setup.bash

        【source命令用法:source FileName    作用:在当前bash环境下读取并执行FileName中的命令。
         注:该命令通常用命令“.”来替代。   如:source .bash_rc 与 . .bash_rc 是等效的。】

再进行上面的检查,出现如上结果说明成功。但是我们使用 source 这个 指令来添加环境变量有一个缺点: 它只作用于当前终端,如果我们重新打开一个新的终端,使用 export | grep ROS 命令来查看当前终端上的环境变量我们依然得不到想要的结果,所以就需要上面的2.5 环境设置。

如果ROS提示找不到测试/运行包,则需要向ROS_PACKAGE_PATH中添加路径来解决。具体操作请参照链接:
https://blog.csdn.net/qq_38347931/article/details/80267150

 到这里说明ROS-melodic就安装完成了。接下来,我们要做的事情是:开始ROS基础学习。

2.8卸载melodic

用apt-get方式安装melodic的,卸载使用如下命令:

$ sudo apt-get remove ros-melodic-*

卸载成功的效果:就是/opt/ROS/indigo文件夹被删除

3.学习ROS源码

如果希望基于ROS源代码进行学习,则可以下载完整的ROS源代码,方法见附后链接。

源码安装ROS Melodic Python3 指南 (转) + 安装记录 - 菠菜僵尸 - 博客园

4. 启动小海龟turtlesim

ROS系统自带的小海龟仿真程序turtlesim。

分步骤介绍如下:

4.1 启动节点管理器

为了启动turtlesim,首先运行roscore启动ROS的节点管理器,方法及结果如下:

roscore

roscore会启动一个ROS Master、一个ROS参数服务器和一个名为rosout的日志节点。

ROS Master默认运行于11311端口,如果想指定端口,可参照如下:

roscore -p 11311

4.2 启动ros节点

利用Ctrl+Shift+T快捷键另外打开一个终端,在~/catkin_ws/目录下启动turtlesim的节点turtlesim_node,命令如下:

$ rosrun turtlesim turtlesim_node

4.3 使用键盘

如果希望小海龟能够移动,需要使用Ctrl+Shift+T快捷键另外再打开一个终端,启动turtlesim的键盘控制节点turtle_teleop_key,输入命令:

$ rosrun turtlesim turtle_teleop_key

Reading from keyboard
---------------------------
Use arrow keys to move the turtle.

在当前终端下,按住方向键即可控制小海龟移动愉快的玩耍了。

4.4 启动ros节点提示找不到对应的包

如果在创建ROS工作空间时不是严格按照

$ mkdir -p ~/catkin_ws/src

来创建的话可能后面会出现找不到包的情况,这个时候你用命令

$ echo $ROS_PACKAGE_PATH

会发现所找不到的包没有包含在这个路径里面,需要手动地添加路径到ROS_PAKAGE_PATH路径中。

方法如下:
1、打开终端脚本~/.bashrc文件:

$ sudo gedit ~/.bashrc

2、在文件末尾添加

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/<YOUR_ROS_WS>/src

3、新打开一个终端,然后执行

$ echo $ROS_PACKAGE_PATH

检查工作空间路径已经加入到ROS_PACKAGE_PATH中了。

源码(PYTHON3)安装ROS, ros-melodic

参考链接1:源码安装ROS Melodic Python3 指南 (转) + 安装记录 - 菠菜僵尸 - 博客园

参考链接2:https://github.com/vcstools/wstool/issues/10

0. 卸载现有ROS

sudo apt remove purge ros-*
sudo rm -rf /etc/ros
sudo rm -rf /opt/ros

1. 首先安装基本依赖包:

安装ros依赖:

sudo apt install python3-rosdep2 python3-rosinstall-generator 
sudo apt install python3-rosinstall build-essential python3-defusedxml 
sudo apt install ros-melodic-gmapping python3-netifaces

安装编译依赖:

sudo apt install libeigen3-dev libboost-thread-dev libgtest-dev 
sudo apt install libconsole-bridge-dev libpoco-dev python3-sip-dev
sudo apt install libboost-filesystem-dev libboost-program-options-dev
sudo apt install libtinyxml2-dev libtinyxml-dev pyqt5-dev libcurl4-openssl-dev
sudo apt install libboost-regex-dev liblz4-dev libbz2-dev libboost-singals-dev
sudo apt install liburdfdom-headers-dev liburdfdom-dev uuid-dev libassimp-dev
sudo apt install libogre-1.9-dev libyaml-cpp-dev

2. 配置rosdep

mkdir setups
cd setups
touch rosdep
chmod +x ./rosdep

在 ./rosde 中添加脚本内容:

#!/usr/bin/env python3

from rosdep2.main import rosdep_main
rosdep_main()

执行

sudo ./rosdep init
./rosdep update

如果提示:

wstool init
Traceback (most recent call last):
  File "/usr/bin/wstool", line 63, in <module>
    sys.exit(wstool.wstool_cli.wstool_main(sys.argv))
  File "/usr/lib/pymodules/python2.7/wstool/wstool_cli.py", line 217, in wstool_main
    'info': cli.cmd_info,
AttributeError: WstoolCLI instance has no attribute 'cmd_info'

卸载现有的wstool并重装

sudo apt remove python-vcstools python-rosinstall # 卸载
sudo apt install -u python3-rosinstall python3-vcstools # 重新安装

3. 获取基本ros环境的源码

首先下载执行文件到 setups 文件夹下。

wget https://raw.githubusercontent.com/ros-infrastructure/rosinstall_generator/master/bin/rosinstall_generator
wget https://raw.githubusercontent.com/vcstools/wstool/master/scripts/wstool
wget https://raw.githubusercontent.com/ros-infrastructure/rospkg/master/scripts/rosversion
wget https://raw.githubusercontent.com/ros-infrastructure/catkin_pkg/master/bin/catkin_find_pkg
wget https://raw.githubusercontent.com/ros-infrastructure/catkin_pkg/master/bin/catkin_create_pkg
wget https://raw.githubusercontent.com/ros-infrastructure/catkin_pkg/master/bin/catkin_generate_changelog
wget https://raw.githubusercontent.com/ros-infrastructure/catkin_pkg/master/bin/catkin_tag_changelog
wget https://raw.githubusercontent.com/ros-infrastructure/catkin_pkg/master/bin/catkin_test_changelog

如果有一些下载不了的,

### @ ./setups
cp /usr/bin/wstool ./
cp /usr/bin/rosinstall_generator ./
cp /usr/bin/rosversion ./

然后,设置为可执行文件。
chmod +x ./rosinstall_generator

chmod +x ./wstool
chmod +x ./rosversion
chmod +x ./catkin_find_pkg
chmod +x ./catkin_create_pkg
chmod +x ./catkin_generate_changelog
chmod +x ./catkin_tag_changelog
chmod +x ./catkin_test_changelog

修改所有文件的第一行引用的python 为python3,

### 修改
#!/usr/bin/python
#!/usr/bin/env python
### 为
#!/usr/bin/python3
#!/usr/bin/env python3

并把wstool下面的from _future_ import 行删除

新建总工程目录(与setups同目录)并执行ros源代码下载

mkdir ../workspace
cd ../workspace
../setups/rosinstall_generator desktop_full --rosdistro melodic --deps --tar > melodic-desktop-full.rosinstall
../setups/wstool init -j8 src melodic-desktop-full.rosinstall

如果安装失败的话,可以试试继续安装:

../setups/wstool update -j 8 -t src

接下来解决依赖

../setups/rosdep install --from-paths src --ignore-src --rosdistro melodic -y

报错

dpkg-query: no packages found matching python-mock
dpkg-query: no packages found matching python3-mock
dpkg-query: no packages found matching python3-paramiko
dpkg-query: no packages found matching libcppunit-dev
dpkg-query: no packages found matching python3-pyqt5.qtsvg
dpkg-query: no packages found matching python-rosdep-modules
dpkg-query: no packages found matching python3-rosdep-modules
dpkg-query: no packages found matching python3-coverage
dpkg-query: no packages found matching libtool-bin
dpkg-query: no packages found matching python3-pycryptodome
dpkg-query: no packages found matching python3-gnupg
dpkg-query: no packages found matching python3-pydot
dpkg-query: no packages found matching python3-pygraphviz
ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
rosunit: No definition of [python-rospkg] for OS version [bionic]
depth_image_proc: No definition of [boost] for OS version [bionic]
cpp_common: No definition of [boost] for OS version [bionic]

......

rqt_logger_level: No definition of [python-rospkg] for OS version [bionic]
rqt_top: No definition of [python-psutil] for OS version [bionic]
camera_info_manager: No definition of [boost] for OS version [bionic]
actionlib: No definition of [boost] for OS version [bionic]

添加相关依赖,然后继续(重新)解决依赖。

sudo apt install python3-mock python3-paramiko python3-pyqt5.qtsvg
sudo apt install python3-rosdep-modules python3-coverage libtool-bin
sudo apt install python3-pycryptodome python3-gnupg python3-pydot 
sudo apt install python3-pygraphviz log4cxx log4cxx-dev log4cxx10-dev
sudo apt install liblog4c-dev liblog4cplus-1.1-9 liblog4cplus-dev liblog4cplus-dbg
sudo apt install pyqt python3-pyqt5 libosip2-dev python3-qtpy python3-qtconsole
sudo apt install sip-dev pyqt5-dev python-sip-dev pyqt5-dev-tools
sudo apt install python-qt-binding

4. 安装Catkin

首先,安装相关依赖

sudo apt-get install cmake
sudo apt-get install python3-catkin-pkg 
sudo apt-get install python3-empy 
sudo apt-get install python3-nose 
sudo apt-get install python3-setuptools 
sudo apt-get install libgtest-dev 
sudo apt-get install build-essential

Github Catkin上下载源码,cmake并选择python版本为3,安装地址为与src相同根目录下的环境文件夹env。

mkdir ../src_catkin
git clone https://github.com/ros/catkin.git src_catkin
export ROS_PYTHON_VERSION=3
mkdir release_catkin
mkdir env
cd release_catkin
cmake -DCMAKE_INSTALL_PREFIX=../env/ ..
make DESTDIR=/usr/local
sudo make install

然后回到workspace目录 
修改 ./src/orocos_kinematics_dynamics/python_orocos_kdl/CMakeLists.txt

SET(PYTHON_VERSION 2 CACHE STRING "Python Version")

改为

SET(PYTHON_VERSION 3 CACHE STRING "Python Version")

修改 src/dynamic_reconfigure/cfg/Test.cfgsrc/nodelet_core/nodelet_topic_tools/cfg/NodeletThrottle.cfg 第一行为

#! /usr/bin/env python3

添加 regex 依赖src/ros_comm/rosconsole/CMakeLists.txt 72 行后(维持其他不变,添加 boost_regex

target_link_libraries(rosconsole ${rosconsole_backend_LIBRARIES} ${catkin_LIBRARIES} ${Boost_LIBRARIES} boost_regex)

修改 src/vision_opencv/cv_bridge/CMakeLists.txt 第11行为

find_package(Boost REQUIRED python-py36)

在../release_catkin/devel/setup.sh的最后一行添加 (catkin)

export ROS_PYTHON_VERSION=3

修改 src/rosbag_migration_rule/CMakeLists.txt, src/ros_tutorials/ros_tutorials/CMakeLists.txt,在其倒数第二行插入

SET(PYTHON_VERSION 3 CACHE STRING "Python Version") 
# SET(PYTHON_VERSION 3) 

5. 开始编译

cd ../workspace
## 编译工作空间
export ROS_PYTHON_VERSION=3
./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release \
                                      --install-space=/opt/ros/melodic
## 添加环境变量
source /opt/ros/melodic/setup.bash
mv ../setups/* /usr/local/bin/

如果总是提示错误的话,source ../release_catkin/devel/setup.sh

如果想更换安装地点的话,可以在最后catkin之后加 --install-space=/opt/ros/melodic

==> Processing catkin package: 'ros_tutorials'
==> Building with env: '/opt/ros/melodic/env.sh'
==> cmake /home/npuyin/Downloads/ros-melodic/workspace/src/ros_tutorials/ros_tutorials -DCATKIN_DEVEL_PREFIX=/home/npuyin/Downloads/ros-melodic/workspace/devel_isolated/ros_tutorials -DCMAKE_INSTALL_PREFIX=/opt/ros/melodic -DCMAKE_BUILD_TYPE=Release -G Unix Makefiles in '/home/npuyin/Downloads/ros-melodic/workspace/build_isolated/ros_tutorials'
-- Using CATKIN_DEVEL_PREFIX: /home/npuyin/Downloads/ros-melodic/workspace/devel_isolated/ros_tutorials
-- Using CMAKE_PREFIX_PATH: /opt/ros/melodic
-- This workspace overlays: /opt/ros/melodic
-- Using PYTHON_EXECUTABLE: /usr/bin/python2
-- Using Debian Python package layout
-- Could NOT find PY_em (missing: PY_EM) 
CMake Error at /opt/ros/melodic/share/catkin/cmake/empy.cmake:30 (message):
  Unable to find either executable 'empy' or Python module 'em'...  try
  installing the package 'python-empy'
Call Stack (most recent call first):
  /opt/ros/melodic/share/catkin/cmake/all.cmake:164 (include)
  /opt/ros/melodic/share/catkin/cmake/catkinConfig.cmake:20 (include)
  CMakeLists.txt:3 (find_package)


-- Configuring incomplete, errors occurred!
  • ### 可能出现以上错误,原因似乎是在某个地方的PYTHON_VERSION没有更改到位,在cmake的时候直接指定:PYTHON_VERSION=3。
sudo su  ### 视安装路径,或许需要

cd /home/npuyin/Downloads/ros-melodic/workspace/build_isolated/ros_tutorials && 
\ /opt/ros/melodic/env.sh 
\ cmake /home/npuyin/Downloads/ros-melodic/workspace/src/ros_tutorials/ros_tutorials 
\ -DCATKIN_DEVEL_PREFIX=/home/npuyin/Downloads/ros-melodic/workspace/devel_isolated/ros_tutorials 
\ -DCMAKE_INSTALL_PREFIX=/opt/ros/melodic 
\ -DCMAKE_BUILD_TYPE=Release 
\ -DPYTHON_VERSION=3
\ -G 'Unix Makefiles'

### 可能出现以上错误,原因似乎是 qt 的版本没有更改到位,查看、更改和切换qt版本。

参考链接1:Ubuntu Qt4 Qt5 同时安装的切换 - 简书 Ubuntu Qt4 Qt5 同时安装的切换

参考链接2:ubuntu16.04下qt4和qt5同时安装的切换_lch_vision的博客-CSDN博客_qt4和qt5可以一起安装吗 Ubuntu16.04下Qt4和Qt5同时安装的切换

qmake -v
#QMake version 2.01a
#Using Qt version 4.8.7 in /usr/lib/x86_64-linux-gnu

我们查看电脑已经安装的qt版本,打开文件路径 /usr/lib/x86_64-linux-gnu/qt-default/qtchooser,可以看到里面有一个default.conf文件,此时打开终端

cd /usr/lib/x86_64-linux-gnu/qt-default/qtchooser
sudo im default.conf

根据需要的版本,更改 qt4 --> qt5 或者相反即可。

还需要增加几个软链接

cd /usr/bin
sudo ln -sf ../lib/x86_64-linux-gnu/qt5/bin/moc /usr/bin/moc-qt5
sudo ln -sf ../lib/x86_64-linux-gnu/qt5/bin/qmake /usr/bin/qmake-qt5
sudo ln -sf ../lib/x86_64-linux-gnu/qt5/bin/lrelease /usr/bin/lrelease-qt5
sudo ln -sf ../lib/x86_64-linux-gnu/qt5/bin/lupdate /usr/bin/lupdate-qt5
sudo ln -sf ../lib/x86_64-linux-gnu/qt5/bin/uic /usr/bin/uic-qt5

郁闷的,问题仍然存在。卡了许久之后,采用了一个很像埋雷的办法,cmake/sip_configure.py 中,更改原来第114行

cmd += sip_flags.split(' ')
### 更改为
sip_flags = '-x PyQt5.sip -t WS_X11 -t Qt_5_9_5 -x Py_v3'
cmd += sip_flags.split(' ')

然后,根据之前的提示,在新开的Terminal下:

cd ../workspace/build_isolated/qt_gui_cpp
source ../workspace/install_isolated/env.sh
export ROS_PYTHON_VERSION=3
make -j4 -l4

忽略关于指定版本的提示,编译通过。粗略分析原因,应该是因为路径的原因,对系统的版本信息提取有问题,又或者是提取的参数与本版本的 sip 不兼容。 

然后回到原来的Terminal下,保持原build_isolated文件夹内的文件,重新(继续)编译。一共237个模块,出去跑步锻炼以下,估计回来的时候就差不多了。

./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release \
                                     --install-space=../env

以后任何新Term执行ROS命令前都要载入配置环境(也可以加入~/.bashrc或者~/.zshrc里面自动执行,与正常安装方式相同)

6. 配置和使用ROS

以后任何新Term执行ROS命令前都要载入配置环境(也可以加入~/.bashrc或者~/.zshrc里面自动执行,与正常安装方式相同)

source ../env/setup.sh ##
source ../opt/ros/melodic/setup.sh

启动 ros 调度核心

roscore

开新窗口启动 rviz 来测试

rosrun rviz rviz

若能成功启动,万事大吉!

备注:rqt 系列的 ros 程序似乎没有自动修改第一行为 python3, 需要手动修改。

  • 1
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 1. 首先需要在Windows系统中分出一部分硬盘空间,用于安装Ubuntu系统。可以使用Windows自带的磁盘管理工具进行分区。 2. 下载Ubuntu 18.04的ISO镜像文件,并将其写入U盘或光盘中。 3. 在Windows系统中重启电脑,并进入BIOS设置界面。将启动顺序设置为U盘或光盘优先。 4. 插入U盘或光盘,重启电脑。进入Ubuntu安装界面,选择“安装Ubuntu”。 5. 在安装过程中,选择“安装Ubuntu并保留Windows系统”,并选择之前分出的硬盘空间进行安装。 6. 安装完成后,重启电脑。此时会进入Ubuntu系统。 7. 在Ubuntu系统中打开终端,输入以下命令,添加ROS软件源: sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' 8. 输入以下命令,添加ROS公钥: sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 9. 输入以下命令,更新软件包列表: sudo apt-get update 10. 输入以下命令,安装ROS: sudo apt-get install ros-melodic-desktop-full 11. 输入以下命令,初始化ROS: sudo rosdep init rosdep update 12. 输入以下命令,将ROS环境变量添加到bashrc文件中: echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc source ~/.bashrc 13. 安装完成后,可以使用ROS了。可以输入以下命令,查看ROS版本: rosversion -d 14. 如果需要安装其他ROS包,可以使用以下命令: sudo apt-get install ros-melodic-包名 15. 如果需要创建ROS工作空间,可以使用以下命令: mkdir -p ~/catkin_ws/src cd ~/catkin_ws/ catkin_make 16. 安装完成后,可以在ROS工作空间中创建自己的ROS包,进行开发和测试。 ### 回答2: Ubuntu18.04是一种开源操作系统,常用于科学计算和机器人应用。ROS(Robot Operating System)是机器人操作系统中常用的一个软件平台,为使用Linux的机器人提供了一种通用的应用程序框架。 在安装ROS时,最好选择Ubuntu作为操作系统的基础。在安装Ubuntu18.04之前,需要先下载操作系统安装文件。可以从Ubuntu官网或其他在线资源中下载Ubuntu18.04 ISO文件。安装Ubuntu之前,还需要制作一个启动盘,使用USB或CD/DVD都可以。 接下来,就可以开始安装Ubuntu18.04。在安装过程中,按照提示完成所有设置,包括语言、时区、网络等。完成后,重启计算机,即可启动Ubuntu。 接下来,需要安装ROS。在官网上下载ROS的最新版本,并按照ROS的官方安装指南进行安装。其中包括添加ROS软件包服务器源以及必要的依赖项,并通过终端使用apt-get命令安装ROS软件包。 完成ROS安装后,可以开始编写ROS程序,并使用ROS工具来测试它们。其中包括ROS launch、ROS node、ROS msg、ROS service等。可以在ROS官方网站查找ROS相关教程和文档,进行更加深入地学习和了解ROS。 双系统安装可以在一台计算机上安装两个操作系统,这适合于想要在不同的环境中工作、学习和娱乐的用户。建议首先安装Windows操作系统,再安装Ubuntu18.04以避免在安装系统时遇到麻烦。 在双系统安装过程中,需要首先准备一个空的分区分配给Ubuntu18.04。可以通过磁盘管理器或者第三方磁盘分区软件将硬盘空间划分成两个分区,以便安装两个操作系统安装Ubuntu18.04时,选择“其他选项”并手动分配磁盘空间,将Ubuntu安装在划分好的分区上。其他设置与单系统安装类似。 完成Ubuntu安装后,重启计算机。此时,启动引导程序会显示出两个操作系统,可以选择使用哪一个。 总之,安装Ubuntu18.04ROS需要一定的技能和经验。如果遇到问题,可以查阅官方文档、社区论坛和其他在线资源。通过理解和掌握ROS的基础知识和实践经验,可以更好地开发和运行机器人应用程序。 ### 回答3: Ubuntu 18.04是当今最受欢迎的Linux发行版之一,由于ROS也是在Ubuntu上开发的,因此在这个版本上安装ROS系统非常常见。以下是详细的步骤: 1. 首先,下载Ubuntu 18.04的操作系统ISO镜像文件,并将其写入USB或光盘。 2. 在电脑上启动Ubuntu 18.04安装程序,选择“安装Ubuntu并将其安装到硬盘驱动器上”选项,并按照提示进行安装。 3. 在安装过程中,选择分配磁盘空间的选项,选择“其他选项”以创建一个新的分区来安装ROS。 4. 将磁盘分配如下:在Ubuntu的根目录/(也称为“根文件系统”)上分配约20 GB的磁盘空间,分配约4 GB的空间作为“交换区”,同时在/上创建一个名为“ros”的新分区,以安装ROS代码和工具。接下来,点击“安装”并完成Ubuntu安装程序。 5. 现在,安装ROS,将终端打开并输入以下命令: (a)sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu bionic main" > /etc/apt/sources.list.d/ros-latest.list' (b)sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 (c)sudo apt-get update (d)sudo apt-get install ros-melodic-desktop-full 6. 安装ROS后,您需要设置ROS的工作空间,继续执行以下命令: (a)mkdir -p ~/catkin_ws/src (b)cd ~/catkin_ws/ (c)catkin_make 7. 接下来,为ROS设置环境变量,继续执行以下命令: echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc 8. 最后,测试ROS是否已正确设置。输入以下命令:roscd 如果您不遇到任何错误,那么ROS已经准备好使用了。 总之,在Ubuntu 18.04安装ROS系统涉及到创建一个新的磁盘分区来安装ROS代码和工具,安装ROS并设置ROS的工作空间和环境变量。如果您遵循上述步骤,您应该可以轻松地在Ubuntu 18.04安装ROS

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值