专业做网站产品上架的有吗,模板做网站,网站建设全屏,云南网络营销公司目录 通信过程新建参数服务器包编写测试文件修改cmakelist:搭配launch文件启动测试及结果 通信过程
1.Talker 设置参数 Talker 通过 RPC 向参数服务器发送参数(包括参数名与参数值)#xff0c;ROS Master 将参数保存到参数列表中。
2.Listener 获取参数 Listener 通过 RPC 向… 目录 通信过程新建参数服务器包编写测试文件修改cmakelist:搭配launch文件启动测试及结果 通信过程
1.Talker 设置参数 Talker 通过 RPC 向参数服务器发送参数(包括参数名与参数值)ROS Master 将参数保存到参数列表中。
2.Listener 获取参数 Listener 通过 RPC 向参数服务器发送参数查找请求请求中包含要查找的参数名。
3.ROS Master 向 Listener 发送参数值 ROS Master 根据步骤2请求提供的参数名查找参数值并将查询结果通过 RPC 发送给 Listener。
参数可使用数据类型:
32-bit integersbooleansstringsdoublesiso8601 dateslistsbase64-encoded binary data新建参数服务器包
catkin_create_pkg paramservice std_msgs rospy roscpp编写测试文件
#include ros/ros.h
#include vector
#include map
int main(int argc, char *argv[])
{//使得中文可以生效setlocale(LC_ALL,);ros::init(argc,argv,set_update_param);std::vectorstd::string stus;stus.push_back(这是元素1);stus.push_back(这是元素2);std::mapstd::string,std::string friends;friends[key] value;ros::param::set(param_int,20);ros::param::set(param_double,3.14);ros::param::set(param_string,Hello Param);ros::param::set(param_bool,false);ros::param::set(param_vector,stus);ros::param::set(param_map,friends);//修改演示(相同的键不同的值)ros::param::set(param_int,20000);// getParam 函数int param_int_value;double param_double_value;bool param_bool_value;std::string param_string_value;std::vectorstd::string param_stus;std::mapstd::string, std::string param_friends;ros::param::get(param_int,param_int_value);ros::param::get(param_double,param_double_value);ros::param::get(param_bool,param_bool_value);ros::param::get(param_string,param_string_value);ros::param::get(param_vector,param_stus);ros::param::get(param_map,param_friends);ROS_INFO(getParam获取的结果:%d,%.2f,%s,%d,param_int_value,param_double_value,param_string_value.c_str(),param_bool_value);for (auto stu : param_stus){ROS_INFO(stus 元素:%s,stu.c_str()); }for (auto f : param_friends){ROS_INFO(map 元素:%s %s,f.first.c_str(), f.second.c_str());}// 首次调用getCached这里会订阅参数值通过缓存获取数据当数据变化时将通知节点自动更新ros::param::getCached(param_int,param_int_value);ROS_INFO(通过缓存获取数据:%d,param_int_value);//输出所有的变量名std::vectorstd::string param_names2;ros::param::getParamNames(param_names2);for (auto name : param_names2){ROS_INFO(名称解析name %s,name.c_str()); }ROS_INFO(----------------------------);ROS_INFO(存在 param_int 吗? %d,ros::param::has(param_int));ROS_INFO(存在 param_intttt 吗? %d,ros::param::has(param_intttt));std::string key;ros::param::search(param_int,key);ROS_INFO(搜索键:%s,key.c_str());//删除相关的参数bool r2 ros::param::del(param_int);ROS_INFO(param 删除结果:%d,r2);return 0;}修改cmakelist:
add_executable(${PROJECT_NAME}_node src/paramservice.cpp)
target_link_libraries(${PROJECT_NAME}_node${catkin_LIBRARIES}
)搭配launch文件
launchnode namemyservice pkgservice typeservice_node outputscreen/
/launch启动测试及结果
roslaunch paramservice start.launch
[ INFO] [1723529188.541091451]: getParam获取的结果:20000,3.14,Hello Param,0
[ INFO] [1723529188.541155371]: stus 元素:这是元素1
[ INFO] [1723529188.541178505]: stus 元素:这是元素2
[ INFO] [1723529188.541192963]: map 元素:key value
[ INFO] [1723529188.542024132]: 通过缓存获取数据:20000
[ INFO] [1723529188.542419343]: 名称解析name /run_id
[ INFO] [1723529188.542439561]: 名称解析name /roslaunch/uris/host_yisu_64fc150f8284e__34167
[ INFO] [1723529188.542458326]: 名称解析name /roslaunch/uris/host_yisu_64fc150f8284e__41769
[ INFO] [1723529188.542474146]: 名称解析name /roslaunch/uris/host_yisu_64fc150f8284e__45931
[ INFO] [1723529188.542489685]: 名称解析name /roslaunch/uris/host_yisu_64fc150f8284e__45545
[ INFO] [1723529188.542505965]: 名称解析name /roslaunch/uris/host_yisu_64fc150f8284e__44877
[ INFO] [1723529188.542524019]: 名称解析name /roslaunch/uris/host_yisu_64fc150f8284e__42835
[ INFO] [1723529188.542541943]: 名称解析name /roslaunch/uris/host_yisu_64fc150f8284e__46297
[ INFO] [1723529188.542559517]: 名称解析name /roslaunch/uris/host_yisu_64fc150f8284e__41351
[ INFO] [1723529188.542576629]: 名称解析name /roslaunch/uris/host_yisu_64fc150f8284e__43881
[ INFO] [1723529188.542594843]: 名称解析name /roslaunch/uris/host_yisu_64fc150f8284e__43899
[ INFO] [1723529188.542612596]: 名称解析name /roslaunch/uris/host_yisu_64fc150f8284e__34115
[ INFO] [1723529188.542630069]: 名称解析name /roslaunch/uris/host_yisu_64fc150f8284e__39145
[ INFO] [1723529188.542647101]: 名称解析name /roslaunch/uris/host_yisu_64fc150f8284e__43455
[ INFO] [1723529188.542664524]: 名称解析name /roslaunch/uris/host_yisu_64fc150f8284e__33051
[ INFO] [1723529188.542682467]: 名称解析name /roslaunch/uris/host_yisu_64fc150f8284e__35169
[ INFO] [1723529188.542700181]: 名称解析name /roslaunch/uris/host_yisu_64fc150f8284e__46493
[ INFO] [1723529188.542718104]: 名称解析name /roslaunch/uris/host_yisu_64fc150f8284e__39659
[ INFO] [1723529188.542735557]: 名称解析name /rosversion
[ INFO] [1723529188.542753210]: 名称解析name /rosdistro
[ INFO] [1723529188.542771264]: 名称解析name /param_double
[ INFO] [1723529188.542789378]: 名称解析name /param_string
[ INFO] [1723529188.542806159]: 名称解析name /param_bool
[ INFO] [1723529188.542823351]: 名称解析name /param_vector
[ INFO] [1723529188.542840955]: 名称解析name /param_map/key
[ INFO] [1723529188.542858317]: 名称解析name /param_int
[ INFO] [1723529188.542878054]: ----------------------------
[ INFO] [1723529188.543220015]: 存在 param_int 吗? 1
[ INFO] [1723529188.543525068]: 存在 param_intttt 吗? 0
[ INFO] [1723529188.543831122]: 搜索键:/param_int
[ INFO] [1723529188.544247053]: param 删除结果:1