打开终端,快捷键ctrl+alt+t
$ mkdir -p ~/catkin_ws/src # -p代表创建多层目录
$ cd ~/catkin_ws # 进入catkin_ws工作空间
$ catkin_make # 初始化(编译)工作空间
方法1
# 把工作空间添加到bash中,就不用每次启动终端都刷新环境变量
$ echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
方法2
# 直接打开终端配置文件
$ sudo nano ~/.bashrc
# 在文件末尾输入
source ~/catkin_ws/devel/setup.bash
package是ROS软件的基本组织形式,catkin编译的基本单元
1个package可以包含多个节点(可执行文件)
1个node(节点) = 1个进程(存在main函数) = 1个可执行文件
# 进入src目录
$ cd src
# 创建test功能包,依赖为roscpp,rospy,std_msgs
$ catkin_create_pkg test roscpp rospy std_msgs
然后进入test功能包src目录,创建hello_ros.cpp文件
$ cd test/src
$ touch hello_ros.cpp
使用编辑器打开源代码文件hello_ros.cpp,输入以下内容
#include "ros/ros.h"
int main(int argc, char *argv[])
{
ros::init(argc, argv, "hello_ros");
ROS_INFO("hello ros");
return 0;
}
修改test功能包下编译相关的CMakeLists.txt,生成可执行文件并将其链接到相关库
# 根据源文件hello_ros.cpp生成可执行文件hello_ros_node
add_executable(hello_ros_node src/hello_ros.cpp)
# 将可执行文件hello_ros_node链接到库${catkin_LIBRARIES}
target_link_libraries(hello_ros_node
${catkin_LIBRARIES}
)
除了自己创建功能包,还能从其他地方克隆,根据package下的xml描述文件安装所需的依赖
$ cd ~/catkin_ws/ # 进入工作空间目录
$ catkin_make # 编译工作空间
$ roscore # 启动ros
$ rosrun test hello_ros_node # 运行test功能包下的hello_ros_node可执行文件
$ rospack list | grep catkin_ws