當前位置:首頁 » 編程軟體 » Ros編譯某個模塊命令

Ros編譯某個模塊命令

發布時間: 2023-04-22 06:17:51

1. ros 怎麼單獨編譯一個指定的包

切換到自己的ROS工作空間: $ cd ~/catkin_ws
如果你想編譯整個工作空間裡面的包:$ catkin_make
如果你只想編譯工作空間某一個包:$ catkin_make -DCATKIN_WHITELIST_PACKAGES= "包名"
例如:

2. GDB ROS調試

ROS中用到第三方庫,在編譯第三方庫的時候,加上 -g 選項,以供芹困調用該庫時調試。

在編譯ROS包的時候,使用如下命令編譯:

catkin_make -DCMAKE_BUILD_TYPE=Debug  

GDB啟嫌頌念動應用

rosrun --prefix 'gdb -ex run --args' 櫻余 package   node  

之後就可以正常使用GDB命令來調試了,因為第三方庫編譯加了 -g 選項,所以可以進入調用庫中的函數進行調試。

3. Ros常用指令

例1:

得晌褲到消息類型:

例2:

例:
根據上述操作得到 topic 消息類型為 nav_msgs/Odometry
使用工具

後可以得到如下結果

ROS常用命令行:

roscore === 是 ROS 的系統先決條件節點和程序的集合, 必須運行 roscore 才能使 ROS 節點進行通信棗謹租。roscore 將啟動:

rosrun 包名 可執行文件名 === 運行指定的ROS節點

roslaunch 包名 launch文件凳兆名 === 執行某個包下的 launch 文件
添加可執行許可權:

4. 如何使用 sdk交叉編譯ros

使用ros_qtc_plugin插件新建項目

使用插件新建項目Import ROS
Workspace選項僅新建工作空間導入現工作空間新建文件ROS面Package、Basic
Node等選項創建package節點、launch文件、urdf文件等
現我創建新catkin工作空間,並且面創建package

1、新建項目

文件——新建文件或項目選擇Import ROS Workspace——choose圖

填寫catkin工作空間名字位置圖

我Namecatkin工作空間文件夾名字相同(同)名catkin_new選擇瀏覽——創建文件夾創建名catkin_new文件夾圖按車再選擇打

現框詢問新建工作空間未初始化否執行初始化我選擇yes
相於執行catkin_init_workspace命令使工作空間初始化

點擊Generate Project File再點擊步
項目管理步驟配置版本控制系統我選擇完圖

建工作空間catkin_new空圖

2、創建package

接我工作空間創建新package
catkin_new面src右鍵單擊選擇添加新文件圖

選擇ROS——package——choose

填寫package名字test1
填寫作者(Authors)維護者(Maintainers)Qt環境部沒配置文支持請要用文否則新建package或者新建package面package.xml空文件
DependenciesCatkin欄填寫依賴通用C++寫節點需要添加roscpp依賴


點擊完

3、添加新節點

目前package空沒任何節點
我test1src文件夾右鍵單擊選擇添加新文件

選擇ROS——Basic Node——choose創建節點新建.cpp文件

節點名稱寫node1則名node1.cpp源文件

用ROS模板新建node1.cpp源文件圖自Hello World程序

4、編譯節點

讓編譯執行文件我需要編輯test1makefile圖
test1CMakeLists.txt加面幾行意思node1.cpp編譯名node1節點
add_executable(node1 src/node1.cpp)
target_link_libraries(node1
${catkin_LIBRARIES}
)

5. ROS+CPP初識

第一部分:老四樣

1. sudo apt update;

2. sudo apt upgrade;

3. 啟動 roscore;

4. 啟動 turtlesim turtlesim_node;

5. 啟動 turtlesim turtle_teleop_key;

第二部分:學習使用 rosbag 進行軌跡錄制回放操作

1. mkdir ~/bagfiles;

2. cd ~/bagfiles;

3. rosbag record -a

訂閱並記錄所有主題發布的高纖團信息,用鍵盤控制小烏龜走出路徑;

4. rosbag info <bagfiles_names>

查看記錄文件的相關信息,其中包括了時長、大小、錄制時間等;

rosbag play <bagfiles_name>

正常模式播放軌跡記錄文件 

5. rosbag record-O subset <topic_names>

覆蓋並記錄部分主題發布的消息

rosbag play -r2 subset <topic_names>

提高兩倍發送消息的速度;

第三部分:學習使用 roswtf 檢查錯誤

1. ps -ef | grep -i rosmaster

檢查 rosmaster 是否已經啟動,如果沒有豎亂啟動可以通過 roscore 命

令啟動相關命令;

2. roswtf

進入~/catkin_ws/devel 通過 roswtf 命令尋找errors or warnings;

3. rostopic list -v

列出所有活躍的 topic

第四部分:建立工作空間和包,運行程序

1. http://wiki.ros.org/ROS/Tutorials/InstallingandConfiguringR

OSEnvironment

新建工作空間;

2. 在.bashrc 中添加新的工作空間的路徑;

3. 新建 agitr 包(a gentle introction to ros)

進入工作空間;

catkin_create_pkg std_msgs rospy roscpp 

4. 將准備好的源文件輸入到 agitr 包的 src 文件夾中,並修改

CMakeList.txt 文件與 package.xml 文件;

5. 回到工作空間目錄下

catkin_make

編譯成功;

6. 逐個測試 1. roscore  2. rosrun agitr xxx.cpp  helloworld.cpp

pubvel.cpp

隨機發送速度與方向給 turtlebot

subpose.cpp

顯示 turtlebot 當前位置與方向

注意:如果不用鍵盤輸入消息,右上角的界面還是會跳動。這意味著 subpose

是不停運作的,並非發送了指令以後才會激活。這也保證了記錄的完整性。(從

上次的實驗可以看出,如果發布-訂閱的通信方式具有首尾丟包的缺點,如果是

一動一記很有可能會漏掉部分操作的記錄)

此外,應當盡早進行鍵盤控制,否則記錄時間過長佔用內存。

count.cpp

隨機發送錯誤警告

throttle.cpp

有規律地發送報錯信息

第五部分:設計一個能畫出等邊三角形的烏龜

(解析詳見理論作業)

四、實驗分析及結論

1. 不 要 輕 易 修 改 在 工 作 空 間 /src 目錄下的

CMakeLst.txt,否則可能會導致生成 target 重名報錯

通常情況下,配置需要的包內的 CMakeList.txt 就可以滿

足需求;

2. 在修改 CMakeList.txt 與 package.xml 文件時,應當

注意讓.xml 的<build_depend>語句包含的包與.txt 文件中

find_package()語句包含的包一摸一樣

3. 在修改 CMakeList.txt 的時候,在最後應當戚橘加上

語句,生成相關 target 文件用於執行。

4. 命令 roswtf 顯示的報錯大概率不用在意,不會影響正

常運行。

6. ROS軟路由常用命令有哪些

作為不同網路之間互相連接的樞紐,路由器系統構成了基於TCP/IP 的國際互聯網路Internet 的主體脈絡,也可渣鋒以說,路由器構成了Internet的骨架。這篇文章主要介紹了ROS軟路由常用命令 小結,需要的朋友可以參考下

具體介紹

1 accept: 接受

add-dst-to-address-list - 把一個目標IP地址加入address-list

add-src-to-address-list - 把一個源IP地址加入address-list

2 drop - 丟棄

3 jump - 跳轉,可以跳轉到一個規則主題裡面,如input forward,也可如模晌以跳轉到某一條裡面

4 log - 日誌記錄

5 passthrough - 忽略此條規則

6 reject - 丟棄這個包,並且發送一個ICMP回應消息

7 return - 把控制返回給jump的所在

8 tarpit - 捕獲和扣留 進來的TCP連接 (用SYN/ACK回應進來的TCP SYN 包)router os命令:

看了很多router os 的資料都是關於如何安裝的,卻很少見到關於router os的命令資料(也許因為有winbox了),雖然在router os 的手冊中有說明,但是是英文版本的,很不好看懂。下面就我就寫出一些常用的命令,希望對大家有所幫助:

1、開機登陸以後常用的一個 ? 是常用的幫助命令,可以列出可用的命令及碼梁簡單的說明。

2、有些英文命令很長,可以簡寫如inte***ce ,你輸入in後回車自動就會進入inte***ce了。或者你可以按下tab鍵來幫你完成長英文命令的輸入。

3、有些命令的參數很多,你不知道的時候可以輸入命令後加空格?,如print ?可以顯示該命令的參數。

4、setup 該命令可是誰都要記得的,因為最初安裝完router os 必須用它分配網卡的ip地址。

5、ip route add gate=211.12.*.14,220.163.*.12 該命令用於多線路接入時加入多個網關用的。

6、ip firewall add action=nat protocol=tcp dst-address=212.12.*.*/32:80 to-dst-address=192.168.0.198 該命令用於映射埠80到本地的192.168.0.198上。

7、print 該命令有點用於列出所有的項目。

8、inte***ce monitor-traffice 0,1,2 可以監視當前0,1,2網卡的活動情況。

9、ip firewall connection print 顯示當前的所有的連接。

10、ip arp print 顯示所有router os 知道的ip地址和mac地址的對應列表。

11、user active print 顯示所有的router os 的活動用戶。

12、system reboot 、system shutdown分別是重啟和關機。

13、system reset 刪除所有原來的配置,並重新啟動router os. 14、system resource monitor 可以監視當前的cpu,和內存的使用情況。

15、log print 可以顯示router os 的日誌。

16、tool ping-speed 210.13.14.* 可以顯示ping 的速度。

17、tool sniffer start,和tool sniffer stop 可以開啟和停止嗅探器。

18、tool sniffer packet print 可列出嗅探的包。

19 、system backup name=2004107.bak 可以將系統的配置備份到文件2004107.bak,可以用file print看到。

還有什麼enable,disable,remove,set 那些常用的就不說了。

相關閱讀:路由器安全特性關鍵點

由於路由器是網路中比較關鍵的設備,針對網路存在的各種安全隱患,路由器必須具有如下的安全特性:

(1)可靠性與線路安全 可靠性要求是針對故障恢復和負載能力而提出來的。對於路由器來說,可靠性主要體現在介面故障和網路流量增大兩種情況下,為此,備份是路由器不可或缺的手段之一。當主介面出現故障時,備份介面自動投入工作,保證網路的正常運行。當網路流量增大時,備份介面又可承當負載分擔的任務。

(2)身份認證路由器中的身份認證主要包括訪問路由器時的身份認證、對端路由器的身份認證和路由信息的身份認證。

(3)訪問控制對於路由器的訪問控制,需要進行口令的分級保護。有基於IP地址的訪問控制和基於用戶的訪問控制。

(4)信息隱藏與對端通信時,不一定需要用真實身份進行通信。通過地址轉換,可以做到隱藏網內地址,只以公共地址的方式訪問外部網路。除了由內部網路首先發起的連接,網外用戶不能通過地址轉換直接訪問網內資源。

(5)數據加密

為了避免因為數據竊聽而造成的信息泄漏,有必要對所傳輸的信息進行加密,只有與之通信的對端才能對此密文進行解密。通過對路由器所發送的報文進行加密,即使在Internet上進行傳輸,也能保證數據的私有性、完整性以及報文內容的真實性。

(6)攻擊探測和防範

路由器作為一個內部網路對外的介面設備,是攻擊者進入內部網路的第一個目標。如果路由器不提供攻擊檢測和防範,則也是攻擊者進入內部網路的一個橋梁。在路由器上提供攻擊檢測,可以防止一部分的攻擊。

(7)安全管理

7. ROS中分析catkin_make編譯信息的方法

在使用catkin_make編譯時,在終端中會有很多列印,導致非常難找錯誤信息。
一個小竅門就是:
在終端中使用以下命令執行編譯:

此時在終端中只顯示錯誤信息列印以及cmake中使用message 列印的信息。

另外開啟新的終端 輸入命令: tail -f logs 查看編譯的列印信息。

8. ROS使用python3

參考:

為了使用python3的圖像處理程序,需要使用到ros介面,但是由於原生ros介面不支持python3,只能使用python2.7(時間2020-07,版本melodic),一下步驟主要為了使用ros調用的方式調用python3的程序

由於ros接收圖像數據使用的是cv_bridge 介面,所以先編譯python3版本的cv_bridge

注意:此時要先安裝好python3的環境,可以按照以下方式安裝

進入到工作空間進行編譯

會有如下提示

編譯完成後,可以在工作路徑下的install文件夾里生成需要的庫,需要使用python3版本的cv_bridge時,就將這個環境變數導入即可

extend參數的作用是讓這次的路徑配置不影響之前配置好的路徑

1. 在使用rosrun 運行程序時,默認還會調用原生melodic的cv_bridge
我的處理方法是將原來的python版本cv_bridge刪除

2. 編譯完成會有錯誤提示,如下圖,但不影響使用

編譯安裝:

在編譯時,使用如下命令:

編譯過程中會有錯誤提示

解決方法:
參考 https://answers.ros.org/question/257757/importerror-no-mole-named-em-error/

編譯完成如下:

運行roscore錯誤提示

安裝netifaces

參考 https://github.com/frescobaldi/python-poppler-qt5/issues/29

https://launchpad.net/ubuntu/+source/sip4/4.19.21+dfsg-1build1

解壓安裝

9. 如何編寫ros的python程序

ROS Indigobeginner_Tutorials-10編寫ROS話題版的Hello World程序(Python版)

我使用的虛擬機軟體:VMware Workstation 11
使用的Ubuntu系統:Ubuntu 14.04.4 LTS
ROS版本:ROS Indigo

1. 前言 :

Hello world程序,在我們編程界,代表學習某種語言編寫的第一個程序。對於ROS機器人操作系統來說,這個Hello World程序就是 : 寫一個簡單的消息發布器(發送) 和 訂閱器(接收)。

2. 准備工作 :

C++的程序都會存放在每個程序包的src文件夾里。Python不同,Python程序都存放在scripts文件夾中, 反正意思都是源文件包。
Step 1 .所以,先在beginner_tutorials軟體包中創建一個scripts文件夾:

$ roscd beginner_tutorials$ mkdir scripts$ cd scripts123

3. 編寫消息發布器節點程序:

如果你懶得去寫的話,你可以使用wget命令, 在github上獲取一個talker.py源代碼。如何獲取呢 ?
Step 2 .開一個終端,輸入下面的命令就可以獲取talker.py:

$ wget

-devel/rospy_tutorials/001_talker_listener/talker.py$ ls
talker.py123

但是我建議你親自動手,寫一寫:手動創建一個talker.py文件在/scripys文件夾里:

$ roscd beginner_tutorials/scripts$ gedit talker.py12

將這上面鏈接里的代碼手動輸入到talker.py文件中。(我就不將代碼貼上來了)

下面我來講解一下代碼:

這些足以說明,hello_world_topic.launch啟動腳本文件,啟動成功。

總結:發布器和訂閱器是很簡單的, 就是簡單的發布一個 自定義的話題。

我之前使用說過:節點之間通訊的方式有兩種 : 話題(rostopic) 和 服務(rosservice)

所以,接下來,我們會講:使用ROS服務來完成ROS版Hello World程序的例子。但是在這之前,我們需要學一學:如何創建自定義的ROS消息和ROS服務,以便ROS服務版的Hello World程序的編寫。
所以下一講,我們來學習:如何創建自定義的ROS消息和ROS服務。

10. ROS 工作空間、package 及 catkin 編譯系統

本文內容都可以在 ROS 官網 wiki ( http://wiki.ros.org/ROS/Tutorials )中找到,作者只是根據自己的理解重新闡述了其中的某些內容,或許能幫助讀者更好的理解 ROS 系統中的一些概念。首先保證 ROS 已經正確安裝了。安裝方式可以參考 本博客的另一篇文章 。

簡單地說,ROS workspace (工作空間)就是統一存放 ROS 文件的地方,比如一個項目的所有 ROS 文件最好都放在一個 workspace 中,便於統一管理、編譯和調用。

catkin 是目前 ROS 的編譯系統,自 ROS Groovy 版本開始使用,取代了之前的 rosbuild 編譯系統。

ROS workspace 中可以包含若干 ROS package,每個 package 內部包含實現某些特定功能的文件。

其中,~ 表示當前用戶的 home 目錄, -p (parent)參數可以創建某個文件夾和它的父文件夾,也就是兩層的路徑。這里 workspace 的名字是 catkin_ws,這個名字可以按照自己項目的內容設定,但是 src 這個文件夾的名字是固定的。

初始化工作空間。這里 src 就是以後存放 ROS 源文件的地方。上述命令之後,會在 src 目錄下產生 CMakeLists.txt 文件,這實際上是一個鏈接到ROS 安裝目錄下的 /opt/ros/kinetic/share/catkin/cmake/toplevel.cmake 一個超鏈接文件,對工作空間做了一些初始設置。不用去管它,也不要隨便修改它。

會一次性編譯 src 文件夾中的所有源文件,同時生成 devel 和 build 兩個文件夾。

實際上,catkin_make 這個命令並沒有特別神奇的地方,它只是把一系列基本的編譯命令整合在了一起,一個 catkin_make 命令相當於如下的一系列命令:

如果要深入研究 catkin_make 編譯方式,可以參考 這篇文章 。

將 workspace 的信息載入系統環境變數。
這種方法載入的信息只對當前 terminal 有效。新開一個 terminal 就無效了。如果要對每個 terminal 都有效,可以將上述命令寫入用戶 home 路徑下的 .bashrc 文件中:

注意,.bashrc 文件是隱藏文件,在 home 路徑下通過命令

命令可以看到。

還要注意, >> 是將 echo 後邊的內容寫入文件的尾部,如果用 > 則要覆蓋原文件,一定不要搞錯。

編譯之後,由於我們只是一個空的 workspace,還沒有任何 package,所以沒有什麼實質性的東西,只是告訴系統這里有個 ROS workspace,算是在系統中注冊了一下。

package 是組織 ROS 文件的基本單元,一般來說,每個 package 完成一些特定功能。

package 中至少包含兩個文件: package.xml 和 CMakeLists.txt.

package 在 workspace 中的存放結構一般如下:

也可採用其他的結構,但是要注意 package 之間不能嵌套,也就是在一個 package 中,不能再創建另一個 package ,所有 package 都必須是相對獨立的目錄。

用 catkin 創建 package 的過程很簡單,用如下命令:

其中 depend 為依賴的其他 package。這樣創建之後,package 中的 CMakeLists.txt 和 package.xml 中會體現出這種依賴關系。創建時也可以不指明依賴關系,在後續編譯 package 的時候再補上。

創建好了 package,就可以使用 rospack 相關的命令進行查找、進入等操作了。不過,有時會有延遲,可以用命令

或者

查找、更新一下。

上述方式創建了 ROS package,然後就可以在其中編寫 源文件了,可用的語言主要是 c++, python,我們現在的項目中還用到了 Julia。這里就不再細述具體的源文件編寫過程了。

創建好了源文件,如果是 c++ 編寫的,要編譯一下。這里要設置好 package.xml 和 CMakeLists.txt 中的信息。如果依賴的 package 已經設置好了,就不需要修改 package.xml 了,只需要在 CMakeLists.txt 中添加源文件對應的編譯信息如下:

實際上在 CMakeLists.txt 中有非常全面的模板,很容易找到在哪裡添加這些編譯文件信息。

設置好了編譯信息,就可以回到 workspace 的 src 所在文件夾中,用如下命令編譯:

該命令可以一次性編譯 src 中的所有 package。如果只想編譯指定的 package,可以用如下命令:

但是,這個命令似乎有時不太管用,根據我們的實際經驗,最有效的方法是用如下的 whitelist 命令:

這樣就是只編譯 package1 和 package2。但是要注意,該命令中的 whitelist 具有記憶功能。用完該命令之後,下次如果要編譯 src 中所有的 package,如果只用 catkin_make,則還是只編譯 whitelist 中的 package,需要用如下命令清除一下 whitelist

以上就是我們使用 ROS 中的一些基本操作,希望其中的一些內容對讀者有幫助。

Written by SH

Revised by QP

熱點內容
解壓專家解壓迅雷雲盤 發布:2025-07-14 09:11:09 瀏覽:910
編程基礎教學 發布:2025-07-14 09:09:48 瀏覽:94
電腦板能進入的手機版伺服器 發布:2025-07-14 09:08:10 瀏覽:555
roblox電腦版伺服器推薦 發布:2025-07-14 09:06:07 瀏覽:807
application緩存 發布:2025-07-14 09:01:56 瀏覽:345
安卓怎麼看綁定地區 發布:2025-07-14 09:01:49 瀏覽:85
籽岷的生存伺服器IP 發布:2025-07-14 08:51:06 瀏覽:419
我的世界搭建tcp伺服器 發布:2025-07-14 08:42:55 瀏覽:660
安卓jj比賽哪個版本有全記牌器 發布:2025-07-14 08:28:27 瀏覽:73
python腳本執行hive 發布:2025-07-14 08:26:24 瀏覽:489