当前位置: 首页 > news >正文

ROS 快速入门教程01

先做一个快速入门ROS的笔记,系统学习的ROS会在快速入门学习完后进行。

1. 什么是ROS

ROS (Robot Operating System),机器人操作系统是一种用于机器人软件开发的框架,它并不是一个传统意义上的操作系统,而是一个中间件,提供了一系列的工具和服务,用于简化机器人应用程序的开发过程。

1.1 初步认识ROS

核心架构与通信机制

  • 节点(Node)
    ROS 程序被划分成一个个小的可执行单元,称为“节点”。每个节点负责完成特定功能,例如传感器数据采集、路径规划、运动控制等。
  • 主题(Topic)/ 发布–订阅(Publish–Subscribe)
    节点之间可以通过“主题”来进行异步消息传递。某个节点将消息“发布(publish)”到一个主题,其他对该主题“感兴趣”的节点就能“订阅(subscribe)”并接收消息。
  • 服务(Service)
    对于需要请求-响应机制的场景(比如“请计算一下两点之间的最短路径”),ROS 提供了服务接口;调用方发起请求,执行方处理后返回结果。
  • 动作(Action)
    动作接口适用于长时间运行且可以反馈进度的任务(如“移动到指定位置”),支持预emption(中断)和反馈。
  • 参数服务器(Parameter Server)
    用来存储全局配置参数,如机器人的物理参数/配置文件路径等,所有节点都可以读取或修改。

版本演进:ROS1 vs ROS2

  • ROS1
    • 最早由 Willow Garage 在 2007 年推出,社区活跃,生态成熟;
    • 使用 Master 节点进行节点发现和名称解析;
    • 在实时性、安全性和跨平台支持(Windows、实时 Linux)上存在一些局限。
  • ROS2
    • 基于 DDS(Data Distribution Service)标准实现,无需集中式 Master,改进了实时性能和安全机制;
    • 原生支持多种操作系统(Linux、Windows、macOS)和实时内核;
    • 社区正逐步在新项目中推广,已有许多工业应用。

2. ROS安装

www.ros.org点击官方网站选择与自己ubuntu系统版本号相符合的ROS版本进行下载。
本机为ubuntu20.04,对应的是ROS-noetic这个版本。其余版本有以下对应关系。

ROS 发行版ROS 类型对应 Ubuntu LTS 版本
Indigo IglooROS 114.04 Trusty Tahr
Jade TurtleROS 114.04 Trusty Tahr
Kinetic KameROS 116.04 Xenial Xerus
Lunar LoggerheadROS 116.04 Xenial Xerus
Melodic MoreniaROS 118.04 Bionic Beaver
Noetic NinjemysROS 120.04 Focal Fossa
Dashing DiademataROS 218.04 Bionic Beaver
Eloquent ElusorROS 218.04 Bionic Beaver
Foxy FitzroyROS 220.04 Focal Fossa
Galactic GeocheloneROS 220.04 Focal Fossa
Humble HawksbillROS 222.04 Jammy Jellyfish
Iron IrwiniROS 222.04 Jammy Jellyfish

打开链接进入Noetic页面
根据页面提示进行更换。
在这里插入图片描述

  • 换源
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'
  • 设置秘钥
sudo apt install curl # if you haven't already installed curl
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
  • 安装
sudo apt update
sudo apt install ros-noetic-desktop-full
  • 环境设置
source /opt/ros/noetic/setup.bash
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
  • 检验是否安装完成
roscore

在这里插入图片描述
有以下弹出信息就证明安装完毕

3.APT源

在 ROS 的安装和使用过程中,APT(Advanced Package Tool)源用于方便地从软件仓库安装和更新 ROS 包。通过添加 ROS 的 APT 软件源,用户可以轻松地获取 ROS 的各种功能包和工具,并确保软件的安装和管理是简便且可靠的。
index.ros.rog打开网页找到适合自己的ros版本
在这里插入图片描述
在这里插入图片描述
最上方的软件包
安装软件包的方式一般为ros-ros版本-软件包名方式来下载安装。
以rqt_robot_steering 为例,
在这里插入图片描述

sudo apt install ros-noetic-rqt-robot-steering 

3.2 使用软件包

  • 新建一个终端窗口输入rosrun启动ros。
  • 再新建一个窗口输入
rosrun rqt_robot_steering rqt_robot_steering

注意,第一遍rqt是包名,第二遍rqt是节点名
在这里插入图片描述

  • 再打开一个终端程序
sudo apt install ros-noetic-turtlesim

安装小乌龟,再输入

rosrun turtlesim turtlesim_node

便可以用前面打开的rqt软件包来控制小乌龟的移动
在这里插入图片描述

4.开源自由市场github

  • 创建工作目录
mkdir catkin_ws
cd catkin_ws
mkdir src #创建代码目录
cd src
  • 下载git
sudo apt install git
  • 在src目录下克隆github开源项目
git clone https://github.com/6-robot/wpr_simulation.git

在这里插入图片描述

  • scripts目录放置脚本文件和Python程序
    打开scripts目录,并打开终端。依次运行./+脚本名
./install_for_noetic.sh
./install_for_melodic.sh
./install_for_kinetic.sh
  • 编译
cd ~/catkin_ws/
catkin_make
  • 配置环境
source ~/catkin_ws/devel/setup.bash
  • 运行包的功能
 roslaunch wpr_simulation  wpb_simple.launch 

在这里插入图片描述
我们可以用之前下载的软件包来控制仿真环境下的机器人移动

rosrun rqt_robot_steering rqt_robot_steering 

记得删去turtle1
在这里插入图片描述
在这里插入图片描述

此时就能控制机器人的移动

  • 保存工作空间环境
gedit ~/.bashrc
source ~/catkin_ws/devel/setup.bash
http://www.xdnf.cn/news/82099.html

相关文章:

  • 加油站小程序实战教程13充值规则配置
  • 健康生活新指南
  • Java转Go日记(六):TCP黏包
  • npm i 出现permission denied
  • 树莓派学习专题<8>:使用V4L2驱动获取摄像头数据--获取摄像头支持的分辨率
  • 【Nova UI】六、SASS 赋能组件库:通用方法与混入的变革力量
  • 安宝特分享|AR智能装备赋能企业效率跃升
  • 记录一次使用面向对象的C语言封装步进电机驱动
  • IDEA热加载
  • vue3 + element-plus中el-drawer抽屉滚动条回到顶部
  • drupal7可以从测试环境一键部署到生产环境吗
  • Spring Boot 启动生命周期详解
  • WebRTC服务器Coturn服务器用户管理和安全性
  • Sentinel源码—8.限流算法和设计模式总结二
  • 机器学习06-RNN
  • 时间模块 demo
  • Ubuntu24.04安装ROS2问题
  • 【阿里云大模型高级工程师ACP学习笔记】2.2 扩展答疑机器人的知识范围
  • 深度强化学习 pdf 董豪| 马尔科夫性质,马尔科夫过程,马尔科夫奖励过程,马尔科夫决策过程
  • React:<></>的存在是为了什么
  • 【FAQ】如何配置PCoIP零客户端AWI能访问
  • 网络开发基础(游戏)之 粘包分包
  • 【Web】TGCTF 2025 题解
  • 网络设备智能巡检系统-MCP案例总结
  • 【无人机】使用扩展卡尔曼滤波 (EKF) 算法来处理传感器测量,各传感器的参数设置,高度数据融合、不同传感器融合模式
  • 国产紫光同创FPGA实现SDI视频编解码+图像缩放,基于HSSTHP高速接口,提供2套工程源码和技术支持
  • 万字长文 | Apache SeaTunnel 分离集群模式部署 K8s 集群实践
  • notepad++技巧:查找和替换:扩展 or 正则表达式
  • 什么是 金字塔缩放(Multi-scale Input)
  • 符号速率估计——小波变换法