目錄
引言
一、控制小海龜
二、鍵盤控制海龜
三、控制海龜案例的簡單分析
四、ROS2之linux基礎
4.1 linux終端命令
4.1.1 查看當前終端所在目錄 pwd
4.1.2 切換終端所在目錄 cd
4.1.3 查看當前目錄下的文件 ls
4.1.4 主目錄 ~
4.1.5 文件的操作
4.1.6 命令使用幫助 --help
4.1.7?軟件安裝常用命令
4.2 linux中編寫程序
4.2.1 首個python程序
4.2.2 首個C++程序
4.2.2.1 初識g++編譯工具
4.2.2.2?初識cmake編譯工具
4.3 Linux的環境變量
引言
操作環境:
VMWare17.6,虛擬機ubuntu22.04
在虛擬機ubuntu22.04操作系統中安裝好ros2環境后,進行第一個小demo——海龜模擬器,同時了解需要了解的幾個linux命令,在ros2中使用C++和python編寫hello,world,一起走進ros2的機器人的世界。
一、控制小海龜
進入ubuntu22.04,同時按下Ctrl+Alt+T快速啟動一個新的終端,接著輸入ros2,驗證ros2環境是否安裝成功:
若輸入ros2回車后終端輸出如上圖所示內容,說明ros2安裝成功。上圖內容展示了ros2后面可以接的內容和使用方法等。
接著進入正題,在終端中輸入ros2 run turtlesim turtlesim_node后回車,即可運行海龜模擬器節點,終端中呈現內容如下:
然后,會彈出如下圖所示的一個有顏色背景的窗口,同時里面會有一只小海龜。其中海龜的形態是隨機的,這是由其實現邏輯決定,這里可不必深究。
提示:輸入一行命令時,通過單擊鍵盤上的tab鍵,可將輸入的不完整內容自動補全,節省時間,減少命令不熟悉帶來的不便。如終端輸入ros2 r時單擊tab即可補全為ros2 run.
接下來,簡單分析這段海龜模擬器的控制命令。
該指令由四部分組成:
1、ros2 和 run 表示該命令式用于運行ros2程序;
2、turtlesim 表示一個程序包名稱,程序包可用于存放眾多可執行程序;
3、turtlesim_node 表示可執行程序的名稱,是前面輸入的程序包中的其中一個。
即:該指令是使用ros2運行一個turtlesim程序包下的turtlesim_node可執行文件。
二、鍵盤控制海龜
在不關閉上面海龜模擬器程序的前提下,再開一個新的終端,輸入ros2 run turtlesim turtle_teleop_key并回車執行:
依據前面的描述,可見該命令是用在使用ros2運行一個turtlesim程序包中的turtle_teleop_key可執行文件。運行之后,將鼠標停留在該終端后,即可捕獲電腦鍵盤的輸入,接下來就可以使用鍵盤控制前面打開的海龜在其窗口中隨意運動了。
三、控制海龜案例的簡單分析
接下來我們借助ros2提供的一個節點關系圖工具分析這兩個命令程序之間的聯系,解開為什么鍵盤能夠控制小海龜運動的疑惑。
不要結束前面執行的命令,再開啟一個新的終端,輸入rqt并回車,可以看見彈出一個默認的rqt窗口,如下圖所示
四、ROS2之linux基礎
4.1 linux終端命令
4.1.1 查看當前終端所在目錄 pwd
ctrl+Alt+T開啟一個新終端,輸入pwd回車,可以看見下面輸出了一個目錄路徑,該路徑表示當前終端所在路徑,也就是使用快捷鍵開啟終端所在的默認路徑主目錄。
注:linux中,斜杠 “ /?” 表示整個文件系統的根目錄,這是與日常使用的windows系統的一個顯著區別,其他目錄和文件位置均是相對這個根目錄而言。
4.1.2 切換終端所在目錄 cd
在終端中輸入 cd / 回車,進入根目錄下。然后輸入pwd回車看看當前終端所在的目錄已經變成了 / 根目錄。
4.1.3 查看當前目錄下的文件 ls
在終端輸入ls回車,可以查看當前終端所在目錄下包含的文件。
4.1.4 主目錄 ~
前面說到,快捷鍵進入終端時,會默認進入主目錄下。本例的用戶名為zzl,因此主目錄就是/home/zzl。因為linux中主目錄經常用到,所以使用 ~ 表示。
當想回到主目錄時,終端輸入 cd ~ 回車即可。
4.1.5 文件的操作
進入主目錄,來進行幾個文件的基本操作。
1、創建文件夾?mkdir <文件夾名>
終端中輸入mkidr chapt并回車,即可在住目錄下創建一個叫做 chapt 的文件夾
然后,輸入 cd chapt 進入該文件夾
2、創建空白文件 touch <文件名.后綴名>
進入chapt文件夾后,輸入 touch hello_world.txt回車,即可在該文件夾下創建一個空白的hello_world.txt文本文件,然后我們查看當前終端所在的目錄,以及該目錄下存在的文件
3、文件的編輯 nano <文件名.后綴名>
nano是安裝ubuntu時自帶的文本編輯工具,終端中輸入nano hello_world.txt回車,即可進入該文件的編輯模式,然后我們輸入 hello ros2 !,按 ctrl + O后再回車,即可將內容寫入該文件中,最后按ctrl + X即可退出對該文件的編輯。
4、文件的查看 cat <文件名.后綴名>
終端輸入 cat hello_world.txt回車,即可看見上一步向該文件中寫入的內容。
5、文件的刪除 rm <文件名.后綴名>
終端輸入 rm hello_world.txt回車,即可刪除該文件
4.1.6 命令使用幫助 --help
Linux中的命令遠比這些豐富,碰到某些命令的不記得是正常的事情,我們可以使用命令 --help 來查看命令的使用幫助,如輸入 rm --help 可以查看 rm命令使用幫助
亦或是輸入 ros2 run --help 查看ros2 run的使用方式
4.1.7?軟件安裝常用命令
1、?包管理工具 dpkg
在linux中,我們可以使用 dpkg 相關命令來進行軟件的安裝,如 sudo dpkg -i <軟件包名.deb>
1. sudo,表示以管理員權限執行后面的命令;
2. dpkg,ubuntu中的包管理工具,可用于安裝、查看和卸載軟件包;
3. -i,代表安裝的意思。
默認情況下,我們從官網下載的軟件包會存放在 ~/下載 或者 ~/Downloads 目錄下,ubuntu中下載的軟件包后綴名一般為 .deb?
2、 更高級的包管理工具 apt
使用dpkg可以直接安裝下載好的deb格式的安裝包,另外還可以使用 apt 命令,直接通過軟件名自動下載后進行安裝。
如版本管理工具git的安裝:
終端輸入git命令,若ubuntu中沒有安裝,則會顯示找不到該命令,并提示你使用apt命令安裝它
因此,輸入sudo apt install git并回車,就會開始下載和安裝。
因為我這里已經安裝過,所以輸入的內容比較簡潔。
安裝完成后,輸入git進行測試,當終端輸出類似如下內容時,說明git已經安裝成功
4.2 linux中編寫程序
我們在linux中使用VSCode進行代碼編寫和運行,關于vscode的下載安裝和配置(需要的插件安裝)這里不再贅述,比較簡單,不會可自行搜索或者合理運用AI。
4.2.1 首個python程序
快捷鍵Ctrl+Alt+T快速開啟一個新終端,在終端輸入code并回車,打開vscode進入主界面。
首次使用vscode時,顯示都是英文,大家可以點擊左邊豎欄中從上至下數第五個圖標,然后在搜索框搜索 chinese,然后安裝插件,接著重啟即可顯示中文。
然后我們打開前面創建的chapt文件夾,然后新建python文件,命名為 hello_world.py回車,即可創建成功。
接著,在新建的python文件中編寫第一段程序,輸出一句 'Hello, World!',然后ctrl+s保存。
最后,在vscode的終端中,輸入 python3 hello_world.py回車即可執行程序,運行成功。
4.2.2 首個C++程序
與前面python程序創建同理,這里不再贅述。然后同樣編寫一個經典的“Hello, World!”,然后記得保存。
4.2.2.1 初識g++編譯工具
ubuntu22.04中含C++編譯工具g++,所以我們可以在終端中輸入 g++ hello_world.cpp,對該C++文件進行編譯
編譯后,使用ls命令可以看到目錄下生成了一個綠色的a,out文件,綠色代表該文件是一個可執行文件。終端輸入 ./a.out 回車即可執行程序,輸出打印的 Hello, World!
4.2.2.2?初識cmake編譯工具
使用g++可以方便地編譯一些較為簡單的代碼,對于功能復雜、需要較多依賴的復雜代碼的編譯,我們常使用CMake更為方便。
首先,在chapt目錄下,我們新建一個文件CMakeLists.txt,然后編輯該文件,在文件中寫入如下圖所示三行內容,具體操作參照前面敘述的文件的創建、編輯操作即可,這里不再贅述。
這三條代碼具體含義:
? ? 1. cmake_minimum_required (VERSION 3.8),表示用于構建當前文件的CMake版本最低為3.8;
? ? 2. project (HelloWorld),用于聲明當前工程名;
? ? 3. add_executable(learn_cmake hello_world.cpp),用于添加一個可執行文件,learn_cmake表示可執行文件的名字,hello_world.cpp是可執行文件相對CMakeLists.txt文件的路徑。
編寫后保存,終端進入chapt目錄,輸入 cmake . 命令,然后回車即可將編寫的CMakeLists.txt文件轉換成CMakeFiles。
cmake . 命令的具體含義:用于構建CMakeLists.txt,參數 . 代表在當前終端所在的同級目錄搜索CMakeLists.txt文件。
構建完成后,會在當前目錄生成結果文件,其中Makefile文件使用make讀取并進行代碼編譯
編譯后如上圖,使用make命令可以調用編譯器將代碼文件轉換成可執行文件。使用ls查看當前文件,可以看出新產生可一個綠色的可執行文件learn_cmake,這就是我們在CMakeLists.txt中設置的可執行文件名。
同樣地,在終端進入chapt目錄,輸入 ./learn_make 后回車,即可看見C++代碼運行的結果了。
4.3 Linux的環境變量
linux的環境變量,是一種全局變量,用于存儲系統和用戶級別的配置信息。
打開一個新的終端,輸入 echo $ROS_DISTRO ,然后回車
可以看見終端輸出了ROS2的版本信息humble。
以上內容可能存在不足和紕漏,僅供參考,各位閱讀時請帶著批判性思維學習,遇到問題多查查,謝謝。