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 updatenano環境下的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-rosserialb.命令行輸入
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
打開一個新的終端,輸入?
roscore3.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_msgs4. 創建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.日志輸出 HelloWorldrospy.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: 編譯的基本配置
總結
以上是生活随笔為你收集整理的jeston nano开发板 在ubuntu18.04环境下搭建的ROS和arduino小车的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第七张纯新能源牌照诞生,江西江铃正式进军
- 下一篇: Ubuntu18.04+ROS+ 乐视三