机器人操作系统ROS/ROS2(1)

时间:2023-01-09 07:51:50

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

前天突然发现还有个机器人操作系统,故而引起自己的兴趣,研究下这是什么玩意。


提示:以下是本篇文章正文内容,下面案例可供参考

一、ROS和ROS2是什么?

ROS2的前身是ROS,ROS即机器人操作系统(Robot Operating System),ROS为了“提高机器人软件复用率”的目标,时至今日,ROS已经广泛用于各种机器人的开发,无论是机械臂、移动机器人、水下机器人,还是人形机器人、复合机器人,统统都可以看到ROS的身影,ROS已经成为机器人领域的普遍标准。但是由于ROS自身的缺陷,如果在工业场景应用(例如无人驾驶)还需要做优化和定制,
ROS无法真正进入产业界,也自然无法产品化。为了解决这一问题,社区提出了ROS 2。使得ROS具备产品化的特性,包括实时性、适应于全平台、适用于性能低的硬件(MCU+RTOS)、分布式、数据加密和现代编程语言的支持。
机器人操作系统ROS/ROS2(1)
ROS2
1、支持多机器人系统
2、铲除原型和产品之间的鸿沟
3、支持微控制器
可以运行在X86和ARM上,还可以支持MCU等嵌入式微控制器,比如常见的ARM-M4、M7内核
4、支持实时控制
5、支持跨平台

二、ROS2安装步骤

1.Ubuntu虚拟机安装

代码如下(示例):

1、下载系统镜像
下载链接:
https://ubuntu.com/download/desktop
2. 在虚拟机中创建ubuntu
不能相互复制与粘贴
执行以下命令
sudo apt-get autoremove open-vm-tools
sudo apt-get install open-vm-tools
sudo apt-get install open-vm-tools-desktop

机器人操作系统ROS/ROS2(1)

2.ROS2系统安装

代码如下(示例):

按Ctrl+Alt+T就会打开终端

# 语言符号环境
 
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
 
# 数据源

sudo apt update && sudo apt install curl gnupg lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key  -o /usr/share/keyrings/ros-archive-keyring.gpg

Error:Failed to connect to raw.githubusercontent.com port 443 after 15 ms: Connection refused
1、打开https://www.ipaddress.com/
2、输入raw.githubusercontent.com
3185.199.108.133
4、sudo gedit /etc/hosts
   185.199.108.133  raw.githubusercontent.com
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
#安装ROS2
sudo apt update
sudo apt upgrade

sudo apt install ros-humble-desktop

source /opt/ros/humble/setup.bash
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc

ROS2就已经在系统中安装好了
机器人操作系统ROS/ROS2(1)

3.验证ROS2安装成功

代码如下(示例):

ROS2最为重要的底层通信系统DDS是否正常
启动第一个终端,通过以下命令启动一个数据的发布者节点:
ros2 run demo_nodes_cpp talker
启动第二个终端,通过以下命令启动一个数据的订阅者节点:
ros2 run demo_nodes_cpp listener

ros2 run demo_nodes_ #Tab
机器人操作系统ROS/ROS2(1)
ros2 run demo_nodes_cpp # 空格 Tab
机器人操作系统ROS/ROS2(1)
启动发布者
机器人操作系统ROS/ROS2(1)
启动监听者
机器人操作系统ROS/ROS2(1)

4.小海龟仿真示例

代码如下(示例):

启动两个终端,分别运行如下指令:
ros2 run turtlesim turtlesim_node   #第一句指令将启动一个蓝色背景的海龟仿真器
ros2 run turtlesim turtle_teleop_key  #第二句指令将启动一个键盘控制节点,在该终端中点击键盘上的“上下左右”按键

机器人操作系统ROS/ROS2(1)

在该终端中点击键盘上的“上下左右”按键,就可以控制小海龟运动啦机器人操作系统ROS/ROS2(1)


总结

记录点点滴滴