• 1.ROS操作之从空间编译到功能包编译


    工作空间workspace是一个存放工程开发相关文件的文件夹
    包括:src build devel install四个文件夹
    要创建一个工作空间要进行以下几步:

    1 创建工作空间和src文件夹:

    mkdir -p ~/catkin_ws/src
    cd ~/catkin_ws/src
    catkin_init_workspace
    
    • 1
    • 2
    • 3

    初始化工作空间后能够看到src文件夹内出现cmake文件

    2 编译工作空间:

    需要在工作空间文件夹内

    catkin_make
    
    • 1

    3 设置环境变量

    source ~/catkin_ws/devel/setup.bash
    如果不想每次都设置环境变量,可以修改用户目录下的.bashrc文件,添加内容

    source /home/lcy/catkin_ws/devel/setup.bash
    
    • 1

    路径就是用户目录下的路径,

    4 创建功能包

    catkin_create_pkg [depend1] [depend2] [depend3]
    创建功能包的指令+功能包的名字+相关的依赖
    要创建功能包需要进入src目录执行:

    catkin_create_pkg learning_topic std_msgs rospy roscpp geometry_msgs turtlesim
    
    • 1

    以上指令中内容就是本次创建功能包的名字和依赖

    5 编译功能包learning_topic

    进入工作空间:执行:

    catkin_make
    
    • 1

    至此编译功能包的操作完成。
    如果创作一个有源码的功能包的话,需要修改功能包内的cmakelist文件
    比如在功能包内的src内新建文件velocity_publisher.cpp
    在learning_topic功能包的CmakeList.txt内进行修改,添加:

    add_executable(velocity_publisher src/velocity_publisher.cpp)
    target_link_libraries(velocity_publisher ${catkin_LIBRARIES})
    
    • 1
    • 2

    编译空间内的功能包:

    catkin_make
    source devel/setup.bash
    
    • 1
    • 2

    所执行的功能velocity_publisher位置在/devel/lib内
    在这里插入图片描述

    运行刚刚生成的功能包:
    roscore
    rosrun turtlesim turtlesim_node
    rosrun learning_topic velocity_publisher
    以上三条指令分别在三个窗口内执行
    注:设置环境变量的source devel/setup.bash跟运行功能包的指令要在一个终端执行,要不然就会出现[rospack] Error: package ‘learning_topic‘ not found的错误

    6 python功能包的执行方式

    1.在功能包内新建scripts文件夹,后新建velocity_publisher.py文件
    2. 给python脚本文件添加执行权限:chmod +x velocity_publisher.py
    3.查看python安装路径 指令:which python 本机的路径为/usr/bin/python3
    4.在python文件头设置路径#!/usr/bin/python3
    5.添加以下内容到CmakeList.txt末尾:

    catkin_install_python(PROGRAMS
      scripts/velocity_publisher.py 
    #功能包下的代码文件所在路径  代码文件夹/代码文件名
      DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5

    6.运行python功能包的内容与可执行文件的相同,差异在于第三步改为:rosrun learning_topic velocity_publisher.py

  • 相关阅读:
    spring进阶学习记录
    mysql约束之_唯一约束
    【Redis学习笔记】第四章 Jedis的使用
    Vue3 企业级优雅实战 - 组件库框架 - 5 组件库通用工具包
    egg框架中解决跨域的三种方案
    互联网大厂java面试题一美团
    【CUDA学习笔记】什么是GPU计算
    C# 入坑JAVA 潜规则 大小写敏感文件名和类名 枚举等 入门系列2
    区块链入门
    华为---静态路由-浮动静态路由及负载均衡(二)
  • 原文地址:https://blog.csdn.net/LCY133/article/details/126808155