正常情况下我们使用已经编译好的ROS
安装包来安装配置默认的ROS
环境,就可以比较好的完成工作了。具体参考Ubuntu14.04安装和配置ROS Indigo。
但是在某些情况下,比如,我们需要替换或更新里面的某些默认安装包的版本(比如OpenCV
)。
这种情况下,我们就只能重新从源代码开始编译,或者构建自己的安装源了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
$ 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
格式的安装包。
如果我们需要建立自己的安装源,那么参照上面的操作,并且正常编译完成后,使用下面的步骤编译安装包:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
$ 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
版本了。