ROS工程创建时,配置文件的含义及配置。

本文总结了在ROS工程创建过程中,如何正确配置功能包以确保编译成功并生成可执行文件。首先介绍了在`catkin_ws`或自定义工作空间中创建功能包的步骤,强调了`catkin_init_workspace`的重要性。接着详细讲解了`package.xml`和`CMakeLists.txt`两个关键配置文件的设置,特别是`buildtool_depend`, `build_depend`, `build_export_depend`, `exec_depend`等字段的作用,以及`add_executable`和`target_link_libraries`在生成可执行文件过程中的功能。最后提到了源码编写的相关内容。" 79550810,5721672,文件系统的访问控制与可靠性,"['文件系统', '访问控制能力', '文件一致性']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

玩的几个实例,自己敲了一些,代码没问题的情况下,有些编译成功,生成可执行文件,有些编译成功了,然而没有可执行文件的生成。故总结一下配置文件的具体设置。
1.功能包的创建
安装之后,工作空间的安装与配置我不累述了,如果你的项目较小,可以在一个工作空间里建多个功能包使用即可。估计大家都叫catkin_ws了,我测试的工作空间另取了myros_ws(注意,catkin_init_workspace初始化catkin构建系统目录很重要).
a.cd ~/myros_ws/src 进入src中
b.catkin_create_pkg test_hello std_msgs roscpp
(注意,这里后面使用2个依赖包,代表test_hello功能包要使用到它们,虽然后面可在packagexml,CmakeLists.txt配置,但我按网上配置之后并不成功,对比系统发现仍然少配置了几项,导致可执行文件生成失败。推荐使用我的方法)
c.cd test_hello 进入功能包中
2.配置文件的具体配置
a.2个主要配置文件之package.xml的配置

<?xml version="1.0"?>
<package format="2">
  <name>frist_ros_pkg</name>
  <version>0.0.0</version>
  <description>The frist_ros_pkg package</description>
  <maintainer email="DragonJJ@yeah.net">jcl</maintainer>
  <license>BSD</license>

  <buildtool_depend>catkin</buildtool_depend>
  <build_depend>roscpp</build_depend>
  <build_depend>std_msgs</build_depend>
  <build_export_depend>roscpp</build_export_depend>
  <build_export_depend>std_msgs</build_export_depend>
  <exec_depend>roscpp</exec_depend>
  <exec_depend>std_msgs</exec_depend>

  <export>
  </export>
</package>

如果你的b步骤是按我的方式创建功能包,就没什么好配置的。就是协议,邮箱写下即可。注意:buildtool_depend,build_depend,build_export_depend,exec_depend这些是主要东西)
b.CmakeList.txt配置

cmake_minimum_required(VERSION 2.8.3)
project(frist_ros_pkg)
find_package(catkin REQUIRED COMPONENTS  roscpp std_msgs)
catkin_package( CATKIN_DEPENDS roscpp std_msgs)
include_directories (${catkin_INCLUDE_DIRS})
add_executable(hello_node src/hello_node.cpp)
target_link_libraries(hello_node  ${catkin_LIBRARIES})

标准模板有很多可配置选项,我没使用则删除了。第一个是make的最低版本,注意自己的Cmake编译系统要高于这个。第三个,功能包依赖,还是1中的b步骤执行,这个系统也会配好。第4个一样。注意:add_executable 是构建可执行文件,target_link_libraries是可执行文件与库的链接。这2个重要)
3.源码编写

#include <ros/ros.h>            //必用
#include <std_msgs/String.h>    //使用到功能包里的Stringd类,故头文件引用进来
#include <sstream>           

int main(int argc, char **argv)
{
    ros::init(argc,argv,"hello_node");    //初始化,节点名为hello_node
    ros::NodeHandle nh;                   //句柄,节点在master注册使用
        ros::Publisher chatter_pub = nh.advertise<std_msgs::String>("say_hello_world",1000);                     //发布者,话题为say_hello_world,最大缓冲区1000
    ros::Rate loop_rate(1);               //设置频率1
    int count = 0;

    while(ros::ok())                  //ok()函数3种情况不成立,句柄注销完,signal(Ctral C),外节点关闭
    {
        std_msgs::String msg;
        std::stringstream ss;
        ss << "helloworld!" << count;
        msg.data = ss.str();
        ROS_INFO("%s",msg.data.c_str());
        chatter_pub.publish(msg);
        ros::spinOnce();           //回环一次
        loop_rate.sleep();         //休眠,避免cpu全力工作,统一在规定的频率上
        ++count;
    }    
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值