(三)建立和编译package

转自:http://blog.sina.com.cn/s/blog_661159d50100ocqk.html

参考网址:http://www.ros.org/wiki/ROS/Tutorials/BuildingPackages

 

      前面我们用roscreate-pkg建立package,这里我们根据系统关联来编译这些packages

 

1,系统关联

        ROS package有时运行时需要连接外部库或者可执行程序。这些库或者程序的连接经常被关联到系统关联中。在一些情况下,这些系统关联不会被默认的安装,ROS提供了一个简单的工具--rosdep,用来下载和安装系统关联的。

      ROS rospack必须在相应的package manifest申明,参考小海龟的例子,

$ roscd turtlesim

$ cat manifest.xml

得到结果:

<package>

  <description brief="turtlesim">

 

     turtlesim is a tool made for teaching ROS and ROS-PKGS. 

 

  </description>

  <author>Josh Faust</author>

  <license>BSD</license>

  <review status="unreviewed" notes=""/>

  <url>http://ros.org/wiki/turtlesim</url>

  <depend package="roscpp"/>

  <depend package="roslib"/>

  <depend package="rosconsole"/>

  <depend package="std_srvs"/>

  

  <rosdep name="wxwidgets"/>

 

  <export>

    <cpp cflags="-I${prefix}/msg/cpp -I${prefix}/srv/cpp"/>

  </export>

 

  <platform os="ubuntu" version="9.04"/>

  <platform os="ubuntu" version="9.10"/>

  <platform os="ubuntu" version="10.04"/>

</package> -----得到turtlesim需要exwidgets

 

rosdep命令 ----根据ROS packages来安装系统变量

用法:

$ rosdep install [package]

例子:

$ rosdep install turtlesim

得到结果:

executing this script:    -----如果已经安装

 set -o errexit

#No Packages to install

 

set -o errexit  -----如果没有安装

set -o verbose

 

 

if [ ! -f /opt/ros/lib/libboost_date_time-gcc42-mt*-1_37.a ] ; then

  mkdir -p ~/ros/ros-deps

  cd ~/ros/ros-deps

  wget --tries=10 http://pr.willowgarage.com/downloads/boost_1_37_0.tar.gz

  tar xzf boost_1_37_0.tar.gz

  cd boost_1_37_0

  ./configure --prefix=/opt/ros

  make

  sudo make install

fi

 

 

if [ ! -f /opt/ros/lib/liblog4cxx.so.10 ] ; then

  mkdir -p ~/ros/ros-deps

  cd ~/ros/ros-deps

  wget --tries=10 http://pr.willowgarage.com/downloads/apache-log4cxx-0.10.0-wg_patched.tar.gz

  tar xzf apache-log4cxx-0.10.0-wg_patched.tar.gz

  cd apache-log4cxx-0.10.0

  ./configure --prefix=/opt/ros

  make

  sudo make install

fi

 

if [ ! -f /opt/ros/lib/libboost_date_time-gcc42-mt*-1_37.a ] ; then

  mkdir -p ~/ros/ros-deps

  cd ~/ros/ros-deps

  wget --tries=10 http://pr.willowgarage.com/downloads/boost_1_37_0.tar.gz

  tar xzf boost_1_37_0.tar.gz

  cd boost_1_37_0

  ./configure --prefix=/opt/ros

  make

  sudo make install

fi

 

 

if [ ! -f /opt/ros/lib/liblog4cxx.so.10 ] ; then

  mkdir -p ~/ros/ros-deps

  cd ~/ros/ros-deps

  wget --tries=10 http://pr.willowgarage.com/downloads/apache-log4cxx-0.10.0-wg_patched.tar.gz

  tar xzf apache-log4cxx-0.10.0-wg_patched.tar.gz

  cd apache-log4cxx-0.10.0

  ./configure --prefix=/opt/ros

  make

  sudo make install

fi

  

2,编译packages

      当所有的系统关联都已经被安装,我们就可以开始用 rosmake 命令编译我们创建好的package

 

rosmake命令 ---编译package

 

(1) 编译单个package

用法: 

$ rosmake [package]

例子: 

$ rosmake beginner_tutorials

得到结果:

[ rosmake ] Packages requested are: ['beginner_tutorials']                      

[ rosmake ] Logging to directory/home/jason/.ros/rosmake/rosmake_output-20110110-092837

[ rosmake ] Expanded args ['beginner_tutorials'] to:

['beginner_tutorials']     

[ rosmake ] Checking rosdeps compliance for packages beginner_tutorials.  This may take a few seconds.

[ rosmake ] rosdep check passed all system dependencies in packages             

[rosmake-0] Starting >>> roslib [ make ]                                       

[rosmake-0] Finished <<< roslib ROS_NOBUILD in package roslib                   

[rosmake-1] Starting >>> roslang [ make ]                                       

[rosmake-0] Starting >>> rosconsole [ make ]                                    

[rosmake-0] Finished <<< rosconsole ROS_NOBUILD in package rosconsole           

[rosmake-0] Starting >>> std_msgs [ make ]                                     

[rosmake-1] Finished <<< roslang ROS_NOBUILD in package roslang

 No Makefile in package roslang

[rosmake-0] Finished <<< std_msgs ROS_NOBUILD in package std_msgs               

[rosmake-0] Starting >>> xmlrpcpp [ make ]                                     

[rosmake-1] Starting >>> rospy [ make ]                                        

[rosmake-1] Finished <<< rospy ROS_NOBUILD in package rospy                     

[rosmake-0] Finished <<< xmlrpcpp ROS_NOBUILD in package xmlrpcpp               

[rosmake-0] Starting >>> roscpp [ make ]                                       

[rosmake-0] Finished <<< roscpp ROS_NOBUILD in package roscpp                   

[rosmake-0] Starting >>> beginner_tutorials [ make ]                            

[rosmake-1] Starting >>> rosout [ make ]                                       

[rosmake-1] Finished <<< rosout ROS_NOBUILD in package rosout                   

[ rosmake ] All 2 linesbeginner_tutorials: 0.1 sec ] [ 1 Active 10/11 Complete ]

{-------------------------------------------------------------------------------

  mkdir: cannot create directory `build': Permission denied

-------------------------------------------------------------------------------}

[ rosmake ] Output from build of package beginner_tutorials written to:

[ rosmake ]    /home/jason/.ros/rosmake/rosmake_output-20110110-092837/beginner_tutorials/build_output.log

[rosmake-0] Finished <<< beginner_tutorials [FAIL] [ 0.09 seconds ]             

[ rosmake ] Halting due to failure in package beginner_tutorials. 

[ rosmake ] Waiting for other threads to complete.

[ rosmake ] Results:                                                           

[ rosmake ] Built 11 packages with 1 failures.                                  

[ rosmake ] Summary output to directory                                        

[ rosmake ] /home/jason/.ros/rosmake/rosmake_output-20110110-092837 

 

(2) 编译多个packages

用法:

$ rosmake [package1] [package2] [package3]

例子:

$ rosdep install turtle_teleop rxtools

$ rosmake turtle_teleop roscpp_tutorials rospy_tutorials rxtools

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值