加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

(三)建立和编译package

(2011-01-10 08:45:59)
标签:

杂谈

分类: ROS(机器人操作系统)
参考网址: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

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有