AI is the new electricity
一,安装
安装步骤请移步https://www.ncnynl.com/archives/201801/2273.html
IDE:https://github.com/TonyRobotics/RoboWare-Studio
二,ROS的工程结构
文件系统层级

catkin
catkin是ROS定制的编译构建系统,对CMake的扩展,其实就是一个文件夹,来组织和管理功能包的文件夹,以catkin工具编译。rosbuild是旧的编译系统。
src:package源代码,package是编译的基本单元,会递归查找每一个package。

catkin命令行
1.建立工作空间:mkdir -p ~/catkin_ws/src //必须要有src目录
cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
//编译完成后要source刷新环境
三,package的组成
简介:package是ROS软件的基本组织形式,catkin编译的基本单元,一个package可以包含多个可执行文件node。
package的特征:包含CMakeLists.txt和package.xml。

CMakeLists.txt
规定catkin编译的规则,源文件,依赖項,目标文件
cmake_minimum_required() #指定catkin最低版本
project() #指定软件包的名称
find_package() #指定编译时需要的依赖項
add_message_files() #添加消息文件
add_service_files() #添加服务文件
add_action_files() #添加动作文件
generate_messages() #生成消息,服务,动作
catkin_package() #指定catkin信息给编译系统生成CMake文件
add_library() #指定生成库文件
add_executable() #指定生成可执行文件
target_link_libraries() #指定可执行文件去链接哪些库
catkin_add_gtest #添加测试单元
install() #生成可安装目标
package.xml
定义package的属性,例如:包名,版本号,作者,依赖等。
<package> 根标签
<name> 包名
<version> 版本号
<description> 包描述
<maintainer> 维护者
<license> 软件许可
<buildtool_depend> 编译工具
<build_depend> 编译时的依赖
<run_depend> 运行时的依赖
</package>
manifest.xml
rosbuild编译系统采用的包信息清单,类catkin的package.xml
四,代码文件
脚本(shell,python)
C++(头文件和源文件)

文件夹说明
package/scripts:脚本文件 include/src :c++
自定义通讯格式
在package下也可以放些自定义的通格式文件.
消息(msg)
服务(srv)
动作(action)

launch以及yaml配置文件
在package下也可以放些launch以及yaml配置文件。
小伙伴还记得,在package里面可以有多个可执行文件,如果我们要每个都运行起来要怎么办呢?
我们可以把多个可执行文件组织到launch文件里面。launch文件的作用就是一次行执行多个文件。


常用指令
1,rospack
查找某个package的地址
$rospack find package_name
列出本地所有package
$rospack list
2,roscd
跳转到某个package路径下
$roscd package_name
3,rosls
列出某个package下的文件信息
$rosls package_name
4,rosed
编辑package中的文件
$rosed package_name file_name
5,catkin_create_pkg
创建包
$catkin_create_pkg package_name [deps]
6,rosdep
安装某个包的依赖
$rosdep install [pkg_name]