码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【ROS】机械人开发三--ROS工作空间与功能包


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

    • 一、ROS工作空间
      • 1.1 概念
      • 1.2 创建工作空间
      • 1.3 编译工作空间
      • 1.4 设置环境变量
      • 1.5 添加环境变量
    • 二、功能包
      • 2.1 概念
      • 2.2 功能包的内容
      • 2.3 创建功能包
    • 三、CMakeLists.txt文件
    • 四、package.xml文件

    一、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

    在这里插入图片描述


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

  • 相关阅读:
    Java中ArrayList集合中如何删除重复元素呢?
    03-JAVA设计模式-访问者模式
    TIDB--JMETER测试报告
    在树莓派上控制GPIO常用的编程语言有哪些
    AGI之MFM:《多模态基础模型:从专家到通用助手》翻译与解读之视觉理解、视觉生成
    Vue利用flex布局实现TV端城市列表
    GO语言-什么是临界资源安全问题?
    为什么 C# 可能是最好的第一编程语言
    SQL ORDER BY Keyword(按关键字排序)
    使用微信小程序控制蓝牙小车(微信小程序端)
  • 原文地址:https://blog.csdn.net/qq_51447215/article/details/127872499
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号