为什么80%的码农都做不了架构师?>>>   

1、写一个配置文件 cfg/ElfinBasicAPIDynamicReconfigure.cfg

#!/usr/bin/env python
PACKAGE = "elfin_basic_api"from dynamic_reconfigure.parameter_generator_catkin import *gen = ParameterGenerator()gen.add("velocity_scaling", double_t, 0, "the max velocity scaling", 0.4,  0.01, 1.0)exit(gen.generate(PACKAGE, PACKAGE, "ElfinBasicAPIDynamicReconfigure"))

2、cmake自动产生 ElfinBasicAPIDynamicReconfigureConfig.h头文件

find_package(catkin REQUIRED COMPONENTSdynamic_reconfigure
)generate_dynamic_reconfigure_options(cfg/ElfinBasicAPIDynamicReconfigure.cfg
)

3、使用dynamic_reconfigure::Server

#include <elfin_basic_api/ElfinBasicAPIDynamicReconfigureConfig.h> //引入头文件//自定义类中加入成员变量:
dynamic_reconfigure::Server<ElfinBasicAPIDynamicReconfigureConfig> dynamic_reconfigure_server_;
//绑定回调函数
dynamic_reconfigure_server_.setCallback(boost::bind(&ElfinBasicAPI::dynamicReconfigureCallback, this, _1, _2));void ElfinBasicAPI::dynamicReconfigureCallback(ElfinBasicAPIDynamicReconfigureConfig &config, uint32_t level)
{setVelocityScaling(config.velocity_scaling);
}void ElfinBasicAPI::setVelocityScaling(double data)
{velocity_scaling_=data;teleop_api_->setVelocityScaling(velocity_scaling_);
}

于是,elfin_basic_api自动启动了serice:

/elfin_basic_api/set_parameters

和topic:

/elfin_basic_api/parameter_descriptions
/elfin_basic_api/parameter_updates

4、move_group动态修改参数

void ElfinTeleopAPI::setVelocityScaling(double data)
{velocity_scaling_=data;joint_speed_=joint_speed_default_*velocity_scaling_;cart_duration_=cart_duration_default_/velocity_scaling_;group_->setMaxVelocityScalingFactor(velocity_scaling_);
}

python脚本修改参数

设置elfin_basic_api相关的动态参数,例如: velocity scaling
example: set_parameters() in elfin_robot_bringup/script/set_velocity_scaling.py

python源码:

# author: Cong Liu
import rospy
from dynamic_reconfigure.srv import Reconfigure, ReconfigureRequest
from dynamic_reconfigure.msg import DoubleParameter, Configclass SetVelocityScaling(object):def __init__(self):self.request=ReconfigureRequest()self.velocity_scaling_goal=0.6self.elfin_basic_api_ns='elfin_basic_api/'self.set_parameters_client=rospy.ServiceProxy(self.elfin_basic_api_ns+'set_parameters',Reconfigure)def set_parameters(self):config_empty=Config()velocity_scaling_param_tmp=DoubleParameter()velocity_scaling_param_tmp.name='velocity_scaling'velocity_scaling_param_tmp.value=self.velocity_scaling_goalself.request.config.doubles.append(velocity_scaling_param_tmp)self.set_parameters_client.call(self.request)self.request.config=config_emptyif __name__ == "__main__":rospy.init_node('set_velocity_scaling', anonymous=True)svc=SetVelocityScaling()svc.set_parameters()rospy.spin()

参考: 1、https://github.com/hans-robot/elfin_robot

转载于:https://my.oschina.net/itfanr/blog/1931939

ros中move_group的参数动态设置相关推荐

  1. 在ROS中配置路由器的动态域名?

    一.脚本的设置 http://service.oray.com/question/869.html 二.ping命令 有时候ping命令不同ddns,需要清除一下本机缓存:使用以下命令清除 ipcon ...

  2. R语言ggcharts包的dumbbell_chart函数可视化哑铃图(对比两个年份数据的差异)、scale_y_continuous函数中的labels参数自定义设置X轴坐标标签的格式

    R语言ggplot2可视化:使用ggcharts包的dumbbell_chart函数可视化哑铃图(对比两个年份数据的差异).使用scale_y_continuous函数中的labels参数自定义设置X ...

  3. Amber中的NMR restraint中的一些参数的设置的意义

    在对结构中的对距离角度,二面角,距离等加入限制时需要首先在输入文件中加入一些参数来应用这些限制. DISANG="限制文件的路径"          nmropt 参数值设置为大于 ...

  4. BIRT 中如何根据参数动态拼接 SQL

    BIRT可以使用sql query来创建数据集,通过在报表中设置参数(Parameter)来传递客户端的用户输入,同时可以设置Dataset参数并且与报表参数关联(这两个参数是不同的),这样可以将客户 ...

  5. HTTP中request请求参数的设置

    在发送的http请求中我们可以定制自己的请求体,下面是几个示例代码 package mainimport ("fmt""io/ioutil""net/ ...

  6. activity中指定一页面动态设置软键盘弹出属性

    要在设置的页面拿到对应的activity activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJ ...

  7. android 修改系统参数设置,2021-05-15 [RK3399][Android7.1] 调试笔记 ---显示参数动态设置接口...

    系统环境: Platform: RK3399 OS: Android 7.1 Kernel: v4.4.83 接口代码所在位置为: /frameworks/base/core/java/android ...

  8. vue 给iframe设置src_vue 中引入iframe,动态设置其src,遇到的一些小问题总结

    1.重置其样式,去掉外框以及滚动条等 id="myIframe" ref="iframe_a" :src="mySrc" width=&qu ...

  9. Android动态设置控件宽高和padding

    在开发过程中我们经常需要动态设置控件的宽高和padding.以TextView为例.如下: 布局代码 TextView的默认宽高为包裹文字,添加了一个背景颜色设置参数后更直观看到效果 <?xml ...

最新文章

  1. java -jar 和 -cp详解
  2. 国2c语言中指针与数组的赋值运算,C语言到汇编-指针与数组2
  3. GDT,LDT,GDTR,LDTR 详解,包你理解透彻
  4. 大文件做分割处理的方法——winRAR压缩分割法
  5. class ts 扩展方法_一些让程序保持可扩展的 TypeScript 技巧
  6. ios两张图片的合并
  7. 让人惊叹的Johnson-Lindenstrauss引理:理论篇
  8. FIR设置过采样率 matlab,Xilinx FIR IP的介绍与仿真
  9. vue+elementui中,el-select多选下拉列表中,如何同时获取:value和:label的值?
  10. k8s consul 服务发现_Swoft之服务注册发现Consul服务器配置
  11. 循环练习题:小球下落
  12. node全局对象 文件系统
  13. 将Tomcat加入windows系统服务
  14. 河南大学计算机网络考试试卷,计算机网络试卷.doc
  15. 【绝知此事要躬行】线性表之数组OJ
  16. bootloader 解析
  17. uniapp技术应用,以及案列讲解
  18. 计算机图形学(十二):真实感图形(光照模型、材质模型)
  19. 数据外连接 LEFT OUT JOIN 的用法
  20. 5000字加21图文 | 抓包带你体验同网段的通信过程,这些细节很关键

热门文章

  1. linux整个文件夹下全部文件的属性,C/C++遍历目录下的所有文件(Windows/Linux篇,超详细)...
  2. 输出该链表中倒数第k个结点
  3. javascript base64加密解密
  4. JDBC模板对象是多例的
  5. 如何优化Mysql执行查询数据的速度
  6. Android 调用系统相机拍照,生命周期重走OnCreate,导致无数据的解决办法
  7. bzoj 1042 HAOI2008 硬币购物
  8. GARFIELD@09-11-2004
  9. python之验证身份证号合法性的库:id_validator
  10. C# DataSet转ListDataTable