北京朝陽(yáng)網(wǎng)站建設(shè)seo課堂
目錄
介紹??
前提
vscode安裝
?vscode插件安裝
? 工作空間準(zhǔn)備
? ?打開(kāi)vscode
? ?創(chuàng)建catkin包?
編寫(xiě)cpp代碼
編譯
運(yùn)行
? ? 啟動(dòng)ros服務(wù)
? ? 監(jiān)聽(tīng)話題
? ? 啟動(dòng)ros測(cè)試
介紹??
? ros開(kāi)發(fā)是機(jī)器人開(kāi)發(fā)中必不可少的工作,語(yǔ)言選擇可以是c++,也可以是python。工具的話,不能像windows系統(tǒng)那樣豐富多彩,qtcreate,visual studio,clion。因?yàn)閞os環(huán)境絕大部分是在ubuntu系統(tǒng)之下的,所以這里就限制了只能在linux環(huán)境下使用IDE,這里就選擇vscode。
前提
? ? 本文不是從無(wú)到有,從安裝ros環(huán)境到搭建vscode工具,然后編寫(xiě)代碼,編譯調(diào)試,這里的前提是我們系統(tǒng)安裝了ros-melodic-desktop-full,可以運(yùn)行ros相關(guān)命令。
vscode安裝
? ? 首先安裝vscode,推薦使用官方地址下載,然后手動(dòng)切換到國(guó)內(nèi)加速器。
? ? 點(diǎn)擊下載之后,因?yàn)楣俜降刂废螺d很慢,這里直接在瀏覽器下載里找到下載項(xiàng),拷貝下載鏈接,然后粘貼到瀏覽器地址欄,修改為國(guó)內(nèi)地址。?
? ? 比如:
https://az764295.vo.msecnd.net/stable/6c3e3dba23e8fadc360aed75ce363ba185c49794/code_1.81.1-1691620686_amd64.deb
https://vscode.cdn.azure.cn/stable/6c3e3dba23e8fadc360aed75ce363ba185c49794/code_1.81.1-1691620686_amd64.deb
? ? 下載的deb安裝文件直接通過(guò)dpkg?-i xxx.deb安裝即可。
?vscode插件安裝
? ? ?我們?cè)诓寮U(kuò)展Extensions這里需要安裝ros,catkin-tools兩個(gè)插件。
? 工作空間準(zhǔn)備
mkdir -p roshelloworld/src
cd roshelloworld/src
catkin_init_workspace
cd ..
catkin_make
? ? 注意,這里如果catkin_init_workspace命令提示沒(méi)有的話,就是環(huán)境的問(wèn)題,其實(shí)ros安裝的時(shí)候已經(jīng)有了,我們需要把它設(shè)置上,運(yùn)行:
echo "source /opt/ros/melodic/setup.bash" >> /etc/profile?
? ?打開(kāi)vscode
code .
? ? 在當(dāng)前編譯過(guò)的工作空間下,通過(guò)命令行打開(kāi)vscode?
? ?創(chuàng)建catkin包?
? ? 右鍵src->Create Catkin Package
? ? 后續(xù)操作中,需要輸入包名,依賴(lài)名,這里包名是my_test_pkg,依賴(lài)就是 roscpp,rospy,std_msgs。
? ? 之后包結(jié)構(gòu)變?yōu)槿缦滤?#xff1a;
? ? 原本的roshelloworld/src下面多了my_test_pkg,然后my_test_pkg也有src,CMakeLists.txt文件。這里的CMakeLists.txt和roshelloworld下的CMakeLists.txt作用不同,后面我們會(huì)修改my_test_pkg包下的這個(gè)CMakeLists.txt文件。
編寫(xiě)cpp代碼
? ? 我們?cè)趍y_test_pkg/src目錄下新建 my_test_pkg_node.cpp,添加代碼如下:
#include <iostream>
#include <string>
#include <sstream>#include "ros/ros.h"
#include "std_msgs/String.h"using namespace std;int main(int argc, char** argv)
{ros::init(argc, argv, "talker");ros::NodeHandle n;ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000);ros::Rate loop_rate(10);int count = 0;while(ros::ok()) {std_msgs::String msg;std::stringstream ss;ss << "hello,world" << count;msg.data = ss.str();ROS_INFO("%s", msg.data.c_str());chatter_pub.publish(msg);ros::spinOnce();loop_rate.sleep();count++;}return 0;
}
? ? 這段代碼發(fā)布了/chatter話題,并且間隔10ms發(fā)送一次hello,world + count,后面測(cè)試的話,可以訂閱/chatter話題,看收到的消息。
? ? 修改CMakeLists.txt:
include_directories(include${catkin_INCLUDE_DIRS}
)add_executable(${PROJECT_NAME}_node src/my_test_pkg_node.cpp)target_link_libraries(${PROJECT_NAME}_node${catkin_LIBRARIES}
)
? ?這些配置CMakeLists.txt都有,只需要打開(kāi)對(duì)應(yīng)注釋即可。
編譯
? ? 命令行下運(yùn)行 catkin_make
運(yùn)行
? ? 啟動(dòng)ros服務(wù)
roscore
? ? 監(jiān)聽(tīng)話題
rostopic echo /chatter
? ? 啟動(dòng)ros測(cè)試
rosrun my_test_pkg my_test_pkg_node
? ? vscode+ros開(kāi)發(fā)環(huán)境就介紹到這里了,我沒(méi)有對(duì)代碼進(jìn)行調(diào)試,直接復(fù)制的別人代碼。?