Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册

Xenomai 3.0.5 and ROS1 on ubuntu 16.04安装手册

 

由于本人对于ubuntu和Xenomai信息获取不佳,以及对外网的浏览的不熟练,导致刚开始安装Xenomai的整个流程很慢,而且也遇到了很多错误。因此,在安装流程中会写出一些我遇到的错误以及我个人的解决方法。

根据电脑配置原因和实验需要,所以准备把ubuntu系统安装到实验室的台式机上,而不是在笔记本的虚拟机上。

前期准备:

  1. 本人笔记本,配置如下:Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第1张图片
  2. 实验室台式机,配置如下:Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第2张图片
  3. U盘(8G以上容量),用于制作ubuntu系统启动盘
  4. 良好的网络
  5. 参考信息:

https://rtt-lwr.readthedocs.io/en/latest/rtpc/xenomai3.html

这个网址里除了安装Xenomai3.0.5以外,还有2.6.5的安装,可根据需要选择。

 

一、系统盘的制作

  1. 制作启动盘的工具:我在安装过程中先后使用了两款制作系统盘的工具,分别是这两个东西:  

    Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第3张图片

    我刚开始时是使用的第一款启动盘制作工具,但在我遇到一些问题时,看到有帖子说是系统制作时出现了问题,并且推荐了deepin这一款启动盘制作工具。所以我也尝试着使用deepin来重新制作启动盘并进行后续流程,发现果然原来的问题就不会发生了。因此这里,我使用deepin来制作ubuntu系统的启动盘。

    Deepin下载:百度就行。

  2. ubuntu16.04镜像文件:这里我们需要先去官网或者其他网站下载一个ubuntu 16.04镜像文件,后缀是ios的,实验室台式机是64位的,所以我选择64位桌面版。

    官网:https://ubuntu.com/download/desktop

    其他版本的下载地址:http://mirrors.163.com/ubuntu-releases/

  3. 制作系统启动盘:工具和材料都有了,那么就可以开始制作启动盘了

    具体方法:先打开deepin,单击deepin窗口中的光盘图标,选择刚才我们下载的ubuntu16.04镜像文件,然后再点击下方U盘图标,选择我们用来制作启动盘的U盘,“格式化U盘可提高成功率”我觉得可点可不点,U盘有资料就不要格式化,资料已经备份的可以格式化一下,没什么影响。最后点击开始。制作过程中电脑管家可能会警告,我选择的是允许,因为对于U盘进行更改不会有什么不好的影响。制作完成后选择立即重启。我们的启动盘就制作完成了。

    Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第4张图片

    Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第5张图片

    Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第6张图片

    二、Ubuntu系统的安装

由于系统安装过程中不能截图,所以图片会是以照片的形式贴出来。

  1. 开机时选择从U盘启动:在我们开启电源开机后,狂按ESC键进入系统启动菜单(不同电脑进入的的按键不同,不一定是ESC键,需要上网查找)。

    Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第7张图片

     

  2. 通过上下键和回车键,我们选择进入引导菜单 

    Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第8张图片

  3. 选择UEFI – General UDisk,顾名思义,选择从UDisk(U盘)进入  

    Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第9张图片

  4. 选择 Install Ubuntu 选项,开始安装Ubuntu

(1)系统语言,选择中文(简体),在倒数第三个位置,选完以后点击继续

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第10张图片

(2)准备安装Ubuntu,这里我们不勾选任何选项,直接点击继续

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第11张图片

(3)安装类型,这里我勾选的是“清除整个磁盘并安装Ubuntu”,不伤手不残留,然后点击现在安装   

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第12张图片

点击现在安装以后会出现提示栏,不用理会,直接点继续即可

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第13张图片

 

(4)地区:默认的是shanghai ,我们就不修改了,直接点击继续

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第14张图片

(5)键盘布局:默认的都是汉语,不修改,点击继续即可

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第15张图片

(6)设置账户,这里我用的是实验室的门牌号,密码就是一个空格,点击继续

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第16张图片

 

(7)正式安装,不用做任何操作,等待即可

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第17张图片

 

安装大概花费5分钟,安装完毕后点击“现在重启”

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第18张图片

 

这里重启的过程中有个细节,仅供参考,可能会一直在黑屏光标闪烁那个界面,如果出现这种情况,只要把U盘从机箱上拔掉就可以了。拔掉的瞬间电脑会黑屏,然后就会进入正常开机的流程了。

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第19张图片

进入桌面以后,记得先在设置里面把网连上,这样后续的流程才能完成。

三、安装Xenomai 3.0.5

安装Xenomai的操作基本都是在终端进行的,通过Ctrl+Alt+T ,可以打开终端

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第20张图片

1、获取Linux内核: 

wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.9.38.tar.gz

 

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第21张图片

2、解压Linux内核文件:

tar xf linux-4.9.38.tar.gz

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第22张图片

3、获取Xenomai 3.0.5:

wget https://xenomai.org/downloads/xenomai/stable/xenomai-3.0.5.tar.bz2

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第23张图片

4、解压Xenomai 3.0.5:

tar xf xenomai-3.0.5.tar.bz2

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第24张图片

5、应用Xenomai修补程序:我们建立的是一个x86_64位内核:

cd linux-4.9.38
wget https://xenomai.org/downloads/ipipe/v4.x/x86/ipipe-core-4.9.38-x86-3.patch
../xenomai-3.0.5/scripts/prepare-kernel.sh --arch=x86_64 --ipipe=ipipe-core-4.9.38-x86-3.patch

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第25张图片

进行到第二条语句时出错,错误原因应该是我们的网络登录不上这个目标网站,我们的网络没有问题,那么很有可能是因为这个网站的问题。总之,在这一步我们要做到的是从这个网站上下载一个文件,文件名是ipipe-core-4.9.38-x86-3.patch,这个文件下载到本地的位置是linux-4.9.38文件夹下。所以我们可以自己从网上找到这个文件,然后放到指定的位置,效果是一样的。

我是从这里下载的:https://xenomai.org/downloads/ipipe/

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第26张图片

接下来继续完成第三条语句的操作

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第27张图片

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第28张图片

6、配置内核:

yes "" | make oldconfig
sudo apt install libncurses5-dev
make menuconfig

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第29张图片

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第30张图片

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第31张图片

配置Linux内核的一些指南:

    Recommended options:
     
    * General setup
      --> Local version - append to kernel release: -xenomai-3.0.5
      --> Timers subsystem
          --> High Resolution Timer Support (Enable)
    * Xenomai/cobalt
      --> Sizes and static limits
        --> Number of registry slots (512 --> 4096)
        --> Size of system heap (Kb) (512 --> 4096)
        --> Size of private heap (Kb) (64 --> 256)
        --> Size of shared heap (Kb) (64 --> 256)
        --> Maximum number of POSIX timers per process (128 --> 512)
      --> Drivers
        --> RTnet
            --> RTnet, TCP/IP socket interface (Enable)
                --> Drivers
                    --> New intel(R) PRO/1000 PCIe (Enable)
                    --> Realtek 8169 (Enable)
                    --> Loopback (Enable)
            --> Add-Ons
                --> Real-Time Capturing Support (Enable)
    * Power management and ACPI options
      --> CPU Frequency scaling
          --> CPU Frequency scaling (Disable)
      --> ACPI (Advanced Configuration and Power Interface) Support
          --> Processor (Disable)
      --> CPU Idle
          --> CPU idle PM support (Disable)
    * Pocessor type and features
      --> Enable maximum number of SMP processors and NUMA nodes (Disable)
      // Ref : http://xenomai.org/pipermail/xenomai/2017-September/037718.html
      --> Processor family
          --> Core 2/newer Xeon (if "cat /proc/cpuinfo | grep family" returns 6, set as Generic otherwise)
      // Xenomai will issue a warning about CONFIG_MIGRATION, disable those in this order
      --> Transparent Hugepage Support (Disable)
      --> Allow for memory compaction (Disable)
      --> Contiguous Memory Allocation (Disable)
      --> Allow for memory compaction
        --> Page Migration (Disable)
    * Device Drivers
      --> Staging drivers
          --> Unisys SPAR driver support
             --> Unisys visorbus driver (Disable)

配置完记得保存

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第32张图片

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第33张图片

7、构建实时内核:

sudo apt install kernel-package

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第34张图片

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第35张图片

安装完成到80多时会跳出对话框,我们选择“保持本地版本”按回车就可以了

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第36张图片

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第37张图片

CONCURRENCY_LEVEL=$(nproc) make-kpkg --rootcmd fakeroot --initrd kernel_image kernel_headers

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第38张图片

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第39张图片

这里出现致命错误,找不到openssl/openlv.h这个文件,我在网上找到的原因是电脑里没有安装libssl这个东西,解决方法自然是把缺少的东西安装上。执行如下语句安装:

sudo apt-get install libssl-dev 

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第40张图片

然后我们再运行

CONCURRENCY_LEVEL=$(nproc) make-kpkg --rootcmd fakeroot --initrd kernel_image kernel_headers

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第41张图片

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第42张图片

解包安装

cd ..
sudo dpkg -i linux-headers-4.9.38-xenomai-3.0.5_4.9.38-xenomai-3.0.5-10.00.Custom_amd64.deb linux-image-4.9.38-xenomai-3.0.5_4.9.38-xenomai-3.0.5-10.00.Custom_amd64.deb

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第43张图片

8、允许非root用户

sudo addgroup xenomai --gid 1234
sudo addgroup root xenomai
sudo usermod -a -G xenomai $USER

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第44张图片

9、配置GRUB并重新启动

sudo nano /etc/default/grub

编辑GRUB配置如下:

GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 4.9.38-xenomai-3.0.5"
#GRUB_DEFAULT=saved
#GRUB_SAVEDEFAULT=true
# Comment the following lines
#GRUB_HIDDEN_TIMEOUT=0
#GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=5
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash xenomai.allowed_group=1234"
GRUB_CMDLINE_LINUX=""

这里需要注意的是,除了把需要改写的内容改写之外,关键的是要把那些需要注释掉的行给注释掉,比如GRUB_HIDDEN_TIMEOUT=0这行,本意是在开机时默认内核进入系统,当我们注释掉以后,在开机时,会停留在一个界面,在这个界面上,我们就选择通过Xenomai内核来进入系统。

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第45张图片

编辑完成后按 Ctrl+O 然后回车键保存,最后通过 Ctrl+X 离开。

更新GRUB并重新启动

sudo update-grub

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第46张图片

重启计算机

sudo reboot

这里由于我们设置完了GRUB,所以开机时会停留在这样一个界面上,如上所述,我们在这里选择Xenomia3.0.5内核进入系统。

选择Ubuntu高级选项

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第47张图片

选择Linux 4.9.38-xenomai-3.0.5,回车进入系统

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第48张图片

10、安装Xenomai3.0.5用户空间库

uname -a
# Should return Linux waro-rt 4.9.38-xenomai-3.0.5 #2 SMP Wed Sep 20 16:00:12 CEST 2017 x86_64 x86_64 x86_64 GNU/Linux
dmesg | grep Xenomai
# [    1.417024] [Xenomai] scheduling class idle registered.
# [    1.417025] [Xenomai] scheduling class rt registered.
# [    1.417045] [Xenomai] disabling automatic C1E state promotion on Intel processor
# [    1.417055] [Xenomai] SMI-enabled chipset found, but SMI workaround disabled
# [    1.417088] I-pipe: head domain Xenomai registered.
# [    1.417704] [Xenomai] allowing access to group 1234
# [    1.417726] [Xenomai] Cobalt v3.0.5 (Sisyphus's Boulder) [DEBUG]

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第49张图片

cd xenomai-3.0.5
./configure --with-pic --with-core=cobalt --enable-smp --disable-tls --enable-dlopen-libs --disable-clock-monotonic-raw
make -j`nproc`
sudo make install
# --disable-clock-monotonic-raw : http://xenomai.org/pipermail/xenomai/2017-September/037695.html

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第50张图片

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第51张图片

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第52张图片

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第53张图片

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第54张图片

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第55张图片

11、更新bashrc

echo '
### Xenomai
export XENOMAI_ROOT_DIR=/usr/xenomai
export XENOMAI_PATH=/usr/xenomai
export PATH=$PATH:$XENOMAI_PATH/bin:$XENOMAI_PATH/sbin
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$XENOMAI_PATH/lib/pkgconfig
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$XENOMAI_PATH/lib
export OROCOS_TARGET=xenomai
' >> ~/.xenomai_rc

echo 'source ~/.xenomai_rc' >> ~/.bashrc
source ~/.bashrc

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第56张图片

12、测试安装

xeno latency

如果安装是没有问题的,那么会返回这样的结果

== Sampling period: 100 us
== Test mode: periodic user-mode task
== All results in microseconds
warming up...
RTT|  00:00:01  (periodic user-mode task, 100 us period, priority 99)
RTH|----lat min|----lat avg|----lat max|-overrun|---msw|---lat best|--lat worst
RTD|      0.174|      0.464|      1.780|       0|     0|      0.174|      1.780
RTD|      0.088|      0.464|      1.357|       0|     0|      0.088|      1.780
RTD|      0.336|      0.464|      1.822|       0|     0|      0.088|      1.822
RTD|      0.342|      0.464|      1.360|       0|     0|      0.088|      1.822
RTD|      0.327|      0.462|      2.297|       0|     0|      0.088|      2.297
RTD|      0.347|      0.463|      1.313|       0|     0|      0.088|      2.297
RTD|      0.314|      0.464|      1.465|       0|     0|      0.088|      2.297
RTD|      0.190|      0.464|      1.311|       0|     0|      0.088|      2.297

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第57张图片

这里我们出现这样的错误,第1条的错误原因是权限不足,执行这样的语句就可以解决问题

sudo chmod -R 777 /dev/rtdm/memdev-private
sudo chmod -R 777 /dev/rtdm/mendev-shared

解决了第1条错误,之后的错误就不会出现了,虽然我不知道具体原因,但总之安装就完成了

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第58张图片

Xenomai运行成功。

 

四、安装ROS1

我参考的是B站上古月居的ROS视频,链接如下:https://www.bilibili.com/video/av59458869?from=search&seid=6289533404409697815

手动跳转到P5跟着做就行了

参考的安装手册链接是:http://wiki.ros.org/kinetic/Installation/Ubuntu

 

1、添加ROS软件源

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

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第59张图片

2、添加密钥

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第60张图片

3、安装ROS

sudo apt-get update
sudo apt-get install ros-kinetic-desktop-full

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第61张图片

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第62张图片

4、初始化rosdep

sudo rosdep init
rosdep update

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第63张图片

5、设置环境变量

echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第64张图片

6、安装rosinstall

sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第65张图片

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第66张图片

7、测试安装

roscore

Xenomai 3.0.5 and ROS1 on Ubuntu16.04 安装手册_第67张图片

至此,ROS的安装也完成了。

你可能感兴趣的:(Xenomai)