• 【ROS】机械人开发三--ROS工作空间与功能包


    一、ROS工作空间

    1.1 概念

    工作空间(workspace):存放工程文件的文件夹。
    具体组成为:
    在这里插入图片描述

    1.2 创建工作空间

    ① 创建文件夹

    mkdir -p ~/catkin_ws/src
    
    • 1

    ② 进入文件夹

    cd ~/catkin_ws/src
    
    • 1

    ③ 初始化工作空间

    catkin_init_workspace
    
    • 1

    1.3 编译工作空间

    ④ 返回上一级

    cd ..
    
    • 1

    ⑤ 编译工作空间

    catkin_make
    
    • 1

    1.4 设置环境变量

    ⑥ 设置环境变量

    source devel/setup.bash
    
    • 1

    ⑦ 查看ROS的环境变量

    echo $ROS_PACKAGE_PATH
    
    • 1

    1.5 添加环境变量

    命令行输入:

    vi ~/.bashrc
    
    • 1

    最后一行添加:

    source ~/ros/catkin/devel/setup.bash
    
    • 1

    根据你创建的目录路径来。


    别的命令

    编译单独功能包::

    catkin_make -DCATKIN_WHITELIST_PACKAGES="package_name"
    
    • 1

    多线程编程

    catkin_make -j -l
    
    • 1

    多线程编程用于提高编译速度,但要根据你CPU的数量决定,超过的话会出问题
    j:多少核编程
    l:多少线程编程
    例子:
    在这里插入图片描述


    二、功能包

    2.1 概念

    功能包(package):存放用户功能代码的文件夹。
    具体如下:
    在这里插入图片描述

    2.2 功能包的内容

    • include文件夹: 包含.h文件(必要)
    • launch文件: launch文件
    • src文件夹: 包含.cpp文件(必要)
    • urdf文件夹:.urdf文件
    • config这类的文件夹:包含参数文件
    • scripts这类的文件夹:包含可执行脚本文件(python脚本)
    • CMakeLists.txt文件:定义编译的规则(必要)
    • package.xml 文件: 定义功能包(package)的属性(必要)

    2.3 创建功能包

    catkin_create_pkg  [depend1] [depend2] [depend3]
    
    • 1

    使用示例:

    catkin_create_pkg new_package std_msgs rospy roscpp
    
    • 1

    三、CMakeLists.txt文件

    定义编译的规则

    官方介绍网站:
    cmakelists

    常用的cmakelists宏:

    • cmake_minimum_required() :CMake版本
    • project() :项目名称
    • find_package() :添加依赖
    • catkin_package() :编译生成信息导出
    • add_executable() :生成可执行文件
    • target_link_libraries() :可执行文件链接到库

    部分文件截图:
    在这里插入图片描述
    其他的cmakelists宏:

    add_message_files() 添加话题消息类型文件
    add_service_files() 添加服务消息类型文件
    add_action_files()  添加行为消息类型文件
    generate_messages() 生成消息文件
    include_directories() 添加头文件路径
    add_dependencies()    添加依赖项
    add_library()         生成自定义的库
    install()             安装规则
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    四、package.xml文件

    功能包的描述信息,文件使用的是标签语言

    官方介绍网站:
    package.xml

    必要标签:

    根标签
    
    。。。
    
    
           包名
        开源许可
     维护者
     描述
         版本号
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    可选标签:

            指定依赖项为编译、 导出、 运行需要的依赖
      编译依赖项
     导出依赖项
             运行依赖(旧版本是         测试用例依赖项
        编译构建工具
     文档依赖项
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述


    到这里就结束啦!
    在这里插入图片描述

  • 相关阅读:
    TCP为什么需要3次握手?
    马拉车算法
    提升办公效率,畅享多功能办公笔记软件Notion for Mac
    TDengine 成功“晋级” Percona Live 2023 银牌赞助商,开发者驻足关注
    网络爬虫之HTTP原理
    Vue中如何扩展⼀个组件
    Fabric.js 手动加粗文本iText
    什么是 Art Blocks,如何投资生成艺术?
    PyCharm配置Jupyter
    函数定义、this指向、闭包等
  • 原文地址:https://blog.csdn.net/qq_51447215/article/details/127872499