1.创建工作区
$ mkdir -p ~/catkin_ws/src ///-p表示递归创建目录
$ cd ~/catkin_ws/
$ catkin_make
$ source devel/setup.bash
$ echo $ROS_PACKAGE_PATH
/home/youruser/catkin_ws/src:/opt/ros/kinetic/share
你可以用任何你喜欢的名字命名你的工作区
2.创建package
创建一个新ROS功能包的命令应该在你工作区中的src目录下运行
创建包的时候添加对应的依赖库。
Catkin_create_pkg [package_name] [depend1] [depend2] [depend3]
catkin_create_pkg package-name std_msgs roscpp
目录下生成了两个配置文件:
第一个配置文件,叫做 package.xml,第二个文件,叫做 CMakeLists.txt,是一个 Cmake 的脚本文件,Cmake 是一个符合工业标准的跨平台编译系统。(一个工作区目录,包含了一个 src目录,其中又包含了一个功能包目录)ROS 包的命名遵循一个命名规范,只允许使用小写字母、数字和下划线,而且首字符必须是一个小写字母。
3.编写程序
一些在线教程建议在你的功能包目录中创建 src 目录来存放 C++源文件。这个附加的组织结构可能是有益的,特别是对于那些含有多种类型文件的较大的功能包。
#include <ros / ros.h>
int main ( int argc , char ** argv )
{
ros::init ( argc , argv , " hello _ros " ) ;
ros::NodeHandle nh ;
ROS_INFO_STREAM( " Hello , ROS! " ) ;
}
ROS_INFO_STREAM 宏将生成一条消息,且这一消息被发送到不同的位置,包括控制台窗口。
ros::init函数初始化ROS客户端库。请在你程序的起始处调用一次该函数 。函数最后的参数是一个包含节点默认名的字符串。
ros::NodeHandle(节点句柄)对象是你的程序用于和ROS系统交互的主要机制 。创建此对象会将你的程序注册为ROS节点管理器的节点
4.配置程序
首先,我们需要声明程序所依赖的其他功能包。对于 c++程序而言,此步骤是必要的,以确保catkin能够为c++编译器提供合适的标记来定位编译功能包所需的头文件和链接库。为了给出依赖库,编辑包目录下的 CMakeLists.txt 文件
find_package(catkin REQUIRED COMPONENTS roscpp)
我们同样需要在包的清单文件中列出依赖库,通过使用build_depend (编译依赖)和 run_depend(运行依赖)两个关键字实现:
<build_depend>roscpp</build_depend>
<run_depend>roscpp</run_depend>
声明可执行文件 接下来,我们需要在 CMakeLists.txt 中添加两行,来声明我们需要创建的可执行文件。其一般形式是:
add_executable(executable-name source-files)
target_link_libraries(executable-name ${catkin_LIBRARIES})
在本例中对应的命令为:
add_executable(hello hello.cpp)
target_link_libraries(hello ${catkin_LIBRARIES})
add_executalbe函数要放在target_link_libraries和include_directories之前否则会出现Cannot specify link libraries for target的错误
5.编译工作区
catkin_make
因为被设计成编译你的工作区中的所有包,这个命令必须从你的工作区目录运行。它将会完成一些配置步骤(尤其是你第一次运行此命令时),并且在你的工作区中创建 devel 和 build 两个子目录。这两个新目录用于存放和编译相关的文件。
Sourcing setup.bash
最后的步骤是执行名为 setup.bash 的脚本文件,它是 catkin_make 在你工作区的 devel 子目录下生成的。
source devel/setup.bash
这个自动生成的脚本文件设置了若干环境变量,从而使 ROS 能够找到你创建的功能包和新生成的可执行文件所有产生的文件,像库文件、可执行文件以及产生的代码都被放置在 devel 中。使用如下命令来install工作空间:
cd ~/catkin_ws
catkin_make install
//上面的两条命令可以用下面一条指令来代替:
cd ~/catkin_ws/build && make install
你可以使用devel或者是install空间,但不能同时使用。他们各有好处,具体情况应该具体对待。在工作空间中还是推荐使用devel。如果您之前已经有了一个编译好的工作空间,并且您在里面添加了一个新的包,可以使用如下命令将这个包添加进去:
catkin_make --force-cmake
6.运行程序
rosrun agitr hello
不要忘了首先要启动 roscore:这个程序是一个节点,节点需要一个节点管理器才可以正常运行