ROS机器人操作系统功能包摘录--(2018.04)
可以编译并改进源码用于公选课研究论文的提交(适用本科一年级-三年级,专业不限)。
1 https://wiki.ros.org/vtec_ros 2 https://github.com/lukscasanova/vtec_ros 。
ROS(Kinetic)软件包由CTI Renato Archer的VisioTec研究小组开发。关于这个组的更多信息可以在这里找到。
点击缩略图观看YouTube上的视频。
这里提供的技术报告描述了底层算法及其工作原理。如果您使用此软件,请使用以下方式引用技术报告:
@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
跟踪图像序列中的平面对象。
camera/image
(sensor_msgs / Image)
来自相机的传入图像流。annotated_image
(sensor_msgs / Image)
用跟踪的图像区域和分数标注的图像流。stabilized_image
(sensor_msgs / Image)
来自图像流的变形图像补丁,它试图与参考图像补丁相匹配。reference_image
(sensor_msgs / Image)
从参考图像文件中提取的参考模板。tracking
(vtec_tracker / TrackingResult)
有关跟踪的信息。包括估计的单应性和光度参数。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项目并安装SDK进行身份验证。你将需要一个谷歌/ Gmail帐户。
Google Cloud SDK的使用需要身份验证。这意味着您需要一个API密钥和一个激活的服务帐户才能使用这些API。
导出 GOOGLE_APPLICATION_CREDENTIALS = ' / path / to / key '
gcloud auth activate-service-account - 密钥文件GOOGLE_APPLICATION_CREDENTIALS
按照此处的步骤使用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节点接收来自Google Cloud Speech API的文本并将其发布到text_topic
(参见config / params.yaml)。这由dialogflow_client节点使用。
text_topic
(std_msgs / String)从Google Cloud Speech API获取文本。
ROS节点从mic_client节点获取文本并将其发送到Dialogflow进行解析。
results_topic
(dialogflow_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团队还推出了机器人混合里程碑4,TSDF实现的智能零件重构,以及新完全集成到ROS顺序凸优化器中的Trajopt。在德克萨斯大学奥斯汀分校核机器人集团 在他们的赫斯基平台上展示了他们改善的移动操控情境感知能力,用户可以“驱动”系统拾取呈现的物体。
最后,SwRI团队介绍并展示了A5平台,该平台是一个移动操作平台,用于在非结构化环境中执行大型飞机上的大量过程。该过程演示了测试面板顶部的打磨。其中包括对可视化本地化和规划的概述。
下午围绕OEM和集成服务提供商进行会谈,包括:
这一系列谈判带来了OEM和服务提供商社区的创新成果。通过与ROS-Industrial团队合作,通过试点和投入生产,Bastian Solutions的概念故事展示了移动解决方案的真正价值主张,以及集成商社区开发的更广泛的ROS功能。
8日上午特色:
马特罗宾逊涵盖了联盟的战略举措,其次是李维阿姆斯壮涵盖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,所有权和社区参与,更简单的恢复手段以及实时诊断。
下午演讲者谈到了旨在通过应用程序开发/实施流程以及整个价值流实现更丰富和更可靠的网络和数据共享/管理的技术:
现在尘埃落定了,这些是来自这个座位的一些观察结果:
与往常一样,我们期待着对该活动的反馈意见,以及如何改进这一活动以及向前发展的活动。我们期待收回在线季度会员会议,因此请密切关注,因为协调和邀请由三位联盟管理人员轮流主持。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接口)进行通信。
目前支持的设备是:
您的PC上需要一个SPI接口才能与设备进行通信。该软件包支持 Devantech的USB-IIS 作为USB-SPI转换器。
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 是一个完整的惯性系统,包括一个三轴陀螺仪和一个三轴加速度计。
您可以使用分线 板 以方便使用。
您需要制作扁平电缆来连接USB-ISS和ADIS16470分线板。该图显示了一个实现。
非常简单的示意图在这里。J1是USB-ISS引脚,J2是ADIS16470分线板上的2mm引脚接头。
注意:您只需连接电源线(3.3V和GND)。它们连接在分线板上。
将您的传感器连接到USB端口。运行启动文件为:
$ roslaunch adi_driver adis16470.launch
您可以在rviz面板中看到ADIS16470分线板的型号。
ADXL345是一款小型,薄型,低功耗,3轴加速度计,高达±16g的高分辨率(13位)测量。此时此设备的支持是实验性的。
----
ROS node on Windows 在windows使用ROS节点
1 https://github.com/Wei1234c/ROS_node_on_Windows
GitHub repo.
Wei Lin 2018-03-16
最近開始接觸 ROS,覺得很有趣,架構上來說和很多分散式的 frameworks 都很類似,有一個 master 或 broker 來做仲介,nodes 之間則是透過 topics/publish/subscribe 的機制來溝通,也有 service 的機制可以做 RPC,官網上有很好的描述:
初看之下,我覺得 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 平台特有資源的時候,也可以發送指令去做一些控制。
而 talker.py
, listener.py
中 都須:
這個流程可以從 talker.py
, listener.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
為了讓 talker.py
, listener.py
能順利執行上述流程,相依的 modules (packages) 還是得從 Linux 上的 ROS 中複製出來 放到 Windows 電腦上,再來只要讓 talker.py
, listener.py
能引用到就好了。
相依的 modules (packages) 有這些 (下圖 "ros" 資料夾之下的項目):
我在 talker.py
, listener.py
的前面 加了一行程式
import config_ros_win
這會引用 config_ros_win.py,而其作用主要是:
在某一台 Linux 的機器上 啟動 ROS core,並記錄其 IP 位址 (例如: 192.168.43.124
)
將 GitHub repo. 的內容 複製到某個資料夾中 (例如 C:\temp)
找到檔案 config_ros_win.py,在其中設定好 ROS_MASTER_URI
變數:
os.environ['ROS_MASTER_URI'] = 'http://192.168.43.124:11311'
開啟一個 terminal 的視窗,cd 到 ...scripts
資料夾 (listener.py
所在之處),執行 python listener.py
C:\...\ROS node on Windows\codes\my_ws\src\ros_win\scripts> python listener.py
開啟另一個 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 實驗。
messages 可以順利傳遞與接收
chatter
範例,如果牽涉到其他的 message type 或功能,相依於原生的 C 碼,可能就不能這樣做了。