(三)建立和编译package
(2011-01-10 08:45:59)
标签:
杂谈 |
分类: ROS(机器人操作系统) |
参考网址:http://www.ros.org/wiki/ROS/Tutorials/BuildingPackages
前面我们用roscreate-pkg建立package,这里我们根据系统关联来编译这些packages
ROS
package有时运行时需要连接外部库或者可执行程序。这些库或者程序的连接经常被关联到系统关联中。在一些情况下,这些系统关联不会被默认的安装,ROS提供了一个简单的工具--rosdep,用来下载和安装系统关联的。
ROS rospack必须在相应的package
manifest申明,参考小海龟的例子,
<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"/>
set -o errexit
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
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
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
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
当所有的系统关联都已经被安装,我们就可以开始用 rosmake
命令编译我们创建好的package
No Makefile in package roslang
mkdir: cannot create
directory `build': Permission denied
1,系统关联
$ roscd
turtlesim
$ cat
manifest.xml
得到结果:
<package>
</package>
-----得到turtlesim需要exwidgets
rosdep命令 ----根据ROS packages来安装系统变量
用法:
$ rosdep
install [package]
例子:
$ rosdep
install turtlesim
得到结果:
executing this script:
-----如果已经安装
#No Packages to install
set -o errexit -----如果没有安装
set -o verbose
if [ ! -f /opt/ros/lib/libboost_date_time-gcc42-mt*-1_37.a ] ;
then
fi
if [ ! -f /opt/ros/lib/liblog4cxx.so.10 ] ; then
fi
if [ ! -f /opt/ros/lib/libboost_date_time-gcc42-mt*-1_37.a ] ;
then
fi
if [ ! -f /opt/ros/lib/liblog4cxx.so.10 ] ; then
fi
2,编译packages
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
[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 ]
{-------------------------------------------------------------------------------
-------------------------------------------------------------------------------}
[ 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