編寫第一個ros程序

1.下載VScode

下載鏈接如下:

Download Visual Studio Code - Mac, Linux, Windows

?下載ARM64下的.deb文件

打開虛擬機,再rosnoetic下新建一個文件夾VSCODE,將windows下的文件導入該文件夾下如下圖。

在該文件夾下右鍵選擇在終端中打開

?輸入如下代碼

sudo dpkg -i code_1.100.2-1747260578_amd64.deb 

然后會跳出一個界面直接選擇是然后回車即可

然后可以把VSCODE刪除掉(這是.deb是安裝包刪了不影響)

2.打開VSCODE并放入收藏夾

然后按兩次ESC鍵可以回到桌面。

2.打開VSCODE并下載相關擴展

需要下載如下擴展

安裝完這些插件后重啟VSCODE

3.創建一個ROS工作空間

在主文件夾下打開一個終端輸入

mkdir -p demo1_ros/src

然后再輸入(可以用tab補齊)

cd demo2_ros/

然后在輸入

catkin_make

會發現執行后demo1_ros文件夾下會多出來build和devel

然后再輸入(注意code(空格).)打開vscode

code .

打開后按下 ctrl + shift + B

再上面的對話框中選擇第二個并打開那個設置按鈕

?后會彈出一個這個界面

將下面這個代碼替換進去即可然后按ctrl+s保存

{"version": "2.0.0","tasks": [{"type": "catkin_make","args": ["--directory","/home/rosnoetic/demo1_ros","-DCMAKE_BUILD_TYPE=RelWithDebInfo"],"group":{"kind": "build","isDefault": true},"problemMatcher": ["$catkin-gcc"],"label": "catkin_make: build"}]
}

然后右鍵src選擇創建package?

在彈窗中輸入hello?按下回車鍵

?

?再新的彈窗中輸入依賴項如下代碼和下圖后回車

roscpp rospy std_msgs

?按ctrl + shift+ B如果編譯沒問題則配置正確

?然后就會多出來一個hello文件夾(你上面的工作包叫啥名這里多出來啥文件夾)

4.創建一個CPP程序

再hello文件夾下找到src文件夾右鍵新建文件helloworld.cpp

4.1 打開helloworld.cpp輸入以下代碼

//導入標準頭文件
#include "ros/ros.h"int main(int argc, char *argv[])
{ros::init(argc,argv,"helloworld");//創建ros節點ROS_INFO("hellworld\n");//打印輸出return 0;
}

4.2 打開hello文件夾下的CMakeLists.txt

通過ctrl+f找到add_executable打開這一行注釋

并改為下面

add_executable(helloworld src/helloworld.cpp)

前面是節點后面是在hello文件夾下的cpp文件位置

找到在add_executable下的第一個target_link_libraries將下面三行取消注釋。

并將其改為下面代碼(將上面的節點改為設的helloworld即可)

target_link_libraries(helloworld${catkin_LIBRARIES}
)

然后ctrl + s 保存后,按ctrl+shift+B編譯,成功后如下圖

4.3 運行cpp文件

3.1新建一個終端輸入roscore

輸入roscore后回車

再建一個終端輸入(更新環境)

source ./devel/setup.bash

?在輸入(rosrun? (你的工作包文件夾)(你的節點映射))

rosrun hello helloworld

發現輸出成功?

4.4 配置自動補齊

5.創建一個py文件?

在hello文件夾下新建一個scripts文件夾

?5.1新建一個py文件

5.2在helloworld.py中輸入如下代碼

#! /usr/bin/env python
#配置編譯器#導入包
import rospy#main函數if __name__ == "__main__":rospy.init_node("hellopy")  #初始化節點rospy.loginfo("this is a python helloworld \n") #輸出

5.3打開hello文件夾下的CMakeLists.txt

按ctrl + f搜索catkin_install_python取消注釋這三行

并將其改為如下代碼后ctrl +是保存后按ctrl + shift +B運行編譯

catkin_install_python(PROGRAMSscripts/helloworld.pyDESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

5.4運行python文件

?新建一個終端輸入(更新環境)

source ./devel/setup.bash

?在輸入(rosrun? (你的工作包文件夾)(你的節點映射))

rosrun hello helloworld.py

得到如下輸出

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

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

相關文章

代碼隨想錄算法訓練營第60期第四十九天打卡

大家好,今天我們還是繼續我們的動態規劃章節,可能有的朋友已經開始厭倦了說為什么動態規劃怎么這么多題目,大家可以想想我們前面其實刷過好幾種類型的動態規劃的經典題目比如說各式各樣的背包問題當然包括0-1背包,完全背包&#x…

centos7.9離線升級內核到4.19.12詳細教程

cenots7.9默認安裝的內核版本是:3.10.0-1160.119.1.el7.x86_64,在安裝nvidia顯卡驅動的時候,提示內核版本過低,需要升級內核版本,升級完成之后,就可以順利的安裝上nvidia顯卡驅動了,實測有效。 一、查看當前內核版本命令 uname -r二、下載離線內核的rpm包

Vue3 + TypeScript + el-input 實現人民幣金額的輸入和顯示

輸入人民幣金額的參數要求: 輸入要求: 通過鍵盤,只允許輸入負號、小數點、數字、退格鍵、刪除鍵、方向左鍵、方向右鍵、Home鍵、End鍵、Tab鍵;負號只能在開頭;只保留第一個小數點;替換全角輸入的小數點&a…

方正字庫助力華為,賦能鴻蒙電腦打造全場景字體解決方案

2025年5月19日,搭載華為鴻蒙操作系統的鴻蒙電腦,面向用戶推出集AI智能、互聯流暢、安全保障和精致體驗于一體的全新辦公系統。作為鴻蒙生態核心字體服務商,方正字庫為此次提供了全面的系統字體支持,涵蓋中文、西文及符號三大類字庫…

PHPStudy 一鍵式網站搭建工具的下載使用

目錄 一、下載 PHPStudy二、安裝步驟三、基本使用方法3.1 創建網站3.2 管理數據庫3.3 軟件管理3.4 自動啟動3.5 配置管理 四、注意事項和進階使用4.1 注意事項4.2 進階使用 背景: 我們在學習和工作中,經常會遇到各種需要自己搭建環境的場景,這…

java中的線程安全的集合

1.ConcurrentHashMap。 key,value結構。 jdk1.7通過分段鎖保證不同段同時操作是線程安全的,但并發不足,jdk1.8通過node節點鎖和CAS保證并發安全。不同node節點可以并發讀寫。通過它的computer,computerIfAbsent,等可以保證原子更新value。ifAbsent表示有…

MySQL問題:MySQL中使用索引一定有效嗎?如何排查索引效果

不一定有效,當查詢條件中不包含索引列或查詢條件復雜且不匹配索引順序 對于一些小表,MySQL可能選擇全表掃描而非使用索引,因為全表掃描的開銷可能更小 最終是否用上索引是根據MySQL成本計算決定的,評估CPU和I/O成本 排查索引效…

使用vscode MSVC CMake進行C++開發和Debug

使用vscode MSVC CMake進行C開發和Debug 前言軟件安裝安裝插件構建debuug方案一debug方案二其他 前言 一般情況下我都是使用visual studio來進行c開發的,但是由于python用的是vscode,所以二者如果統一的話能稍微提高一點效率。 軟件安裝 需要安裝的軟…

【后端高階面經:消息隊列篇】29、Kafka高性能探秘:零拷貝、順序寫與分區并發實戰

一、 順序寫入:磁盤性能的極致挖掘 Kafka的高性能本質上源于對磁盤順序訪問的深度優化。 傳統隨機寫入的磁盤操作需要磁頭頻繁尋道,機械硬盤的隨機寫性能通常僅為100IOPS左右,而Kafka通過追加日志(Append-Only Log)模式,將所有消息按順序寫入分區文件,使磁盤操作轉化為…

AI預測3D新模型百十個定位預測+膽碼預測+去和尾2025年5月27日第90彈

從今天開始,咱們還是暫時基于舊的模型進行預測,好了,廢話不多說,按照老辦法,重點8-9碼定位,配合三膽下1或下2,殺1-2個和尾,再殺6-8個和值,可以做到100-300注左右。 (1)定…

Git 初次推送遠程倉庫

Git 初次推送遠程倉庫(完整實戰版) —— 涵蓋重命名分支、強制合并、沖突解決等高頻場景 🔥 核心流程圖 初始化 → 關聯遠程 → 提交代碼 → 處理分支沖突 → 成功推送 1. 基礎操作(全新倉庫) # 初始化 cd /your/pr…

Pluto實驗報告——基于FM的音頻信號傳輸并解調恢復

目錄 一、實驗目的 ................................ ................................ ................................ .................. 3 二、實驗內容 ................................ ................................ ................................ ......…

輸出數據OutputFormat案例

輸出數據OutputFormat 案例: www.atguigu.com www.atguigu.com www.atguigu.com www.hao123.com www.shouhu.com www.baidu.com www.atguigu.com www.qq.com www.gaga.com www.qinghua.com www.sogou.com www.baidu.com www.alibaba.com …

STM32與ESP32的區別

STM32與ESP32都是當前電子行業中廣泛使用的微控制器芯片,但二者在架構、功能、應用領域以及開發生態上均存在顯著差異。需要高度實時響應和低功耗的系統通常適合STM32,而需要網絡連接和便捷無線通訊的物聯網應用通常更適合ESP32。 一、架構與性能 STM32…

YOLOv11改進 | Neck篇 | 雙向特征金字塔網絡BiFPN助力YOLOv11有效漲點

YOLOv11改進 | Neck篇 | 雙向特征金字塔網絡BiFPN助力YOLOv11有效漲點 引言 目標檢測領域的最新進展表明,特征金字塔網絡(FPN)的設計對模型性能具有決定性影響。本文詳細介紹如何將**雙向特征金字塔網絡(BiFPN)**集成到YOLOv11的Neck部分,通過改進的多尺度特征融合機制…

Python后端框架新星Robyn:性能與開發體驗的雙重革命

引言:Python后端框架的進化之路 在Web開發領域,Python生態長期被Flask、Django等經典框架主導。隨著異步編程需求的增長和高并發場景的普及,開發者對框架性能提出了更高要求。2023年,一款名為Robyn的新型Web框架橫空出世,以其獨特的Rust底層架構和優雅的Python API設計,…

ADS學習筆記(三) 瞬態仿真

參考書籍:見資源綁定,書籍3.4 瞬態仿真,書籍鏈接: https://pan.baidu.com/s/1pjw8p7r3-1x8qcC1-hljFQ?pwd4v79 提取碼: 4v79 本文為對實驗內容的補充 瞬態仿真放大倍數與交流仿真不一致 為什么對同一個BJT電路進行交流信號仿真和進行瞬態仿真,得出交流信號仿真的放大倍數是3.…

Flask 會話管理:從原理到實戰,深度解析 session 機制

1、Flask中session 的實現原理:服務器與客戶端的協作 HTTP 協議是無狀態的——服務器無法區分兩次請求是否來自同一用戶。這意味著,用戶登錄后跳轉到其他頁面時,服務器會“忘記”用戶身份。 為解決這一問題,Web 開發中引入了會話…

學習STC51單片機16(芯片為STC89C52RCRC)

每日一言 那些讓你喘不過氣的日子,正是蛻變的開始。 串口編程寄存器分析(紅色框里面的這個是串口助手里面生成的波特率初始化函數哈) 我們就根據以上的寄存器分析,因為這個是配置波特率的需要的寄存器 PCON smod 0 就是PCON的bit…

crud方法命名示例

以下是基于表名dste_project_indicator(項目指標表)的完整命名示例,覆蓋各類增刪改查場景: 1. 表名與實體類映射 // 表名:dste_project_indicator // 實體類:DsteProjectIndicatorEntity public class Ds…