前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【机器人】ROS1工程案例:基础部分

【机器人】ROS1工程案例:基础部分

作者头像
杨丝儿
发布2022-02-28 15:18:29
2100
发布2022-02-28 15:18:29
举报
文章被收录于专栏:杨丝儿的小站杨丝儿的小站

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

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

✨安装ROS1环境

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

✨搭建环境

代码语言:javascript
复制
cd ~/Desktop
# 在桌面上新建工作区,方便观看过程
mkdir -p rob_dev_ws/src
cd rob_dev_ws/src
catkin_init_workspace

✨创建包

在src路径下执行

代码语言:javascript
复制
# 这里使用python,所以我们依赖 rospy
catkin_create_pkg communicate_bot rospy

✨开始编程

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

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

代码语言:javascript
复制
#!/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

代码语言:javascript
复制
#!/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()

✨对程序/包进行编译

在工作区文件夹执行

代码语言:javascript
复制
catkin_make

✨运行程序

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

第一个终端执行

代码语言:javascript
复制
rosmaster

第二个终端执行

代码语言:javascript
复制
source devel/setup.bash 
rosrun communicate_bot topic_publisher.py

第三个终端执行

source devel/setup.bash rosrun communicate_bot topic_subscriber.py

✨退出程序

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-12-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ✨安装ROS1环境
  • ✨搭建环境
  • ✨创建包
    • ✨开始编程
      • ✨对程序/包进行编译
      • ✨运行程序
      • source devel/setup.bash rosrun communicate_bot topic_subscriber.py
      • ✨退出程序
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档