【ROS機器人學習】--------1ROS工作空間和功能包創建

虛擬機工具和鏡像鏈接: https://pan.baidu.com/s/1HDmpbMESiUA2nj3qFVyFcw?pwd=8686
提取碼: 8686


ROS工作空間是一個用于組織和管理ROS(機器人操作系統)包的目錄結構,它通常包含多個子目錄,用于存放源碼、構建文件和安裝文件。工作空間的典型結構包括 src、build、devel 和 install 目錄,通過這些目錄,用戶可以方便地進行代碼開發、編譯和部署。

ROS功能包是ROS工作空間中的基本構建單元,每個功能包包含一組相關的ROS節點、庫、配置文件、啟動文件和其他資源,用于實現特定的功能或任務。功能包之間可以相互依賴和協作,用戶可以通過定義包的依賴關系和接口來構建復雜的機器人系統


(1)c++

#!/bin/bash#工作空間創建
sudo mkdir -p "ros_workspace_test/src"
sudo chmod -R 777 "ros_workspace_test"#編譯和架構ROS工作空間
cd "ros_workspace_test"
#編譯工作空間構建
catkin_make
#添加到系統環境變量
echo " source ~/ros_workspace_test/devel/setup.bash" >> ~/.bashrc#創建ROS功能包
cd "src"
#創建包名為“ros_pkg”的ROS功能包
catkin_create_pkg ros_pkg roscpp rospy std_msgscd "ros_pkg/src"
#創建源文件
gedit "ros_cpp.cpp"#刷新環境
source ./devel/setup.bash# 返回上級目錄
cd ..# 輸出成功消息
echo "文件夾 '已成功創建,并在其中創建了文件,并設置了文件權限為777。"

在這里插入圖片描述
在這里插入圖片描述

#文件加權
sudo chmod 777 ros_workspace_test_cpp.sh
#執行腳本
./ros_workspace_test_cpp.sh

在這里插入圖片描述
編寫c++源文件并ctrl+s保存編輯

#include "ros/ros.h"            //包含ros頭文件
int main(int argc, char *argv[])   //編寫ros的main函數
{
ros::init(argc, argv, "node_name_demo1"); //初始化ros節點
ROS_INFO("hello world!");             //輸出日志
return 0;
}

在這里插入圖片描述
打開工作空間在構建過程中正確鏈接所需的依賴項
在這里插入圖片描述
在這里插入圖片描述

#添加編譯規則
add_executable(ros_cpp_node src/ros_cpp.cpp)
#添加目標鏈接庫
target_link_libraries(ros_cpp_node ${catkin_LIBRARIES})

在這里插入圖片描述
終端跳轉到工作空間內編譯腳本

catkin_make#刷新環境
source ./devel/setup.bash

在這里插入圖片描述
在這里插入圖片描述
執行節點,右鍵鼠標垂直分割打開另一個終端
roscore:ROS 系統的中央節點

#開啟節點
roscore 
#查看功能節點#跳轉到工作空間
cd ros_workspace_test
#運行節點
rosrun ros_pkg ros_cpp_node

在這里插入圖片描述
(2)python

#!/bin/bash#工作空間創建
sudo mkdir -p "ros_workspace_test_py/src"
sudo chmod -R 777 "ros_workspace_test_py"#編譯和架構ROS工作空間
cd "ros_workspace_test_py"
#編譯工作空間構建
catkin_make 
#添加到系統環境變量
echo " source ~/ros_workspace_test_py/devel/setup.bash" >> ~/.bashrc#創建ROS功能包
cd "src"
#創建包名為“ros_pkg”的ROS功能包
catkin_create_pkg ros_pkg1 roscpp rospy std_msgs#創建py腳本
cd "ros_pkg1"
sudo mkdir "scripts"
sudo chmod -R 777 "scripts"
cd "scripts"
#創建源文件
gedit "ros_py.py"
sudo chmod 777 "ros_py.py"
#刷新環境
source ./devel/setup.bash# 返回上級目錄
cd ..# 輸出成功消息
echo "文件夾 '已成功創建,并在其中創建了文件,并設置了文件權限為777。"

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
ctrl+s保存shell文件
打開終端加權shell腳本,并運行腳本

#加權
sudo chmod 777 ros_workspace_test_py.sh
#運行腳本
./ros_workspace_test_py.sh

在這里插入圖片描述
編寫python腳本文件

#! /usr/bin/env python
# -*- coding: utf-8 -*-"""Python 版 HelloWorld"""
import rospyif __name__ == "__main__":rospy.init_node("Hello")rospy.loginfo("Hello World!!!!")

在這里插入圖片描述
編寫完成后,strl+s保存文件,并關閉文件
打開工程
在這里插入圖片描述
在這里插入圖片描述
功能包添加所需依賴項

catkin_install_python(PROGRAMS scripts/ros_py.pyDESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

在這里插入圖片描述
跳轉到工作空間內編譯工程

catkin_make#刷新環境
source ./devel/setup.bash

在這里插入圖片描述
在這里插入圖片描述
執行節點

#開啟節點
roscore 
#運行節點
rosrun ros_pkg ros_py.py

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/18587.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/18587.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/18587.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

香橙派OrangePI AiPro測評

實物 為AI而生 打開盒子 截圖電源開機進入 作為一個AI產品,必須有一個人機交互的界面才行。大家都在跑算法,于是我就開始進行整理著手整理搭建Qt的環境。 1、下載源碼 wget https://download.qt.io/archive/qt/5.12/5.12.12/single/qt-everywhere-src-5.12.12.tar.xz待…

RDP方式連接服務器上傳文件方法

隨筆 目錄 1. RDP 連接服務器 2. 為避免rdp 訪問界面文字不清晰 3. 本地上傳文件到服務器 1. RDP 連接服務器 # mstsc 連接服務器step1: 輸入mstscstep2: 輸入 IP, username, passwd 2. 為避免rdp 訪問界面文字不清晰 解決方法: 3. 本地上傳文件到服務器 step…

關于C++的特殊類定制

特殊類定制 在C中,一些特殊性質的類如何設計 類禁止拷貝的對象 C11 使用delete關鍵字賦值給拷貝構造和賦值C98將拷貝構造和賦值聲明在私有里 類只能在堆上創建的對象 將構造函數私有化, 提供一個獲取對象堆上創建對象的公有函數將析構函數私有化, 提供一個釋放…

JavaScript面向對象編程入門:從0到1的奇幻之旅【含代碼示例】

JavaScript面向對象編程入門:從零到英雄的奇幻之旅【含代碼示例】 一、OOP:編程界的哈利波特基本概念類與實例 二、揮舞魔杖:創建類與實例基本語法 三、繼承與封裝:家族的力量繼承封裝 四、實戰與技巧:打造堅固的魔法城…

IT行業的現狀與未來發展趨勢:從云計算到量子計算的技術變革

隨著技術的不斷進步,IT行業已經成為推動全球經濟和社會發展的關鍵力量。從云計算、大數據、人工智能到物聯網、5G通信和區塊鏈,這些技術正在重塑我們的生活和工作方式。本文將深入探討當前IT行業的現狀,并展望未來發展趨勢,旨在為…

vscode當前分支有未提交的修改,但是暫時不想提交,想要切換到另一個分支該怎么辦

當前分支有未提交的修改,但是暫時不想提交,想要切換到另一個分支該怎么辦? 首先,可以將當前修改暫存起來,以便之后恢復 git stash 然后切換到目標分支,例如需求A所在分支 git checkout feat-a-jie 修改完A需求后,需要先切換回之前的分支,例如需求B所在分支 git checkout feat…

免費插件集-illustrator插件-Ai插件-文本對象分行

文章目錄 1.介紹2.安裝3.通過窗口>擴展>知了插件4.功能解釋5.總結 1.介紹 本文介紹一款免費插件,加強illustrator使用人員工作效率,進行文本對象分行。首先從下載網址下載這款插件 https://download.csdn.net/download/m0_67316550/87890501&…

通過安全的云開發環境重新發現 DevOps 的心跳

云開發平臺如何“提升” DevOps 首先,我來簡單介紹一下什么是云開發環境:它通常運行帶有應用程序的 Linux 操作系統,提供預配置的環境,允許進行編碼、編譯和其他類似于本地環境的操作。從實現的角度來看,這樣的環境類…

前端 JS 經典:讀取文件原始內容

前言:有些時候在工程化開發中,我們需要讀取文件里面的原始內容,比如,你有一個文件,后綴名為 .myfile,你需要拿到這個文件里的內容,該怎么處理呢。 在 vue2 中,因為 vue2 使用 vue-c…

【算法】前綴和——尋找數組的中心下標

本節博客是用前綴和算法圖解“尋找數組的中心下標”,有需要借鑒即可。 目錄 1.題目2.題意3.前綴和求解4.示例代碼5.細節6.總結 1.題目 題目鏈接:LINK 2.題意 我們以示例1為例來圖解一下題意: 3.前綴和求解 根據已有經驗,我…

Java 讀取 xml 文件的五種方式

在編寫與 XML 數據交互的現代軟件應用時,有效地讀取和解析 XML 文件是至關重要的。XML(可擴展標記語言)因其靈活性和自我描述性,已成為數據存儲和傳輸的一種普遍格式。對于 Java 開發者來說,Java 提供了多種工具和庫來…

數據庫索引相關的知識點總結

目錄 1. 索引的概念 2. 索引的作用 3. 索引的類型 4. 索引的缺點 5. 索引的使用場景 6. 索引的設計原則 7. 索引的實現技術 8. 索引的優化技巧: 數據庫表的索引是一個非常重要的概念,它類似于一本書的目錄,可以幫助我們快速找到所需的…

Idea工具的使用技巧與常見問題解決方案

一、使用技巧 1、啟動微服務配置 如上圖,在編輯配置選項,將對應的啟動入口類加進去, 增加jvm啟動參數, 比如: -Denvuat 或者 -Denvuat -Dfile.encodingUTF-8 啟動配置可能不是-Denvuat,這個自己看代…

Android 11 Audio音頻系統配置文件解析

在AudioPolicyService的啟動過程中,會去創建AudioPolicyManager對象,進而去解析配置文件 //frameworks/av/services/audiopolicy/managerdefault/AudioPolicyManager.cpp AudioPolicyManager::AudioPolicyManager(AudioPolicyClientInterface *clientIn…

MySQL目錄和文件

MySQL目錄和文件 bin目錄 存儲一些mysql腳本比如mysqld、mysqld-self等等,用于執行mysql一些操作 數據目錄 show variables like datadir;--查看數據目錄位置每一個數據庫都有一個和數據庫名相同的文件夾;MySQL5.7開始每創建一個表,在Innod…

Python機器學習 Tensorflow + keras 實現CNN

一、實驗目的 1. 了解SkLearn Tensorlow使用方法 2. 了解SkLearn keras使用方法 二、實驗工具: 1. SkLearn 三、實驗內容 (貼上源碼及結果) 使用Tensorflow對半環形數據集分 #encoding:utf-8import numpy as npfrom sklearn.datasets i…

Dynadot API調整一覽

關于Dynadot Dynadot是通過ICANN認證的域名注冊商,自2002年成立以來,服務于全球108個國家和地區的客戶,為數以萬計的客戶提供簡潔,優惠,安全的域名注冊以及管理服務。 Dynadot平臺操作教程索引(包括域名郵…

AI Agent教育行業落地案例

【AI賦能教育】揭秘Duolingo背后的AI Agent,讓學習更高效、更有趣! ©作者|Blaze 來源|神州問學 引言 隨著科技的迅猛發展,人工智能技術已經逐步滲透到我們生活的各個方面。而隨著AI技術的廣泛應用,教育培訓正引領著一場新的…

149.二叉樹:二叉樹的前序遍歷(力扣)

代碼解決 這段代碼實現了二叉樹的前序遍歷,前序遍歷的順序是:訪問根節點 -> 遞歸遍歷左子樹 -> 遞歸遍歷右子樹。以下是詳細解釋,包括各個部分的注釋: // 二叉樹節點的定義 struct TreeNode {int val; // 節…

php -v在cmd中正常顯示 在vscode中卻報錯

效果展示 原因 在vscode中 終端是 PowerShell PowerShell 默認情況下它不會繼承系統的PATH環境變量 解決方案 使用CMD作為終端 打開VSCode設置(File > Preferences > Settings 或 Ctrl,)。搜索 terminal.integrated.shell.windows。更改其值…