一、工作空间
1、工作空间的概念
ros工作空间简单来说相当于工程或者项目,编写ros程序之前,首先需要创建ros工作空间。
2、创建工作空间
mkdir -p ~/wheeltec/src #创建文件夹
cd ~/wheeltec/src #进入文件夹
catkin_init_workspace #初始化工作空间
第三步如果不成功可能是没有安装插件
输入:
sudo apt install catkin
再执行第三步,完成
3、编译工作空间
cd .. #返回上一级路径
catkin_make # 编译工作空间
出现问题
编译时我出现了:cmake error incmakelists.txt:no cmake_cxx_compiler could be found
解决办法:
sudo apt-get update
sudo apt-get install -y build-essential
然后再编译即可成功
如果只编译其中的功能包而不是全部:
catkin_make -DCATKIN_WHITELIST_PACKAGES="package_name" #编译单独功能包
如果运行完上面单独的功能包,在运行catkin_make就还是在运行上面的包,此时解除就需要输入:
catkin_make -DCATKIN_WHITELIST_PACKAGES=""
此外还有自定义编译线程
catkin_make -j -l
4、设置环境变量
添加环境变量
source devel/setup.bash
cd ~
nano .bashrc
source ..../devel/setup.bash
source .bashrc
查看ROS的环境变量
echo $ROS_PACKAGE_PATH
二、功能包
1、功能包的概念
2、功能包的内容
include: .h文件
src: .cpp文件
launch: launch文件
urdf : .urdf文件
config: 参数文件,yaml,srv,msg,action
scripts: 可执行脚本文件(Python)
CMakeLists.txt : 定义编译的规则
package.xml : 定义package的属性
3、创建功能包
catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
示例:
创建一个名为new_package的功能包,它的依赖是std_msgs还有rospy和rosapp
catkin_create_pkg new_package std_msgs rospy roscpp
4、导入功能包
三、CMakeLists.txt
1、CMakeLists.txt文件的作用:定义编译规则的文件
2、 最常用的cmakelists宏
cmake_minimum_required() CMake版本
project() 项目名称
find_package() 添加依赖
catkin_package() 编译生成信息导出
add_executable() 生成可执行文件
target_link_libraries() 可执行文件链接到库
3、其他的cmakelists宏
add_message_files() 添加话题消息类型文件
add_service_files() 添加服务消息类型文件
add_action_files() 添加行为消息类型文件
generate_messages() 生成消息文件
include_directories() 添加头文件路径
add_dependencies() 添加依赖项
add_library() 生成自定义的库
install() 安装规则
四、package.xml
1、package.xml文件的作用: 功能包的描述信息
2、 必要的package.xml标签
3、可选的package.xml标签
指定依赖项为编译、 导出、 运行需要的依赖
<build_depend> 编译依赖项
<build_export_depend> 导出依赖项
<exec_depend> 运行依赖(旧版本是<run_depend>)
<test_depend> 测试用例依赖项
<buildtool_depend> 编译构建工具
<doc_depend> 文档依赖项