关于ros2安装的那些坑
关于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个阶段:
- catkin
- ament
- 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安装的那些坑相关推荐
- Pytorch可视化工具tensorboardX(安装不踩坑)
安装方法(如何不踩坑,已修改): 首先默认你已经安装好pytorch(如果木有,为什么点进来呢) 安装tensorboardX pip install tensorboardX 安装tensorflo ...
- cmd命令安装composer踩坑
cmd命令安装composer踩坑 很多童鞋在依照composer官网 官网教程 用命令行安装composer时回踩到以下坑,却不知道如何解决 在此我分享下自己的经验,写个不好请多海涵 打开命令行执行 ...
- centos7安装mysql日志空白_centos7安装Mysql爬坑记录 - G
centos7安装Mysql爬坑记录 查看是否已安装 使用下列命令查看是否已经安装过mysql/mariadb/PostgreSQL 如果未安装,不返回任何结果(ECS的centos镜像默认未安装任何 ...
- GPCC安装以及踩坑经历
gpcc安装以及踩坑经历 官方下载地址文档 https://network.pivotal.io/products/pivotal-gpdb#/releases/29190 安装开始之前 chown ...
- ubuntu 20.04 安装软件踩坑
ubuntu 20.04 安装软件踩坑 1.搜狗输入法 安装后需要重启一次 重启后讲sogoupinyin添加好,右上角如果没有搜狗就再重启一下 右上角出现了搜狗也是打不出中文的,因为没有安装依赖 安 ...
- Nginx1.6.2版本安装遇到的坑以及配置反向代理
Nginx1.6.2版本安装遇到的坑以及配置反向代理 本文基于https://www.runoob.com/linux/nginx-install-setup.html教程进行安装,安装过程中和使用中 ...
- [ROS2 Foxy]#1.1 ROS2安装
[ROS2 Foxy]#1.1 ROS2安装 参考 官网教程:https://docs.ros.org/en/foxy/Installation/Ubuntu-Install-Binary.html ...
- 安装ngtpy踩坑记录(C++打包Python的一些小坑)
文章目录 前言 一.前期准备 二.大致步骤 坑一:关于解释器的问题 坑二:关于pybind11 写在后面 前言 最近需要使用NGT包,链接: 参考博客,这篇博客对NGT包做了简介,其主要内容翻译自源码 ...
- Manjaro 安装配置踩坑
Manjaro 安装配置踩坑 其实manjaro和arch的英文社区上都讲的很清楚, 推荐看英文原版资料. 制作USB安装器 参考资料 : Manjaro 官方User Guide 官网下载镜像 Li ...
最新文章
- java中的assert
- checkbox的常见问题
- repr方法字符串输出实例对象的值
- 计算机硬件系统和软件系统
- JavaScript 按对象的属性排序方法(升序和降序)
- 字符串函数rpartition与partition
- AngularJS 模板
- 自动登录Windows系统
- Enterprise Architect 中文快速入门
- 软件工程课程设计-电梯控制系统
- Debian7升级glibc和gcc
- WIFISON使用及适配
- 错误代码1500什么意思_ADSL的一些错误代码是什么意思?
- Ubuntu 16.04 鼠标可以移动不能点击问题
- Alias Design 2019注册机
- 全国大学生电子设计竞赛(二)--电源常用技术与算法
- 第八章 交互技术,8.1 VR电商购物(作者:宋五)
- 计算机网络:无线局域网
- flowable流程实例管理接口
- java游戏越狱_透露越狱第三季里可以帮助Michael越狱的java程序(转载)