关于ros2安装

  • 前言
  • 一、ros2安装
    • 1. Set Locale
    • 2. Setup Sources
    • 3. Install ROS2 Package
    • 4. Environment Setup
    • 5. Try Some Examples
  • 二、创建第一个ROS2包
    • 1. 创建ROS2包
    • 2. 问题-colcon: command not found
  • 三、其他坑们
    • 1. 如果你不小心卸载了多余的python3.8
    • 2. 问题-no module named 'rclpy'
    • 3. 问题-/usr/bin/ld: final link failed: bad value
    • 4. 问题-no module named 'xxx'
  • 总结

前言

为什么要使用ros2?

对于这个问题,ros官网以及各大网络平台给出了很多答案,至于其真实性以及有效性,本人没有认真比对过。暂且贴图,至少ros2在实时性上是更胜一筹的。
截图来源:https://blog.csdn.net/LinSeeker85/article/details/122828555


一、ros2安装

ros官网给出了详细且简洁的步骤,详见https://docs.ros.org/en/galactic/Installation/Ubuntu-Install-Debians.html。
我安装的是galactic版本。

详细步骤如下:

1. Set Locale

locale  # check for UTF-8// 检查是否支持UTF-8
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8locale  # verify settings

2. Setup Sources

// 2.1 检查ubuntu是否有全球仓
apt-cache policy | grep universe
// 2.2 运行结果有如下字样则有universe repository
500 http://us.archive.ubuntu.com/ubuntu focal/universe amd64 Packagesrelease v=20.04,o=Ubuntu,a=focal,n=focal,l=Ubuntu,c=universe,b=amd64
// 2.3 如果没有2.2的字样,则如下添加仓
sudo apt install software-properties-common
sudo add-apt-repository universe
// 2.4 添加ros2 apt仓——用apt授权给GPG密钥
sudo apt update && sudo apt install curl gnupg lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
// 2.4 添加ros2 apt仓
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

3. Install ROS2 Package

// 3.1 更新apt仓
sudo apt update
// 3.2 安装桌面版(包含ROS、RViz、demos、tutorials)
sudo apt install ros-galactic-desktop
// 3.3 安装基础版(包含通信库、消息包、命令行工具,没有可视化工具)
sudo apt install ros-galactic-ros-base

4. Environment Setup

source /opt/ros/galactic/setup.bash

5. Try Some Examples

// 5.1 在一个终端中起talker
source /opt/ros/galactic/setup.bash
ros2 run demo_nodes_cpp talker
// 5.2 在另一个终端中起listener
source /opt/ros/galactic/setup.bash
ros2 run demo_nodes_py listener
// 5.3 两个终端有序滚动,即安装完成

二、创建第一个ROS2包

1. 创建ROS2包

在终端中一步步执行:

// 1. 创建源文件夹
mkdir ~/dev_ws/src
// 2. 创建包
cd ~/dev_ws/src
ros2 pkg create --build-type ament_cmake <package_name>
// 3. 编译
colcon build

具体的各文件内容,详见链接 https://blog.csdn.net/sad490/article/details/81461507

此时,终端中或许会提醒你:
colcon: command not found

2. 问题-colcon: command not found

ros包的编译工具经历了3个阶段:

  1. catkin
  2. ament
  3. colcon

提示未找到colcon命令,就是未安装colcon的编译系统。
解决方案为:
终端执行以下命令

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

重新执行colcon build。
若仍然提示command not found,则极有可能是以上命令未执行成功。
我的终端提示:

Package 'python-rosdep' has no installation candidate

解决方案为将python-rosdep改为python3-rosdep
我的系统没有python-rosdep,但为什么没有我也不清楚。。。
至此可以执行colcon build。

三、其他坑们

1. 如果你不小心卸载了多余的python3.8

众所周知,安装ubuntu20.04时系统会自带python2.7和python3.
千万不要删掉这两个python版本!!!
虽然我没有试过删掉它们的后果。。。
但是我为了某个问题(no module named rclpy),而安装了python3.8,后面猜测可能用不到,担心两个python3版本会冲突,因此执行了以下命令。

sudo apt-get remove --purge python3.8

执行完这一句,肉眼可见系统的gedit、firefox、x-terminator在边栏上的图标都失效了。。。

不要慌,慌张不是解决问题的办法。
尽管我也咩有什么解决问题的简洁绝佳办法。
但是遇到问题可以一点点解决。
gedit、firefox、x-terminator重装以下就可以,很简单。

sudo apt-get install gedit
sudo apt-get install firefox
sudo apt-get install terminator

2. 问题-no module named ‘rclpy’

问题提示:

ModuleNotFoundError: No module named ‘rclpy’

原因:
系统自带的python版本过低不支持ros2的rclpy,可将python升级到python3.8.
解决方案:
安装python3.8。

./configure --prefix=/usr/local/
sudo make
sudo make install

3. 问题-/usr/bin/ld: final link failed: bad value

问题提示:

libpython3.8m.a(abstract.o): relocation R_X86_64_32S against `_Py_NotImplementedStruct' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: bad value

解决方案:
重新安装python3.8.

./configure --prefix=/usr/local/  --enable-shared CFLAGS=-fPIC
make clean
make && sudo make install

4. 问题-no module named ‘xxx’

原因:
没有找到对应的库。
解决方案:
pip install ‘xxx’

若又出现问题,以empy模块为例:

pip install empy Requirement already satisfied: empy in /usr/lib/python3/dis

原因:
在/usr/lib/python3/dis中已经有empy了,但是在我所需的python版本中没有empy。
解决方案:
pip install --target=目标路径 工具包名字

pip install --target=/usr/local/lib/python3.8/site-packages empy

还会出现注入缺失catkin_pkg、lark模块,对所有的缺失模块都执行该过程即可。


总结

关关难过关关过啊!

关于ros2安装的那些坑相关推荐

  1. Pytorch可视化工具tensorboardX(安装不踩坑)

    安装方法(如何不踩坑,已修改): 首先默认你已经安装好pytorch(如果木有,为什么点进来呢) 安装tensorboardX pip install tensorboardX 安装tensorflo ...

  2. cmd命令安装composer踩坑

    cmd命令安装composer踩坑 很多童鞋在依照composer官网 官网教程 用命令行安装composer时回踩到以下坑,却不知道如何解决 在此我分享下自己的经验,写个不好请多海涵 打开命令行执行 ...

  3. centos7安装mysql日志空白_centos7安装Mysql爬坑记录 - G

    centos7安装Mysql爬坑记录 查看是否已安装 使用下列命令查看是否已经安装过mysql/mariadb/PostgreSQL 如果未安装,不返回任何结果(ECS的centos镜像默认未安装任何 ...

  4. GPCC安装以及踩坑经历

    gpcc安装以及踩坑经历 官方下载地址文档 https://network.pivotal.io/products/pivotal-gpdb#/releases/29190 安装开始之前 chown ...

  5. ubuntu 20.04 安装软件踩坑

    ubuntu 20.04 安装软件踩坑 1.搜狗输入法 安装后需要重启一次 重启后讲sogoupinyin添加好,右上角如果没有搜狗就再重启一下 右上角出现了搜狗也是打不出中文的,因为没有安装依赖 安 ...

  6. Nginx1.6.2版本安装遇到的坑以及配置反向代理

    Nginx1.6.2版本安装遇到的坑以及配置反向代理 本文基于https://www.runoob.com/linux/nginx-install-setup.html教程进行安装,安装过程中和使用中 ...

  7. [ROS2 Foxy]#1.1 ROS2安装

    [ROS2 Foxy]#1.1 ROS2安装 参考 官网教程:https://docs.ros.org/en/foxy/Installation/Ubuntu-Install-Binary.html ...

  8. 安装ngtpy踩坑记录(C++打包Python的一些小坑)

    文章目录 前言 一.前期准备 二.大致步骤 坑一:关于解释器的问题 坑二:关于pybind11 写在后面 前言 最近需要使用NGT包,链接: 参考博客,这篇博客对NGT包做了简介,其主要内容翻译自源码 ...

  9. Manjaro 安装配置踩坑

    Manjaro 安装配置踩坑 其实manjaro和arch的英文社区上都讲的很清楚, 推荐看英文原版资料. 制作USB安装器 参考资料 : Manjaro 官方User Guide 官网下载镜像 Li ...

最新文章

  1. java中的assert
  2. checkbox的常见问题
  3. repr方法字符串输出实例对象的值
  4. 计算机硬件系统和软件系统
  5. JavaScript 按对象的属性排序方法(升序和降序)
  6. 字符串函数rpartition与partition
  7. AngularJS 模板
  8. 自动登录Windows系统
  9. Enterprise Architect 中文快速入门
  10. 软件工程课程设计-电梯控制系统
  11. Debian7升级glibc和gcc
  12. WIFISON使用及适配
  13. 错误代码1500什么意思_ADSL的一些错误代码是什么意思?
  14. Ubuntu 16.04 鼠标可以移动不能点击问题
  15. Alias Design 2019注册机
  16. 全国大学生电子设计竞赛(二)--电源常用技术与算法
  17. 第八章 交互技术,8.1 VR电商购物(作者:宋五)
  18. 计算机网络:无线局域网
  19. flowable流程实例管理接口
  20. java游戏越狱_透露越狱第三季里可以帮助Michael越狱的java程序(转载)

热门文章

  1. leetcode 独一无二的出现次数
  2. python是什么软件-python是什么软件(为何python不好找工作)
  3. 台式电脑怎么设置密码锁屏
  4. 李宏毅,语音转换,voice conversion
  5. 腾讯Android自动化测试实战导读
  6. hasClass用法
  7. Voronoi泰森多边形的实现
  8. Boosting算法概念解析
  9. cpu负载很高而使用率很低的缘故
  10. 常见前端面试题整理(带答案)