ROS系统 通过服务编程实现两个数相加并返回
生活随笔
收集整理的這篇文章主要介紹了
ROS系统 通过服务编程实现两个数相加并返回
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
創建功能包
cd ~/catkin_ws/src catkin_create_pkg learning_communication roscpp rospy std_msgs geometry_msgs turtlesim定義 srv 文件
cd ~/catkin_ws/src/learning_communication mkdir srv創建 AddTwoInts.srv 文件
cd ~/catkin_ws/src/learning_communication/srv touch AddTwoInts.srvAddTwoInts.srv 文件內容
int64 a int64 b --- int64 sum在package.xml中添加功能包依賴
<build_depend>message_generation</build_depend> <exec_depend>message_runtime</exec_depend>在CMakeLists.txt添加編譯選項
find_package(catkin REQUIRED COMPONENTS............message_generation ) catkin_package( # INCLUDE_DIRS include # LIBRARIES learning_topicCATKIN_DEPENDS geometry_msgs roscpp rospy std_msgs turtlesim message_runtime # DEPENDS system_lib ) add_service_files(FILES AddTwoInts.srv) generate_messages(DEPENDENCIES std_msgs)配置完成后,對工程目錄進行編譯
cd ~/catkin_ws catkin_make通過以下代碼去調用生成的頭文件
在 src 目錄下創建 兩個 cpp文件
cd ~/catkin_ws/src/learning_communication/src創建 server.cpp 文件
touch server.cpp以下是server.cpp 文件中的內容
代碼功能:將輸入參數中的請求數據相加,結果放到應答變量中
創建 client.cpp 文件
touch client.cppclient.cpp 文件中的內容
代碼功能:發布service請求,等待加法運算的應答結果
在CMakeLists.txt文件中添加以下代碼:
add_executable(server src/server.cpp) target_link_libraries(server ${catkin_LIBRARIES}) add_dependencies(server ${PROJECT_NAME}_gencpp)add_executable(client src/client.cpp) target_link_libraries(client ${catkin_LIBRARIES}) add_dependencies(client ${PROJECT_NAME}_gencpp)編譯工程項目
cd ~/catkin_ws catkin_make啟動ROS Master
roscore啟動自定義的訂閱者節點
rosrun learning_communication server啟動自定義的發布者節點
rosrun learning_communication client 7 8Client啟動后發布服務請求,并成功接收到反饋結果。
Server接收到服務調用后完成加法求解,并將結果反饋給Client。
總結
以上是生活随笔為你收集整理的ROS系统 通过服务编程实现两个数相加并返回的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ROS系统 常用可视化工具的使用
- 下一篇: ROS系统 动作编程