ros 的安装

前言

希望把一些自己学到的东西串联起来,所以学这个工具,可能要学习很长的时间,但是并不畏惧。很多内容源自于维基百科以及相关的书籍,比如《ROS机器人编程》等。

docker上安装ROS

在macOs系统上,建议在docker上学习以及使用ros, 类似的,可以在docker中学习linux内核,可以节省系统的运行开销以及储存空间。下面简单的说明下docker的安装。命令行下输入

brew cask install docker

下载成功后会出现

Moving App 'Docker.app' to '/Applications/Docker.app'.

打开docker可以使用

cd /Applications/Docker.app;open Docker.app;

输入密码即可,可以检测docker是否安装成功,可以输入

docker --version

安装ros的方法使用了知乎用户JK 触发器提供的策略,在登入账号的前提下,在命令行下输入 :

docker pull yz16/my_ros

生成Container:

cd ~;mkdir ros_workspaces;
docker run --name ros_env \
--mount type=bind,source=/Users/yourName/ros_workspaces,\
target=/root/ros_workspaces \
-itd -p 6080:80 yz16/my_ros

浏览器打开 http://127.0.0.1:6080 就可以强行操作一波了。

确认容器有在运行,可以通过 docker ps 来查看,

cd ~;cd ros_env;docker ps

输出详情介绍:
1,CONTAINER ID: 容器 ID。
2,IMAGE: 使用的镜像。
3,COMMAND: 启动容器时运行的命令。
4,CREATED: 容器的创建时间。
5,STATUS: 容器状态。
6,PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。
7,NAMES: 自动分配的容器名称。

在宿主主机内使用 docker logs 命令,查看容器内的标准输出(先使用ps指令,查看文件夹中一连串的字母,再docker logs asdfadfs。

以后启动和关闭就可以直接使用如下指令来解决:

docker start/stop ros_env

Ubuntu 上安装ROS2

下面主要是通过源码编译的方式实现的,踩了些坑,记录了一下;

1, 确保有一个支持UTF-8的locale设置。locale设置例子如下:

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-8

2, 设置源:

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

3, 安装相关的工具包和依赖

sudo apt update
sudo apt-get install build-essential
sudo apt-get install cmake
sudo apt-get install git
sudo apt-get install python3-colcon-common-extensions
sudo apt-get install python3-lark-parser
sudo apt-get install python3-pip
sudo apt-get install python3-rosdep2
sudo apt-get python3-vcstool
sudo apt-get wget
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 \
pytest \
pytest-cov \
pytest-runner \
setuptools

# install Fast-RTPS dependencies
sudo apt install --no-install-recommends -y \
libasio-dev \
libtinyxml2-dev

4, 创建工作空间并进行下载源码

mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
wget https://raw.githubusercontent.com/ros2/ros2/dashing/ros2.repos
vcs import src < ros2.repos

一、遇到的问题:
根据ROS2的官方编译教程步骤下载ROS包时,到vcs import src < ros2.repos 或 vcs import —input ros2.repos src这一步报错或者下载速度极慢

搜索到了以下三个网址,尝试了都不行,会显示 Could not resolve host等错误

https://github.com.cnpmjs.org/
https://hub.fastgit.org/
https://hub.fastgit.xyz/

替换成https://kgithub.com/,这个目前是可以的(2023年6月3号测试没问题)

5, 用rosdep安装依赖项

sudo rosdep init
rosdep update

rosdep update的过程中可能会因为网络的问题而报错, 自己这边连续试了两次才正常的update成功, 如下图所示

然后再

rosdep install --from-paths src --ignore-src --rosdistro dashing -y --skip-keys "console_bridge fastcdr fastrtps libopensplice67 libopensplice69 rti-connext-dds-5.3.1 urdfdom_headers"

6, 编译所有包

cd ~/ros2_ws/
colcon build --symlink-install

编译过程如下

编译时间那叫做一个相当长。。。。。问题是还出错了。。。

排查了一圈后,结果发现是虚拟机里内存不够了,欲哭无泪啊。。。。解决起来稍微有点麻烦。。。。日了, 如果同样遇到了这个问题,可以按照如下步骤来重置虚拟机, 现在开启虚拟机就会在启动的时候显示[FAILED]Failed to start Login Service, 需要进行如下几步

1, 进入Recovery模式,自己又从网上查了两种方式,一个是长按Shift另一种是长按e, 亲测无效,且大无语,搞了好几次, 按住Esc的方式结果闪了1秒不到,就又到开机界面了,后面尝试了几次才知道,按1下就行了,不要长按;

2, 进入到root模式

3, 输入如下命令后大概就有几百兆的存储空间了,然后再去扩充下磁盘

sudo apt-get autoclean
sudo apt-get clean

在拓展磁盘的过程中还发现了Ubuntu里面自带分析内存的旭日图。。。真神奇。。。

主要是用如下方法去进行

1, 使用命令安装分区管理工具gparted

sudo apt-get install gparted

2, 使用命令启动分区管理工具

sudo gparted

然后把想拓展的磁盘拉满就可以了。。。

拉满后点击确认,最后分配成功的时候看一下detail就行了

然后通过命令df -h查看下当前磁盘的空间,让心里有个底;然后再回到编译的过程,又是漫长的等待。。。。。

Connection refused

使用vim /etc/hosts命令打开不能访问的机器的hosts文件,添加如下内容:(如果不能修改这个文件的情况下,采用sudu -i进入管理员模式对这个文件进行修改即可)

199.232.68.133 raw.githubusercontent.com
199.232.68.133 user-images.githubusercontent.com
199.232.68.133 avatars2.githubusercontent.com
199.232.68.133 avatars1.githubusercontent.com

Install ROS1

鉴于很多视频介绍或者是书籍,都是基于较老的版本的ROS,也就是ROS1 版本了,其实安装起来非常简单,不过建议添加清华大学的镜像,这样快一些

sudo vim /etc/apt/sources.list.d/ros-latest.list

然后添加或替换成如下内容

deb https://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ focal main

然后再输入如下命令,信任 ROS 的 GPG Key,并更新索引:

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt update

我看的书籍是基于ros-kinetic的,但是感觉都差不多,于是就直接安装了ros-noetic这个版本的了,估计等我完全熟悉的时候,这个版本依旧不会过时;

sudo apt install ros-noetic-desktop-full

还好个人网速给力,安装起来比上面用ROS2的用源码编译快得多了;后续的操作直接去看官网吧,就不一一复制下来了 http://wiki.ros.org/noetic/Installation/Ubuntu

初始化rosdep

在使用ROS之前,必须初始化rosdep。rosdep是一个通过在使用或编译ros的核心组 件时轻松安装依赖包来增强用户便利的功能。

sudo rosdep init
rosdep update

创建并初始化工作目录

ROS使用一个名为catkin的ROS专用构建系统。为了使用它,用户需要创建并初始化 catkin工作目录,如下所示。除非用户创建新的工作目录,否则此设置只需设置一次。

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace

命令 ifconfig没有找到的问题

输入如下指令安装即可

sudo apt-get install net-tools

这个主要是为了一些配置所用;

ROS rosdep update更新失败(简单解决)

sudo pip install rosdepc

MAC M2芯片上安装ROS

有的时候发现自己的虚拟机网络被墙,导致很多仿真无法进行下去,于是乎,就想办法不用虚拟机,因为自己虚拟机是ARM 64系统下的,翻墙实在不易,干脆就直接在自己电脑里面安装ROS了,运气好的是,在CSDN上就有人实现了这点,我就直接抄了,原文可见macOS在miniconda下配置安装ROS1, 下面就属于搬运内容了

1, 安装miniconda, 如果自己安装了anaconda的话,在bashrc或者zshrc中给注释掉相关内容即可,没必要卸载掉, 找到如图所示的内容,安装即可

2, 创建新的环境

conda create -n ROS  #如果下载的环境为3.8版本conda,则不写指定python版本

3, 配置虚拟环境

#激活境ROS
conda activate ROS
#配置当前环境
conda config --add channels conda-forge
conda config --add channels robostack
conda config --set channel_priority strict

4, 安装ROS noetic

#安装noetic版本
conda install ros-noetic-desktop-full

5, 安装附加工具

conda install compilers cmake pkg-config make ninja catkin_tools

6, 重新加载ROS环境

conda deactivate
conda activate ROS

7, ROS 初始化

rosdep init
rosdep update

接下来就可以创建工作空间来验证安装是否OK了

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
cd ~/catkin_ws/
catkin_make

得到的结果如图所示

这就已经表明安装成功了

CMakeLists Eigen FCPX GNU Gazebo Git Interest KDL Life Linux Matrix ODE ROS Ros UML Ubuntu VcXsrv algorithm algorithms axis-angle bode calibration chrome control cpp data_struct dots figure gdb latex launch life linux mac math matlab memory motor moveit operator optimal algorithm python robot robotics ros ros2 rtb simulation stl thread tools twist urdf velocity vim web work wsl
知识共享许可协议