# # This is an installation tutorial of the OROCOS v2.8 with the ROS HYDRO and # the Xenomai 2.6.4 on Ubuntu 12.04. # # Author: Mariusz Janiak (mariusz.janiak@pwr.edu.pl) # Author: Mateusz Cholewinski (mateusz.cholewinski@pwr.edu.pl) # Wroclaw 2014 # Update kernel sudo apt-get install linux-image-generic-lts-trusty # Update Xorg sudo apt-get install xserver-xorg-lts-trusty # Update GCC sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get update sudo apt-get install gcc-4.8 g++-4.8 sudo update-alternatives --remove-all gcc sudo update-alternatives --remove-all g++ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 20 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 20 sudo update-alternatives --config gcc sudo update-alternatives --config g++ # Reboot sudo reboot # Install basic tool and libs sudo apt-get install terminator byobu sudo apt-get install emacs openssh-server libboost-all-dev tcl tk lua5.2 libopencv-dev htop mc vim ruby sudo apt-get install fakeroot build-essential crash kexec-tools makedumpfile kernel-wedge git-core libncurses5 libncurses5-dev libelf-dev asciidoc binutils-dev kernel-package sudo apt-get build-dep linux # Enable byobu as a login shell for ssh byobu-enable # Enable source highlighting in less # Add to .bashrc # export LESSOPEN="| /usr/share/source-highlight/src-hilite-lesspipe.sh %s" # export LESS=' -R ' sudo apt-get install source-highlight # Prepare Xenomai source cd /usr/src sudo wget http://download.gna.org/xenomai/stable/xenomai-2.6.4.tar.bz2 sudo tar xf xenomai-2.6.4.tar.bz2 sudo wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.14.17.tar.xz sudo tar xf linux-3.14.17.tar.xz sudo ln -s /usr/src/linux-3.14.17 /usr/src/linux sudo cp -vi /boot/config-`uname -r` linux/.config sudo xenomai-2.6.4/scripts/prepare-kernel.sh --adeos=/usr/src/xenomai-2.6.4/ksrc/arch/x86/patches/ipipe-core-3.14.17-x86-4.patch --linux=/usr/src/linux-3.14.17 # Configure and build kernel # 1. Processor type and features -> Processor family -- select proper # processor. # 2. Power management and ACPI options -> ACPI (Advanced Configuration and # Power Interface) Support -- turn of Processor. # 3. Power management and ACPI options -> CPU Frequency scaling -- turn off # CPU Frequency scaling. # 4. Power management and ACPI options -- turn off CPU idle PM support. # 5. Kernel hacking turn off KGDB: kernel debugger. # 6. Turn off Virtualization. # 7. Make appropriate changes to Real-time sub-system. # 8. Device Drivers -> IOMMU Hardware Support -- turn off cd linux sudo make menuconfig sudo make-kpkg --bzimage --initrd --append-to-version=-xenomai-2.6.4 -j8 kernel-image kernel-headers modules # Install kernel cd .. sudo dpkg -i linux-image-*.deb sudo dpkg -i linux-headers-*.deb sudo update-initramfs -c -k "3.14.17-xenomai-2.6.4" # Update groub (enable boot menu just in case something go wrong) # In /etc/default/grub comment GRUB_HIDDEN_TIMEOUT and # GRUB_HIDDEN_TIMEOUT_QUIET sudo update-grub sudo reboot # Set user space Xenomai support sudo mkdir build_xenomai-2.6.4 cd build_xenomai-2.6.4 sudo ../xenomai-2.6.4/configure --enable-shared --enable-smp --enable-x86-sep sudo make -j8 sudo make install cd /etc/ld.so.conf.d/ sudo touch xenomai.conf sudo nano xenomai.conf # Put inside the file a line: /usr/xenomai/lib sudo ldconfig echo "export PATH=$PATH:/usr/xenomai/bin" >> ~/.bashrc sudo su echo "export PATH=$PATH:/usr/xenomai/bin" >> ~/.bashrc exit sudo addgroup xenomai sudo addgroup root xenomai sudo usermod -a -G xenomai remedi # Add to rc.local # echo "" > /sys/module/xeno_nucleus/parameters/xenomai_gid sudo nano /etc/rc.local # Install RTnet # Get patch 0001-Fix-compilatin-issues-on-kernel-above-3.10.patch from # # https://xenomai.org/pipermail/xenomai/attachments/20141215/5e590e56/attachment.bin # # or # # http://sourceforge.net/p/rtnet/mailman/attachment/548fe484eab803.95654079%40wp.pl/1/ # # Put patch 0001-Fix-compilatin-issues-on-kernel-above-3.10.patch # in /usr/src sudo git clone git://git.code.sf.net/p/rtnet/code rtnet-code sudo ln -s rtnet-code rtnet cd rtnet sudo git apply ../0001-Fix-compilatin-issues-on-kernel-above-3.10.patch sudo su make menuconfig # Select drivers for amd and intel NICs exit sudo make -j8 sudo make install # Configure RTnet # (!!!!!!!!!TODO!!!!!!!!!!!) # Install ROS HYDRO form repositories sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu precise main" > /etc/apt/sources.list.d/ros-latest.list' wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O - | sudo apt-key add - sudo apt-get update sudo apt-get install ros-hydro-desktop-full sudo rosdep init rosdep update sudo apt-get install python-rosinstall sudo apt-get install ros-hydro-moveit-full-pr2 sudo apt-get install ros-hydro-orocos* ros-hydro-ocl ros-hydro-rtt* sudo apt-get install rake sudo apt-get install libxerces-c3.1 libxerces-c-dev sudo apt-get install rubygems1.8 libxslt1-dev source /opt/ros/hydro/setup.bash # Create working directory mkdir ~/ws cd ~/ws # Create isolated workspace for orocos toolchain mkdir -p ws_isolated/src/orocos cd ws_isolated # Clone orocos toolchain repository git clone --recursive git://gitorious.org/orocos-toolchain/orocos_toolchain.git -b toolchain-2.8 src/orocos/orocos_toolchain # Fix catkin compilation issues mkdir -p install_isolated/lib/ruby/1.8/x86_64-linux/orogen/templates touch install_isolated/lib/ruby/1.8/x86_64-linux/orogen/templates/CATKIN_IGNORE # Fix missing xenomai header sudo ln -s /usr/xenomai/include/xeno_config.h /usr/xenomai/include/xenomai-config.h # Remove ros-hydro-rtt temporary (problem with headers include order) sudo apt-get remove ros-hydro-rtt # Build Orocos Toolchain export OROCOS_TARGET=xenomai export LANG=en_US.UTF-8 catkin_make_isolated --install -DXENOMAI_ROOT_DIR=/usr/xenomai source install_isolated/setup.sh # Create workspace for xenomai OROCOS components cd .. mkdir -p ws_xeno/src cd ws_xeno # Clone and build rtt ros integration repository git clone https://github.com/orocos/rtt_ros_integration.git src/rtt_ros_integration catkin_make source devel/setup.sh # Create example component cd src orocreate-pkg oro_test component cd oro_test # Replace CMakeLists.txt with cmake_minimum_required(VERSION 2.8.3) project(oro_test) ### ROS Dependencies ### # Find the RTT-ROS package (this transitively includes the Orocos CMake macros) find_package(catkin REQUIRED COMPONENTS rtt_ros # ADDITIONAL ROS PACKAGES ) include_directories(${catkin_INCLUDE_DIRS}) ### Orocos Dependencies ### # Note that orocos_use_package() does not need to be called for any dependency # listed in the package.xml file include_directories(${USE_OROCOS_INCLUDE_DIRS}) ### Orocos Targets ### orocos_component(oro_test src/oro_test-component.cpp) target_link_libraries(oro_test ${catkin_LIBRARIES} ${USE_OROCOS_LIBRARIES}) # orocos_library(my_library src/my_library.cpp) # target_link_libraries(my_library ${catkin_LIBRARIES} ${USE_OROCOS_LIBRARIES}) # orocos_service(my_service src/my_service.cpp) # target_link_libraries(my_service ${catkin_LIBRARIES} ${USE_OROCOS_LIBRARIES}) # orocos_plugin(my_plugin src/my_plugin.cpp) # target_link_libraries(my_plugin ${catkin_LIBRARIES} ${USE_OROCOS_LIBRARIES}) # orocos_typekit(my_typekit src/my_typekit.cpp) # target_link_libraries(my_typekit ${catkin_LIBRARIES} ${USE_OROCOS_LIBRARIES}) ### Orocos Package Exports and Install Targets ### # Generate install targets for header files orocos_install_headers(DIRECTORY include/${PROJECT_NAME}) # Export package information (replaces catkin_package() macro) orocos_generate_package( INCLUDE_DIRS include DEPENDS rtt_ros ) # Create package.xml file oro_test 0.1.0 BSD Mariusz Janiak Orocos test. catkin rtt ocl rtt_ros rtt ocl rtt_ros rtt_sensor_msgs rtt_sensor_msgs rtt_sensor_msgs # Build component cd ../.. catkin_make --pkg oro_test # Run deployer deployer-xenomai # In deployer input import("rtt_ros") ros.import("oro_test") loadComponent("c1","Oro_test") c1.start quit # Install ros-hydro-rtt once again sudo apt-get install ros-hydro-rtt* # Create regular ROS workspace (in new terminal!!!) source /opt/ros/hydro/setup.bash cd ~/ws mkdir -p ws_linux/src cd ws_linux/src catkin_init_workspace cd .. catkin_make source devel/setup.bash # We end up with two workspaces 'ws_linux' and 'ws_xeno' one for regular linux # components, second for xenomai components. Put your components in # ws_{linux|xenomai}/src directories and source correct # ws_{linux|xenomai}/devel/setup.bash configuration scripts before you start.