ROS很適合用在Ubuntu或Debian上,無(wú)須編譯。建置時(shí)要在Linux機(jī)器上執(zhí)行Ubuntu,使用業(yè)余用伺服機(jī)、Arduino和普通的導(dǎo)線。ROS要在Ubuntu機(jī)器上啟動(dòng),訊息則透過USB傳送到Arduino。只要安裝二進(jìn)制的ROS套件,就會(huì)在主控臺(tái)程序(像是gnome-terminal或konsole)追加以下指令,這樣Arduino系統(tǒng)就能辨識(shí)ROS函式庫(kù)。
cd~/sketchbook/libraries
rm-rf ros_libIC600PM502RR常規(guī)IC600PM502RR常規(guī)IC600PM502RR常規(guī)

rosrunrosserial_arduino make_l ibraries.py .
Arduino的程序
接下來(lái)要將程序代碼上傳到Arduino當(dāng)中,執(zhí)行低階的伺服機(jī)控制,以便能從Linux機(jī)器操作。這時(shí)要以限制范圍內(nèi)的百分比(0.0~1.0)指定伺服機(jī)的位置。之所以使用百分比而不是寫明角度,是因?yàn)锳rduino的程序代碼限制了正確的角度,要避免在指定角度時(shí)發(fā)生沖突。
就如各位所見,使用ROS之后,一般的循環(huán)函數(shù)就會(huì)變得相當(dāng)簡(jiǎn)單。循環(huán)函數(shù)只會(huì)訂閱(subscribe)數(shù)據(jù),任何Arduino循環(huán)都一樣。設(shè)定時(shí)要將ROS初始化,將各個(gè)ROS訊息訂閱者的訂閱叫出來(lái)。每個(gè)訂閱者會(huì)占據(jù)Arduino的RAM,數(shù)量取決于要用程序代碼做什么,以6個(gè)到12個(gè)為限。
Servo servo;
void servo_cb( const std_msgs::Float32& msg )
{
const float min = 45;
const float range = 90;
float v = msg.data;
if( v > 1 ) v = 1;
if( v < 0 ) v = 0;
float angle = min (range * v);
SIEMENS5136-DNS-200S
SIEMENS6ES7321-1BH01-0AA0模塊
SIEMENS235-0KD22-0XA0
SIEMENS6ES7 214-1AD23-0XB0模塊
SIEMENS6ES7 235-0KD22-0XA0模塊
SIEMENS6ES7 232-0HB22-0XA0模塊
SIEMENS6SE7024-1EP85-0AA1板卡
SIEMENS1FK6083-6AF71-1TH0電機(jī)
SIEMENS3TB40 22-OXMO配件
SIEMENS6ES5466-3LA11輸入模塊
SIEMENS5136-DNS-200S
SIEMENS6ES7151-3AA23-0AB0配件
SIEMENS6ES7151-3BA23-0AB0配件
Siemens3ZX1012-0RT04-1AA1配件
SIEMENS5136-DNS-200S
SIEMENS6AV6542-0CA10-0AX0觸摸屏
SIEMENS3ZX1012-0RT02-1AA1配件
SIEMENS6EP1437-3BA00配件
SIEMENS6EP1437-2BA20配件
SIEMENS6EP1436-3BA00配件
SIEMENS6EP1333-3BA00配件
SIEMENS6ES5095-8MD01CPU模塊
SIEMENS6ES7972-0CB20-0XA0線
SIEMENS6ES7331-7KF02-0AB0模塊
SIEMENS6ES5318-8MB13變頻模塊
SIEMENS6SE7090-OXX84-OKBO板子
SIEMENS6ES7331-7KF02-0AB0模塊
SIEMENS6ES7331-7KF02-0AB0模塊
SIEMENS6EP1436-3BA00模塊