ROS环境下进行package的简单创建并编译
1、 安装ROS工作环境。
本人是基于ubuntu12.04环境下的fuerte的安装,安装参考文档见:
http://ros.org/wiki/fuerte/Installation/Ubuntu;安装完毕之后,打开终端,运行一下“roscore”,如果没有问题,安装就成功了!
2、 修改环境变量。在终端运行$ export | grep ROS,就会得到ROS的一些版本信息及包的路径等,如下所示:
declare -xROSLISP_PACKAGE_DIRECTORY="/opt/ros/fuerte/share/common-lisp/ros"
declare -xROS_DISTRO="fuerte"
declare -xROS_ETC_DIR="/opt/ros/fuerte/etc/ros"
declare -xROS_MASTER_URI="http://localhost:11311"
declare -xROS_PACKAGE_PATH="/opt/ros/fuerte/stacks:/opt/ros/fuerte/share"
declare -xROS_ROOT="/opt/ros/fuerte/share/ros"
在终端执行$ export ROS_PACKAGE_PATH=/opt/ros/fuerte/stacks:/opt/ros/fuerte/share:/home/liuqin/ros_workspace,即将自己要建立的ROS的包(我的路径:/home/liuqin/ros_workspace)与ROS装的包建立起联系,ROS并从这些包含的路径中去寻找相应的包。再次运行$ export | grep ROS就会得到更新的一些信息。
declare -xROSLISP_PACKAGE_DIRECTORY="/opt/ros/fuerte/share/common-lisp/ros"
declare -xROS_DISTRO="fuerte"
declare -xROS_ETC_DIR="/opt/ros/fuerte/etc/ros"
declare -xROS_MASTER_URI="http://localhost:11311"
declare -xROS_PACKAGE_PATH="/opt/ros/fuerte/stacks:/opt/ros/fuerte/share:
/home/liuqin/ros_workspace"
declare -xROS_ROOT="/opt/ros/fuerte/share/ros"
为什么要这样添加呢?
因为ROS的package是ROS_ROOT或者ROS_PACKAGE_PATH里面的一个目录/文件夹,包含一个manifest.xml文件。
3、 根据个人安装的ROS的版本,选择合适的编译方式。Groovy(含)以上的版本采用catkin,以下的版本采用rosbuild。由于我是采用的fuerte版本,因此采用基于rosbuild的创建及编译方式。
3.1 创建一个包:
cd 进入自己的包的路径,我的路径是/home/liuqin/ros_workspace
参考网址:http://wiki.ros.org/ROS/Tutorials/CreatingPackage
利用 rorcreate-pkg 创建 package,比如$ roscreate-pkg beginner_tutorials std_msgs roscpp rospy
得到的结果:
Created packagedirectory /home/liuqin/ros_workspace/beginner_tutorials
Created includedirectory /home/liuqin/ros_workspace/beginner_tutorials/include/beginner_tutorials
Created cpp sourcedirectory /home/liuqin/ros_workspace/beginner_tutorials/src
Created packagefile/home/liuqin/ros_workspace/beginner_tutorials/Makefile
Created packagefile /home/liuqin/ros_workspace/beginner_tutorials/manifest.xml
Created packagefile /home/liuqin/ros_workspace/beginner_tutorials/CMakeLists.txt
Created packagefile /home/liuqin/ros_workspace/beginner_tutorials/mainpage.dox
Please editbeginner_tutorials/manifest.xml and mainpage.dox to finish creating yourpackage
3.2查看 package相关第一层依赖项
$ rospack depends1 beginner_tutorials ----package第一层依赖项查询
$ rospack depends1 rospy ----package依赖项rospy的第一层依赖项查询
$ rospack depends beginner_tutorials ---package所有依赖项查询
结果如下:
std_msgs
roslang
rospy
roscpp
以上只是建立了一个包,参看这个包的文件,发现有include、src和一些manifest等文件。
3.3 建立和编译package
参考文档:http://wiki.ros.org/ROS/Tutorials/CreatingPackage
http://wiki.ros.org/ROS/Tutorials/BuildingPackages
3.3.1系统关联
rosdep命令 ----根据ROS packages来安装系统变量,执行$ rosdepinstall beginner_tutorials。
3.3.2 编译package
rosmake命令 ---编译package
$ rosmake beginner_tutorials
同理,编译多个package,执行$ rosmake [package1] [package2] [package3]
此时beginner_tutorials这个包里的文件为bin、build、include、src和一些makefile、manifest等文件。
试验平台:ubuntu12.04+fuerte