ROS系统 服务数据的定义与使用
生活随笔
收集整理的這篇文章主要介紹了
ROS系统 服务数据的定义与使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如何自定義服務數據
- 定義srv文件
- 在package.xml中添加功能包依賴
- 在CMakeLists.txt添加編譯選項
- 編譯生成語言相關文件
Person.srv 文件內容
string name uint8 age uint8 sexuint8 unknown = 0 uint8 male = 1 uint8 female = 2--- string result在package.xml中添加功能包依賴
<build_depend>message_generation</build_depend><exec_depend>message_runtime</exec_depend>在CMakeLists.txt添加編譯選項
find_package(catkin REQUIRED COMPONENTS............message_generation ) add_service_files(FILES Person.srv) generate_messages(DEPENDENCIES std_msgs) catkin_package( # INCLUDE_DIRS include # LIBRARIES learning_topicCATKIN_DEPENDS geometry_msgs roscpp rospy std_msgs turtlesim message_runtime # DEPENDS system_lib )配置完成后,對工程目錄進行編譯
cd ~/catkin_ws catkin_make
編譯成功后 ~/catkin_ws/devel/include/learning_service 目錄下會有三個頭文件。
通過以下代碼去調用生成的頭文件
在 src 目錄下創建 兩個 cpp文件
cd ~/catkin_ws/src/learning_service/src創建 person_client.cpp 文件
touch person_client.cppperson_client.cpp 文件中的內容
代碼功能:請求/show_person服務,服務數據類型learning_service::Person
創建 person_server.cpp 文件
touch person_server.cppperson_server.cpp 文件中的內容
代碼功能:執行/show_person服務,服務數據類型learning_service::Person
如何配置CMakeLists.txt中編譯規則
- 設置需要編譯的代碼和生成的可執行文件
- 設置鏈接庫
- 添加依賴項
在CMakeLists.txt文件中添加以下代碼:
add_executable(person_server src/person_server.cpp) target_link_libraries(person_server ${catkin_LIBRARIES}) add_dependencies(person_server ${PROJECT_NAME}_gencpp)add_executable(person_client src/person_client.cpp) target_link_libraries(person_client ${catkin_LIBRARIES}) add_dependencies(person_client ${PROJECT_NAME}_gencpp)- add_executable:通過指定的源文件列表構建出可執行目標文件。
- target_link_libraries:該指令的作用為將目標文件與庫文件進行鏈接。
- add_dependencies:該指令的作用為鏈接動態庫或依賴項。
編譯工程項目
cd ~/catkin_ws catkin_make啟動ROS Master
roscore啟動自定義的訂閱者節點
rosrun learning_service person_server啟動自定義的發布者節點
rosrun learning_service person_client
總結
以上是生活随笔為你收集整理的ROS系统 服务数据的定义与使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ROS系统 实现客户端Client和服务
- 下一篇: ROS系统 参数的获取和设置