【机器人】ROS1工程案例:最简单的信息传递

手把手教你搭建一个传递数字消息的机器人程序。


本系列已经耗时6天,博主也是从零开始,尽力去写的,如果发现了错误一定要私信告诉我呀。这么努力的博主,关注一下吧。

作者:杨丝儿
座右铭:始于兴趣,源于热爱,成于投入。
介绍:爱丁堡大学 人工智能专业。技术兴趣点集中在机器人、人工智能可解释性、数学、物理等等。
聊天吹水QQ群:兔叽的魔术工房 (942848525)
个人博客discover304.top
个人B站账号杨丝儿今天也在科学修仙(UP主跨站求个三连加关注)


✨注意

本文只提供在Linux平台上的代码演示最基本的注释,不进行逻辑的解释。

相关解释以及需要用到的基础知识参见:【机器人】ROS程序框架:架构部分


✨安装ROS1环境

需要用到的技术以及流程参见:【机器人】开发系统镜像制作指南


✨搭建环境

cd ~/Desktop
# 在桌面上新建工作区,方便观看过程
mkdir -p rob_dev_ws/src
cd rob_dev_ws/src
catkin_init_workspace

Screenshot from 2021-12-29 09-06-24

Screenshot from 2021-12-29 09-08-36

✨创建包

在src路径下执行

# 这里使用python,所以我们依赖 rospy
catkin_create_pkg communicate_bot rospy

Screenshot from 2021-12-29 09-11-47

✨开始编程

包内src路径下放置我们的代码。

首先是发送端,文件名叫做:topic_publisher.py

#!/usr/bin/env python3

import rospy
from std_msgs.msg import Int32


class Publisher():
    count = 0

    def Publisher():
        pass

    def publish(self):
        rospy.init_node('topic_publisher') # 初始化节点
        pub = rospy.Publisher('counter', Int32, queue_size=10)
        rate = rospy.Rate(2) # 定义频率单位为:Hz
        while not rospy.is_shutdown():
            pub.publish(self.count)
            self.count += 1
            print(self.count)
            rate.sleep()


if __name__ == '__main__':
    publisher = Publisher()
    publisher.publish()

我们采用面向对象的思想进行编程,方便未来增改需求。

接下来是接收端,文件名称叫做topic_subscriber.py

#!/usr/bin/env python3

import rospy
from std_msgs.msg import Int32

class Subscriber():
    def Subscriber():
        pass

    def listen(self):
        rospy.init_node('topic_subscriber')
        # 最后一个参数传递回调函数,如何处理数据
        sub = rospy.Subscriber('counter', Int32, lambda msg : print(msg.data))
        rospy.spin() # 阻塞等待,将程序交到ROS管理
      
      
if __name__ == "__main__":
    subscriber = Subscriber()
    subscriber.listen()

✨对程序/包进行编译

在工作区文件夹执行

catkin_make

✨运行程序

在工作区目录进行以下操作:

第一个终端执行

rosmaster

第二个终端执行

source devel/setup.bash 
rosrun communicate_bot topic_publisher.py

第三个终端执行

source devel/setup.bash 
rosrun communicate_bot topic_subscriber.py

Screenshot from 2021-12-29 10-31-52

✨退出程序

Ctrl+C退出每一个终端中的程序

下一篇会涉及自定义消息类型的项目,链接在这里:【机器人】ROS1工程案例:自定义消息类型

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白拾Official

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值