尽管ROS-1让我们可以轻松地与复杂的硬件和软件组件进行通信,但使用ROS-1开发实际可用产品的过程涉及一些复杂的问题。例如,假设在制造业中需要一大群异构机器人(例如,移动机器人、机械臂等)协同工作,由于ROS-1的体系结构不支持多master的概念,因此很难在多异构机器人之间建立通信。

ROS,更具体地说,ROS-1,目前推动机器人技术在开源社区发展到了一个里程碑式的水平。尽管在软硬件连接同步方面存在缺陷与不足,但是ROS-1提供了一种简单的通信策略,该策略使得用户能够轻松地将任何复杂的传感器连接到微型计算机或微控制器中。在过去的十年里,ROS-1已经发展壮大,拥有一个庞大的功能包列表,每个功能包都能解决一个或一些问题,并一定程度上消除了重新发明轮子的问题。这些功能包带来了一种看待机器人技术的全新方式,并使得当前可用的机器人系统具备了一定的智能。通过连接几个小规模的功能包,用户就可以创建一个全新的复杂自治系统。

尽管有其他方法用于网络中节点之间的通信(我们将在第6章探讨),但它们之间没有安全的通信方式。任何连接到master的用户都可以很容易地访问可用话题的列表,还可以使用或修改它们。鉴于此,人们通常使用ROS-1来验证概念,或者构建科学研究的快速解决方案。
在使用ROS-1进行原型设计验证和创建最终产品之间出现了一条难以逾越的鸿沟,这主要是因为ROS-1不是实时的。通过无线连接(Wi-Fi)使用有线连接(以太网)时,系统组件之间的网络连接有所不同,这可能导致数据接收延迟,甚至丢失数据,从而导致系统不稳定。
考虑到这一点,OSRF开始了改进和建设下一代ROS——ROS-2的旅程。目前ROS-2正处于开发之中,主要目的是修复ROS-1在通信中存在的风险和不足。在本章中,读者将了解ROS-2的概念及其与ROS-1的区别以及特点。为了读者能够更好地理解和比较,本章的组织方式与前一章相似:

安装ROS 2 Dashing
参考官网地址:https://index.ros.org/doc/ros2/Installation/Crystal/Linux-Install-Binary/

  1. 设置UTF-8编码
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
  1. 更新软件源
sudo apt update && sudo apt install curl gnupg2 lsb-release
curl http://repo.ros2.org/repos.key | sudo apt-key add -
sudo sh -c 'echo "deb [arch=amd64,arm64] http://packages.ros.org/ros2/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list'
  1. 安装ros2
    桌面版 : 包含ROS, RViz, demos, tutorials [推荐]
sudo apt install ros-dashing-desktop

基础版:(包含通讯库、消息包、命令行工具,没有GUI工具)

sudo apt install ros-dashing-ros-base

这是一个很漫长的过程,需要耐心的等待…

  1. 安装自动补全工具
    ros2的命令行使用argcomplete工具进行补全:
 sudo apt install python3-argcomplete

导入配置脚本

source /opt/ros/dashing/setup.bash

通过如下命令添加到.bashrc

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

5.安装附加RMW实现

sudo apt update
sudo apt install ros-dashing-rmw-opensplice-cpp # for OpenSplice
sudo apt install ros-dashing-rmw-connext-cpp # for RTI Connext (requires license agreement)

6.ROS 2和ROS 1之间通过ros-bridge通信

sudo apt update
sudo apt install ros-dashing-ros1-bridge

测试
创建工作空间,Clone并编译

mkdir  ~/ros2_ws
cd /ros2_ws
git clone https://github.com/zhangrelay/ros2_tutorials
cd ros2_tutorials
colcon build

可能会遇见的问题colcon:command not found
ROSwiki官网推荐了新的软件包编译工具colcon。ROS编译工具主要经历了三个阶段:

  1. catkin 2. ament 3. colcon。

什么是colcon?

colcon is a command line tool to improve the workflow of building, testing and using multiple software packages.It automates the process, handles the ordering and sets up the environment to use the packages.

colcon是一个命令行工具,用于改进编译,测试和使用多个软件包的工作流程。它实现过程自动化,处理需求并设置环境以便于使用软件包。


安装和使用,请参考:http://colcon.readthedocs.io/en/latest/index.html

下面简述流程:

一共两步:

1. sudo apt install python3-colcon-common-extensions2. colcon build (source install/setup.bash )

具体使用教程参考官网链接进行。

编译过程如下:

Starting >>> roscpp_tutorials
Starting >>> rospy_tutorials
Starting >>> turtlesim
--- stderr: rospy_tutorials
CMake Warning:Manually-specified variables were not used by the project:CATKIN_INSTALL_INTO_PREFIX_ROOT---
Finished <<< rospy_tutorials [16.41s]
--- stderr: turtlesim
CMake Warning:Manually-specified variables were not used by the project:CATKIN_INSTALL_INTO_PREFIX_ROOT---
Finished <<< turtlesim [29.56s]
--- stderr: roscpp_tutorials
CMake Warning:Manually-specified variables were not used by the project:CATKIN_INSTALL_INTO_PREFIX_ROOT---
Finished <<< roscpp_tutorials [39.06s]
Starting >>> ros_tutorials
--- stderr: ros_tutorials
CMake Warning:Manually-specified variables were not used by the project:CATKIN_INSTALL_INTO_PREFIX_ROOT---
Finished <<< ros_tutorials [2.63s]Summary: 4 packages finished [42.15s]4 packages had stderr output: ros_tutorials roscpp_tutorials rospy_tutorials turtlesim

设置环境变量
source /install/setup.sh

运行第一个终端

cd /ros_ws/ros2_tutorials/install
ros2 run demo_nodes_cpp listener

第二个终端

ros2 run demo_nodes_cpp talker

仿真(运行小海龟画矩形)
第一个终端

ros2 run turtlesim turtlesim_node

第二个终端

ros2 run turtlesim draw_square

五、ROS1和ROS2环境变量设置
为了避免每次使用ROS都执行一次source命令,这里我们介绍一种设置方法。可以通过以下步骤,使用alias命令将两个环境都设置到bash脚本,来进行两个环境的共存设置:
使用以下命令调出bash脚本并进行编辑:

注释掉以下两行,

#source /opt/ros/melodic/setup.bash
#source /opt/ros/dashing/setup.bash

在末尾添加:


#ROS 1.0 melodic or ROS 2.0 Dashing
echo Hello alvin! ROS 1.0 or ROS 2.0? 1=Melodic 2=Dashing
read ROS
if (($ROS==1));then
source /opt/ros/melodic/setup.bash
echo "Melodic"
elif (($ROS==2));then
source /opt/ros/dashing/setup.bash
echo "Dashing"
else
echo "Non-ROS"

每次打开终端

使用Dashing

ROS2 Dashing安装教程相关推荐

  1. Ubuntu18.04配置 ROS2 dashing+ gazebo9 + Turtlebot3

    Ubuntu18.04配置 ROS2 dashing+ gazebo9 + Turtlebot3 预备工作 1.换源 2.配置Hosts 一.安装ros2 dashing 1. 设置语言环境 2.添加 ...

  2. ROS2 Dashing源码编译和安装

    ROS2 Dashing源码编译和安装 安装前的准备 1 2 3 4 5 官方教程: https://index.ros.org/doc/ros2/Installation/Dashing/Linux ...

  3. ROS2官网安装教程补充

    ROS2官网安装教程补充 1. 问题 1.1. 源慢 1.2. source 1.3. colcon 2. 解决办法 2.1. 源慢 2.2. source 2.3. colcon 1. 问题 按照 ...

  4. ROS2:Humble 教程

    序言 机器人操作系统(ROS:Robot Operating System)是一组用于构建机器人应用程序的软件库和工具.从驱动程序和最先进的算法到强大的开发人员工具,ROS为一个机器人项目提供了所需的 ...

  5. ros2 foxy 安装gazebo11.0

    ros2 foxy 安装时参考了wiki https://index.ros.org/doc/ros2/Installation/Foxy/Linux-Install-Debians/ 然后很惊喜的发 ...

  6. ROS2 Foxy 安装

    悲剧的发现装错版本了... 要求 Ubuntu 20.04(64bit)下载地址:网易开源镜像 支持UTF-8字符集,使用以下命令测试: locale # check for UTF-8sudo ap ...

  7. Fast-DDS库的安装教程

    Fast-DDS库的安装教程 0 序言 1 安装依赖 2 安装Fast-DDS 2.1 编译foonathan_memory_vendor 2.2 编译Fast-CDR 2.3 编译Fast-DDS ...

  8. ros2 -foxy安装cartographer建图定位-- 源码安装 使用

    foxy 的cartographer_ros 和dashing 的兼容 cd  ~/xx__ws/src 安装源码 git clone https://ghproxy.com/https://gith ...

  9. 【网站汇总】安装教程系列

    目录 1.Anaconda 2.Pytorch 3.Tensorflow 4.LaTeX 5.博客搭建 1.Anaconda [CV]Anaconda 安装教程_Fannnnf的博客-CSDN博客 2 ...

最新文章

  1. sybase笔记 2762错误
  2. capdriverconnect 黑色_【中信期货黑色(动力煤)】港口库存低位,结构性矛盾突出——周报20201101...
  3. python编写脚本替换 jar包文件_shell-替换jar包中配置文件脚本
  4. ORACLE TEXT FILTER PREFERENCE(三)
  5. 异步IO\数据库\队列\缓存
  6. c语言(int)x 100,【单选题】下列语句执行后,变量a、c的值分别是( ) int x=182; int a,c;c=x/100;a=x%10;...
  7. Hawq超过最大允许连接数
  8. 听说,那谁谁谁是同性恋?
  9. ios开发循环网络请求_如何简化网络请求接口开发
  10. 微博办公李国庆:急招副总裁,提请股权激励,希望俞渝同意
  11. python 第一章 基础语法
  12. 统计检验P值代表什么及统计显著性检验方法原理
  13. 表格自动填充上一行_如何在Google文档电子表格上使用自动填充[快速提示]
  14. 云服务器防火墙开放端口访问--电信云服务器
  15. Java 统计文件ip_基于zxinc网站ipv6静态数据文件的JAVA查询实现
  16. MySQL - 5.7.31 - winx64 安装教程
  17. mac下sourcetree设置代理
  18. 绕过安卓的唯一机会,可能是利用EMUI中沉睡的AI藏宝图
  19. Kore:开源C语言Web框架
  20. java中Boolean和boolean的区别

热门文章

  1. spring切面注解失效
  2. JavaScript 实现倒计时
  3. python清华源 断流_ADSL断流/断线问题经典分析
  4. 我的世界 服务器 无限载入地形,整合包地形无法正常刷出,在线等
  5. 数据质量管理系统有效清理垃圾数据
  6. Cocos 十年 | 业界大佬齐送祝福,同心至远方
  7. Spark Core 算子总结
  8. 水利水电安全员考试最新多选题库
  9. tarjan模板---求解有向图强连通分量
  10. mini-Imagenet处理