ROS(Robot OperatingSystem)是开源的机器人系统平台。使用这个之后,机器人就可以看见东西、测绘、导航,或是以的算法作用于周围的环境当中。假如想要制造复杂的机器人,已经准备好的ROS程序代码就能派上用场。ROS能在限度下运用。这可以透过Raspberry Pi等级的计算机安装。
做为ROS的入门篇我们来看看如何控制伺服机。伺服机的缺点是会尽快遵照指令运转,因此头部常常会突然活动,以至于失去平衡。不过使用ROS之后,就可以进行正弦曲线运动,让机器人保持稳定。由于可以在ROS当中进行这项操作,因此无须改写控制用的程序代码。另外,连接伺服机和ROS的程序代码,以及伺服机的硬件都无须变更。再者,程序代码还可以任意使用。
ROS很适合用在Ubuntu或Debian上,无须编译。建置时要在Linux机器上执行Ubuntu,使用业余用伺服机、Arduino和普通的导线。ROS要在Ubuntu机器上启动,讯息则透过USB传送到Arduino。只要安装二进制的ROS套件,就会在主控台程序(像是gnome-terminal或k*ole)追加以下指令,这样Arduino系统就能辨识ROS函式库。
cd~/sketchbook/libraries
rm-rf ros_lib
rosrunrosserial_arduino make_l ibraries.py .
Arduino的程序
接下来要将程序代码上传到Arduino当中,执行低阶的伺服机控制,以便能从Linux机器操作。这时要以限制范围内的百分比(0.0~1.0)*伺服机的位置。之所以使用百分比而不是写明角度,是因为Arduino的程序代码限制了正确的角度,要避免在*角度时发生冲突。
就如各位所见,使用ROS之后,一般的循环函数就会变得相当简单。循环函数只会订阅(subscribe)数据,任何Arduino循环都一样。设定时要将ROS初始化,将各个ROS讯息订阅者的订阅叫出来。每个订阅者会占据Arduino的RAM,数量取决于要用程序代码做什么,以6个到12个为限。
Servo servo;
void servo_cb( c*t std_msgs::Float32& msg )
{
c*t float min = 45;
c*t float range = 90;
西门子 6ES7972-0AA02-0XA0 中继器
西门子 5SX21-D10 断路器
西门子 6ES7972-0CA23-0XA0 编程线缆
西门子 6ES7272-0AA30-0YA1 显示器
西门子 6GT2001-0BA00 读写器
西门子 6GT2001-0BA00 读写器
西门子 6GT2001-0BA00 读写器
西门子 6ES7214-1BD23-0XB8 继电器
西门子 6ES7133-1BL01-0XB0 模块
西门子 6FC5203-0AF22-0AA2 控制面板
西门子 3NE1820-0 熔断器
西门子 6ES7134-4NB51-0AB0 模块
西门子 6SE6430-2UD33-7EB0 变频器
西门子 6SE6430-2UD33-0DB0 变频器
西门子 6SE6430-2UD32-2DB0 变频器
西门子 6SE6430-2UD31-5CA0 变频器
西门子 6ES7 315-2AG10-0AB0 CPU
西门子 6ES7 321-1BH02-0AA0 模块
西门子 6ES7 322-1BH01-0AA0 模块
西门子 6SE6420 2AD24 0BA1 变频器
西门子 6*6647-0AF11-3AX0 触摸屏TSXP57103M配件TSXP57103M配件TSXP57103M配件
西门子 6SL3120-2TE21-0AA3 驱动器
西门子 6SL3120-1TE23-0AA3 驱动器
西门子 6SL3130-6TE23-6AA3 模块
西门子 6ES7131-4BD01-0AA0 模块
西门子 6ES7132-4BD02-0AA0 模块
西门子 6ES7315-6TH13-0AB0 CPU
西门子 6ES7901-3CB30-0XA0 线缆
西门子 3RW3046-1AB14 软启动器
西门子 6ES7212-1*23-0XB8 模块
西门子 6SN1123-1AB00-0BA1 驱动器