4.使用RCLCPP編寫節(jié)點
寫在前面
- 當前平臺文章匯總地址:ROS2機器人從入門到實戰(zhàn)
- 獲取完整教程及配套資料代碼,請關注公眾號<魚香ROS>獲取
- 教程配套機器人開發(fā)平臺:兩驅版| 四驅版
- 為方便交流,搭建了機器人技術問答社區(qū):地址 fishros.org.cn
節(jié)點需要存在于功能包當中、功能包需要存在于工作空間當中。所以我們要想創(chuàng)建節(jié)點,就要先創(chuàng)建一個工作空間,再創(chuàng)建功能包。
1.創(chuàng)建工作空間和功能包
1.1 工作空間
工作空間就是文件夾,所以很簡單。
cd d2lros2/chapt2/
mkdir -p chapt2_ws/src/
1.2 創(chuàng)建example_cpp功能包
創(chuàng)建example_cpp功能包,使用ament-cmake作為編譯類型,并為其添加rclcpp依賴。
cd chapt2_ws/src
ros2 pkg create example_cpp --build-type ament_cmake --dependencies rclcpp
大家可以手寫一下這個代碼,感受一下?,F(xiàn)在小魚來講一講這條命令的含義和參數(shù)。
- pkg create 是創(chuàng)建包的意思
- –build-type 用來指定該包的編譯類型,一共有三個可選項
ament_python
、ament_cmake
、cmake
- –dependencies 指的是這個功能包的依賴,這里小魚給了一個ros2的C++客戶端接口
rclcpp
打開終端,進入chapt2_ws/src
運行上面的指令,創(chuàng)建完成后的目錄結構如下:
.
└── src
└── example_cpp
├── CMakeLists.txt
├── include
│ └── example_cpp
├── package.xml
└── src
5 directories, 2 files
2.創(chuàng)建節(jié)點
接著我們在example_cpp/src
下創(chuàng)建一個node_01.cpp
文件,創(chuàng)建完成后的目錄結構如下:
3.編寫代碼
3.1 編寫代碼
繼續(xù)跟著小魚一起輸入代碼,輸入的時候可以邊輸邊理解。
#include "rclcpp/rclcpp.hpp"
int main(int argc, char **argv)
{
/* 初始化rclcpp */
rclcpp::init(argc, argv);
/*產(chǎn)生一個node_01的節(jié)點*/
auto node = std::make_shared<rclcpp::Node>("node_01");
// 打印一句自我介紹
RCLCPP_INFO(node->get_logger(), "node_01節(jié)點已經(jīng)啟動.");
/* 運行節(jié)點,并檢測退出信號 Ctrl+C*/
rclcpp::spin(node);
/* 停止運行 */
rclcpp::shutdown();
return 0;
}
3.2 修改CmakeLists
在node_01.cpp
中輸入上面的內容后,還需要修改一下CMakeLists.txt。將其添加為可執(zhí)行文件,并使用install
指令將其安裝到install
目錄。
在CmakeLists.txt最后一行加入下面兩行代碼。
add_executable(node_01 src/node_01.cpp)
ament_target_dependencies(node_01 rclcpp)
添加這兩行代碼的目的是讓編譯器編譯node_01這個文件,接著在上面兩行代碼下面添加下面的代碼。
install(TARGETS
node_01
DESTINATION lib/${PROJECT_NAME}
)
2.編譯運行節(jié)點
在chapt2_ws
下依次輸入下面的命令
2.1 編譯節(jié)點
colcon build
2.2 source環(huán)境
source install/setup.bash
2.3 運行節(jié)點
ros2 run example_cpp node_01
不出意外,你可以看到
3.測試
當節(jié)點運行起來后,可以再嘗試使用ros2 node list
指令來查看現(xiàn)有的節(jié)點。這個時候你應該能看到:
文章來源:http://www.zghlxwxcb.cn/news/detail-782000.html
4.總結
至此,相信你已經(jīng)掌握了如何編寫一個C++版本的ros2節(jié)點了,但是這僅僅是編寫ROS2節(jié)點方式之一,相比之下,小魚更推薦你使用面向對象的方式編寫節(jié)點,在進階篇小魚將會向你展示其寫法。文章來源地址http://www.zghlxwxcb.cn/news/detail-782000.html
到了這里,關于【ROS2機器人入門到實戰(zhàn)】使用RCLCPP編寫節(jié)點的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!