前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[ROS2 foxy Ubuntu实战]: 1. 安装机器人操作系统

[ROS2 foxy Ubuntu实战]: 1. 安装机器人操作系统

原创
作者头像
数智圈
发布2022-04-23 13:59:18
9810
发布2022-04-23 13:59:18
举报
文章被收录于专栏:水滴水滴

系列文章首发在头条"DG数据圈",欢迎关注。「ROS2 foxy」 机器人操作系统实战系列 - 文章汇总

以下是相关实验的小结。

机器人是一个系统工程,它涉及机械、电子、控制、通信、软件等诸多学科。ROS(Robot Operating System)是一个适用于机器人编程的框架,这个框架把原本松散的零部件耦合在了一起,为他们提供了通信架构。

ROS虽然叫做机器人操作系统,但并非Windows、Linux、Mac那样通常意义的操作系统,它由很多免费的软件组成,连接了操作系统和你开发的ROS应用程序,同时也实现了部分传统操作系统的功能,可以把它理解为一个中间件。底层相关的实现包括硬件抽象、竞争管理、进程管理。上层实现则比如异步调用,同步调用,数据中央数据库,机器人设置系统等。

在ROS运行时环境上,机器人的感知、决策、控制算法可以更好的组织和运行。ROS有版本1和版本2, 即ROS, ROS2. ROS2 Foxy Fitzroy可以在不同的操作系统中安装和运行,如Windows, Linux或 Mac。ROS除了可以在电脑操作系统上直接运行,也可以在虚拟机或Docker中运行。

最初Willow Garage开发他的机器人Roboter PR2时,是为了设计一个在已知环境中具有自主导航功能的人形机器人。不过在开发初期,他就将ROS往通用和可定制软件的方向设计,以便以后集成到不同机器人中,能方便改进或修改。如今,ROS 不仅用于 PR2 和类似的机器人,而且还用于各种尺寸的移动机器人、人形机器人、工业机械臂、户外陆地车辆和飞行器等。

ROS2由Robotik社区合作开发,主要对以下几个领域进行了改进:

  • 机器人团队合作
  • 小型电子卡上搭载的软件
  • 实时系统
  • 不稳定的网络
  • 生产环境

如果想了解机器人操作系统(ROS), 除了看视频和文章,最吸引人的还是让这个系统在电脑上跑起来,然后试用一些它的功能。熟悉后,在它的基础上,就可以试练更多的硬核知识,比如物联网,人工智能,机器人动力学等。

虽然ROS官方说其foxy版本支持三大操作系统,windows, linux和OS X, 在试过Ubuntu及Mac Pro上的安装后,终于找到一种可以顺利安装的方法。

简短的说就是,通过按照ROS提供的debian安装手册,在ubuntu 20系统上,可以顺利安装ROS2 foxy。

安装好后做的第一个测试是关于消息传递,首先是运行ROS2自带的C++程序,它会一直发布一些消息。然后在另一个terminal上运行ROS2自带的python程序,用于监听这些消息。

ROS2: Message
ROS2: Message

安装步骤基本上就是照着官网给的debian安装手册做, 运行过程中注意拷贝的口令都被执行了:

locale
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
locale

sudo apt update && sudo apt install curl gnupg2 lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/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] 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

sudo apt update

sudo apt install ros-foxy-desktop

sudo apt install ros-foxy-ros-base

source /opt/ros/foxy/setup.bash

#open in first terminal
source /opt/ros/foxy/setup.bash
ros2 run demo_nodes_cpp talker

#open in second terminal
source /opt/ros/foxy/setup.bash
ros2 run demo_nodes_py listener

注:ROS提供在ubuntu及Mac上安装ROS2的手册,但用那个安装手册无法顺利安装ROS2,尝试过编译代码以及直接安装, 均告失败。不过,按照ROS提供的debian安装手册,在ubuntu系统上,倒可以顺利安装ROS2 foxy。此外,也可以试试直接用docker运行ROS2 foxy, 也许哪天可以试试。

接下来我们对它的运行环境再做一些配置,方便以后的实验。

echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc
printenv | grep -i ROS
echo "export ROS_DOMAIN_ID=0" >> ~/.bashrc

注:

ROS2安装分两种,要么编译源代码安装,要么直接使用安装包安装。我们是选择的debian安装包安装的。本节使用的setup.bash路径也是默认的。如果是通过编译源代码安装,这个路径在安装时可以自定义,设置时就得选择相应的路径。

代码 "echo ..."运行后,只是将该行代码写入.bashrc文件,并没有做其他操作。该代码是利用source口令来执行setup.bash,设置环境。.bashrc会被运行,当新的terminal被打开时。所以运行printenv代码时,需要开启一个新的terminal。

优点是以后再运行ROS2自带的口令,就不需要每次运行source那段口令。printenv运行后,它会输出类似这样的信息:

ROS_VERSION=2
ROS_PYTHON_VERSION=3
AMENT_PREFIX_PATH=/opt/ros/foxy
PYTHONPATH=/opt/ros/foxy/lib/python3.8/site-packages
LD_LIBRARY_PATH=/opt/ros/foxy/opt/yaml_cpp_vendor/lib:/opt/ros/foxy/opt/rviz_ogre_vendor/lib:/opt/ros/foxy/lib/x86_64-linux-gnu:/opt/ros/foxy/lib
ROS_LOCALHOST_ONLY=0
PATH=/opt/ros/foxy/bin:......
ROS_DISTRO=foxy

ROS_DOMAIN_ID的值需要在0到232之间。DDS(数据分发服务)是一个开放标准的实时系统连接框架,它使分布式系统能够作为一个集成的整体安全运行。ROS2基于 DDS,可轻松实现分布式机器人系统的 3D 可视化,ROS_DOMAIN_ID在DDS中会被使用到。

现在ROS2的运行环境就准备好了。

下一次我们将介绍在ROS2上控制物体在图形界面上的移动。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档