前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在Ubuntu 18.04 LTS安装ROS 2 Bouncy版机器人操作系统

在Ubuntu 18.04 LTS安装ROS 2 Bouncy版机器人操作系统

作者头像
zhangrelay
发布2019-01-23 15:24:54
2.4K0
发布2019-01-23 15:24:54
举报

ROS 1和ROS 2同步开发发行,目前最新ROS 1的版本号为M,而ROS 2的版本号为B,ROS 2 Bouncy正式发布。

目前,ROS packages for Ardent状态为maintained(186);for Bouncy状态为developed(63)。

请等待正式发布。已经正式发布,2018年7月3日。

参考链接:http://www.ros.org/news/2018/07/ros-2-bouncy-bolson-released.html

ROS 2 Bouncy Bolson支持Ubuntu 18.04, Ubuntu 16.04, Mac OS X 10.12, Windows 10。

----ROS 2 Bouncy Bolson发布!----机器翻译----

查看我们的安装说明和教程,并试一试!我们很高兴听到您的反馈和此版本将启用的应用程序!

要了解此版本中的内容,请务必阅读Bouncy发布页面

我们希望在此版本中强调一些功能和改进:

Bouncy Bolson是第二个非beta版本的ROS 2,将支持错误修复和平台更新(特别是关于滚动依赖关系,如Windows和MacOS)一年,支持将于2019年6月结束。虽然我们的目标是将API保持为尽可能稳定,我们无法保证版本之间的100%API兼容性。检查功能页面和ROS 2路线图,以评估ROS 2是否已准备好用于您的应用程序,或者您是否可以从ROS 1切换到ROS 2,因为它将取决于您的用例的确切功能集和要求。

与往常一样,我们邀请您试用新软件,提供反馈,报告错误和建议功能(并提供代码!):https://github.com/ros2/ros2/wiki/Contact我们也邀请您发布你的ROS 2套餐在Bouncy!这是一个教程

我们还想宣布下一个ROS 2版本的名称:Crystal Clemmys

友好的ROS 2团队

----

ROS 1和ROS 2同步学习推荐:

1. 在Ubuntu 16.04中使用ROS 1 Kinetic和ROS 2 Ardent;

2. 在Ubuntu 18.04中使用ROS 1 Melodic和ROS 2 Bouncy。

下面简单介绍一下通过Debian Packages安装ROS 2 Bouncy:

具体内容,推荐参考官网教程:https://github.com/ros2/ros2/wiki/Linux-Install-Debians

根多关于ROS 2的详细内容参考如下:

1:( https://github.com/ros2/ros2/wiki )

2:( https://github.com/fkromer/awesome-ros2 )

请注意:ROS 2 Bouncy对应Ubuntu Bionic(18.04 LTS);ROS 2 Ardent对应Ubuntu Xenial(16.04 LTS)。

1-设置安装源

主要分为如下两步:

1.1

代码语言:javascript
复制
sudo apt update && sudo apt install curl
curl http://repo.ros2.org/repos.key | sudo apt-key add -

----

1.2

代码语言:javascript
复制
sudo sh -c 'echo "deb [arch=amd64,arm64] http://repo.ros2.org/ubuntu/main `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list'

----

图示如下:

----

2-安装ROS 2软件包

同样分为如下两步:

2.1

代码语言:javascript
复制
export ROS_DISTRO=bouncy

----

2.2

旧:

代码语言:javascript
复制
sudo apt update
sudo apt install `apt list "ros-$ROS_DISTRO-*" 2> /dev/null | grep "/" | awk -F/ '{print $1}' | grep -v -e ros-$ROS_DISTRO-ros1-bridge -e ros-$ROS_DISTRO-turtlebot2- | tr "\n" " "`

新:

代码语言:javascript
复制
sudo apt update
sudo apt install `apt list "ros-$ROS_DISTRO-*" 2> /dev/null | \
  grep '/' | awk -F/ '{print $1}' | \
  grep -v -e ros-$ROS_DISTRO-ros1-bridge \
  -e ros-$ROS_DISTRO-turtlebot2- \
  -e "ros-$ROS_DISTRO.*-dbgsym" \
  -e "ros-$ROS_DISTRO-.*opensplice" \
  -e "ros-$ROS_DISTRO-.*connext" | tr '\n' ' '`

----

3-环境设置

ROS 1.0和ROS 2.0并存问题。

代码语言:javascript
复制
source /opt/ros/$ROS_DISTRO/setup.bash

在bash中写选择版本的Code即可,效果如下:

----

4-示例测试

4.1 talker-listener

代码语言:javascript
复制
T1:
ros2 run demo_nodes_cpp talker
T2:
ros2 run demo_nodes_py listener

4.2 help

4.3 Launch

代码语言:javascript
复制
# Copyright 2018 Open Source Robotics Foundation, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""Launch a lifecycle talker and a lifecycle listener."""

import os
import sys
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))  # noqa
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', '..', 'launch'))  # noqa

import launch
import launch.actions
import launch.events

from launch_ros import get_default_launch_description
import launch_ros.actions
import launch_ros.events
import launch_ros.events.lifecycle

import lifecycle_msgs.msg


def main(argv=sys.argv[1:]):
    """Main."""
    ld = launch.LaunchDescription()

    # Prepare the talker node.
    talker_node = launch_ros.actions.LifecycleNode(
        node_name='talker',
        package='lifecycle', node_executable='lifecycle_talker', output='screen')

    # When the talker reaches the 'inactive' state, make it take the 'activate' transition.
    register_event_handler_for_talker_reaches_inactive_state = launch.actions.RegisterEventHandler(
        launch_ros.event_handlers.OnStateTransition(
            target_lifecycle_node=talker_node, goal_state='inactive',
            entities=[
                launch.actions.LogInfo(
                    msg="node 'talker' reached the 'inactive' state, 'activating'."),
                launch.actions.EmitEvent(event=launch_ros.events.lifecycle.ChangeState(
                    lifecycle_node_matcher=launch.events.process.matches_action(talker_node),
                    transition_id=lifecycle_msgs.msg.Transition.TRANSITION_ACTIVATE,
                )),
            ],
        )
    )

    # When the talker node reaches the 'active' state, log a message and start the listener node.
    register_event_handler_for_talker_reaches_active_state = launch.actions.RegisterEventHandler(
        launch_ros.event_handlers.OnStateTransition(
            target_lifecycle_node=talker_node, goal_state='active',
            entities=[
                launch.actions.LogInfo(
                    msg="node 'talker' reached the 'active' state, launching 'listener'."),
                launch_ros.actions.LifecycleNode(
                    node_name='listener',
                    package='lifecycle', node_executable='lifecycle_listener', output='screen'),
            ],
        )
    )

    # Make the talker node take the 'configure' transition.
    emit_event_to_request_that_talker_does_configure_transition = launch.actions.EmitEvent(
        event=launch_ros.events.lifecycle.ChangeState(
            lifecycle_node_matcher=launch.events.process.matches_action(talker_node),
            transition_id=lifecycle_msgs.msg.Transition.TRANSITION_CONFIGURE,
        )
    )

    # Add the actions to the launch description.
    # The order they are added reflects the order in which they will be executed.
    ld.add_action(register_event_handler_for_talker_reaches_inactive_state)
    ld.add_action(register_event_handler_for_talker_reaches_active_state)
    ld.add_action(talker_node)
    ld.add_action(emit_event_to_request_that_talker_does_configure_transition)

    print('Starting introspection of launch description...')
    print('')

    print(launch.LaunchIntrospector().format_launch_description(ld))

    print('')
    print('Starting launch of launch description...')
    print('')

    # ls = LaunchService(argv=argv, debug=True)
    ls = launch.LaunchService(argv=argv)
    ls.include_launch_description(get_default_launch_description(prefix_output_with_name=False))
    ls.include_launch_description(ld)
    return ls.run()


if __name__ == '__main__':
main()

4.4 Run-time Compostion

4.5 image_tools

4.6 tf realtime 稍后补充

4.7 rviz2

4.8 ROS1和ROS2桥接

----

ROS 2 Bouncy使用教程稍后再做补充。

----英文原文----

ROS 2 Bouncy Bolson Released!

By Tully Foote on July 2, 2018 5:43 PM

We're happy to announce the ROS 2 release Bouncy Bolson!

Check out our installation instructions and tutorials and give it a try! We're excited to hear your feedback and the applications that this release will enable!

To get an idea of what's in this release, be sure to read the Bouncy release page.

A few features and improvements we would like to highlight in this release:

Bouncy Bolson is the second non-beta ROS 2 release and will be supported with bug fixes and platform updates (particularly on rolling dependencies like Windows and MacOS) for one year with support ending in June 2019. While we do aim to keep the API as stable as possible, we can't guarantee 100% API compatibility between releases. Check the features page and ROS 2 roadmap to evaluate whether or not ROS 2 is ready to be used for your application or if you can switch from ROS 1 to ROS 2 as it will depend on the exact feature set and requirements of your use case.

As always, we invite you to try out the new software, give feedback, report bugs, and suggest features (and contribute code!): https://github.com/ros2/ros2/wiki/Contact We also invite you to release your ROS 2 packages in Bouncy! Here's a tutorial to do so.

We would also like to announce the name of the next ROS 2 release: Crystal Clemmys

Your friendly ROS 2 Team

P.S. There's still a few days left on the t-shirt campaign.

----

About ROS 2

ROS 2 Tutorials

Advanced

Docker

ROS 2 Demos

ROS 2 Examples

----

ROS 2 Bouncy Bolson (codename 'bouncy'; June 2018)

Welcome to the latest release of ROS 2 software named Bouncy Bolson!

Supported Platforms

This version of ROS 2 is supported on four platforms (see REP 2000):

  • Ubuntu 18.04 (Bionic)
    • Debian packages for amd64 as well as arm64
  • Ubuntu 16.04 (Xenial)
    • no Debian packages but building from source is supported
  • Mac OS X 10.12 (Sierra)
  • Windows 10 with Visual Studio 2017

Binary packages as well as instructions for how to compile from source are provided (see install instructions as well as documentation).

Features

New features in this ROS 2 release
  • New launch system featuring a much more capable and flexible Python API.
  • Parameters can be passed as command line arguments to C++ executables.
  • Static remapping via command line arguments.
  • Various improvements to the Python client library.
  • Support for publishing and subscribing to serialized data.This is the foundation for the upcoming work towards a native rosbag implementation.
  • More command line tools, e.g. for working with parameters and lifecycle states.
  • Binary packages / fat archives support three RMW implementations by default (without the need to build from source):
    • eProsima's FastRTPS (default)
    • RTI's Connext
    • ADLINK's OpenSplice

For an overview of all features available, including those from earlier releases, please see the Features page.

Changes since the Ardent release

Changes since the Ardent Apalone release:

  • The Python package launch has been redesigned.The previous Python API has been moved into a submodule launch.legacy.You can update existing launch files to continue to use the legacy API if a transition to the new Python API is not desired.
  • The ROS topic names containing namespaces are mapped to DDS topics including their namespaces.DDS partitions are not being used anymore for this.
  • The recommended build tool is now colcon instead of ament_tools.This switch has no implications for the code in each ROS 2 package.The install instructions have been updated and the read-the-docs page describes how to map an existing ament_tools call to colcon.
  • The argument order of this rclcpp::Node::create_subscription() signature has been modified.

Known Issues

----

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年06月21日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ROS 2 Bouncy Bolson Released!
  • We're happy to announce the ROS 2 release Bouncy Bolson!
    • About ROS 2
      • ROS 2 Tutorials
        • Advanced
        • Docker
      • ROS 2 Demos
        • ROS 2 Examples
          • ROS 2 Bouncy Bolson (codename 'bouncy'; June 2018)
          • Supported Platforms
          • Features
          • Known Issues
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档