ROS学习1

ROS操作系统的工程结构

最近准备一个比赛,需要学习好多东西,打算最近写一些博客记录自己所学的知识。[手动比心 by zwx lvmm]

- ROS工程结构

ROS文件系统的结构:

catkin workspace ---  src  ---   package 1   ---...package 2
								 ......
							---  build ---(cmake & catkin 的缓存文件或者目标文件)
							---  devel --- (生成的目标文件)

catkin 是ROS定制的编译构建系统,是对于CMake的扩展。
创建一个catkin工程的方法:

 mkdir -p ~/catkin_ws/src
 cd  ~/catkin_ws
 catkin_make
 #这个语句仅在当前终端内有效
 source ~catkin_wa/devel/setup.bash
 #或者用下面这条语句,可在新打开的终端内有效
 echo "source ~catkin_wa/devel/setup.bash" >> ~/.bashrc

package 是ROS软件的基本阻值形式,也是catkin编译的基本单元,一个package可以包含很多个可执行的文件。

package 	    ---	CMakeList.txt ()
				---	package.xml()
				---	scripys 	脚本文件		---	*.py   *.sh
				---	msg						---	*.msg
				---	srv						---	*.srv
				---	include					---	*.cpp
				---	launch					---	*.launch

package 包中必须含有的CMakeList.txt和package.xml这两个文件,以及其他文件。

  • CMakeList.txt 文件:

CMakeList.txt 规定了catkin的编译规则,例如源文件、依赖项、目标文件之间的关系。
CMakeList.txt 文件内部的基本语句:

cmake_minimun_required()	#指定catkin最低版本
project()					#制定软件包名称
find_package()				#指定编译时需要的依赖项
add_message_files()			#添加消息文件
add_service_files()			#添加服务文件
add_action_files()			#添加动作文件
generate_message()			#生成消息、服务、动作
catkin_package()			#制定catkin信息给编译系统生成的CMake文件
add_library()				#制定生成库文件
add_executable()			#制定生成可执行文件
target_link_libraries()		#制定可执行文件去链接哪些库
catkin_add_gtest()			#添加测试单元
install()					#生成可安装目标
  • package.xml 文件:

package.xml 用来定义package的属性。(相当于包的自我描述)
文件内部包含的就基本信息: 包名、版本号、作者、依赖等

<package>  				<!--根标签-->
	<name>  			<!--包名-->
	<version>  			<!--版本号-->
	<description>  		<!--包描述-->
	<maintainer>  		<!--维护者-->
	<license>  			<!--软件许可-->
	<buildtool_depend>  <!--编译工具-->
	<build_depend>  	<!--编译时的依赖-->
	<run_depend>  		<!--运行时的依赖-->
</package>  			<!--根标签-->
  • 代码文件:

脚本(shell、python)C++文件(头文件、源文件)

  • 自定义通信内容:

消息(msg)服务(srv)动作(action)等

  • launch文件以及配置文件:

launch文件(launch)配置文件(yaml)


包管理的常用指令:

#查找某个pkg的地址
$rospack find package_name
#列出本地所有pkg
$rospack list

#跳转到某个pkg路径下
$roscd package_name

#列举某个pkg下的文件信息
$rosls package_name

#编辑pkg中的文件
$rosed package_name file_name

#创建一个pkg
$catkin_create_pkg <pkg_name> [依赖]

#安装某个pkg所需的依赖
$rosdep install [pkg_name]  #在相应的程序的package.xml

此外还有一个和package具有共同功能的包:Metapackage
Metapackage, 与package的区别,本身不含有任何内容,但是它依赖了许多其他的软件包,通过这种方法把其他的软件包组合起来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值