ubuntu16.04 kinetic python3 rospy通信环境依赖

安装命令

conda下

// conda python=3.7.9
(base) adocir@adocir:~$ conda install -c conda-forge ros-rospy 

ubuntu python3下

// Python 3.7.9
// pip已更改为指向python3,若未修改则使用pip3
(base) adocir@adocir:~$ pip install rospkg
(base) adocir@adocir:~$ pip install catkin-tools

测试脚本

conda配置参考 ROS : 话题通信 (Python)

msg格式

// Num.msg
int64 num

listener

cv2为本人测试用,可以自行删除

// talker.py
#!/usr/bin/env python
# coding=utf-8

import rospy
from beginner_tutorials.msg import Num
import threading
import sys
sys.path.remove('/opt/ros/kinetic/lib/python2.7/dist-packages')
import cv2

def callback(data):
    rospy.loginfo(rospy.get_caller_id() + 'I heard %d', data.num)

def listener():

    # In ROS, nodes are uniquely named. If two nodes with the same
    # name are launched, the previous one is kicked off. The
    # anonymous=True flag means that rospy will choose a unique
    # name for our 'listener' node so that multiple listeners can
    # run simultaneously.
    rospy.init_node('listener', anonymous=True)

    rospy.Subscriber('chatter', Num, callback)

    # spin() simply keeps python from exiting until this node is stopped
    rospy.spin()

def opencv():
    cap = cv2.VideoCapture(0, cv2.CAP_V4L2)
    print(cap.isOpened())
    while True:
        ret, frame = cap.read()
        cv2.imshow("frame", frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

if __name__ == '__main__':
    threading.Thread(target=opencv, daemon=True).start()
    listener()

talker

// talker.py
#!/usr/bin/env python
# coding=utf-8

# import roslib;roslib.load_manifest('beginner_tutorials')
import rospy
from beginner_tutorials.msg import Num

def talker():
    pub = rospy.Publisher('chatter', Num, queue_size = 10)
    rospy.init_node('talker', anonymous = True)
    rate = rospy.Rate(10)
    while not rospy.is_shutdown():
        mynum = int(rospy.get_time())
        msg = Num()
        msg.num = mynum
        rospy.loginfo(mynum)
        pub.publish(msg)
        rate.sleep()

if __name__ == '__main__':
    try:
        talker()
    except rospy.ROSInterruptException:
        pass

ros一些包的说明

genmetry_msgs: genmetry_msgs
std_msgs: std_msgs

anaconda.org.rospy
ROS : 话题通信 (Python)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值