ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
2018-05-25 04:12:45 -0500 | received badge | ● Guru (source) |
2018-05-25 04:12:45 -0500 | received badge | ● Great Answer (source) |
2016-12-29 23:55:11 -0500 | received badge | ● Enlightened (source) |
2016-12-29 23:55:11 -0500 | received badge | ● Good Answer (source) |
2016-07-01 13:15:19 -0500 | received badge | ● Nice Answer (source) |
2015-06-02 17:32:09 -0500 | received badge | ● Necromancer (source) |
2015-04-21 09:02:08 -0500 | commented answer | Compile roscore for ARM board Alice, your custom ROS packages depend on ROS libraries, so you need the ARM version of those libraries to cross compile your packages. If you don't want to cross compile roscore, you could probably copy the ARM version of ROS to your build machine and link to that. I haven't tried that myself. |
2015-03-27 11:20:04 -0500 | received badge | ● Supporter (source) |
2014-10-06 14:07:11 -0500 | received badge | ● Teacher (source) |
2014-10-06 14:07:11 -0500 | received badge | ● Necromancer (source) |
2014-10-06 13:45:02 -0500 | answered a question | Compile roscore for ARM board I realize this answer is coming probably a month too late for you, but if you're still working on cross compiling ROS, here's a few tips: Don't follow those instructions you found, because they are very old and outdated. I started with that document, but quickly found it wasn't relevant. Basically, you want to cross-compile a bare-bones ROS from source and then cross compile your own ROS packages. I have done this exact thing with ROS Hydro, targeting an Odroid U3 running Ubuntu 12.11. I can outline the steps for you here, but since you have a different system, details will change. The way I figured things out, you basically need to have cross-compiled versions of the dependencies for anything you want to cross-compile. At some basic level, you will install a toolchain, which should include cross-compiled standard libraries. Many dependencies you will need to build yourself, however. Here's what you're going to need to do: Step 1. Install your cross compiling toolchain. I don't know anything about the Wandboard, but it may use the same cross compiler toolchain that I used for the Odroid; I know the beaglebone uses the same one (g++-arm-linux-gnueabihf) Step 2. Cross compile ROS dependencies. For bare-bones ROS Hydro, I needed the following dependencies: boost (1.56.0), Python (2.7.3), Bzip2, Poco, uuid, libtinyxml. Depending on what ROS packages you need, you might have different dependencies. Step 3. After you cross compile all of those packages, you need to cross compile ROS. You basically just follow the building ROS from source instructions ( http://wiki.ros.org/hydro/Installatio... ). The only major difference that you will have is when you build, you want to pass in a toolchain.cmake file, which will instruct cmake to use the cross compiling tools instead of your typical system tools. For a bare-bones ROS, use the following rosinstall_generator and wstool commands to get the necessary source code (modified for your needs, of course): $ rosinstall_generator ros_comm <ros_pkg_1> <ros_pkg_2> ... <ros_pkg_n> --rosdistro hydro --deps --wet-only --tar > hydro-my_ros_config-wet.rosinstall $ wstool init -j8 src hydro-my_ros_config-wet.rosinstall Now, when you build ROS, you should use a rostoolchain.cmake file that looks something like this: This file just tells cmake how to look for things it needs. Think about CMAKE_FIND_ROOT_PATH as the starting point for your system. Cmake won't search down any path that doesn't begin with CMAKE_FIND_ROOT_PATH. So if you have boost libraries installed on your system under /usr/lib and you also cross compiled boost to /home/user/crosscompile/boost/. If your CMAKE_FIND_ROOT_PATH is set to /home/user/crosscompile, then it can find the cross compiled boost, which is what you need if you want to cross ... (more) |
2014-08-25 14:35:57 -0500 | answered a question | How to get boost libraries to link in cross compile? Here's how I effectively segregated my cross-compile libs from my system libs. My folder structure looks like this: /path-to-cross-compiler-workspace/ros_catkin_ws /path-to-cross-compiler-workspace/boost/boost_1.56.0 /path-to-cross-compiler-workspace/boost/boost_arm (install location for cross-compiled Boost) /path-to-cross-compiler-workspace/usr/lib /path-to-cross-compiler-workspace/usr/include And my rostoolchain.cmake file looks like this: I found that using CMAKE_FIND_ROOT_PATH essentially treats whatever location you set it to as '/' in a typical system, so you want to populate this area with your libs and headers for your cross-compile target. So when cmake is looking for libraries, anything under /path-to-cross-compiler-workspace/usr/lib should be found automatically. This is just like if you are building a project for your local machine, and cmake can easily find libraries installed under /usr/lib. Because I chose to install Boost in a non-standard location (i.e. next to my boost sources instead) I had to set the BOOST_INCLUDEDIR* and BOOST_LIBRARYDIR* cmake variables. I could have installed boost to /path-to-cross-compiler-workspace/usr, and it should be the same. ** My understanding is that these are the variables to use that tell cmake where to find boost, which is different than BOOST_INCLUDE_DIRS and BOOST_LIBRARY_DIRS, which are set by cmake after it finds boost. |