百度站长资源管理,泰国vps,建设网站需要招聘哪些人,鹤壁网站建设优化目录 0 专栏介绍1 什么是机器人操作系统#xff1f;2 ROS的发展历程3 ROS2与ROS1的区别4 ROS2安装4.1 基本安装4.2 测试ROS24.2.1 测试一#xff1a;发布者与订阅者4.2.2 测试二#xff1a;海龟仿真器 5 常见问题 0 专栏介绍
本专栏旨在通过对ROS2的系统学习#xff0c;掌… 目录 0 专栏介绍1 什么是机器人操作系统2 ROS的发展历程3 ROS2与ROS1的区别4 ROS2安装4.1 基本安装4.2 测试ROS24.2.1 测试一发布者与订阅者4.2.2 测试二海龟仿真器 5 常见问题 0 专栏介绍
本专栏旨在通过对ROS2的系统学习掌握ROS2底层基本分布式原理并具有机器人建模和应用ROS2进行实际项目的开发和调试的工程能力。
详情《ROS2从入门到精通》 1 什么是机器人操作系统 ROSRobot Operating System是一个适用于机器人的开源的元操作系统。它提供了操作系统应有的服务包括 硬件抽象底层设备控制常用函数的实现进程间消息传递包管理用于获取、编译、编写、和跨计算机运行代码所需的工具和库函数 ROS 的主要目标是为机器人研究和开发提供代码复用的支持。简单来说就是避免重复造轮子。 为什么ROS可以提高代码复用率
因为ROS有程序包和功能包概念类比与C或python的库的概念这些包易于被分享和发布而且ROS也支持一种类似于代码储存库的联合系统这个系统也可以实现工程的协作及发布。这个设计可以使一个工程的开发和实现完全模块化同时所有的工程都可以被ROS的基础工具整合在一起。 除此之外ROS还有以下优势
精简ROS被设计为尽可能精简易于与其他机器人软件框架集成语言独立性为了支持更多应用开发和移植ROS设计为一种语言弱相关的框架结构中立的定义语言描述模块间的消息接口Java、C、Python都可以进行ROS开发。大型应用ROS适用于大型运行时系统和大型开发流程丰富的组件化工具包ROS可采用组件化方式集成一些工具和软件到系统中并作为一个组件直接使用如RVIZ、Gazebo等后面都会介绍。免费且开源开发者众多功能包多
这里再收藏几个重要的ROS全球社区网站
answers.ros.orgROS问答网站大家可以在上边提出任何关于ROS的问题全球很多开发者都很乐意回答我们的问题wiki.ros.orgROS的维基百科记录了ROS教程和各种功能包的使用discourse.ros.orgROS论坛关于ROS开发的新鲜事都可以在这里发表和查看比如ROS的活动、新功能包的发布等等index.ros.orgROS资源索引网站packages.ros.orgROS功能包存储数据库
2 ROS的发展历程
ROS是一个由来已久、贡献者众多的大型软件项目。
在ROS诞生之前很多学者认为机器人研究需要一个开放式的协作框架并且已经有不少类似的项目致力于实现这样的框架。
2007年柳树车库Willow Garage提供了大量资源用于将斯坦福大学机器人项目中的软件系统进行扩展与完善同时在无数研究人员的共同努力下ROS的核心思想和基本软件包逐渐得到完善。
ROS的发行版本指ROS软件包的版本其与Linux的发行版本如Ubuntu的概念类似。推出ROS发行版本的目的在于使开发人员可以使用相对稳定的代码库直到其准备好将所有内容进行版本升级为止。因此每个发行版本推出后ROS开发者通常仅对这一版本的bug进行修复同时提供少量针对核心软件包的改进。 随着ROS被越来越多机器人使用受限于当初设计的局限性ROS的问题也逐渐暴露。为了能够真正设计一款适用于所有机器人的操作系统ROS2在2017年底正式发布历经多年迭代我们终于在2022年5月底迎来了ROS2第一个长期支持版——ROS2 HumbleROS2已经成熟我们也进入了一个全新的ROS2时代。
3 ROS2与ROS1的区别 随着ROS的普及应用ROS的机器人类型已经和最初那款PR2家庭机器人有了天壤之别那原本针对PR2设计的软件框架就会出现一些问题比如
要在资源有限的嵌入式系统中运行要在有干扰的地方保证通信的可靠性要做成产品走向市场甚至用在自动驾驶汽车和航天机器人上 与ROS1相比ROS2针对当今机器人应用需求引入了非常多现代化的特性
操作系统支持ROS1仅支持Linux系统而ROS2支持Linux、Windows、MacOS和实时操作系统RTOSROS2的跨平台和可移植特性为构建复杂机器人系统提供了基础系统架构。ROS2采用基于DDS的分布式架构取消了ROS1中的Master节点节点之间通过DDS进行通信因而支持更灵活的通信机制如实时数据流和快速通信具体什么是DDS架构请参考ROS2从入门到精通1-2图解ROS2的DDS通信机制产品化ROS2不仅可以用于机器人研发阶段还可以直接搭载在产品中走向消费市场这对ROS2的稳定性、强壮性也提除了巨大挑战安全性ROS2引入了更多的安全机制可以对通信进行加密和认证。API升级ROS1原有的接口已经无法满足需求ROS2结合C最新标准和Python3语言特性设计了更具通用性的API虽然导致原有ROS1的代码无法直接在ROS2中运行但是尽量保留了类似的使用方法同时提供了大量移植的说明编译系统ROS1中使用的rosbuild和catkin问题诸多尤其是针对代码较多的大项目以及Python编写的项目编译、链接经常会出错ROS2对这些问题也进行了优化重新优化后的编译系统叫做ament和colcon它是catkin编译系统进一步演化的版本。
4 ROS2安装
4.1 基本安装
ROS2安装步骤如下所示 设置编码 sudo apt update sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALLen_US.UTF-8 LANGen_US.UTF-8
export LANGen_US.UTF-8添加软件源这里为了避免无法访问https://raw.githubusercontent.com带来的一系列问题采用清华源的ROS2库 sudo apt update sudo apt install curl gnupg lsb-release
sudo curl -sSL https://mirrors.tuna.tsinghua.edu.cn/rosdistro/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo deb [arch$(dpkg --print-architecture) signed-by/usr/share/keyrings/ros-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu jammy main | sudo tee /etc/apt/sources.list.d/ros2.list /dev/null更新源 sudo apt update
sudo apt upgrade安装ROS2 sudo apt install ros-humble-desktop设置环境变量 echo source /opt/ros/humble/setup.bash ~/.bashrc
source ~/.bashrc4.2 测试ROS2
4.2.1 测试一发布者与订阅者
在终端A中启动发布者
ros2 run demo_nodes_cpp talker在终端B中启动订阅者
ros2 run demo_nodes_cpp listener如下所示若节点间正常通信则说明测试通过 4.2.2 测试二海龟仿真器
接着进行经典的海龟测试启动两个终端分别运行如下指令
ros2 run turtlesim turtlesim_noderos2 run turtlesim turtle_teleop_key将鼠标聚焦在第操作终端窗口上然后通过键盘上的方向键操作小海龟移动并在屏幕上留下轨迹 至此表明ROS基本安装、配置成功。
5 常见问题 添加ROS2源时出现curl: (7) Failed to connect to raw.githubusercontent.com port 443 after 16 ms: Connection refused 解决方案 这个问题是因为国内用户无法正常连接raw.githubusercontent.com导致采用国内清华源可以解决 sudo curl -sSL https://mirrors.tuna.tsinghua.edu.cn/rosdistro/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg更多精彩专栏
《ROS从入门到精通》《Pytorch深度学习实战》《机器学习强基计划》《运动规划实战精讲》… 源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系