【项目实践】基于Jetson Nano的ROS平台SLAM项目(一)

文章目录

  • 前言
  • 0 系统安装
  • 1 系统基本配置与使用
  • 2 ROS安装
  • 3 ROS编程【不断更新!】
  • 4 ORB_SLAM2

前言

  去年接了一个大创项目,是基于ROS平台的SLAM项目,在Jetson Nano(以下简写为JN)上实现,第一次做这么“高级”的项目,写篇博客记录一下。

0 系统安装

  拿到Jetson Nano,首先需要在设备中安装系统,方便下一步的操作,关于这个系统安装,建议直接去参考官网给出的教程,包含了使用显示屏和不使用显示屏的两种解决方案,链接在这里,感觉理解起来不会有太大难度。

  值得一提的是,如果买的Jetson Nano不带网卡,也问题不大,可以通过网线(或者网线转USB)连到自己的笔记本电脑上,然后在电脑的网络适配器中设置自己的无线网卡对连到Jetson Nano的有线网卡进行网络共享,这样就相当于自己电脑给JN开“有线热点”。

1 系统基本配置与使用

  虽然说这个Ubuntu系统不是在电脑上运行的,但它毕竟是一个Ubuntu系统,所以为了更好地使用这个系统,建议先做一些基本配置。

  • 换源:为了方便后面软件的安装,原来的默认软件源可能会有点慢,所以最好还是换成国内的源,如清华的源。不过需要注意,由于JN是基于arm64架构(具体有啥区别也不太懂),总之在软件源这块有点不一样,这一点在清华镜像网站上也有说明,如下图所示。
    在这里插入图片描述
    而且在软件更新中,也不能手动选择其他源,所以换源的时候,建议直接修改source.list文件,当然,以防万一,还是得先备份一下这个文件——sudo cp /etc/apt/sources.list /etc/apt/sources.list.copy,然后再编辑源:sudo gedit /etc/apt/sources.list,将其替换为以下内容:
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe

  最后再升级一下即可:sudo apt update

参考链接

  • 设置VNC:一般在使用JN时,都需要给它接一个显示屏和一套键鼠,这样就能像正常操作Ubuntu系统一样操作这个设备了,但是如果恰好手边没有显示屏,也可以借用自己的笔记本电脑,通过VNC来远程控制JN设备。具体设置方法建议参考这篇博客,感觉讲得非常详细。
      这篇博客有一点没有提到,那就是给设备设置静态地址的问题,可以参考这个链接。不过,个人更加建议使用另一种方案,那就是直接设置连接JN设备的网卡(或者是连接的外置网卡,USB转网口) 的属性,将其IPV4地址设置为固定值。
    【项目实践】基于Jetson Nano的ROS平台SLAM项目(一)_第1张图片

  • 中文输入法:值得一提的是,在JN设备中,是不支持安装搜狗输入法的,如果需要安装中文输入法,建议安装iBUS中的pinyin输入法,具体操作建议完全参考这篇博客。

  • 卸载不必要的软件:由于这个系统是直接通过官方的镜像来安装的,所以不能自定义安装哪些内容,个人觉得安装了很多不必要的软件,所以为了存储空间考虑,卸载了很多软件,这里个人建议直接打开软件管理,在已安装栏中一个一个去选择remove,效率更高!

其他的一些教程:

  • jetson nano入门教程
  • Nvidia Jetson Nano介绍与使用指南

2 ROS安装

  这个网上有非常多的教程,这里只是总结一些要点 参考链接

  • 将安装源添加到source.list
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://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
  • 先更新一下apt
sudo apt update
  • 安装ROS系统
    注意:这里需要安装的ros发行版本是Melodic,而且JN只支持这个版本,因为系统是18.04
sudo apt install ros-melodic-desktop-full
  • 初始化ROS
sudo rosdep init

如果遇到报错:“rosdep: Command not found”,则有可能需要安装python-rosdep这个包:

sudo apt-get install python-rosdep

参考链接

执行完上面的代码之后,还需要一步:

rosdep update

这一步需要科学上网,否则大概率会报错读取超时,但是我找到一个教程,可以解决这个问题,链接在这里。

  • 配置环境变量
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
  • 测试ROS
      开启多个终端,然后在第一个终端中输入roscore,启动ros;第二个终端中输入rosrun turtlesim turtlesim_node,启动乌龟图形化界面;第三个终端输入rosrun turtlesim turtle_teleop_key,启动乌龟运动节点,此时将光标焦点定位在第三个终端,然后按下方向键来控制乌龟的运动。

参考链接

3 ROS编程【不断更新!】

python编写程序时,如果不想配置或者是拿到的代码没有配置CmakeLists,则可以考虑将python链接到python3

sudo ln -s /usr/bin/python3 /usr/bin/python

  • ROS教程视频版
  • ROS教程文字版
  • rosbag详细教程

4 ORB_SLAM2

  ORB_SLAM2是一个非常有名的SLAM开源框架,是基于特征点进行识别的,由于时间有限,这里只总结我看到比较好的教程。

  • ORB_SLAM2官方教程
  • ORB_SLAM2 detailed comment
  • 5小时看懂ORB_SLAM2代码

你可能感兴趣的:(Linux,ubuntu,jetson,nano,slam,ros)