码迷,mamicode.com
首页 > 其他好文 > 详细

创建一个ros功能包

时间:2020-11-19 12:44:14      阅读:10      评论:0      收藏:0      [点我收藏+]

标签:setup   环境变量   使用   严格   init   新版本   pack   pkg   nbsp   

 一、创建并配置工作空间(workspace)

  工作空间是存放工程开发相关文件的文件夹,现在较新版本的ROS默认使用catkin编译系统,该编译系统的空间比较特殊,所以需要特殊的方式创建。

  1、创建工作空间

    mkdir -p ~/catkin_ws/src                   #在home目录下创建两级目录,先创建catkin目录,再创建src目录,必须使用-p选项

    cd ~/catkin_ws/src                      #切换到src目录

    catkin_init_workspace                     #初始化工作空间

  2、编译工作空间,此时工作空间为空,经过编译会生成很多文件,严格来说是迁移来很多文件

    cd ~/catkin_ws/

    catkin_make                        #catkin自己的编译命令

  3、初始化环境变量,使环境变量生效

    source devel/setup.bash                    #其实就是运行编译生成的devel目录下的setup.bash文件

  4、验证环境变量是否有效

    echo $ROS_PACKAGE_PATH                  #打印当前工作空间的路径,结果如下:,包括刚刚创建的工作空间的目录就对了,否则,要好好找找原因了。

municationk@developk:~/catkin_ws$ echo $ROS_PACKAGE_PATH
/home/municationk/catkin_ws/src:/opt/ros/melodic/share

 

  二、在工作空间创建功能包,ROS系统的实现主要靠功能包实现各个功能

  功能包中包含了许多文件和配置信息及编译信息等,现在较新版本的ROS默认使用catkin编译系统,该编译系统对功能包要求比较特殊,所以需要特殊的方式创建。

  1、创建功能包,应用catkin_create_pkg命令

    cd ~/catkin_ws/src                      #切换到代码空间,也就是工作空间的src目录

   catkin_create_pkg learning_com std_msgs rospy roscpp    #创建功能包,并指定有三个功能包依赖

  2、再次编译工作空间,并设置环境变量

    cd ~/catkin_ws/

    catkin_make                        #编译

    source devel/setup.bash                   #设置环境变量

  三、在工作空间创建功能包,实现一个简单的发布、订阅程序:主要是添加两个cpp源码talker.cpp和listener.cpp,修改一个编译配置文件CMakeList.txt,修改一个功能包配置文件package.xml文件

  1、talker.cpp在工作空间的代码空间的功能包的代码空间中,本文中为:~/catkin_ws/src/learning_com/src/目录

  2、listener.cpp在工作空间的代码空间的功能包的代码空间中,本文中为:~/catkin_ws/src/learning_com/src/目录中

  3、CMakeList.txt在工作空间的代码空间的功能包的代码空间中,本文中为:~/catkin_ws/src/learning_com/目录中

  4、package.xml在工作空间的代码空间的功能包的代码空间中,本文中为:~/catkin_ws/src/learning_com/目录中

  5、编译功能包,并设置环境变量

    cd ~/catkin_ws/

    catkin_make                        #编译

    source devel/setup.bash                   #设置环境变量

  测试,打开三个终端,在第一终端输入:roscore,第二个终端输入:rosrun learning_com talker 第三个终端输入:rosrun learning_com listener

  在第一终端输入:roscore,第二个终端输入:rosrun  learning_com talker,第三个终端输入:rosrun  learning_com listener,当在第二个终端中使用ctrl+c将程序中talker的publisher退出,第三个终端中的lisenter的subscriber也无法接受数据

 

参考博客:https://www.cnblogs.com/guochaoxxl/p/11303128.html

创建一个ros功能包

标签:setup   环境变量   使用   严格   init   新版本   pack   pkg   nbsp   

原文地址:https://www.cnblogs.com/zhongllmm/p/13973723.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!