Ubuntu 14.04.5源代码编译ROS Indigo并建立自己的DEB安装源

正常情况下我们使用已经编译好的ROS安装包来安装配置默认的ROS环境,就可以比较好的完成工作了。具体参考Ubuntu14.04安装和配置ROS Indigo

但是在某些情况下,比如,我们需要替换或更新里面的某些默认安装包的版本(比如OpenCV)。

这种情况下,我们就只能重新从源代码开始编译,或者构建自己的安装源了。

$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

$ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade

$ sudo apt-get install python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential

$ sudo rosdep init

$ rosdep update

$ mkdir ~/ros_catkin_ws
$ cd ~/ros_catkin_ws

$ export ROS_VER_NAME=indigo
$ export OS_VER_NAME=trusty

#如果是全部重新编译,则删除整个src目录再进行操作
$ rosinstall_generator desktop_full --rosdistro $ROS_VER_NAME --deps --wet-only --tar > $ROS_VER_NAME-desktop-full-wet.rosinstall

$ wstool init -j8 src $ROS_VER_NAME-desktop-full-wet.rosinstall

$ rosdep install --from-paths src --ignore-src --rosdistro $ROS_VER_NAME -y

$ ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release

#如果想一步到位,安装到最终目录,请执行如下命令,主要是 --install-space /opt/ros/$ROS_VER_NAME
# sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/$ROS_VER_NAME

上面的操作是生成完整的文件,然后再拷贝到需要安装的最终目录(--install-space /opt/ros/$ROS_VER_NAME指定),但是并没有生成DEB格式的安装包。

如果我们需要建立自己的安装源,那么参照上面的操作,并且正常编译完成后,使用下面的步骤编译安装包:

$ export ROS_VER_NAME=indigo 
$ export OS_VER_NAME=trusty

#如果要生成deb安装包,需要按照顺序操作
$ sudo apt-get install python-bloom

#编译并安装基础核心模块
#-----------------------catkin-------------------------------
$ cd ~/ros_catkin_ws/src/catkin/

$ bloom-generate rosdebian --os-name ubuntu --os-version $OS_VER_NAME --ros-distro $ROS_VER_NAME

$ fakeroot debian/rules binary

#需要安装,后续的模块编译依赖前面编译的模块
$ sudo dpkg -i ~/ros_catkin_ws/src/ros-$ROS_VER_NAME-catkin*.deb

#部分Python模块依赖我们刚刚编译的模块,把路径加入,否在后续模块编译会报错
$ export PYTHONPATH=$PYTHONPATH:/opt/ros/indigo/lib/python2.7/dist-packages

#-----------------------genmsg-------------------------------
$ cd ~/ros_catkin_ws/src/genmsg/

$ bloom-generate rosdebian --os-name ubuntu --os-version $OS_VER_NAME --ros-distro $ROS_VER_NAME 

$ fakeroot debian/rules binary

$ sudo dpkg -i ~/ros_catkin_ws/src/ros-$ROS_VER_NAME-genmsg*.deb


#-----------------------genpy-------------------------------
$ cd ~/ros_catkin_ws/src/genpy/ 

$ bloom-generate rosdebian --os-name ubuntu --os-version $OS_VER_NAME --ros-distro $ROS_VER_NAME 

$ fakeroot debian/rules binary 

$ sudo dpkg -i ~/ros_catkin_ws/src/ros-$ROS_VER_NAME-genpy*.deb


#-----------------------gencpp------------------------------- 
$ cd ~/ros_catkin_ws/src/gencpp/ 

$ bloom-generate rosdebian --os-name ubuntu --os-version $OS_VER_NAME --ros-distro $ROS_VER_NAME 

$ fakeroot debian/rules binary 

$ sudo dpkg -i ~/ros_catkin_ws/src/ros-$ROS_VER_NAME-gencpp*.deb


#-----------------------genlisp------------------------------- 
$ cd ~/ros_catkin_ws/src/genlisp/ 

$ bloom-generate rosdebian --os-name ubuntu --os-version $OS_VER_NAME --ros-distro $ROS_VER_NAME 

$ fakeroot debian/rules binary 

$ sudo dpkg -i ~/ros_catkin_ws/src/ros-$ROS_VER_NAME-genlisp*.deb


#-----------------------message_generation------------------------------- 
$ cd ~/ros_catkin_ws/src/message_generation/

$ bloom-generate rosdebian --os-name ubuntu --os-version $OS_VER_NAME --ros-distro $ROS_VER_NAME

$ fakeroot debian/rules binary

$ sudo dpkg -i ~/ros_catkin_ws/src/ros-$ROS_VER_NAME-message-generation*.deb

#-----------------------message_runtime------------------------------- 
$ cd ~/ros_catkin_ws/src/message_runtime/

$ bloom-generate rosdebian --os-name ubuntu --os-version $OS_VER_NAME --ros-distro $ROS_VER_NAME

$ fakeroot debian/rules binary

$ sudo dpkg -i ~/ros_catkin_ws/src/ros-$ROS_VER_NAME-message-runtime*.deb

........................................................................

#-----------------------std_msgs------------------------------- 
$ cd ~/ros_catkin_ws/src/std_msgs/

$ bloom-generate rosdebian --os-name ubuntu --os-version $OS_VER_NAME --ros-distro $ROS_VER_NAME

$ fakeroot debian/rules binary

$ sudo dpkg -i ~/ros_catkin_ws/src/ros-$ROS_VER_NAME-std-msgs*.deb

至于如何建立自己的源,请参考:建立自己的apt-get源

对于替换OpenCV重新编译的情况,参考Ubuntu 14.04.5编译安装OpenCV-2.4.13.5,然后执行sudo apt-get remove libopencv-dev&&sudo apt-get autoremove && rm -rf ~/ros_catkin_ws/install_isolated 删除已经安装好的OpenCV以及临时文件,然后重新编译ROS源代码。最后可以从~/ros_catkin_ws/install_isolated/share/cv_bridge/cmake/cv_bridgeConfig.cmake中看到已经链接刚刚编译安装的OpenCV版本了。

参考链接


发布者

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注