Tango Control和ROS在Ubuntu的联合测试

环境

系统:Ubutun20.04LTS
Ros:Noetic
虚拟机:VMware
Tango:9.3.5
Python:3.8
PyTango:9.3.0

准备

安装Tango,PyTango,ROS-Noetic并测试:
Ubuntu安装Tango Control教程
Ubuntu安装PyTango步骤
自定义Tango Control设备服务在Ubuntu中的测试
Ubuntu中自定义PyTango的测试
ROS-Noetic安装步骤

步骤

最开始使用C++进行尝试,发现编译方式不同:ROS的catkin_make和Tango的make不知道如何融合。网上有类似案例:

参考:用cmake+make编译ROS工程,也是可以的,参见https://github.com/WelinLee/ROS_QT_GUI的ros_cmake工程。

后来想到跳过编译,LabVIEW和Python是解释语言,就先从最熟悉的LabVIEW尝试,成功了。
Tango和ROS在LabVIEW的联合测试
但是LabVIEW毕竟在Linux不方便,就尝试用Python来实现。


首先尝试把Tango和ROS融合在一个程序,但是对两者运行机制(rosrun和python3)不是很熟悉。

数据下行

这里把数据下行定义为:Tango Client -> Tango Server -> ROS Client -> ROS Server
主要目的是读取write_boolTest中的变量attr.get_write_value()【Ubuntu中自定义PyTango的测试

想到用跨文件的全局变量进行传变量。想到把Tango融入ROS,参考了一些文章:
ROS Import Python Module From Another Package
经过尝试发现:需要调用带参数的函数 ,全局变量才能奏效。

后来用一个公共文件来充当变量传递的介质。
Python跨文件全局变量
经过尝试发现:向公共文件读写变量,在函数内部set_value无效,函数外部set_value才有效。

以上两种方法用自己编写的程序可以成功,而Tango的函数内却不能,考虑函数应该是被保护了。


后来看到有人问同样的问题:

https://www.tango-controls.org/community/forum/c/development/c/read-attribute-from-another/

果然是无法直接读取的,这个回答的思路:在ROS Client中再添加一个充当Tango Client的角色来读取Tango Server的值。

修改person_client.py并添加以下程序:

impor
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值