ros第一天

645 阅读2分钟

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。

build:cmake和catkin缓存和中间件 devel:目标文件

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]