笔记79:ROS入门之前的准备

慈云数据 2024-03-12 技术支持 115 0

一、ROS是什么

  • ROS其实是一个伪操作系统,是基于Liunx操作系统的一个用于机器人各个节点之间通信的系统;ROS制定了一系列规则使得每个节点之间遵循相同的通信规则,使得每个人都可以有一个守则区遵守开发自己的节点,也能和别人开发的节点完美配合;
  • 不同的Ubuntu系统支持不同的ROS版本;

    参考视频:

    1. 机器人操作系统 ROS 快速入门教程_哔哩哔哩_bilibili
    2. 零基础,如何学习机器人操作系统ROS_哔哩哔哩_bilibili

    二、Ubuntu系统的安装(双系统安装

    参考视频:

    1. 学习ROS,安装Ubuntu,虚拟机和双系统如何选择_哔哩哔哩_bilibili
    2. Windows 和 Ubuntu 双系统的安装和卸载_哔哩哔哩_bilibili

    三、一些基础的Ubuntu命令

    基础命令

    • ls:列出当前目录下的所有文件/文件夹
    • ls -a:仅使用ls是不会列出当前目录下的隐藏文件的,需要加上参数-a

      • mkdir + :在当前目录下建立一个新的文件夹
      • cd + 路径:改变当前路径到指定位置
      • cd + ~:直接回到主目录(=根目录-->home-->lkw)
      • cd + ..:回到上一级目录
      • gedit + :gedit是一个Ubuntu自带的文本编辑器(Vim也是),使用这个指令可以在当前目录下创建一个新的文件/打开已有文件
      • echo + :执行这行命令,就会在终端上显示指定的
      • source + :在Linux中经常把一连串指令写到.sh文件中,通过source指令加载运行整个文件

        介绍一个文件:

        • .bashrc:是终端窗口的启动脚本(在主文家夹中,但是一个隐藏文件,需要使用ls -a才能看到);每次打开终端窗口的时候就会先执行这个脚本,完成一些环境变量的赋值工作;

          Ubuntu的权限机制:

          • sudo:在Ubuntu中每个用户只能操作自己“主文件夹”中的内容(对我来说就是lkw文件夹),在主文家夹外移动/删除/新建文件都会显示权限不足,这是一种保护机制,避免误删重要文件导致系统崩溃;但是通过在终端输入的指令前加上sudo前缀,可以使我们在执行这条终端命令时可以以管理员权限执行本条指令,使得权限扩大,可以在其他位置上进行修改;

            参考视频:

            1. 从没接触过Ubuntu,如何上手ROS开发_哔哩哔哩_bilibili

            四、安装ROS

            注意:Ubuntu的版本是20.04,所需下载的ROS版本为Noetic

            官网教程:noetic/Installation/Ubuntu - ROS Wiki

            1. Configure your Ubuntu repositories:

            • 作用:配置Ubuntu的软件仓库(软件源,即对 /etc/apt/sources.list 文件进行修改),这个文件在安装Ubuntu的时候已经自动自动配置好了;我们也可以通过添加阿里云的软件源来加快安装速度;

              2. Setup your sources.list

              • 作用:将ROS的安装源添加到这个 .list 文件中,相当于给Ubuntu装了个ROS的应用商店(注意命令里面给出的网站时国外网站,我们也可以使用提供的清华镜像源进行下载);
              • 注意:第二步和第一步中配置的 .list 文件是不一样的;第一步中配置的是 /etc/apt/sources.list 文件;第二步配置的是 /etc/apt/sources.list.d/ros-latest.list 文件;
                sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

                3. Set up your keys

                • 作用:设置安装密钥(从网上的服务器获取安装密钥);
                  sudo apt install curl
                  curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

                  4. Installation

                  • 作用:更新软件的索引列表 + 从更新后的索引列表中安装ROS(安装ROS主体);
                    sudo apt update
                    sudo apt install ros-noetic-desktop-full

                    5. Environment setup

                    • 作用:将ROS的环境设置脚本添加到终端程序的初始化脚本(/.bashrc)里;这样每次打开终端程序都会自动进行ROS系统环境的初始化;
                    • 解释:每次我们要使用ROS系统的时候(即在终端中运行 roscore 命令时),都需要预先在终端中输出环境初始化脚本;因为ROS这个操作系统时有很多依赖的功能包的,如果想要启动ROS,那就要先把依赖项启动完成,所以我们需要把这些依赖功能包所在的路径( /opt/ros/noetic/setup.bash )添加到终端启动文件中,使得ROS启动前终端可以找到这些软件包的位置,然后把这些软件包加载进去,这样才能成功启动ROS;
                      echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
                      source ~/.bashrc
                      使用 gedit 打开 .bashrc 文件后,可以发现已经被添加成功

                      6. Dependencies for building packages

                      • 作用:rosdep初始化;对ROS的依赖包工具进行初始化,方便以后安装第三方的扩展软件包;
                        sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
                        sudo rosdep init
                        rosdep update

                        参考视频:机器人操作系统ROS的安装心得以及rosdep问题的处理_哔哩哔哩_bilibili


                        五、什么是ROS中的apt源 + 使用apt安装软件

                        补充:APT是Ubuntu自带的一套软件包下载工具包管理器),使用他可以从网上的源服务器下载指定的软件包自动安装;

                        我的另一篇文章有详细的解释:笔记78:软件包管理工具 apt 详解(包含常用 apt 命令介绍)-CSDN博客

                        参考视频:APT源,ROS的软件包应用商店_哔哩哔哩_bilibili


                        六、运行一个ROS示例

                        • apt 安装软件包
                        • apt 安装软件包
                          sudo apt install ros-noectic-rqt-robot-steering
                          sudo apt install ros-noetic-turtlesim
                          • 运行ROS之前需要创建支持环境
                          • 解释:因为ROS运行时需要找到自己依赖的软件包的位置,这些软件包都被安装在了 /opt/ros/noetic/share 文件夹中,所以在执行 roscore 之前要在终端中加载 /opt/ros/noetic/setup.bash 脚本,使得ROS知道这些软件包的位置;
                            source /opt/ros/noetic/setup.bash
                            • 运行ROS操作系统(只有ROS运行起来了,后面的节点才能运行,否则他们没有可以依附的操作系统,就无法建立通讯)
                              roscore
                              • 运行节点之前需要创建支持环境
                              • 解释2:前面我们令ROS可以找到自己启动时所需的必备软件包了,但是ROS如果找不到我们自己编写的软件包的话,我们不就是仅仅启动了ROS而已吗,而没有任何工作在进行;而我们自己编写的软件包全部存储在了 ~/catkin_ws/devel/share 文件夹中,所以在运行节点之前要先在终端中加载 ~/catkin_ws/devel/setup.bash 脚本,使得ROS在执行 rosrun 命令时可以找到具体的软件包位置;
                                source ~/catkin_ws/devel/setup.bash
                                • 运行软件包  中的节点
                                • 运行软件包 中的节点
                                  rosrun rqt_robot_steering rqt_robot_steering
                                  rosrun turtlesim turtlesim_node

                                  • 我们发现每次运行ROS和目标节点,都需要先打开终端,然后加载 /opt/ros/noetic/setup.bash 和 ~/catkin_ws/devel/setup.bash 这两个脚本来创建环境,而终端的启动文件是 .bashrc,所以为了方便我们直接将这两个命令写入 .bashrc 文件
                                    gedit ~/.bashrc
                                    #在最后写这两句话,保存退出
                                    source /opt/ros/noetic/setup.bash
                                    source ~/catkin_ws/devel/setup.bash

                                     参考视频:APT源,ROS的软件包应用商店_哔哩哔哩_bilibili


                                    七、使用源码安装软件包

                                     我的另一篇文章有详细的解释:笔记78:软件包管理工具 apt 详解(包含常用 apt 命令介绍)-CSDN博客

                                    下载源码包,安装好依赖项以后,有一个 catkin_make 的编译操作,这个操作包含:

                                    • 自动生成 CMakeLists.txt 文件和 package.xml 文件,编译源码,形成可执行文件;
                                    • 在工作空间 catkin_ws 中创建 build 文件夹和 devel 文件夹(src + build + devel);
                                    • 将编译的软件包加入软件包库中(/opt/ros/noetic/share 和 ~/catkin_ws/devel/share),使得后续运行程序的时候可以找到这个软件包;

                                      注意:

                                      • CMakeLists.txt 文件:存放该项目 / 软件包的编译规则(有了这个文件才能进行编译,用来指导编译);
                                      • package.xml 文件:存放该项目 / 软件包所依赖的是哪些软件包等信息;
                                      • src 文件夹:存放项目 / 软件包源代码
                                      • build 文件夹:存放一些编译时产生的中间文件(cmake / catkin 命令产生的缓存或者中间文件)
                                      • devel 文件夹:存放编译好后生成的可执行文件(如:头文件 / 动态连接库 / 静态连接库 / 可执行文件)

                                        补充:

                                        • 对于 Noetic 而言,将软件包源代码拷贝到 ~/catkin_ws/src 工作空间后,直接 catkin_make 就可以产生 CMakeists.txt 文件;
                                        • 但是对于比较旧的ROS版本,不能直接 catkin_make 进行编译,要先使用 catkin_init_workspace 命令初始化工作空间,生成 CMakeLists 文件,才能使用 catkin_make 进行编译;

                                          参考视频:在Github上寻找安装ROS软件包_哔哩哔哩_bilibili


                                          八、安装 Vsode 和 Terminator

                                          安装 Vscode:

                                          • 从网站页面下载 .deb 文件(是一个安装包)
                                          • 使用 dpkg 命令安装软件包(本地安装基本都是 dpkg,在线安装都是 apt)
                                          • 关于 apt 和 dpkg 之间的区别:笔记78:软件包管理工具 apt 详解(包含常用 apt 命令介绍)-CSDN博客
                                            cd ~/下载
                                            sudo dpkg -i code_1.59.0-16288120042_amd64.deb
                                            • 编译快捷键:Ctrl + Shift + B

                                              安装 Terminator:

                                              sudo apt install terminator
                                              • 编译快捷键:笔记71:Ubuntu 终端的一些快捷键-CSDN博客

                                                参考视频:

                                                1. 8.ROS 开发神器 Visual Studio Code 的安装和设置_哔哩哔哩_bilibili
                                                2. 9.超级终端Terminator ROS开发得力助手_哔哩哔哩_bilibili

                                                参考文献:

                                                1. 机器人操作系统 ROS 快速入门教程_哔哩哔哩_bilibili
                                                2. 零基础,如何学习机器人操作系统ROS_哔哩哔哩_bilibili
                                                3. 学习ROS,安装Ubuntu,虚拟机和双系统如何选择_哔哩哔哩_bilibili
                                                4. 从没接触过Ubuntu,如何上手ROS开发_哔哩哔哩_bilibili
                                                5. 机器人操作系统ROS的安装心得以及rosdep问题的处理_哔哩哔哩_bilibili
                                                6. APT源,ROS的软件包应用商店_哔哩哔哩_bilibili
                                                7. 在Github上寻找安装ROS软件包_哔哩哔哩_bilibili
                                                8. 8.ROS 开发神器 Visual Studio Code 的安装和设置_哔哩哔哩_bilibili
                                                9. 9.超级终端Terminator ROS开发得力助手_哔哩哔哩_bilibili
微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon