jeston nano开发板 在ubuntu18.04环境下搭建的ROS和arduino小车

一.准备安装Ubuntu系统

(在vmware上安装)#方便后面的调试

首先,需要我们去官网下载镜像文件,但是由于官方的服务器搭建在境外,因此我们更倾向于使用国内镜像进行下载,比如清华大学镜像,一般来说,比较常用的是16.04和18.04版本,这里我选择了18.04版本。

(在nano上安装)

1、刷机硬件准备

①、 Jetson nano 开发套件,厂家标配;

②、 MicroSD 卡,至少 32GB和读卡器;

③、 5V, 2A 电源。

④、网线。

2、刷机软件准备

①、下载 jetson nano系统镜像

官网下载地址:https://developer.nvidia.com/jetson-nano-sd-card-image

②、下载 SD卡格式化软件– SD Card Formatter(用来处理内存卡烧录失败的情况,烧录系统的时候会将sd卡分多个区,使用这个软件可以直接格式化F盘)

官网下载地址: https://www.sdcard.org/downloads/formatter_4/eula_windows

③、将镜像文件写入microSD卡– Etcher(或者Win32DiskImager)

a、官网下载地址: https://www.balena.io/etcher

b、官网下载地址: http://starplatinumora.top/images/file/tool/win32diskimager-1.0.0-install.exe

 

 之后就是等待了,大概是20,30分钟。

3、安装系统(vmware环境和nano环境差不多)

①、将内存卡插入到jeston Nano卡槽中(nano)

       开机

        nano官方英伟达的ubuntu安装的很快,但是vmware下挺慢的,主要是nano的ubuntu功能简单一点没有集成化太多。

二.安装ros并测试

2.1、系统换源(如果换过了就不需要这一步)

(vmware环境下)打开软件和更新弹窗

Ubuntu软件这里点击右边红色框,选择其他站点

测试完之后选择服务器就行,点击关闭就行。

最后在终端更新一下:

sudo apt-get update

nano环境下的ubuntu版本简陋没有这个界面

不过可以先输入

wget http://fishros.com/install -O fishros && . fishros

换源成功后,更新一下

sudo apt-get update

终端输入上面命令进行安装ros,会自动帮我们检测环境依赖

(注意版本不同对应的ros版本不同)

ubuntu版本        Ros版本
Ubuntu14.04        Ingigo
Ubuntu16.04        Kinetic
Ubuntu18.04        Melodic
Ubuntu20.04        Noetic
这里我选择1,然后进到下一个选择

详细看原文链接:https://blog.csdn.net/jin15203846657/article/details/125849049

之后跑下ros测试(分别打开3个终端测试)

roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key

之后就是安装构建依赖(选3)

安装计算图

sudo apt install ros-melodic-rqt
sudo apt install ros-melodic-rqt-common-plugins

计算图演示

运行案例

roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key

直接在终端窗口中输入

rosrun rqt_graph rqt_graph

三、安装arduino(vmware环境和nano环境差不多)

安装

3.1.配置ros与arduino通讯的文件

a.安装软件包rosserial arduino(melodic为ubuntu18.04对应ros版本)

sudo apt-get install ros-melodic-rosserial-arduino
sudo apt-get install ros-melodic-rosserial

b.命令行输入

  roscore  

打开 ROS终端

c.新建窗口,输入:

rosrun rosserial_arduino make_libraries.py [PathToYourSketchbookLibraries]

下载与ROS相关的文件ros_lib到用户文件夹下的PathToYourSketchbookLibraries文件夹

 在arduino中打开设置->首选项

 3.2尝试运行交互

打开arduino IDE

3.2.1打开  文件->示例->ros_lib->HelloWorld

之后编译运行,上传

3.2.3 启动ROS

打开一个新的终端,输入 

roscore

3.2.4打开新终端运行节点

此时arduino就相当于ROS上的一个结点:(插上板子,在串口那儿查看自己的串口,一般是dev下面tty啥啥啥的   )

如果arduin上没有显示端口,应该是没有识别到开发板,在下面选择自己的开发板

 如果还没有识别到,首先先检查自己的开发板是否没坏,是正版的。

然后就是就是检查驱动程序

详情,可看http://t.csdn.cn/qvO6K

这种情况还是比较少的,大部分都是板子的问题。

运行节点

rosrun rosserial_python serial_node.py /dev/自己板子的端口

3.2.5.再打开新终端,查看当前话题发布的消息

rostopic echo /chatter

如果使用串口的话,需要给予串口权限

sudo chmod 666 /dev/自己的端口

使用Python的pyserial库对串口进行通信

import serial
import time 
 
ser = serial.Serial('/dev/自己的端口',9600)#设置波特率为9600
time.sleep(2)
 
ser.write('f'.encode()) #对串口进行写入
ser.close #关闭串口

四. 搭建ROS框架

4.1 安装vscode(选择7)

安装插件(根据自己的编码习惯,其中c/c++和CMakeTool,python,ROS为必要的开发工具。

 安装中文输入法(方便写注释)

用shift切换中英输入法

4.2在vscode里面编写并运行ros环境下的.py程序

1.创建一个工作空间文件夹存放工作空间

 2.mkdir -p 工作空间/src

 在工作空间下catkin_make 

catkin_make会创建工作环境

2.在工作空间下 code .  打开vscode

 快捷键 ctrl + shift + B 调用编译,选择:catkin_make:build

配置编译工具

 修改

{
// 有关 tasks.json 格式的文档,请参见
    // https://go.microsoft.com/fwlink/?LinkId=733558
    "version": "2.0.0",
    "tasks": [
        {
            "label": "catkin_make:debug", //代表提示的描述性信息
            "type": "shell",  //可以选择shell或者process,如果是shell代码是在shell里面运行一个命令,如果是process代表作为一个进程来运行
            "command": "catkin_make",//这个是我们需要运行的命令
            "args": [],//如果需要在命令后面加一些后缀,可以写在这里,比如-DCATKIN_WHITELIST_PACKAGES=“pac1;pac2”
            "group": {"kind":"build","isDefault":true},
            "presentation": {
                "reveal": "always"//可选always或者silence,代表是否输出信息
            },
            "problemMatcher": "$msCompile"
        }
    ]
}

3.创建 ROS 功能包

选定 src 右击 —> create catkin package

设置包名 添加依赖

包名命名一般命名为功能介绍

添加依赖为 

roscpp rospy std_msgs

4. 创建scripts文件夹(编写python文件要在包的文件下创建scripts文件夹,python文件在里面进行编写)

 

 编写代码

#! /usr/bin/env python
# coding=UTF-8  
'''
    Python 版本的 HelloVScode,执行在控制台输出 HelloVScode
    实现:
    1.导包
    2.初始化 ROS 节点
    3.日志输出 HelloWorld
'''

import rospy # 1.导包

if __name__ == "__main__":

    rospy.init_node("Hello_Vscode_p")  # 2.初始化 ROS 节点
    rospy.loginfo("................................")  #3.日志输出 HelloWorld
    rospy.loginfo("................................") 
    rospy.loginfo(".......1234.................")

 其中#!/usr/bin/python 是告诉操作系统执行这个脚本的时候,调用 /usr/bin 下的 python 解释器。

# coding=UTF-8是防止中文乱码

5.为 python 文件添加可执行权限

6.配置 CMakeLists.txt

 7.编译执行

编译: ctrl + shift + B(vscode的快捷键)

执行: 和之前一致,只是可以在 VScode 中添加终端,首先执行:source ./devel/setup.bash

配置工作空间时,source devel/setup.bash命令用于刷新环境,编译完成后必须使用source命令刷新一下工作空间的环境。每次进行catkin_make之后,都要进行source devel/setup.bash,进行package创建时,当加入新的package并编译完成后,也要进行source devel/setup.bash刷新环境,否则会出现package XXX not found 的问题。由于我在使用时,经常忘记source,所以我将source devel/setup.bash命令添加到了.bashrc文件中,让系统自动刷新工作空间环境,这样,在这个工作空间下的所有package都可以在编译后直接运行了,不用再source devel/setup.bash

 运行ros环境 

roscore

执行

#在vscode下打开终端
source ./devel/setup.bash #刷新环境变量
rosrun 包名 自定义文件名.py  #运行程序

 结果

如果不编译直接执行 python 文件,会抛出异常

1.第一行解释器声明,可以使用绝对路径定位到 python3 的安装路径 #! /usr/bin/python3,但是不建议

2.建议使用 #!/usr/bin/env python 但是会抛出异常 : /usr/bin/env: “python”: 没有那个文件或目录

3.解决1: #!/usr/bin/env python3 直接使用 python3 但存在问题: 不兼容之前的 ROS 相关 python 实现

4.解决2: 创建一个链接符号到 python 命令:sudo ln -s /usr/bin/python3 /usr/bin/python

4.3 编写launch文件

launch文件的作用

launch文件可以用来同时启动多个节点。其基本思想是在一个XML格式的文件内将需要同时启动的一组节点罗列出来。

常见的launch文件 

<launch>
    <node pkg="helloworld" type="demo_hello" name="hello" output="screen" />
    <node pkg="turtlesim" type="turtlesim_node" name="t1"/>
    <node pkg="turtlesim" type="turtle_teleop_key" name="key1" />
</launch>
  • node —> 包含的某个节点

  • pkg —–> 功能包

  • type —-> 被运行的节点文件

  • name –> 为节点命名

  • output-> 设置日志的输出目标

  • output-> 输出  

  • output="screen在多节点时输出信息到日志上

  •  运行launch文件

    roslaunch 包名 launch文件名

    五.ROS文件架构

    WorkSpace — 自定义的工作空间

        |— build:编译空间,用于存放CMake和catkin的缓存信息、配置信息和其他中间文件。

        |— devel:开发空间,用于存放编译后生成的目标文件,包括头文件、动态&静态链接库、可执行文件等。

        |— src: 源码

            |– package:功能包(ROS基本单元)包含多个节点、库与配置文件,包名所有字母小写,只能由字母、数字与下划线组成

                |– CMakeLists.txt 配置编译规则,比如源文件、依赖项、目标文件

                |– package.xml 包信息,比如:包名、版本、作者、依赖项…(以前版本是 manifest.xml)

                |– scripts 存储python文件

                |– src 存储C++源文件

                |– include 头文件

                |– msg 消息通信格式文件

                |– srv 服务通信格式文件

                |– action 动作格式文件

                |– launch 可一次性运行多个节点 

                |– config 配置信息

            |– CMakeLists.txt: 编译的基本配置

    物联沃分享整理
    物联沃-IOTWORD物联网 » jeston nano开发板 在ubuntu18.04环境下搭建的ROS和arduino小车

    发表评论