MOOC ROS笔记 1

工程结构(文件系统级)

MOOC ROS笔记 1_第1张图片

catkin:ROS定制的编译构建系统 对CMake的扩展(用来编译ros程序的)
catkin工作空间:组织和管理功能包的文件夹,以catkin工具编译
catkin_make 创建工作空间 编译
MOOC ROS笔记 1_第2张图片
src: package源代码

build: cmake和catkin缓存和中间文件

devel: 目标文件

catkin的编译对象就是package
编译的时候会递归的查找每一个package
MOOC ROS笔记 1_第3张图片

package组成

ROS软件的基本组织形式 一个package包含多个执行文件。
怎样才能被称为package? 下面就是package中必备的一些文件
MOOC ROS笔记 1_第4张图片

CmakeLists.txt: : 规定catkin编译的规则(编译出问题一般查找这个文件)
MOOC ROS笔记 1_第5张图片

package.xml:
定义package的属性 ,例如:包名 版本号 作者 依赖等
一般就改红线的两项
MOOC ROS笔记 1_第6张图片
package中的代码:
ROS里的可执行程序一般来自脚本(shell python)C++(头文件,源文件)

MOOC ROS笔记 1_第7张图片
package中也可以有自定义通信格式 分别在对应的文件夹下

msg 消息
srv 服务
action 动作
MOOC ROS笔记 1_第8张图片
也可以有launch文件:一次性执行多个可执行文件 lauch文件放在package下launch文件夹中 参数(.yaml)放在config文件夹下

package常用指令

查找某个pkg的地址  
rospack find package_name


列出本地所有package
rospack list


跳转到某个pkg路径下
roscd package_name


列举某个pkg下的文件:
rosls package_name

编辑pkg中的文件
rosed package_name_file_name (要装下vim)

创建一个pkg
catkin_creat_pkg[dep] 包名加依赖


安装某个pkg所需的依赖
rosdep install [pkg_name]

使用 rosdep install --from-paths src --ignore-src --rosdistro=kinetic -y 安装依赖包(package中build 和depend知道需要什么依赖)

出现错误:
ERROR: the following packages/stacks could not have their rosdep keys resolved to system dependencies:
slam_sim_demo: No definition of [hector_mapping] for OS [debian]
navigation_sim_demo: No definition of [dwa_local_planner] for OS [debian]
robot_sim_demo: No definition of [yocs_cmd_vel_mux] for OS [debian]

解决方法:
更改命令为:
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y --os=ubuntu:xenial

创建包编译完成后
要source ~/catkin_ws/devel/setup.bash
echo “source ~/catkin_ws/devel/setup.bash” >> ~/.bashrc 把 source ~/catkin_ws/devel/setup.bash 永久加进bashrc文件中

rospack list | grep catkin_ws

Metapacakge

自身没有什么内容,但是依赖了很多其他的软件包(stack)

例如navigation包 虚包 cMakelist中 只有声明cattkin_Metapacakge 但是点开package.xml 有很多rundepend

你可能感兴趣的:(MOOC ROS笔记 1)