文章目录
一、创建工作空间
mkdir -p ~/catkin_ws/src #catkin_ws创建工作空间名字
cd ~/catkin_ws/src
catkin_init_workspace
创建完成后,在工作空间的根目录下使用catkin_make命令编译整个工作空间
cd ~/catkin_ws/
catkin_make
编译过程中,在工作空间的根目录里会自动产生build和devel两个文件夹及其中的文件。编译完成后,在devel文件夹中已经产生几个setup.*sh形式的环境变量设置脚本。使用source命令运行这些脚本文件,则工作空间中的环境变量可以生效。 source devel/setup.bash
为了确保环境变量已经生效,使用下面的命令进行检查:echo $ROS_PACKAGE_PATH
如果打印的路径中已经包含当前工作空间的路径,则说明环境变量设置成功,例:/home/iv/catkin_ws/src:/opt/ros/kinetic/share(在终端中使用source命令设置的环境变量只能在当前终端中生效,如果希望环境变量在所有终端中有效,则需要在终端的配置文件中加入环境变量的设置echo "source /catkin_ws/devel/setup.bash">>~/.bashrc
, catkin_ws更换成当前的工作空间路径,或者输入命令gedit ~/.bashrc在文件下添加路径)
二、创建功能包
ROS中功能包的形式如下:
my_package/
CMakeLists.txt #记录了功能包的编译规则
package.xml #提供了功能包的元信息,也就是描述功能包属性的信息
......【ROS不允许在某个功能包中嵌套其他功能包,多个功能包必须平行放置在代码空间中】
ROS提供直接创建功能包的命令catkin_create_pkg,该命令的使用方法如下:
catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
例如:创建一个learning功能包,该功能包依赖于std_msgs、roscpp、rospy等catkin_create_pkg learning std_msgs roscpp rospy
此时,代码空间src中会生成一个learning功能包,其中已经包含package.xml和CMakeLists.txt文件。
回到工作空间的跟目录下进行编译,并且设置环境变量:
cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash
三、src目录
目录列表
workspace_folder/ -- WORKSPACE
1 src/ -- SOURCE SPACE
1.1 CMakeLists.txt -- 'Toplevel' CMake file, provided by catkin
1.2 package_1/ 包1 例如 beginner_tutorials
CMakeLists.txt -- CMakeLists.txt file for package_1 编译规则
package.xml -- Package manifest for package_1 提供有关程序包的元信息
src -- 存放 源文件 cpp py 。。。。
...
1.n package_n/ 包n
CMakeLists.txt -- CMakeLists.txt file for package_n
package.xml -- Package manifest for package_n 清单文件
src -- 存放 源文件 cpp py 。。。。
2 devel/
依赖库
3 build/
编译文件
1.节点代码
(1)创建Publisher(<package_name>/src/下添加talker.cpp)