微吼云上線多路互動(dòng)直播服務(wù) 加速多場(chǎng)景互動(dòng)直播落地
1690
2025-03-31
----ROS 2 Ardent Apalone發(fā)布----
現(xiàn)在,最常用的ROS indigo或ROS Kinetic等都是1.0時(shí)代的ROS,這個(gè)時(shí)代的ROS有一個(gè)master(roscore)。
歷經(jīng)10年發(fā)展,不斷壯大。那么問(wèn)題來(lái)了為什么會(huì)有ROS 2.0?
要想搞清楚這個(gè)問(wèn)題,需要參考ROS 2.0設(shè)計(jì)網(wǎng)址:http://design.ros2.org/
這里摘錄一段話,選自Why ROS 2.0:
Why not just enhance ROS 1
In principle, the changes described above could be integrated into the existing core ROS code. E.g., new transport technologies could be added to?roscpp?and?rospy. We considered this option and concluded that, given the intrusive nature of the changes that would be required to achieve the benefits that we are seeking, there is too much risk associated with changing the current ROS system that is relied upon by so many people. We want ROS 1 as it exists today to keep working and be unaffected by the development of ROS 2. So ROS 2 will be built as a parallel set of packages that can be installed alongside and interoperate with ROS 1 (e.g., through message bridges).
----
為什么不改進(jìn)完善ROS 1.0?
從本質(zhì)上來(lái)說(shuō),上面描述的更改都可以集成到現(xiàn)有的ROS核心代碼中。如,新的傳輸機(jī)制可以添加到roscpp和rospy中。但是當(dāng)我們考慮到下面問(wèn)題時(shí),就能理解這個(gè)結(jié)論,即這些改進(jìn)和優(yōu)化對(duì)原有系統(tǒng)會(huì)造成入侵式的變化,改變當(dāng)前ROS系統(tǒng)有非常大的風(fēng)險(xiǎn),當(dāng)前有很多功能是開(kāi)發(fā)人員依賴原ROS系統(tǒng)開(kāi)發(fā)的。于是,我們既繼續(xù)維護(hù)ROS 1.0,不受ROS 2.0的影響,同時(shí)進(jìn)行ROS 2.0的設(shè)計(jì)。ROS 2.0與ROS 1.0并行不悖,同時(shí)通過(guò)消息橋接進(jìn)行通信。
----
下面放幾張圖,大家感受一下兩者的差別:
圖1,架構(gòu)圖
Master沒(méi)了,節(jié)點(diǎn)平等了,無(wú)主節(jié)點(diǎn)了。DDS是什么?數(shù)據(jù)分發(fā)服務(wù)。我想到了微軟的DSS(分布式軟件服務(wù))。
圖2,數(shù)據(jù)發(fā)布與訂閱
需要了解更多內(nèi)容,推薦古月居ROS 2.0探索總結(jié)+ROS 1.0和ROS 2.0到底用哪個(gè)呢?
ROS1與ROS2的區(qū)別?http://design.ros2.org/articles/changes.html
ROS 1和ROS 2之間的區(qū)別
本文概述了ROS 2與ROS 1相比所做的更改。
前言
盡可能簡(jiǎn)短地描述每一個(gè)變化,但是給熟悉ROS 1的讀者提供足夠的上下文和理由。如果有更多的外部信息可用(例如其他文章),應(yīng)該將其鏈接到。
某些描述的功能尚不可用,并標(biāo)有?。
平臺(tái)和依賴關(guān)系
平臺(tái)
ROS 1僅在Ubuntu上進(jìn)行CI測(cè)試。社區(qū)在其他Linux版本以及OS X上積極支持。
ROS 2目前在Ubuntu Xenial,OS X El Capitan以及Windows 10上進(jìn)行了CI測(cè)試和支持(請(qǐng)參閱ci.ros2.org)。
語(yǔ)言
ROS 1的核心是針對(duì)C ++ 03,并沒(méi)有在其API中使用C ++ 11功能。ROS 2廣泛使用C ++ 11,并使用C ++ 14的某些部分。在未來(lái),ROS 2可能會(huì)開(kāi)始使用C ++ 17,只要它在所有主要平臺(tái)上受支持。
ROS 1是針對(duì)Python 2. ROS 2至少需要Python版本3.5。
重用現(xiàn)有的中間件
ROS 1使用自定義序列化格式,自定義傳輸協(xié)議以及自定義中央發(fā)現(xiàn)機(jī)制。ROS 2有一個(gè)抽象的中間件接口,通過(guò)它提供序列化,傳輸和發(fā)現(xiàn)。目前這個(gè)接口的所有實(shí)現(xiàn)都是基于DDS標(biāo)準(zhǔn)的。這使得ROS 2能夠提供各種服務(wù)質(zhì)量的策略,從而改善通過(guò)不同網(wǎng)絡(luò)的通信。
建立系統(tǒng)
有關(guān)構(gòu)建系統(tǒng)的更多信息,請(qǐng)參見(jiàn)柔夷花序文章。
支持CMake旁邊的其他構(gòu)建系統(tǒng)
每個(gè)ROS包都是一個(gè)CMake項(xiàng)目。在ROS 2中,可以輕松地支持其他構(gòu)建系統(tǒng)。現(xiàn)在構(gòu)建工具支持CMake旁邊的純Python包。
Python包
在ROS 1中,使用Python代碼的軟件包只能使用setup.py文件中可用功能的一小部分,因?yàn)閟etup.py文件是由CMake內(nèi)的自定義邏輯處理的。在ROS 2中,一個(gè)Python包可以使用setup.py文件中的任何東西,例如入口點(diǎn),因?yàn)樗鼈儽徽{(diào)用python3 setup.py install。
環(huán)境設(shè)置
在ROS 1中,構(gòu)建工具會(huì)生成腳本,這些腳本必須來(lái)源以便在能夠使用構(gòu)建的ROS軟件包之前設(shè)置環(huán)境。這種方法只有在使用ROS特定的構(gòu)建工具構(gòu)建ROS包時(shí)才有效。
在ROS 2中,環(huán)境設(shè)置分為特定于包的腳本和特定于工作空間的腳本。每個(gè)軟件包都提供了必要的腳本,使其在構(gòu)建后可用。構(gòu)建工具只調(diào)用特定于工作空間的腳本,然后調(diào)用特定于包的腳本。
沒(méi)有非隔離的構(gòu)建
在ROS 1中,可以在單個(gè)CMake上下文中構(gòu)建多個(gè)包。雖然這加快了構(gòu)建步驟,但是每個(gè)包都需要確保正確定義了交叉包目標(biāo)依賴關(guān)系。另外所有的軟件包共享相同的命名空間,導(dǎo)致目標(biāo)名稱沖突等。
在ROS 2中,只支持隔離的構(gòu)建,即每個(gè)包都是獨(dú)立構(gòu)建的。安裝空間可以是隔離的或合并的。
沒(méi)有開(kāi)發(fā)空間
在ROS 1中,可以在不安裝包的情況下構(gòu)建包。從開(kāi)發(fā)空間與源空間結(jié)合起來(lái),系統(tǒng)已經(jīng)可以使用。但是每個(gè)軟件包都必須積極支持開(kāi)發(fā)空間,例如環(huán)境鉤子和CMake代碼。
在ROS 2中,必須先安裝一個(gè)軟件包,然后才能使用它。
ROS 1中的開(kāi)發(fā)空間的一個(gè)原因是使開(kāi)發(fā)人員能夠更改文件,例如Python代碼或啟動(dòng)文件,并直接使用修改后的代碼,而無(wú)需重新編譯軟件包。在ROS 2中保留了這個(gè)好處,可以選擇性地用符號(hào)鏈接替換安裝步驟中的復(fù)制操作。
支持catkin_simple用例
在ROS 1中,包c(diǎn)atkin_simple旨在使編寫(xiě)ROS包的CMake代碼變得更容易。在許多情況下,它不能實(shí)現(xiàn)這個(gè)目標(biāo),這通常是由于像開(kāi)發(fā)空間這樣的支持功能所必需的設(shè)計(jì)的限制。
在ROS 2中,CMake API進(jìn)行了重組,以支持這個(gè)用例。
對(duì)沒(méi)有清單的軟件包的最小支持
在ROS 1中,構(gòu)建系統(tǒng)只考慮具有清單文件的包。在ROS 2中,可以在沒(méi)有清單文件的文件夾中檢測(cè)具有支持的構(gòu)建系統(tǒng)的包。如果軟件包遵循慣例,甚至有可能檢測(cè)到一些缺失的元信息(如依賴關(guān)系)。
消息,服務(wù)
有關(guān)更多信息,請(qǐng)參閱ROS接口定義文章。
C ++中的分隔名稱空間
在ROS 1中,.msg和.srv文件可以具有相同的名稱,但生成的代碼會(huì)發(fā)生沖突。請(qǐng)求和響應(yīng)部分的服務(wù)也是如此。
在ROS 2中,生成的代碼使用單獨(dú)的名稱空間來(lái)保證它是無(wú)沖突的。
Python中的同名
為消息和服務(wù)生成的Python代碼當(dāng)前在ROS 1和ROS 2中使用相同的模塊和類(lèi)名稱。因此,它們不能在單個(gè)應(yīng)用程序中導(dǎo)入。如果需要,這個(gè)決定可能會(huì)被重新審視。
消息定義中的可選默認(rèn)值
在ROS 2中,消息中的原始值現(xiàn)在可以具有默認(rèn)值,在消息構(gòu)建時(shí)設(shè)置。非原始字段(即字符串?dāng)?shù)組,嵌套消息)的默認(rèn)值不可能(?)。
數(shù)組和字符串的可選上限
為了計(jì)算消息在內(nèi)存中的最大大小,這是必要的,這允許用動(dòng)態(tài)大小預(yù)分配消息。這對(duì)性能和實(shí)時(shí)用例很有用。
統(tǒng)一持續(xù)時(shí)間和時(shí)間類(lèi)型
在ROS 1中,持續(xù)時(shí)間和時(shí)間類(lèi)型是在客戶端庫(kù)中定義的。數(shù)據(jù)結(jié)構(gòu)的成員名稱在C ++(sec,nsec)和Python(secs,nsecs)中是不同的。
在ROS 2中,這些類(lèi)型被定義為消息,因此在不同的語(yǔ)言中是一致的。
從標(biāo)題消息中刪除序列字段
該領(lǐng)域已被棄用了很長(zhǎng)一段時(shí)間,并沒(méi)有在ROS 1中一貫設(shè)置。
客戶端庫(kù)
跨語(yǔ)言
目前ROS 2不支持主題名稱中的命名空間。這主要是由于DDS主題名稱中有效字符的限制。一個(gè)設(shè)計(jì)文檔描述了如何在未來(lái)應(yīng)該加入。
在ROS 1中,關(guān)于ROS圖的所有信息都必須從主站查詢。在ROS 2中,更改將發(fā)布,例如,如果參數(shù)已更改,則會(huì)發(fā)出通知。
在ROS 1中,每個(gè)節(jié)點(diǎn)通常都有自己的主要功能。在ROS 2中,建議從具有生命周期的組件中繼承子類(lèi)。
生命周期可以被像roslaunch這樣的工具用來(lái)以確定性的方式啟動(dòng)一個(gè)由許多組件組成的系統(tǒng)(?)。
有關(guān)更多信息,請(qǐng)參閱節(jié)點(diǎn)生命周期文章。
在ROS 1中,全局參數(shù)和節(jié)點(diǎn)特定的動(dòng)態(tài)重新配置參數(shù)是兩個(gè)單獨(dú)的概念。在ROS 2中,正在使用統(tǒng)一的方法。它類(lèi)似于動(dòng)態(tài)重新配置,名為“全局參數(shù)服務(wù)器”(?)的節(jié)點(diǎn)將接受無(wú)條件設(shè)置值的請(qǐng)求。在ROS 1中,所有這些信息都需要被調(diào)查,因?yàn)镽OS 2的變化將被公布以通知其他實(shí)體。
欲了解更多信息,請(qǐng)參閱參數(shù)設(shè)計(jì)文章。
ROS 2目前沒(méi)有行動(dòng)的概念。它將在未來(lái)作為可搶占服務(wù)器和反饋發(fā)布者的組合加入。
在ROS 1中,開(kāi)發(fā)人員只能選擇單線程執(zhí)行或多線程執(zhí)行。在ROS 2中,更多的粒度執(zhí)行模型可以在C ++中使用(例如跨越多個(gè)節(jié)點(diǎn)),并且自定義執(zhí)行器可以輕松實(shí)現(xiàn)。對(duì)于Python來(lái)說(shuō),執(zhí)行模型還沒(méi)有實(shí)現(xiàn)。
在ROS 1中,節(jié)點(diǎn)和主題只能在啟動(dòng)時(shí)重新映射。在ROS 2中,對(duì)重映射的支持尚未實(shí)現(xiàn)(?)。目標(biāo)是啟用重新映射以及別名,不僅在啟動(dòng)時(shí)間,而且在運(yùn)行時(shí)。
在ROS 1中,節(jié)點(diǎn)名稱是唯一的,當(dāng)啟動(dòng)具有相同名稱的新節(jié)點(diǎn)時(shí),通過(guò)關(guān)閉現(xiàn)有節(jié)點(diǎn)來(lái)強(qiáng)制實(shí)施。在ROS 2中,節(jié)點(diǎn)名稱的唯一性還沒(méi)有被強(qiáng)制執(zhí)行。
C和C ++
ROS 1不支持編寫(xiě)實(shí)時(shí)代碼,而是依賴于Orocos等外部框架。在ROS 2中,當(dāng)使用合適的RTOS和仔細(xì)編寫(xiě)的用戶代碼時(shí),可以編寫(xiě)實(shí)時(shí)節(jié)點(diǎn)。
C ++
在ROS 1中,節(jié)點(diǎn)和節(jié)點(diǎn)的API是不同的,并且需要開(kāi)發(fā)者在編程時(shí)決定節(jié)點(diǎn)到進(jìn)程的映射。在ROS 2中,建議將每個(gè)組件編譯成一個(gè)共享庫(kù),然后可以在單獨(dú)的進(jìn)程中加載 它,或與其他組件(如ROS 1 nodelets)共享相同的進(jìn)程。這使得可以在部署時(shí)選擇流程布局。
在ROS 1中,不可能在一個(gè)進(jìn)程中創(chuàng)建多個(gè)節(jié)點(diǎn)。這是由于API本身,也是由于內(nèi)部的實(shí)施決定。在ROS 2中,可以在一個(gè)進(jìn)程中創(chuàng)建多個(gè)節(jié)點(diǎn)。
工具
roslaunch(?)
在ROS 1中,roslaunch文件是用XML定義的,功能非常有限。在ROS 2中,啟動(dòng)文件是用Python編寫(xiě)的,可以使用更復(fù)雜的邏輯,如條件等。當(dāng)前狀態(tài)只提供最小的功能來(lái)運(yùn)行使用多個(gè)進(jìn)程的測(cè)試。
資源查找
在ROS 1中,通過(guò)基于ROS_PACKAGE_PATH搜索文件系統(tǒng)來(lái)查找各種資源(包,消息,插件等)。當(dāng)ROS_PACKAGE_PATH中的樹(shù)很大時(shí),這可能導(dǎo)致性能較差,并且緩存產(chǎn)生不一致的狀態(tài)。
在ROS 2中,資源可以在編譯時(shí)在索引處注冊(cè),然后在運(yùn)行時(shí)被有效查詢。有關(guān)更多信息,請(qǐng)參閱資源索引的文檔。
打包
ABI版本控制(?)
由于它假定ABI不兼容,ROS 1重建所有下游軟件包。為了避免這種大的開(kāi)銷(xiāo),ROS 2包應(yīng)該能夠聲明它的ABI,以盡可能避免重建下游包。
Windows二進(jìn)制包(?)
ROS 1只能從Windows上的源代碼(也只適用于幾個(gè)ROS軟件包,不受支持)構(gòu)建。ROS 2將提供基于Chocolatey的二進(jìn)制包。
~~~~
~~~~
小烏龜動(dòng)起來(lái)
relaybot@relaybot-desktop:~$ rosnode list
/ros_bridge
/rosout
/turtlesim
relaybot@relaybot-desktop:~$ ros2 node list
teleop_turtle
ros_bridge
ros_bridge
teleop_turtle
relaybot@relaybot-desktop:~$ ros2 topic list
/color_sensor
/parameter_events
/pose
/turtle1/cmd_vel
relaybot@relaybot-desktop:~$ rostopic list
/rosout
/rosout_agg
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose
$ ros2 run ros1_bridge dynamic_bridge
Created 2 to 1 bridge for service /clear
Created 2 to 1 bridge for service /reset
created 2to1 bridge for topic '/turtle1/cmd_vel' with ROS 2 type 'geometry_msgs/Twist' and ROS 1 type ''
[INFO] [ros1_bridge]: Passing message from ROS 2 ROS2_T to ROS 1 ROS1_T (showing msg only once per type) (ros2_callback() at /tmp/binarydeb/ros-r2b3-ros1-bridge-0.0.3/include/ros1_bridge/factory.hpp:144)
下面介紹一下ROS 2.0的安裝和使用
官方wiki: https://github.com/ros2/ros2/wiki
這里有一點(diǎn)需要特別說(shuō)明,ROS 2.0是支持Linux,Mac OS X和Windows,但仍然是使用Ubuntu最方便。
安裝過(guò)程比較簡(jiǎn)單,直接使用Debian包即可,簡(jiǎn)單說(shuō)一下,參考鏈接:https://github.com/ros2/ros2/wiki/Installation
設(shè)置安裝源:
sudo apt update && sudo apt install curl
curl http://repo.ros2.org/repos.key | sudo apt-key add -
sudo sh -c 'echo "deb http://repo.ros2.org/ubuntu/main xenial main" > /etc/apt/sources.list.d/ros2-latest.list'
安裝ROS 2.0軟件包:
sudo apt update
sudo apt install `apt list ros-r2b3-* 2> /dev/null | grep "/" | awk -F/ '{print $1}' | grep -v -e ros-r2b3-ros1-bridge -e ros-r2b3-turtlebot2- | tr "\n" " "`
環(huán)境配置:
source /opt/ros/r2b3/setup.bash
如果需要與ROS 1.0通信
sudo apt update
sudo apt install ros-r2b3-ros1-bridge ros-r2b3-turtlebot2-*
具體安裝請(qǐng)參考英文原版網(wǎng)址。
----
下面我們來(lái)測(cè)試一下ROS 2.0。
老方法在一個(gè)終端發(fā)送消息,另一個(gè)終端接受消息:
ros2 run demo_nodes_cpp talker
ros2 run demo_nodes_py listener
發(fā)布TF數(shù)據(jù):
ros2 run tf2_ros static_transform_publisher -- 1 2 3 0.5 0.1 -1.0 foo bar
ros2 run tf2_ros tf2_echo -- foo bar
測(cè)試USB攝像頭:
ros2 run image_tools cam2image
ros2 run image_tools showimage
----
ROS 1.0和ROS 2.0的示例:
1. 簡(jiǎn)單的發(fā)布和訂閱
需要四個(gè)終端,需要注意環(huán)境配置:
2.? 圖像傳輸
3. 服務(wù)
ros2.0的命令與ros1.0保持了比較好的兼容性。示例如下:
relaybot@relaybot-desktop:~$ ros2 pkg executables
amcl amcl
astra_camera astra_camera_node
astra_camera create_udev_rules
cartographer_ros cartographer_node
composition api_composition
composition api_composition_cli
composition dlopen_composition
composition linktime_composition
composition manual_composition
demo_nodes_cpp add_two_ints_client
demo_nodes_cpp add_two_ints_client_async
demo_nodes_cpp add_two_ints_server
demo_nodes_cpp allocator_tutorial
demo_nodes_cpp imu_listener
demo_nodes_cpp list_parameters
demo_nodes_cpp list_parameters_async
demo_nodes_cpp listener
demo_nodes_cpp listener_best_effort
demo_nodes_cpp one_off_timer
demo_nodes_cpp parameter_events
demo_nodes_cpp parameter_events_async
demo_nodes_cpp parameter_node
demo_nodes_cpp reuse_timer
demo_nodes_cpp ros2param
demo_nodes_cpp set_and_get_parameters
demo_nodes_cpp set_and_get_parameters_async
demo_nodes_cpp talker
demo_nodes_cpp_native talker
demo_nodes_py add_two_ints_client
demo_nodes_py add_two_ints_client_async
demo_nodes_py add_two_ints_server
demo_nodes_py listener
demo_nodes_py listener_qos
demo_nodes_py talker
demo_nodes_py talker_qos
depthimage_to_laserscan depthimage_to_laserscan_node
depthimage_to_pointcloud2 depthimage_to_pointcloud2_node
dummy_map_server dummy_map_server
dummy_sensors dummy_joint_states
dummy_sensors dummy_laser
examples_rclcpp_minimal_client client_main
examples_rclcpp_minimal_composition composition_composed
examples_rclcpp_minimal_composition composition_publisher
examples_rclcpp_minimal_composition composition_subscriber
examples_rclcpp_minimal_publisher publisher_lambda
examples_rclcpp_minimal_publisher publisher_member_function
examples_rclcpp_minimal_publisher publisher_not_composable
examples_rclcpp_minimal_service service_main
examples_rclcpp_minimal_subscriber subscriber_lambda
examples_rclcpp_minimal_subscriber subscriber_member_function
examples_rclcpp_minimal_subscriber subscriber_not_composable
examples_rclcpp_minimal_timer timer_lambda
examples_rclcpp_minimal_timer timer_member_function
examples_rclpy_executors callback_group
examples_rclpy_executors composed
examples_rclpy_executors custom_callback_group
examples_rclpy_executors custom_executor
examples_rclpy_executors listener
examples_rclpy_executors talker
examples_rclpy_minimal_client client
examples_rclpy_minimal_client client_async
examples_rclpy_minimal_client client_async_member_function
examples_rclpy_minimal_publisher publisher_local_function
examples_rclpy_minimal_publisher publisher_member_function
examples_rclpy_minimal_publisher publisher_old_school
examples_rclpy_minimal_service service
examples_rclpy_minimal_service service_member_function
examples_rclpy_minimal_subscriber subscriber_lambda
examples_rclpy_minimal_subscriber subscriber_member_function
examples_rclpy_minimal_subscriber subscriber_old_school
image_tools cam2image
image_tools showimage
intra_process_demo camera_node
intra_process_demo cyclic_pipeline
intra_process_demo image_pipeline_all_in_one
intra_process_demo image_pipeline_with_two_image_view
intra_process_demo image_view_node
intra_process_demo two_node_pipeline
intra_process_demo watermark_node
joy joy_node
lifecycle lifecycle_listener
lifecycle lifecycle_service_client
lifecycle lifecycle_service_client_py.py
lifecycle lifecycle_talker
map_server map_saver
map_server map_server
robot_state_publisher robot_state_publisher
ros1_bridge dynamic_bridge
ros1_bridge ros1_bridge_generate_factories
ros1_bridge parameter_bridge
ros1_bridge simple_bridge
ros1_bridge simple_bridge_1_to_2
ros1_bridge simple_bridge_2_to_1
ros1_bridge static_bridge
ros1_bridge test_ros2_client_cpp
ros1_bridge test_ros2_server_cpp
rosidl_generator_c rosidl_generator_c
rosidl_generator_cpp rosidl_generator_cpp
rosidl_generator_dds_idl rosidl_generator_dds_idl
rosidl_generator_py rosidl_generator_py
rosidl_typesupport_c rosidl_typesupport_c
rosidl_typesupport_cpp rosidl_typesupport_cpp
rosidl_typesupport_introspection_c rosidl_typesupport_introspection_c
rosidl_typesupport_introspection_cpp rosidl_typesupport_introspection_cpp
rosidl_typesupport_opensplice_c rosidl_typesupport_opensplice_c
rosidl_typesupport_opensplice_cpp rosidl_typesupport_opensplice_cpp
teleop_twist_joy teleop_node
teleop_twist_keyboard teleop_twist_keyboard
tf2_ros static_transform_publisher
tf2_ros tf2_echo
tf2_ros tf2_monitor
topic_monitor data_publisher
topic_monitor launch_depth_demo
topic_monitor launch_fragmentation_demo
topic_monitor launch_reliability_demo
topic_monitor topic_monitor
turtlebot2_drivers dumb_teleop
turtlebot2_drivers kobuki_node
turtlebot2_follower follower
relaybot@relaybot-desktop:~$
relaybot@relaybot-desktop:~$ ros2 topic -h
usage: ros2 topic [-h] [--include-hidden-topics]
Call `ros2 topic
Various topic related sub-commands
optional arguments:
-h, --help show this help message and exit
--include-hidden-topics
Consider hidden topics as well
Commands:
echo Output messages from a topic
list Output a list of available topics
pub Publish a message to a topic
Call `ros2 topic
relaybot@relaybot-desktop:~$ ros2 topic list
/parameter_events
relaybot@relaybot-desktop:~$ ros2 node list
ros_bridge
relaybot@relaybot-desktop:~$
relaybot@relaybot-desktop:~$ ros2 --help
usage: ros2 [-h] Call `ros2
ros2 is an extensible command-line tool for ROS 2.
optional arguments:
-h, --help show this help message and exit
Commands:
daemon Various daemon related sub-commands
msg Various msg related sub-commands
node Various node related sub-commands
pkg Various package related sub-commands
run Run a package specific executable
security Various security related sub-commands
service Various service related sub-commands
srv Various srv related sub-commands
topic Various topic related sub-commands
Call `ros2
資料匯總:
------
機(jī)器人操作系統(tǒng)(ROS)的2.0時(shí)代(ROS 2.0)
一個(gè)精心設(shè)計(jì)的機(jī)器人操作系統(tǒng)2.0版本(ROS 2.0)資源和庫(kù)的列表
內(nèi)容
軟件
文檔
圖書(shū)
培訓(xùn)
演講
軟件包(或庫(kù))
示例
examples / rclcpp?- C ++示例。
examples / rclpy?- Python示例。
rcljava_examples?- 包含如何使用rcljava API的示例的軟件包。
ros2_talker_android,ros2_listener_android?- 用于ROS2 Java綁定的Android應(yīng)用程序示例。
“系統(tǒng)”綁定
rclandroid?- Android API for ROS2。
rclnodejs?- Node.js版本的ROS2.0客戶端。
riot-ros2?- 該項(xiàng)目使ROS2能夠使用RIOT操作系統(tǒng)在微控制器上運(yùn)行。
客戶端庫(kù)
rclcpp?- C ++的ROS客戶端庫(kù)。
rclpy?- 用于Python的ROS客戶端庫(kù)。
rcljava?- 用于Java的ROS客戶端庫(kù)。
rclobjc?- Objective C的ROS客戶端庫(kù)(適用于iOS)。
rclc?- C的ROS客戶端庫(kù)
rosserial?- 用于小型嵌入式設(shè)備(如Arduino)的ROS客戶端庫(kù)。
IDL生成器
rosidl_generator_java?- 在Java中生成ROS接口。
rosidl_generator_objc?- 生成Objective C中的ROS接口。
rosidl_generator_cpp?- 在C ++中生成ROS接口。
rosidl_generator_py?- 在Python中生成ROS接口。
rosidl_generator_c?- 在C中生成ROS接口
RMW(ROS中間件接口)
rmw?- 包含ROS中間件API。
rmw_connext_cpp?- 使用C ++中的RTI Connext靜態(tài)代碼生成實(shí)現(xiàn)ROS中間件接口。
rmw_fastrtps_cpp?- 使用C ++中的eProsima FastRTPS靜態(tài)代碼實(shí)現(xiàn)ROS中間件界面。
rmw_opensplice_cpp?- 使用C ++中的PrismTech OpenSplice靜態(tài)代碼生成實(shí)現(xiàn)ROS中間件界面。
編譯系統(tǒng)(Linux)
meta-ros2?- 用于OpenEmbedded Linux的ROS 2層
編譯系統(tǒng)(ROS2)
ament_cmake_export_jars?- 將Java歸檔導(dǎo)出到CMake中的ament構(gòu)建系統(tǒng)中的下游程序包的功能。
rmw_implementation_cmake?- 可以發(fā)現(xiàn)和枚舉可用實(shí)現(xiàn)的CMake功能。
文檔
ROS 2設(shè)計(jì)?- 指導(dǎo)和指導(dǎo)ROS 2.0設(shè)計(jì)工作的文章。
ROS 2文檔(概述)?- 有關(guān)ROS 2內(nèi)部設(shè)計(jì)和組織的詳細(xì)信息。
ROS 2維基?- 入口點(diǎn)用于查找有關(guān)ROS 2的所有信息。
圖書(shū)
沒(méi)有書(shū)出版
培訓(xùn)班
還沒(méi)有課程
演講
ROSCon 2017
推出用于機(jī)器人未來(lái)開(kāi)發(fā)的ROS 2.0愿景 ? ?幻燈片?視頻
ROS2改進(jìn)和細(xì)節(jié)調(diào)整 ? ?幻燈片?視頻
在Turtlebot2使用ROS2實(shí)現(xiàn)SLAM ? ?幻燈片?視頻
使用ROS2進(jìn)行基于視覺(jué)的操作與工業(yè)機(jī)器人 ? ?幻燈片?視頻
ROSCon 2016
ROS 2更新 ? ?幻燈片?視頻
評(píng)估ROS2通信層的擴(kuò)展性 ? ?幻燈片?視頻
ROSCon 2015
“小”嵌入式系統(tǒng)上的ROS 2 ? ?幻燈片?視頻
ROS 2狀態(tài) - 演示和背后的技術(shù) ? ?幻燈片?視頻
ROS 2的實(shí)時(shí)性能 ???幻燈片?視頻
------
發(fā)布Ardent Apalone
Chris Lalancette
ROS 2 Ardent Apalone(代號(hào)“ardent”; 2017年12月)
歡迎使用Ardent Apalone的ROS 2軟件的第一個(gè)非beta版本!
支持的平臺(tái)
這個(gè)版本的ROS 2支持三種平臺(tái):
Ubuntu 16.04(Xenial)
Mac OS X 10.12(Sierra)
Windows 10
所有3個(gè)平臺(tái)都提供了二進(jìn)制包以及如何從源代碼編譯的說(shuō)明(請(qǐng)參閱安裝說(shuō)明以及文檔)。
特征
分布式發(fā)現(xiàn),發(fā)布/訂閱,請(qǐng)求/響應(yīng)通信
由C API提供
使用不同的供應(yīng)商實(shí)施:
eProsima的FastRTPS以及凌華的OpenSplice(來(lái)自二進(jìn)制和源代碼)
RTI的Connext(僅來(lái)自源)
許多服務(wù)質(zhì)量的設(shè)置處理非理想的網(wǎng)絡(luò)
DDS安全支持(使用Connext和FastRTPS)
C ++和Python 3客戶端庫(kù)
在C中共享通用代碼來(lái)統(tǒng)一實(shí)現(xiàn)
執(zhí)行模型與節(jié)點(diǎn)分離,可組合的節(jié)點(diǎn)
節(jié)點(diǎn)特定的參數(shù)(僅在C ++ atm中)
生命周期(僅在C ++ atm中)
可選的使用相同API的進(jìn)程內(nèi)通信(僅在C ++中)
消息定義(包含數(shù)組和字符串以及默認(rèn)值)
命令行工具(例如ros2 run)
rviz?與幾個(gè)顯示類(lèi)型(Windows版本可能會(huì)在幾個(gè)星期后)
基于文件系統(tǒng)的資源索引(查詢信息無(wú)遞歸爬行)
pub / sub的實(shí)時(shí)安全代碼路徑(僅兼容DDS實(shí)現(xiàn))
ROS 1和ROS 2之間的橋梁
HSR演示參見(jiàn)Beta 3
Turtlebot演示請(qǐng)參閱Beta 2
有關(guān)更詳細(xì)的說(shuō)明,請(qǐng)參閱功能頁(yè)面。
自Beta 3版本以來(lái)的改進(jìn):
rviz
C ++中消息數(shù)據(jù)結(jié)構(gòu)的不同初始化選項(xiàng)
記錄API改進(jìn),現(xiàn)在也用于演示
用C ++支持不同的時(shí)鐘
Python客戶端庫(kù)中的等待服務(wù)支持
REP 149的實(shí)現(xiàn)草案指定了包清單文件的格式3
已知的問(wèn)題
FastRTPS性能與更大的數(shù)據(jù),如圖像演示
使用Connext,目前不允許具有相同基本名稱但名稱空間不同的兩個(gè)主題具有不同的類(lèi)型(請(qǐng)參見(jiàn)問(wèn)題)。
節(jié)點(diǎn)名稱(例如使用ros2 node list)的列表在某些rmw實(shí)現(xiàn)中不起作用。
在Windows上,嘗試中止使用時(shí),Python啟動(dòng)文件可能會(huì)掛起Ctrl-C(請(qǐng)參閱問(wèn)題)。為了繼續(xù)使用被掛起命令阻塞的shell,可能需要使用進(jìn)程監(jiān)視器來(lái)結(jié)束掛起的Python進(jìn)程。
------
ROS 2 Ardent Apalone發(fā)布
ros2
1
我們很高興宣布ROS 2發(fā)布Ardent Apalone!
安裝說(shuō)明和教程可以在ROS 2 wiki?86上找到。
要了解此版本中的內(nèi)容,請(qǐng)務(wù)必閱讀Ardent頁(yè)面36。
我們希望在此版本中強(qiáng)調(diào)一些功能和改進(jìn):
第一個(gè)非beta版本。
rviz?包括幾個(gè)插件(Windows版本將在幾周后)
C ++中消息數(shù)據(jù)結(jié)構(gòu)的不同初始化選項(xiàng)
記錄API改進(jìn),現(xiàn)在也用于演示
用C ++支持不同的時(shí)鐘
Python客戶端庫(kù)中的等待服務(wù)支持
實(shí)施草案REP 149?6包清單文件的指定格式3
雖然總是有更多的工作要做,但我們還是要考慮幾個(gè)核心組件,以供更廣泛的受眾使用。因此,我們放棄了“beta”標(biāo)簽,并將支持Ardent一年,修復(fù)錯(cuò)誤并保持發(fā)布工作,尤其是在具有滾動(dòng)依賴版本(OS X / Windows)的平臺(tái)上。我們將為ROS 2的新版本定期發(fā)布六個(gè)月的發(fā)布周期。雖然我們的目標(biāo)是盡可能保持API的穩(wěn)定性,但我們不能保證發(fā)布之間的API兼容性為100%。也就是說(shuō),ROS 2是否可以用于您的應(yīng)用程序,或者現(xiàn)在是否可以從ROS 1切換到ROS 2,取決于用例的確切功能集和要求。請(qǐng)檢查功能頁(yè)面21以及路線圖16?了解更多信息。
與往常一樣,我們邀請(qǐng)您嘗試新軟件,提供反饋,報(bào)告錯(cuò)誤,并建議功能(并貢獻(xiàn)代碼!):https://github.com/ros2/ros2/wiki/Contact?1
------
~End~
Python 任務(wù)調(diào)度
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。