前言:上文讲了话题的通信机制,接下来是ROS的第二种重要通信机制—服务。
【ROS】ros学习21讲(上)
客户端请求,相当于开关,一次开,再一次关,控制运动的状态。服务端应答。
目录
ROS
七:客户端Client的编程实现
7.1 如何实现一个客户端:
1.初始化ROS节点
2.创建一个Client实例
3.发布服务请求数据
4.等待Server处理之后的应答结果
turtle_spawn.cpp
7.2 配置客户端代码编译规则:
配置CMakeLists.txt中的编译规则:在learning_service的CMakeLists.txt 中设置需要编译的代码和生成的可执行文件,设置链接库,放在##Install##上面
add_executable(turtle_spawn src/turtle_spawn.cpp)
target_link_libraries(turtle_spawn ${catkin_LIBRARIES})
7.3 编译并运行客户端:
cd ~/catkin_ws
catkin_make
roscore
rosrun turtlesim turtlesim_node
rosrun learning_service turtle_spawn
发布者运行后,可在海龟终端界面看到出现了第二个海龟。
八:服务端Server的编程实现
8.1 如何实现一个服务端:
1.初始化ROS节点
2.创建Server实例
3.循环等待服务请求,进入回调函数
4.在回调函数中完成服务功能的处理,并反馈应答数据
turtle_command_server.cpp
8.2 配置客户端代码编译规则:
配置CMakeLists.txt中的编译规则:在learning_service的CMakeLists.txt 中设置需要编译的代码和生成的可执行文件,设置链接库,放在##Install##上面
add_executable(turtle_command_server src/turtle_command_server.cpp)
target_link_libraries(turtle_command_server ${catkin_LIBRARIES})
8.3 编译并运行客户端:
cd ~/catkin_ws
catkin_make
roscore
rosrun turtlesim turtlesim_node
rosrun learning_service turtle_command_server
rosservice call /turtle_command "{}"
rosservice call运行后,可在海龟终端界面看到海龟开始圆周运动,再次运行rosservice call海龟则停止运动。
九:服务数据的定义与使用
自定义服务数据
9.1 定义src文件; 在learning service的目录下创建文件夹srv,再创建文件Person.srv 。
Person.src
string name
uint8 sex
uint8 age
uint8 unknown=0
uint male = 1
uint female = 2
---
string result
9.2 在package.xml中添加功能包依赖
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
9.3 在CMakeLists.txt添加编译选项
find_package(... message_generation)
add_service_files(FILES Person.src)
generate_messages(DEPENDENCIES std_msgs)
catkin_package(... message_runtime)
9.4 编译生成语言相关文件(catkin工作空间的根目录下编译)
9.5 写client和server的.cpp文件,按照之前的海龟步骤进行
person_client.cpp, person_server.cpp
CMakeLists.txt中编译规则分别多一步
add_dependencies(Person_server ${PROJECT_NAME}_gencpp)
add_dependencies(Person_client ${PROJECT_NAME}_gencpp)
编译并运行:
catkin_make
roscore
rosrun learning_service person_server
rosrun learning_service person_client
十:参数的使用与编程方法
learning_parameter.cpp
10.1 初始化ROS节点
10.2 get函数获取参数
10.3 set函数设置参数
十一. ROS中的坐标管理系统
11.1 小海龟跟随实验
sudo apt-get install ros-kinetic-turtle-tf
roslaunch turtle_tf turtle_tf_demo.launch
rosrun turtlesim turtle_teleop_key
rosrun tf view_frames
可视化工具
rosrun rviz rviz -d 'rospack find turtle_tf' /rviz/turtle_rviz.rviz
十二. launch启动文件的使用方法
launch可自动启动 ROS master (XML标签格式)
十三. 常用可视化工具的使用
Qt工具箱
13.1 日志输出工具 rqt_console
13.2 计算图可视化工具 rqt_graph
13.3 数据绘图工具 rqt_plot
13.4 图像渲染工具 rqt_image_view
Rviz工具箱 三维可视化工具
roscore
rosrun rosrviz rosrviz
Gazebo 三维物理仿真平台