最近拿到一块TX1的板子搭建ROS平台,对于从来没有玩过开发板的我表示很心累,过程中遇到许多坑,最后也是成功了,也是希望能够分享出来与大家交流交流。
TX1拿到手之后也是很懵逼的(因为没玩过),也是现在网上搜了一大堆资料,最后开始动手。其实在TX1上搭建ROS就两个步骤:刷机,安装ROS,下面就给大家详细的操作流程。
一. 刷机
刷机网上也有很多教程,大家可以参考,我向大家推荐这一个https://blog.csdn.net/c406495762/article/details/70786700,他已经写的比较详细了,基本上都能看懂,我这边也只是大概讲一下流程以及避免一些坑,大家可以两篇文章一起看,会更加全面。
首先,提出一个说明,很多教程指出TX1不支持64位的Ubuntu系统上装ROS,最后证明是可以的,大家可以放心的下载Ubuntu16.04 64位。TX1本身是装有16.04的Ubuntu系统,我一开始是直接安装ROS没有刷机,但装的过程出现问题,最后也没有找到解决方案,按照终端给出的解决命令,直接把系统搞崩了,没办法,只有刷机之后再装,大家可以跳到下面的安装ROS步骤,尝试装一下,失败了刷机之后再装ROS也是没也问题。
在官网下载Jetpack包,但需要注册账号之后才能下载(https://developer.nvidia.com/embedded/jetpack)
在这先指出本文中特别重要的一个名词->安全令
安全令就是在终端执行以下三条命令
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get -f install
这是血淋淋的教训得出来的经验,不要不信邪,在需要使用安全令的时候一定要用。
下载完之后先不要安装,确保安全令输入之后不会出错,没有问题则继续安装。有问题就需要百度或者google了。
然后就是一路点击NEXT,选择TX1,在那篇文章里面有详细的介绍,我就不重复了。
给出大家TX1的一些比较重要的接口和开关示意图。
安装成功之后,按照步骤将电脑,开发板,路由器连接起来开始在开发板上安装,在开发板安装结束之后就可以在开发板上插入显示屏,键盘,鼠标开始装ROS了。
问题来了,由于TX1板子的功能包是arm架构,电脑基本上都是amd架构,这就会出现一个冲突,导致在电脑上输入sudo apt-get update 会出错,错误解决方案在我另一篇博客(https://blog.csdn.net/BOSHEN97/article/details/84254353)当中给出,大家可以参考。
二. 装ROS
我装的Jeppack包版本为3.3,Ubuntu会有两个用户nvida和ubuntu,密码和用户名都是一样的,默认进入nvida,由于国外源较慢,所以我们选择为数不多支持arm架构的中科大源。
$ cd /etc/apt
$ sudo gedit sources.list
将sources.list的内容全部注释,将以下内容复制粘贴进去
deb http://debian.ustc.edu.cn/ubuntu/ trusty main multiverse restricted universe
deb http://debian.ustc.edu.cn/ubuntu/ trusty-backports main multiverse restricted universe
deb http://debian.ustc.edu.cn/ubuntu/ trusty-proposed main multiverse restricted universe
deb http://debian.ustc.edu.cn/ubuntu/ trusty-security main multiverse restricted universe
deb http://debian.ustc.edu.cn/ubuntu/ trusty-updates main multiverse restricted universe
deb-src http://debian.ustc.edu.cn/ubuntu/ trusty main multiverse restricted universe
deb-src http://debian.ustc.edu.cn/ubuntu/ trusty-backports main multiverse restricted universe
deb-src http://debian.ustc.edu.cn/ubuntu/ trusty-proposed main multiverse restricted universe
deb-src http://debian.ustc.edu.cn/ubuntu/ trusty-security main multiverse restricted universe
deb-src http://debian.ustc.edu.cn/ubuntu/ trusty-updates main multiverse restricted universe
保存退出
接下来就开始安装ROS了
添加ROS的镜像源
$ sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'
添加密钥
$ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
输入安全令,确保无误方可继续。
安装ROS(无法安装桌面完全版,具体原因尚未清楚)
$ sudo apt-get install ros-kinetic-desktop
初始化rosdep
$ sudo rosdep init
$ rosdep update
设置环境变量
$ echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
安装常用工具(可不安装,但建议安装)
$ sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential
至此,ROS安装完毕,在终端输入roscore,如果没有问题则说明ROS安装成功。
如果要用于实体机器人需要注意,TX1上是没有默认安装USB转串口的驱动,所以需要安装cp210x.ko驱动,大家先执行以下命令查看内核是否有cp210x驱动。
$ cd /lib/modules/4.4.38-tegra/kernel/drivers/usb/serial
$ ls
如果出现了cp210x.ko的字样,就说明有驱动,直接加载就可以了,没有就可能要去下载。
因为我也是在下载了多次之后才发现这里面有这个驱动模块,所以我并不清楚是我自己下的还是系统自带的,如果大家发现不是系统自带的,大家可以私信我,我会再写一篇文章给大家一个安装cp210x.ko驱动的教程,这个坑也很多。
加载驱动命令如下
$ sudo insmod cp210x.ko
需要注意的是,每次开机都需要加载一次,我也尝试在开机的时候内核启动就把驱动加载,但一直没找到正确的方法,还在努力的尝试中,大家如果知道可以分享一下,我也有一个另类思路,但也没去尝试,大家可以试一试,将开机启动之后的用户权限设置为root权限,这样一开机就是root用户权限,然后再设置一个开机自动输入sudo insmod cp210x.ko命令。应该可以,但不知道会不会有问题。