IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> ROS教程 -> 正文阅读

[系统运维]ROS教程

目录

一、ROS安装

1、安装虚拟机

2、安装Ubuntu

3、安装ROS

二、话题通信

概念:

1、理论模型:

?

2、基本操作(python)

流程:

?3、实操

话题发布

话题订阅

参考感谢:


一、ROS安装

1、安装虚拟机

VMare的下载与安装

2、安装Ubuntu

Ubuntu20.04安装教程

3、安装ROS

  • Ubuntu与ROS对应版本
UbuntuROS
16.04Kinetic
18.04Melodic
20.04Noetic
  • 配置Ubuntu的软件和更新

?打开“软件和更新”对话框后,按下图配置?

?

  • 设置安装源

快捷键Ctrl?+?Alt?+?T打开一个终端

来自国内清华的安装源:

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

回车后需要输入管理员密码(注:此时输入密码时不会显示密码长度)

  • 设置Key
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

  • 更新apt

apt是用于从互联网仓库搜索、安装、升级、卸载软件或操作系统的工具。

sudo apt update
  • 安装ROS

这里安装的是完整桌面版(Desktop-Full,官网推荐):除了桌面版的全部组件外,还包括2D/3D模拟器(simulator)和2D/3D 感知包(perception package)。

sudo apt install ros-noetic-desktop-full

这里需要长时间等待,由于网络原因,导致连接超时,可能会安装失败,可以多次重复调用?更新和?安装?命令

  • 配置环境变量
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
  • 安装构建依赖
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
  • 初始化rosdep
sudo rosdep init
rosdep update

二、话题通信

概念:

以发布订阅的方式实现不同节点之间数据交互的通信模式,适用于不断更新的数据传输相关的应用场景

1、理论模型:

  • ?ROS Master(管理者)
  • Talker(发布者)
  • Listener(订阅者)

管理者负责保管发布者和订阅者注册的信息,并匹配话题相同的发布者和订阅者,帮助其建立连接,连接建立后,订阅者可以接收到发布者发布的消息。

2、基本操作(python)

需求:编写发布订阅实现,要求发布方以10HZ的频率发布文本消息,订阅方订阅消息并将消息内容打印输出。

流程:

  • 创建工作空间并初始化

CTRL+Alt+T打开命令行

输入mkdir -p 工作空间名/src

mkdir -p practice/src

?进入工作空间

cd practice/
catkin_make

?此命令后会生成与src同级的devel和build文件夹

|--- build:编译空间,用于存放CMake和catkin的缓存信息、配置信息和其他中间文件。

|--- devel:开发空间,用于存放编译后生成的目标文件,包括头文件、动态&静态链接库、可执行文件等。

|--- src: 源码

?

  • 在vs code 中打开该文件夹

  • 创建功能包

右击src,新建功能包(Create Catkin Package),输入功能包名字(此处是pub_sub)

?导入依赖

roscpp rospy std_msgs

?

?

  • 编写发布方实现

右击第一级src,创建文件夹srcipts,然后右击srcipts创建文件,取名后缀加上.py。

开始编写:

#! /usr/bin/env python

import rospy
from std_msgs.msg import String #发布消息的类型
"""
使用Python实现消息发布:
	1.导包
	2.初始化ros节点
	3.创建发布者对象
	4.编写发布逻辑并发布数据
"""
if __name__=="__main__":
    #2.初始化ros节点
    rospy.init_node("sg") #传入节点名称
    #3.创建发布者对象
    pub = rospy.Publisher("shuai",String,queue_size=10)
    #4.编写发布逻辑并发布数据
    #创建数据
    msg = String()
    msg_front = "hello"
    count = 0  #计数器 
    # 设置循环频率
    rate = rospy.Rate(1)
    while not rospy.is_shutdown():

        #拼接字符串
        msg.data = msg_front + str(count)

        pub.publish(msg)
        rate.sleep()
        rospy.loginfo("发布的数据:%s",msg.data)
        count += 1
  • 编写订阅方实现
import rospy
from std_msgs.msg import String

def doMsg(msg):
    rospy.loginfo("I heard:%s",msg.data)

if __name__ == "__main__":
    #2.初始化 ROS 节点:命名(唯一)
    rospy.init_node("mn")
    #3.实例化 订阅者 对象
    sub = rospy.Subscriber("shuai",String,doMsg,queue_size=10)
    #4.处理订阅的消息(回调函数)
    #5.设置循环调用回调函数
    rospy.spin()
  • 为python文件添加可执行权限

?右击scripts,点“在集成终端打开”

chmod +x *.py

ll查看是否成功添加可执行权限

  • 编辑配置文件

CTRL+/ 放开这段注释,并将my_python_script改为python文件名(此处为pub_p.py)

  • 编译并执行

快捷键CTRL+shift+B,输入catkin_make:build进行编译

ctrl+Alt+T打开终端,输入roscore启动ros核心,另两个终端输入rosrun +包名 +python文件名


3、实操

话题发布

需求:编码实现乌龟运动控制,让小乌龟做圆周运动

分析:自定义控制节点,按照一定的逻辑发布消息

流程:

  • 先启动键盘控制乌龟运动
命令行1:roscore
命令行2:rosrun turtlesim turtlesim_node
命令行3:rosrun turtlesim turtle_teleop_key(在3中可通过上下左右键控制乌龟运动)

?

  • ?获取话题

通过计算图查看话题为/turtle1/cmd_vel

rqt_graph

?

?获取消息类型为geometry_msgs/Twist

rostopic type /turtle1/cmd_vel

然后获取消息格式

rosmsg info geometry_msgs/Twist

?linear为线速度,对于乌龟来说只用改x;angular为角速度,对于乌龟来说只用改z。

  • 创建功能包

右击src,新建功能包(Create Catkin Package),输入功能包名字(此处是plumbing_test)

添加依赖:roscpp rospy std_msgs geometry_msgs

  • 编写发布方

在plumbing_test下的scripts创建python文件,开始编写

#! /usr/bin/env python

from mimetypes import init
import rospy
from geometry_msgs.msg import Twist
"""
    发布方:发布速度消息
        话题:/turtle1/cmd_vel
        消息:geometry_msgs/Twist
    1.导包
    2.初始化ros节点
    3.创建发布者对象
    4.组织数据并发布数据
"""

if __name__ =="__main__":
    #2.初始化ros节点
    rospy.init_node("my_control_p")
    #3.创建发布者对象
    pub = rospy.Publisher("/turtle1/cmd_vel",Twist,queue_size=10)
    #4.组织数据并发布数据
    #设置发布频率
    rate = rospy.Rate(10)
    #创建速度消息
    twist = Twist()
    twist.linear.x = 0.5
    twist.linear.y = 0.0
    twist.linear.z = 0.0

    twist.angular.x=0.0
    twist.angular.y=0.0
    twist.angular.z=0.5
    #循环发布
    while not rospy.is_shutdown():
        pub.publish(twist)
        rate.sleep()
  • ?为python文件添加可执行权限

右击scripts,点“在集成终端打开”

chmod +x *.py
  • 编辑配置文件

CTRL+/ 放开这段注释,并将my_python_script改为python文件名(此处为test01_pub_twist_p.py)

注:后面订阅方编辑也是此处

  • 编译并执行

快捷键CTRL+shift+B,输入catkin_make:build进行编译

?打开终端

命令行1:roscore
命令行2:rosrun turtlesim turtlesim_node
命令行3:cd 自定义包名
        source ./devel/setup.bash  刷新环境变量
        rosrun 工作空间名 python文件名

?

?

话题订阅

需求:控制乌龟运动,并实时打印当前乌龟的位姿

分析:控制乌龟运动,并通过ros命令来获取乌龟位姿发布的话题以及消息,编写订阅节点,订阅并打印乌龟位姿

流程:

  • 获取话题
rostopic list
  • 获取消息类型
rostopic type  /turtle1/pose
  • 获取消息格式
rosmsg info turtlesim/Pose

  • 编写发布方

在plumbing_test下的scripts创建python文件,开始编写

#! /usr/bin/env python
import rospy
from turtlesim.msg import Pose

"""
需求:订阅并输出乌龟位姿信息

1.导包
2.初始化ros节点
3.创建订阅对象
4.使用回调函数处理订阅到的消息
5.spin()
"""
def doPose(pose):
    rospy.loginfo("P->乌龟位姿信息:坐标(%.2f,%.2f),朝向:%.2f,线速度:%.2f,角速度:%.2f",
    pose.x,pose.y,pose.theta,pose.linear_velocity,pose.angular_velocity)

if __name__=="__main__":
    # 2.初始化ros节点
    rospy.init_node("sub_pose_p")
    # 3.创建订阅对象
    sub=rospy.Subscriber("/turtle1/pose",Pose,doPose,queue_size=100)
    # 4.使用回调函数处理订阅到的消息
    # 5.spin()
    rospy.spin()
  • ?为python文件添加可执行权限

右击scripts,点“在集成终端打开”

chmod +x *.py
  • 编辑配置文件

同上发布方

  • 编译并执行

快捷键CTRL+shift+B,输入catkin_make:build进行编译

打开终端

命令行1:roscore
命令行2:rosrun turtlesim turtlesim_node
命令行3:rosrun turtlesim turtle_teleop_key
命令行4:cd 自定义包名
        source ./devel/setup.bash  刷新环境变量
        rosrun 工作空间名 python文件名

?

?

参考感谢:

赵虚左老师的课《ROS理论与实践》

官网镇楼:http://wiki.ros.org/cn

?注:后面还会持续更新

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-02-27 11:04:36  更:2022-02-27 11:05:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 4:54:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码