ROS机器人操作系统新发布软件包摘录--(2018.03)

ROS机器人操作系统功能包摘录--(2018.04)

可以编译并改进源码用于公选课研究论文的提交(适用本科一年级-三年级,专业不限)。

VisioTec ROS软件包

1 https://wiki.ros.org/vtec_ros 2 https://github.com/lukscasanova/vtec_ros 。


ROS(Kinetic)软件包由CTI Renato Archer的VisioTec研究小组开发。关于这个组的更多信息可以在这里找到

视频示例

点击缩略图观看YouTube上的视频。

  • 基于强度的完整8-DoF单应性视觉追踪
  • 使用仿射6-DoF单应性的基于强度的视觉跟踪

文件和引用

这里提供的技术报告描述了底层算法及其工作原理。如果您使用此软件,请使用以下方式引用技术报告:

@TechReport{nogueira2017,
  author = {Lucas Nogueira and Ely de Paiva and Geraldo Silveira},
  title  = {{VISIOTEC} Intensity-based Homography Optimization Software: Basic Theory and Use Cases},
  number = {CTI-VTEC-TR-01-2017},
  institution = {CTI},
  year = {2017},
  address = {Brazil}
}

安装

这些软件包在ROS Kinetic和Ubuntu 16.04上进行了测试。

依赖

从ROS存储库安装usb_cam驱动程序。

sudo apt-get install ros-kinetic-usb-cam

建立

设置一个ROS工作区。

mkdir -p ~/catkin_ws/src

安装VisioTec库。它是一个独立的cpp库,非ROS。

cd ~/catkin_ws/src
git clone https://github.com/lukscasanova/vtec.git
cd vtec
mkdir build
cd build
cmake ..
make

安装ROS软件包

cd ~/catkin_ws/src
git clone https://github.com/lukscasanova/vtec_ros.git
cd ~/catkin_ws
catkin_make
source devel/setup.bash

节点

ibgho_tracker_node

跟踪图像序列中的平面对象。

订阅主题

发布的主题

参数

  • image_topic (字符串,默认:“usb_cam / image_raw”)

    图像输入主题的名称。

  • bbox_pos_x (int,默认值:200)

    参考图像中感兴趣区域左上角的x坐标。

  • bbox_pos_y (int,默认值:150)

    参考图像中感兴趣区域左上角的y坐标。

  • bbox_size_x (int,默认值:200)

    沿着x方向的感兴趣区域的像素长度。

  • bbox_size_x (int,默认值:200)

    沿y方向的感兴趣区域的像素长度。

  • max_nb_iter_per_level (int,默认值:5)

    每个金字塔等级的最大优化迭代次数。

  • max_nb_pyr_level (int,默认值:2)

    金字塔级别的最大数量。

  • sampling_rate (double,默认值:1.0)

    采样率用于采样优化过程中使用的点。1.0表示使用100%的点数。

  • homography_type (字符串,默认:“完整”)

    指定要由优化算法考虑的单应性类型。选项有:“完整”,“仿射”和“拉伸”。

用法

使用数据集运行

从这里下载数据集:数据集

打开两个终端窗口,并在第一个终端窗口中启动跟踪器节点:

roslaunch vtec_tracker tracker.launch

在另一个终端中,导航到您下载数据集的目录,并使用以下命令播放bagfile:

rosbag play vtec_test_tracker.bag

现在,您应该在RViz中看到使用启动文件中的默认参数进行的跟踪过程。

从现场摄像头运行

打开终端窗口并启动跟踪器节点:

roslaunch vtec_tracker tracker_live.launch

Rviz窗口将随相机图像弹出。在您发出roslaunch命令的终端窗口中,按S键开始追踪。这将在当前帧中选择一个边界框进行跟踪。您可以随时再次S重新开始追踪过程。

资源

错误和功能请求

请使用问题跟踪器报告错误和请求功能


----

Dialogflow_ros

1 http://wiki.ros.org/dialogflow_ros 2 https://github.com/piraka9011/dialogflow_ros

该软件包使用Google Text-To-Speech(TTS)API将结果发送到Google的NLP平台Dialogflow。

更多信息可以在ROS wiki上找到转载于此:

安装

如果你想使用它,在git目录下有一个install.sh脚本,但是,我会在这里一步一步地完成这些步骤。

安装此软件包需要3个主要步骤:克隆dialogflow repo,设置您的Google云项目以及设置Dialogflow。但是,我们需要安装PortAudio,以便我们可以使用PyAudio来获取麦克风数据。

sudo apt-get install portaudio19-dev

克隆回购

通过克隆Github repo来安装所有需求,并在requirements.txt中安装所有的软件包。

CD   / catkin_ws / src目录
git clone https://github.com/piraka9011/dialogflow_ros.git
cd dialogflow_ros
pip install -r requirements.txt

Google Cloud安装程序

按照此处的说明配置您的Google Cloud项目并安装SDK进行身份验证。你将需要一个谷歌/ Gmail帐户。

Google Cloud SDK的使用需要身份验证。这意味着您需要一个API密钥和一个激活的服务帐户才能使用这些API。

  1. 设置一个服务帐户
  2. 以JSON形式下载服务帐户密钥。
  3. 检查您的环境中是否有GOOGLE_APPLICATION_CREDENTIALS。这应该是密钥的路径。
导出 GOOGLE_APPLICATION_CREDENTIALS = ' / path / to / key '
  1. 运行身份验证命令:
gcloud auth activate-service-account  - 密钥文件GOOGLE_APPLICATION_CREDENTIALS

Dialogflow设置

按照此处的步骤使用Dialogflow设置身份验证。记下你的名字,project-id并确保改变config/params.yaml

用法

按照以下步骤正确设置包装。

配置主题

进入config目录并更改params.yaml文件中的以下参数

  • results_topic:(可选)发布结果的主题。
  • project_id:您的Google Speech节点的项目名称。这是您通过Google Cloud安装程序时Google Cloud项目的名称。

启动节点

要启动Dialogflow节点,请运行以下命令:

roslaunch dialogflow_ros dialogflow.launch

ROS节点

mic_client

ROS节点接收来自Google Cloud Speech API的文本并将其发布到text_topic(参见config / params.yaml)。这由dialogflow_client节点使用。

发布的主题

text_topicstd_msgs / String)从Google Cloud Speech API获取文本。

dialogflow_client

ROS节点从mic_client节点获取文本并将其发送到Dialogflow进行解析。

发布的主题

results_topicdialogflow_msgs / DialogflowResult)将与检测到的意图关联的操作,参数(python字典)和履行文本发布为std_msgs / String


----

ROS-Industrial Americas 2018 Annual Meeting Review 年会回顾

包括移动服务机器人、工业机械臂、移动平台、智能驾驶卡车、虚拟现实技术。

ROS-Industrial Americas Consortium Americas(RICA)于2018年3月7日和8日在圣安东尼奥举行了2018年年会,在西南研究所(SwRI)的校园举行。这是一个为期两天的活动,第七届开放给包括旅游和示威,然后由联盟成员8日举行会议,进行路线图练习和项目理念头脑风暴。

KEBA展示了其新的ROS RMI接口集成到他们的控制器中,而UTARI展示了通过微软HoloLens实施的混合现实制造,允许用户融合过程指南,实时检测数据和交叉参考信息,以确定适应性措施和项目结果。

SwRI和ROS-I团队展示了一个将SwRI的人类行为计划的无标记运动捕捉和路径规划相结合以从开放掌握中检索物体的例子西南研究院的应用传感部门展示了他们的Class 8卡车,使所有与会者都可以乘坐,同时获得车辆能力的见解。SwRI的ROS-I团队还推出了机器人混合里程碑4TSDF实现的智能零件重构,以及新完全集成到ROS顺序凸优化器中的Trajopt。德克萨斯大学奥斯汀分校核机器人集团 在他们的赫斯基平台上展示了​​他们改善的移动操控情境感知能力,用户可以“驱动”系统拾取呈现的物体。

最后,SwRI团队介绍并展示了A5平台,该平台是一个移动操作平台,用于在非结构化环境中执行大型飞机上的大量过程。该过程演示了测试面板顶部的打磨。其中包括对可视化本地化和规划的概述。

下午围绕OEM和集成服务提供商进行会谈,包括:

  • 凌华科技神经元:面向工业的ROS2平台 - 浩志林 - 凌华科技
  • 独特的ROS与安全和PLC结合 - Thomas Linde - KEBA
  • 利用ROS-Industrial提供客户价值 - Joe Zoghzoghy - Bastian Solutions

这一系列谈判带来了OEM和服务提供商社区的创新成果。通过与ROS-Industrial团队合作,通过试点和投入生产,Bastian Solutions的概念故事展示了移动解决方案的真正价值主张,以及集成商社区开发的更广泛的ROS功能。

8日上午特色:

  • RIC-美洲重点和即将举行的活动 - Matt Robinson&Levi Armstrong - SwRI
  • RIC欧洲亮点和ROSiN更新 - Mirko Bordignon - Fraunhofer IPA
  • 来自亚太地区的ROSS产业经验教训 - 陈敏玲 - ARTC
  • ROS2就在这里 - 德克托马斯 - Open Robotics
  • ARM学院介绍和更新 - Bob Grabowski - ARM学院
  • Windows IoT&Robotics - Lou Amadio - 微软

马特罗宾逊涵盖了联盟的战略举措,其次是李维阿姆斯壮涵盖RICA技术发展,包括TrajOpt和智能零件重建,Noether,PCL Afront Mesher以及Qt Creator更新和即将发布。

Mirko Bordignon向美洲观众强调了ROSIN倡议周围正在发生的事情,推动了对ROS-I的全球性的认识和促进。Min Ling Chan在亚太地区共同取得进展,以及ML ML集中技术项目的进展和状态,该项目即将进行第二阶段发布。

Open Robotics的Dirk Thomas介绍了ROS2的最新成果,这是我们第一次欢迎ARM研究院的Bob Grabowski。ARM研究所是最新的美国国防部制造创新研究院,这是因为该研究所推出的首届年会。ARM研究所和ROS-I之间的协同作用对于监测前进的步伐非常重要。

上午的会议结束的时候的Windows物联网和Azure的团队是由娄Amadio和Ryan佩德森分别代表展示其目前的战略ROS的支持和他们的计划向前推进,特别是对ROS2。

波音公司的Phil Freeman博士发表了特色主题演讲,“为什么波音公司正在使用ROS-Industrial”。Phil为波音公司ROS-Industrial的价值提供了很好的见解,以及它为在波音波音面临的挑战。这次演讲以示例应用为特色,并传达了这样的信息:在机器人空间内,我们确实处于能力和可访问性方面的临界点。

然后进行了一次路线绘图会议,重点讨论要解决的问题。这个想法是将问题与项目联系起来,然后确定需要开发的能力以满足某些优先问题。问题重点领域是人力资源能力,质量过程和执行力,灵活性/敏捷性和战略/协调。共同的主题是:标准接口,文档,用于工业应用的ROS2,所有权和社区参与,更简单的恢复手段以及实时诊断。

下午演讲者谈到了旨在通过应用程序开发/实施流程以及整个价值流实现更丰富和更可靠的网络和数据共享/管理的技术:

现在尘埃落定了,这些是来自这个座位的一些观察结果:

  1. ROS-Industrial是一个大帐篷,是真正的全球性。每个联盟都需要优化其在本地区的工作方式,以满足其成员需求并最大限度地利用可用资源。
  2. 随着区域资源的优化,其他财团需要监控事态发展,分享信息,并确保ROS-I范围内的所有组织都意识到正在进行的项目,正在进行哪些开发活动,以减少/消除多余的努力。
  3. ROS2在这里,但有工作要做。监控开发进程和提高认知度非常重要,以便开发人员,解决方案提供商和最终用户能够利用ROS2功能在适当的时间和地点补充他们的最终解决方案。
  4. 有许多创新者,解决方案提供商和最终用户在今天以及在某些情况下实现ROS / ROS-工业部署的价值主张一段时间。让我们社交并分享他们的成功故事。
  5. 促进会员参与和社区参与ROS-Industrial远景和执行愿景。我们很高兴能够让初创企业参与进来,同时也改善了我们如何利用我们的大学合作伙伴。通过有效的项目,赞助或ROS-I组织结构中的角色,这些都有助于培养社区感和后续所有权。
  6. 有一个拐点或临界点,对于高级机器人来说,这似乎是一个合适的时间。这个想法还表明,ROS可以跨越机器人流程,但可以通过利用物联网实现更多智能处理,从而使得先进技术的杠杆作用为更多最终用户带来价值似乎越来越大。
  7. 我们一起推进ROS-Industrial。参与,参与,沟通和我们一起成功。

与往常一样,我们期待着对该活动的反馈意见,以及如何改进这一活动以及向前发展的活动。我们期待收回在线季度会员会议,因此请密切关注,因为协调和邀请由三位联盟管理人员轮流主持。ROS-Industrial是一个开放源代码项目,我们寻求开放,并且成为21世纪分享想法和解决行业问题的论坛。

公共日演示可以在每个发言者订单项后面的议程页面中找到。成员日演示文稿包含在会员门户网站后面,可供下载。

感谢您对行业开源自动化的支持!


----

ADI_ROS驱动

1 http://wiki.ros.org/adi_driver 2 https://github.com/tork-a/adi_driver

此封装包含用于Analog Devices(ADI)传感器产品的ROS驱动器节点,主要通过SPI(串行Periferal接口)进行通信。

目前支持的设备是:

  • ADIS16470

    • 宽动态范围的微型MEMS IMU
  • ADXL345

    • 3轴,±2 g /±4 g /±8 g /±16 g数字加速度计
    • 该设备的支持是实验性的

您的PC上需要一个SPI接口才能与设备进行通信。该软件包支持 Devantech的USB-IIS 作为USB-SPI转换器。

USB-IIS

概观

USB-IIS是一款USB转串口/ I2C / SPI转换器,操作简单,体积小,易于使用。您不需要任何额外的库,如libusb或libftdi。该设备可在/ dev / ttyACM *上作为调制解调器设备使用。

有关详细信息 ,请参阅 产品信息和 SPI文档

提示

您需要移除Power link引脚上的跳线块为器件提供3.3V电压。

您需要将您的用户添加到拨出组以访问/ dev / ttyACM *。

$ sudo adduser your_user_name dialout

如果直到/ dev / ttyACM *可用需要几秒钟,则需要将modemmanager卸载为:

$ sudo apt remove modemmanager

ADIS16470

概观

ADIS16470 是一个完整的惯性系统,包括一个三轴陀螺仪和一个三轴加速度计。

您可以使用分线  以方便使用。

连接

您需要制作扁平电缆来连接USB-ISS和ADIS16470分线板。该图显示了一个实现。

非常简单的示意图在这里。J1是USB-ISS引脚,J2是ADIS16470分线板上的2mm引脚接头。

注意:您只需连接电源线(3.3V和GND)。它们连接在分线板上。

BOM

快速开始

将您的传感器连接到USB端口。运行启动文件为:

$ roslaunch adi_driver adis16470.launch

您可以在rviz面板中看到ADIS16470分线板的型号。

ADXL345

概观

ADXL345是一款小型,薄型,低功耗,3轴加速度计,高达±16g的高分辨率(13位)测量。此时此设备的支持是实验性的。


----

ROS node on Windows 在windows使用ROS节点

1 https://github.com/Wei1234c/ROS_node_on_Windows

ROS node on Windows

GitHub repo.

Wei Lin
2018-03-16

chatters

[緣由]


最近開始接觸 ROS,覺得很有趣,架構上來說和很多分散式的 frameworks 都很類似,有一個 master 或 broker 來做仲介,nodes 之間則是透過 topics/publish/subscribe 的機制來溝通,也有 service 的機制可以做 RPC,官網上有很好的描述:

ROS architecture

初看之下,我覺得 ROS 最大的特點是 訊息的交換 雖然是由 master 牽成,但資料最終卻是由 node 和 node 之間直接傳遞的,不需經過 master 或 broker。這點和 Dask 比較像,比起 MQTT 來說更適合傳遞比較大的資料包。

ROS 透過 topics/publish/subscribe 的機制來溝通,也是因為整合上的需求,不同公司,不同開發團隊所發展出來的套件,只要遵循共同的訊息標準,就可以互相傳遞訊息整合在一起,官網上這段話 我覺得很有道理:

... Another benefit of using a message passing system is that it forces you to implement clear interfaces between the nodes in your system, thereby improving encapsulation and promoting code reuse.

但是目前 Windows 的電腦如果想要連上 ROS 網路,都必須透過裝在另外一台 Linux 電腦上的仲介軟體(例如 rosbridge),不是很方便。Windows 生態圈也是有很多資源與需求,如果可以容易地連接到 ROS 網路,整合上就會更順暢一些,例如,我們就可以在 Windows 電腦上收集遠端 ROS 系統中的資料,使用 Windows 平台上特有的軟體來分析與處理,需要指揮一些 Linux/ROS 平台特有資源的時候,也可以發送指令去做一些控制。

[想法]


  • Python 相當程度地把作業系統抽象化了,同樣一段 Python 程式碼在 Linux 和 Windows 上面或許都可以跑。
  • 那麼,把相依的 *.py 碼都複製到 Windows 上面來,或許就可以跑。
  • 從最簡單的試試看,就以 ROS tutorials 上的 chatter 實驗 作為範例,看看能不能讓 Windows 電腦直接連上 ROS 的 topics/publish/subscribe 網路。

[原理與作法]


ROS node 主要流程

而 talker.pylistener.py 中 都須:

  • 先建立一個 ROS client
  • 建立 XMLRPC client, server
  • 透過 XMLRPC 協定,向 ROS master 註冊
  • 然後再建立 publisher 或者 subscriber,向 master 報備,然後開始收發 messages

這個流程可以從 talker.pylistener.py 的 log 檔內容看得出來:

Talker's log:

[rospy.client][INFO] 2018-03-16 21:17:00,447: init_node, name[/talker_5428_1521206220442], pid[5428]
[xmlrpc][INFO] 2018-03-16 21:17:00,448: XML-RPC server binding to 0.0.0.0:0
[xmlrpc][INFO] 2018-03-16 21:17:00,449: Started XML-RPC server [http://DESKTOP-M4SP11C:53279/]
[rospy.impl.masterslave][INFO] 2018-03-16 21:17:00,449: _ready: http://DESKTOP-M4SP11C:53279/
[rospy.registration][INFO] 2018-03-16 21:17:00,450: Registering with master node http://192.168.43.124:11311
[xmlrpc][INFO] 2018-03-16 21:17:00,450: xml rpc node: starting XML-RPC server
[rospy.init][INFO] 2018-03-16 21:17:00,459: ROS Slave URI: [http://DESKTOP-M4SP11C:53279/]
[rospy.init][INFO] 2018-03-16 21:17:00,459: registered with master
[rospy.rosout][INFO] 2018-03-16 21:17:00,459: initializing /rosout core topic
[rospy.rosout][INFO] 2018-03-16 21:17:00,496: connected to core topic /rosout
[rospy.simtime][INFO] 2018-03-16 21:17:00,522: /use_sim_time is not set, will not subscribe to simulated time [/clock] topic
[rosout][INFO] 2018-03-16 21:17:00,838: hello world 1521206220.8385267
[rosout][INFO] 2018-03-16 21:17:00,938: hello world 1521206220.9387927
[rosout][INFO] 2018-03-16 21:17:01,039: hello world 1521206221.0385587
[rospy.internal][INFO] 2018-03-16 21:17:01,055: topic[/rosout] adding connection to [/rosout], count 0
[rosout][INFO] 2018-03-16 21:17:01,143: hello world 1521206221.1438384
[rosout][INFO] 2018-03-16 21:17:01,252: hello world 1521206221.252839
[rosout][INFO] 2018-03-16 21:17:01,338: hello world 1521206221.3388672
[rosout][INFO] 2018-03-16 21:17:01,438: hello world 1521206221.4389257

相依的 modules (packages)

為了讓 talker.pylistener.py能順利執行上述流程,相依的 modules (packages) 還是得從 Linux 上的 ROS 中複製出來 放到 Windows 電腦上,再來只要讓 talker.pylistener.py能引用到就好了。

相依的 modules (packages) 有這些 (下圖 "ros" 資料夾之下的項目):
相依的 modules

環境的建立

我在 talker.pylistener.py 的前面 加了一行程式

import config_ros_win

這會引用 config_ros_win.py,而其作用主要是:

  • 設定一些 ROS node 需要的 環境變數的值
  • 建立 PYTHONPATH 的路徑,讓 ROS node 的 python 程式碼可以找到需要的 modules

[實驗步驟]


1. 啟動 ROS core

在某一台 Linux 的機器上 啟動 ROS core,並記錄其 IP 位址 (例如: 192.168.43.124)

2. 下載範例

將 GitHub repo. 的內容 複製到某個資料夾中 (例如 C:\temp)

3. 設定好 ROS master 的 URI

找到檔案 config_ros_win.py,在其中設定好 ROS_MASTER_URI 變數:

os.environ['ROS_MASTER_URI'] = 'http://192.168.43.124:11311'

4. 啟動 Listener

開啟一個 terminal 的視窗,cd 到 ...scripts 資料夾 (listener.py 所在之處),執行 python listener.py

C:\...\ROS node on Windows\codes\my_ws\src\ros_win\scripts> python listener.py

5. 啟動 Talker

開啟另一個 terminal 的視窗,cd 到 ...scripts 資料夾 (talker.py 所在之處),執行 python talker.py

C:\...\ROS node on Windows\codes\my_ws\src\ros_win\scripts> python talker.py

這樣應該就可以開始發送 messages 給 listener。

[效果]


我用兩台 Windows Home版 的電腦透過 ROS network 做 chatter 實驗。

  • ROS core 跑在中間的那台 Raspberry Pi Zero W 上面
  • 左側電腦上的 ROS node 運行 "Listener"
  • 右側電腦上的 ROS node 運行 "Talker"

messages 可以順利傳遞與接收

ROS chatters on Windows

[其他可能之應用]


  • 用 ROS 建立一個 IoT 系統
  • 用 ROS 建立一個 聊天室
  • 用 ROS 建立一個 併行系統 處理大數據
  • 與其他 Windows 平台上的軟體系統整合

...

[Notes]


  • 目前只有測試過簡單的 chatter 範例,如果牽涉到其他的 message type 或功能,相依於原生的 C 碼,可能就不能這樣做了。
  • 以上純屬個人試驗,不保證其穩定性。

----





猜你喜欢

转载自blog.csdn.net/zhangrelay/article/details/79806631