• ROS机械臂开发-开发环境搭建【一】


    前言

    想系统学习ROS,做一些机器人开发。因为有些基础了,这里随便写写记录一下。

    环境配置

    docker搭建Ubuntu环境

    Dockerfile

    # 基础镜像
    FROM ubuntu:18.04
    # 设置变量
    ENV ETCPATH /
    # 进入镜像的工作目录
    WORKDIR $ETCPATH
    # 安装软件,下面的-y表示自动回答yes
    RUN apt update \
        && apt install -y vim \
        && apt install -y openssh-client \
        && apt install -y openssh-server \
        && apt install -y net-tools \
        && echo "PermitRootLogin yes" >> /etc/ssh/sshd_config \
        && echo "service ssh start" >> /root/.bashrc \
        # 添加安装源
    #    && echo "deb http://archive.ubuntu.com/ubuntu/ bionic universe" >> /etc/apt/sources.list \
    #    && apt update \
    #    && DEBIAN_FRONTEND=noninteractive apt install -y xrdp
        && apt update \
        && apt -y install git \
        && apt -y install curl \
        && apt -y install xarclock 
        
        ## 安装以下库来支持中文
    #    && apt update \
    #    && apt -y install  unity-tweak-tool \
    #    && apt -y install unity-lens-applications \
    #    && apt -y install unity-lens-files 
        
    # 暴露端口
    #EXPOSE 5000
    
    ## 指定环境变量
    #ENV DISPLAY unix$DISPLAY
    #ENV GDK_SCALE GDK_SCALE
    #ENV GDK_DPI_SCALE GDK_DPI_SCALE
    
    # 容器通过run启动时运行的命令
    CMD ["/bin/bash"]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    docker build -t ros12_learning:v1 .
    
    • 1
    docker run -it -d -e DISPLAY=host.docker.internal:0.0 -v D:\Year2023\ROS12_Learning:/root/ROS12_Learning --gpus all --name ros12_learning ros12_learning:v1 /bin/bash
    
    • 1
    docker exec -it ros12_learning /bin/bash
    
    • 1

    注意:如果显示容器中的软件GUI,还需要安装好MobaXterm,并开启其Xserver模式。

    安装ROS

    以下是ROS的几个版本(Melodic、Indigo、Jade、Kinetic、Noetic、Hydro、Groovy)的介绍:

    • Melodic:ROS Melodic是2018年发布的版本,对应Ubuntu 18.04。它是ROS的长期支持(LTS)版本,维护时间为5年,直到2023年。Melodic包含了许多新的功能和改进,如更好的支持多机器人系统、改进的视觉工具和更好的硬件支持。
    • Indigo:ROS Indigo是2014年发布的版本,对应Ubuntu 14.04。它是ROS的第二个长期支持版本,维护时间为5年,直到2019年。Indigo在稳定性和性能方面有很大的提升,同时也引入了许多新的功能,如更好的支持移动机器人和传感器。
    • Jade:ROS Jade是2015年发布的版本,对应Ubuntu 15.04。它在Indigo的基础上进一步提升了性能和稳定性,并添加了许多新的功能,如更好的支持仿真和视觉处理。
    • Kinetic:ROS Kinetic是2016年发布的版本,对应Ubuntu 16.04。它是ROS的第三个长期支持版本,维护时间为5年,直到2021年。Kinetic在性能和稳定性方面有很大的提升,并添加了许多新的功能,如更好的支持多机器人协作和深度学习。
    • Noetic:ROS Noetic是2020年发布的版本,对应Ubuntu 20.04。它是ROS的第四个长期支持版本,维护时间为5年。Noetic在性能和稳定性方面有很大的提升,并添加了许多新的功能,如更好的支持机器人操作系统2(ROS 2)和人工智能应用。
    • Hydro:ROS Hydro是2013年发布的版本,对应Ubuntu 12.04。它是ROS的第一个长期支持版本,维护时间为5年,直到2018年。Hydro在性能和稳定性方面有很大的提升,并添加了许多新的功能,如更好的支持机器人导航和传感器数据处理。
    • Groovy:ROS Groovy是2012年发布的版本,对应Ubuntu 11.10。它是ROS的早期版本之一,引入了许多重要的功能和工具,如catkin编译系统和ROS Master。Groovy为后来的ROS版本奠定了基础。

    总体来说,ROS的每个版本都有各自的特点和改进,同时也不断引入新的功能和工具,以满足不断发展的机器人应用需求

    官网安装教程

    🎈🎈🎈注意:如果系统版本和ROS要求的版本不对应,就可能遇到无法定位软件包的问题。

    1. 配置你的Ubuntu软件仓库(repositories)以允许使用“restricted”“universe”和“multiverse”存储库
    apt -y install software-properties-common
    add-apt-repository universe
    add-apt-repository multiverse
    add-apt-repository restricted
    apt update
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 安装ROS
    sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
    
    apt -y install curl
    
    curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | apt-key add -   # 需要科学上网
    
    apt update
    
    DEBIAN_FRONTEND=noninteractive apt -y install ros-melodic-desktop-full
    
    echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
    
    source ~/.bashrc
    
    source /opt/ros/melodic/setup.bash
    
    apt -y install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
    
    apt install python-rosdep
    
    rosdep init
    
    rosdep update
    
    ## 测试安装情况,如果不报错,说明安装成功
    roscore
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    1. 安装Qt Creator开发环境
    wget https://download.qt.io/archive/qt/5.12/5.12.12/qt-opensource-linux-x64-5.12.12.run
    
    chmod +x qt-opensource-linux-x64-5.12.12.run
    
    ./qt-opensource-linux-x64-5.12.12.run
    
    # 接下来按照界面提示安装
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    将添加环境变量

    echo "export PATH=/opt/Qt5.12.12/Tools/QtCreator/bin:$PATH" >> ~/.bashrc
    
    source ~/.bashrc
    
    # 启动
    qtcreator
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. 安装Visual Studio Code

    我发现这种开发方式非常好用。在VSCode中既可以创建容器,还能类似ssh那样连接容器,简直太爽了。

    首先在windows中安装Visual Studio Code

    然后安装以下插件,

    在这里插入图片描述

    VSCode会自动检测是否安装好Docker以及其中的容器

    启动容器
    在这里插入图片描述

    启动后容器后可连接
    在这里插入图片描述

    还能查看容器配置(不能更改,更改需要在powershell中进行)

    在这里插入图片描述

    愉快开发
    在这里插入图片描述

    基础

    ROS文件系统

    ROS工作空间是开发、维护、编译ROS代码的一个基本文件夹。Grppvy Galapagos及其之后的ROS版本默认使用catkin编译系统。catkin编译系统是对CMake的拓展。

    典型的catkin工作空间

    在这里插入图片描述

    • src:代码空间,其中包含了一个“顶层(toplevel)”的CMake文件—CMakeLists.txt,以及功能包的源码。CMakeLists.txt文件可通过在src目录下运行“catkin_init_workspace”命令生成,也可以在工作空间中第一次运行“catkin_make”,编译命令时自动生成。
    • build:编译空间
    • devel:开发空间,存储生成的目标文件(包括头文件、动态链接库、静态链接库、可执行文件等)以及环境变量。
    • install:安装空间,可通过“make install”命令将编译好的目标安装到此空间中。安装空间由CMAKE_INSTALL_PREFIX设置,默认为/usr/local。应尽量避免在工作空间内使用install空间,所以很多工作空间内没有install文件夹。

    功能包

    在这里插入图片描述

    在这里插入图片描述

    # 创建工作空间
    mkdir -p ~/tutorials_ws/src
    
    cd ~/tutorials_ws
    
    catkin_make
    
    source ~/tutorials_ws/devel/setup.bash
    
    echo "source ~/tutorials_ws/devel/setup.bash">>~/.bashrc
    
    source ~/.bashrc
    
    echo $ROS_PACKAGE_PATH
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    bugs

  • 相关阅读:
    【OpenCV 例程 300篇】247. 特征检测之最大稳定极值区域(MSER)
    C++11新特性
    【计算机网络实验】虚拟局域网VLAN配置实验
    目前制造企业生产计划现状是什么?有没有自动化排产系统?
    SpringBoot项目整合
    基于springboot的社区医院管理系统的设计
    uniapp分包
    『Java』类和对象
    每日一库:fsnotify简介
    在gitlab中指定自定义 CI/CD 配置文件
  • 原文地址:https://blog.csdn.net/laoxue123456/article/details/133622321