ROS系统 通过服务编程实现两个数相加并返回
生活随笔
收集整理的這篇文章主要介紹了
ROS系统 通过服务编程实现两个数相加并返回
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
創(chuàng)建功能包
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創(chuàng)建 AddTwoInts.srv 文件
cd ~/catkin_ws/src/learning_communication/srv touch AddTwoInts.srvAddTwoInts.srv 文件內(nèi)容
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通過以下代碼去調(diào)用生成的頭文件
在 src 目錄下創(chuàng)建 兩個 cpp文件
cd ~/catkin_ws/src/learning_communication/src創(chuàng)建 server.cpp 文件
touch server.cpp以下是server.cpp 文件中的內(nèi)容
代碼功能:將輸入?yún)?shù)中的請求數(shù)據(jù)相加,結(jié)果放到應(yīng)答變量中
創(chuàng)建 client.cpp 文件
touch client.cppclient.cpp 文件中的內(nèi)容
代碼功能:發(fā)布service請求,等待加法運算的應(yīng)答結(jié)果
在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啟動自定義的訂閱者節(jié)點
rosrun learning_communication server啟動自定義的發(fā)布者節(jié)點
rosrun learning_communication client 7 8Client啟動后發(fā)布服務(wù)請求,并成功接收到反饋結(jié)果。
Server接收到服務(wù)調(diào)用后完成加法求解,并將結(jié)果反饋給Client。
總結(jié)
以上是生活随笔為你收集整理的ROS系统 通过服务编程实现两个数相加并返回的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ROS系统 常用可视化工具的使用
- 下一篇: ROS系统 动作编程