• ROS基本程序实现


    0.前言

    现在介绍ROS基本程序实现的教程有很多,步骤无非就是建工作空间,编译,创建功能包,创建文件和修改CMakeList,之后再编译、运行程序这几步。但是这些教程中很多在文件夹切换的很混乱,导致会出现一堆奇奇怪怪的错误,其实只要注意你操作的文件夹位置,很多问题都不是问题。这也是博主为什么写这篇文章的原因。

    1.实现步骤

    (1)创建工作空间并初始化

    lxb@lxb-virtual-machine:~/study_ros$ mkdir -p my_workspace/src
    lxb@lxb-virtual-machine:~/study_ros$ cd my_workspace/
    lxb@lxb-virtual-machine:~/study_ros/my_workspace$ catkin_make
    

    注意:
    我的工作空间文件夹位置为:~/study_ros/my_workspace/

    (2)进入 src 创建功能包并添加依赖

    lxb@lxb-virtual-machine:~/study_ros/my_workspace$ cd src
    lxb@lxb-virtual-machine:~/study_ros/my_workspace/src$ catkin_create_pkg my_function_package roscpp rospy std_msgs
    

    image
    注意:
    我的功能包文件夹位置为:~/study_ros/my_workspace/src/my_function_package
    以后的操作大多数都是在功能包中进行的,除了catkin_make编译

    (3)进入功能包的 src 目录创建编辑核心代码hello_world.cpp

    lxb@lxb-virtual-machine:~/study_ros/my_workspace/src$ cd my_function_package/
    lxb@lxb-virtual-machine:~/study_ros/my_workspace/src/my_function_package$ touch hello_world.cpp
    lxb@lxb-virtual-machine:~/study_ros/my_workspace/src/my_function_package$ gedit hello_world.cpp
    

    image
    注意:
    hello_world.cpp的内容为:

    #include "ros/ros.h"
    
    int main(int argc, char *argv[])
    {
        //执行 ros 节点初始化
        ros::init(argc,argv,"hello");
        //创建 ros 节点句柄
        ros::NodeHandle n;
        //控制台输出 hello world
        ROS_INFO("hello world!");
    
        return 0;
    }
    

    (4)编辑功能包下的 Cmakelist.txt文件

    lxb@lxb-virtual-machine:~/study_ros/my_workspace/src/my_function_package$ gedit CMakeLists.txt
    image
    编辑方式:
    找到Cmakelist.txt文件下面对应的部分,去掉前面#注释,并将内容改为如下所示,其中hello_world_newnamehello_world.cpp的映射名,随便写,但是建议写成和hello_world.cpp同名,也就是hello_world

    add_executable(hello_world_newname src/hello_world.cpp)
    target_link_libraries(hello_world_newname
      ${catkin_LIBRARIES}
    )
    

    (5)进入工作空间目录并编译

    image
    编译成功截图
    image
    注意:
    若编译失败,再重新走一遍流程,一般都是流程出错

    (6)刷新环境并执行程序

    1.先打开一个新终端,运行roscore

    lxb@lxb-virtual-machine:~$ roscore
    image

    2.在原来的终端下刷新环境并执行程序

    lxb@lxb-virtual-machine:~/study_ros/my_workspace$ source ./devel/setup.bash
    lxb@lxb-virtual-machine:~/study_ros/my_workspace$ rosrun my_function_package hello_world_newname
    

    image

    2.后言

    这个在我稀稀拉拉学ros多年,终于把它给搞懂了,这里对于新学习ROS的同学,可以看下这个教程http://www.autolabor.com.cn/book/ROSTutorials/ ,这个教程给了我很多的启发。如果有什么问题,也欢迎大家评论去交流,最后祝大家可以ROS顺利!

  • 相关阅读:
    深入I/O挖矿
    一个完整的Flutter项目的基本构成
    开发一个自己的前端脚手架
    三战MySQL数据库【终极篇】
    什么是原型链(prototype chain)?如何实现继承?
    【MindSpore易点通】dump工具使用经验总结
    Python网络编程之Socket(套接字)
    Ansible
    【mechine learning-六-supervise learning之线性回归模型】
    MediatR
  • 原文地址:https://www.cnblogs.com/yunmeng-shi/p/16347537.html