在Ubuntu 18.04 LTS安装ROS 2 Bouncy版机器人操作系统_zhangrelay的博客-程序员秘密

技术标签: ROS Melodic 迷失与救赎  ROS_melodic机器人操作系统  ROS2  ROS2学习笔记与高校课程分享  Bouncy  

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

sudo apt update && sudo apt install curl
curl http://repo.ros2.org/repos.key | sudo apt-key add -
----

1.2

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

export ROS_DISTRO=bouncy
----

2.2

旧:

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" " "`

新:

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并存问题。

source /opt/ros/$ROS_DISTRO/setup.bash

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


----

4-示例测试

4.1 talker-listener

T1:
ros2 run demo_nodes_cpp talker
T2:
ros2 run demo_nodes_py listener



4.2 help



4.3 Launch

# 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!

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

----



版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ZhangRelay/article/details/80762840

智能推荐

群 环 域_西瓜柚子水蜜桃的博客-程序员秘密

群(Group)两个元素二元运算得到一个新元素环(Ring)上tian'jia在阿贝尔群(交换群)

ios审核被拒4.3,马甲包提交_义中的博客-程序员秘密

一. 先说说为什么要制作马甲包 (马甲包应用比较广泛的几种app:金融类,彩票类,付费视频类)①防止app因为违规被苹果下架后"一无所有"付费视频类,彩票类的app多少都会违反苹果的一些规范有被下架的风险,马甲包可以在app被下架的时候顶上去,那什么情况下会被下架呢1.之前审核的时候用到开关,审核过了之后APP的内容和审核时的内容差异较大,苹果复查的时候发现被下架2.用户举报,被...

AVR单片机GCC编程_此间的年少的博客-程序员秘密

Atmel公司的AVR 8位RISC单片机是一种非常普通的单片机.它是一个具有电擦写可编程只读存储器(EEPROM),随机访问存储器(RAM),模数转换器,大量的输入和输出线路,计时器,RS-232通讯接口UART以及其他很多功能的单片集成电路.最好的莫过于在Linux下具有一个可供利用的完整编程环境:你可以采用GCC对这种单片机进行C语言编程.本文我将向你讲述如何安装和使用GCC.我也将

Android四大组件之Service总结_奋斗者Eas的博客-程序员秘密

1、定义Service 中文称 服务,是Android四大组件之一作用:提供需要后台运行的任务(如:复杂计算、下载、音乐播放)特点:后台运行、无界面、生命周期长2、生命周期4个手动调用的方法手动调用方法 作用startService() 启动服务stopService() 关闭服务bindService() 绑定服务unbindService() 解绑服务5个自动调用的方法内部自动调用的方法 作用onCreat() 创建服务onStartCommand() 开始服务onDes

线性回归算法的数学原理_线性回归算法的基本原理_taon1607的博客-程序员秘密

在机器学习中,调用算法是件比较容易的事,但是我们想要将机器学习理解的更加透彻,就必须深刻理解每一种算法背后的数学原理,这对于我们后期调整算法参数,改进算法模型有着非常大的帮助。其实看到这一大长串数学公式,我心里也很绝望,但是没办法呀,为了能深入理解线性回归原理,喝二两白酒也要给自己打打气。下面,我们一步一步去理解线性回归的数学原理。下面是一个银行贷款的案例,银行会根据我们的年龄以及工资来决定我们的可贷款金额。现我们绘制一个拟合平面对该数据集进行拟合。其中X1,X2就是我们的年龄以及工资特征,y是我们的可

【转】一个程序员的顿悟:理想的程序员只比你多了6个一点点_weixin_30337157的博客-程序员秘密

来自: http://www.phpxs.com/post/4338/ 作者 Sandy  我算是靠坑蒙拐骗进了程序员的门,然后一路狂奔。26岁之前几乎没有任何写代码的经验,研究生毕业却意外选择了一家不可能提供培训的初创公司,在每日担忧公司倒闭、害怕被炒鱿鱼以及同事冷落白眼的三重压力下逆流而上,一年半后离职,已是拥有 500万用户产品的后台主程。从前我对计算机技术心怀畏惧,认定技术高人一...

随便推点

UVM-1.1学习(二)——uvm_cmdline_processor-程序员秘密

在由systemverilog搭建的验证环境中,我们可以使用系统函数$value$plusargs来获取仿真时的命令行参数。而在基于UVM的验证环境中,我们可以使用另一种方式来获取仿真参数:uvm_cmdline_processor。uvm_cmdline_processor本质上是一个class,它的继承关系如下:在这个类中,实现了以下两大类的功能:获取仿真参数并存储获取仿真参数来设定部分UVM变量的值(比如verbosities)获取仿真参数并存储实际上,在uvm_cmdline_pr

js求数组中的最大值(reduce方法)_tanmuxue的博客-程序员秘密

window.onload=function () { var a=[1,2,3,4,5]; var sum=a.reduce(function (x,y) { return x>y?x:y }); console.log(sum); /*返回5*/}

NYOJ 456-邮票分你一半(01背包)_凉哈哈的博客-程序员秘密

邮票分你一半时间限制:1000 ms  |  内存限制:65535 KB难度:3题目链接:点击打开链接描述     小珂最近收集了些邮票,他想把其中的一些给他的好朋友小明。每张邮票上都有分值,他们想把这些邮票分成两份,并且使这两份邮票的分值和相差最小(就是小珂得到的邮票分值和与小明的差值最小),现在每张邮票的分值已经知道了,他们已经分好了,你知道最后他们

kivy mysql_Kivy中文显示_weixin_39623671的博客-程序员秘密

【Kivy中文显示】的更多相关文章Win7系统 下载 DroidSansFallback.ttf字体(android设备上自带了) 源代码第一行增加#-*- coding:utf-8 -*- 创建widget值定font_name s …1. kivy中显示中文乱码和提示错误的原因: 编码问题 字体问题 2. 字体问题的解决 可以下载支持中文的字体文件ttf,我这里使用了微软雅黑中文简体msy...

oracle 直方图 使用_长烟慢慢的博客-程序员秘密

直方图(histograms) 默认情况下,在收集表的统计信息信息时,对列信息的收集是FOR ALL COLUMNS SIZE AUTO,这种情况下直方图的信息可能没有收集到,所以可以手工指定收集直方图的信息:  exec DBMS_STATS.GATHER_table_STATS(OWNNAME => 'ICD', TABNAME => 'TAGENTOPRINFO',  MET

Oracle数据库检查语句大全_oracle语句检查_zengwende的博客-程序员秘密

1、检查Oracle实例状态select instance_name,host_name,version,to_char(startup_time,'yyyy-mm-dd hh24:mi') startuptime,status,archiver from v$instance;2、检查数据库连接情况select count(*) from v$session;select s...

推荐文章

热门文章

相关标签