栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

ROS下Python读取ft

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ROS下Python读取ft

ROS下Python读取ft_300传感器数据 硬件条件:

ur3
ft_300
ros:melodic

#!/usr/bin/env python2
import rospy
from geometry_msgs.msg import WrenchStamped
import socket
import time

class socket_connection:
    def __init__(self, publisher_object, rate):
        self.host_ip = "192.168.56.2"
        self.port = 63351
        self.socket_object = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.publisher_object = publisher_object
        self.publisher_rate = rate
        self.is_published = False

    def connect(self):

        try:

            print("Warning: Connecting to UR3 ip adress: " + self.host_ip)
            self.socket_object.connect((self.host_ip, self.port))

            try:
                while 1:
                    force_torque_values = (self.socket_object.recv(1024).replace(b"(", b"*")).replace(b")", b"*")

                    value_list = force_torque_values.split(b"*")
                    rospy.loginfo(value_list[1])

                    values = value_list[1].split(b",", 6)
                    msg = WrenchStamped()

                    msg.header.frame_id = "FT_link"
                    msg.header.stamp = rospy.Time.now()
                    msg.wrench.force.x = float(values[0])
                    msg.wrench.force.y = float(values[1])
                    msg.wrench.force.z = float(values[2])

                    msg.wrench.torque.x = float(values[3])
                    msg.wrench.torque.y = float(values[4])
                    msg.wrench.torque.z = float(values[5])

                    self.publisher_object.publish(msg)
                    self.publisher_rate.sleep()

            except KeyboardInterrupt:
                self.socket_object.close()

                return False

        except Exception as e:

            print("Error: No Connection!! Please check your ethernet cable :)" + str(e))

            return False


def main():
    pub = rospy.Publisher('robotiq_ft_wrench', WrenchStamped, queue_size=10)
    rospy.init_node('ft_sensor_data', anonymous=True)

    rate = rospy.Rate(125)

    socket_connection_obj = socket_connection(pub, rate)
    socket_connection_obj.connect()


if __name__ == "__main__":

    try:
        main()
    except rospy.ROSInterruptException:
        pass
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/487366.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号