做為ROS的入門篇我們來看看如何控制伺服機。伺服機的缺點是會盡快遵照指令運轉,因此頭部常常會突然活動,以至于失去平衡。不過使用ROS之后,就可以進行正弦曲線運動,讓機器人保持穩(wěn)定。由于可以在ROS當中進行這項操作,因此無須改寫控制用的程序代碼。另外,連接伺服機和ROS的程序代碼,以及伺服機的硬件都無須變更。再者,程序代碼還可以任意使用。
ROS很適合用在Ubuntu或Debian上,無須編譯。建置時要在Linux機器上執(zhí)行Ubuntu,使用業(yè)余用伺服機、Arduino和普通的導線。ROS要在Ubuntu機器上啟動,訊息則透過USB傳送到Arduino。只要安裝二進制的ROS套件,就會在主控臺程序(像是gnome-terminal或konsole)追加以下指令,這樣Arduino系統(tǒng)就能辨識ROS函式庫。IC641SWP710常規(guī)IC641SWP710常規(guī)IC641SWP710常規(guī)
cd~/sketchbook/libraries
rm-rf ros_lib
rosrunrosserial_arduino make_l ibraries.py .
Arduino的程序
接下來要將程序代碼上傳到Arduino當中,執(zhí)行低階的伺服機控制,以便能從Linux機器操作。這時要以限制范圍內的百分比(0.0~1.0)伺服機的位置。之所以使用百分比而不是寫明角度,是因為Arduino的程序代碼限制了正確的角度,要避免在角度時發(fā)生沖突。
就如各位所見,使用ROS之后,一般的循環(huán)函數就會變得相當簡單。循環(huán)函數只會訂閱(subscribe)數據,任何Arduino循環(huán)都一樣。設定時要將ROS初始化,將各個ROS訊息訂閱者的訂閱叫出來。每個訂閱者會占據Arduino的RAM,數量取決于要用程序代碼做什么,以6個到12個為限。
Servo servo;
void servo_cb( co
nst std_msgs::Float32& msg )
A06B-0075-B403 A06B-0373-B076 A06B-6063-H222
A06B-0075-B503 A06B-6064-H202
A06B-0077-B203 A06B-0373-B175 A06B-6064-H308
A06B-0101-B060 A06B-0373-B510 A06B-6064-H315
A06B-0106-B580 A06B-0373-B571 A06B-6066-H233
A06B-0113-B075 A06B-0373-B575 A06B-6066-H244
A06B-0373-B577 A06B-6066-H266
A06B-0113-B077 A06B-0373-B675 A06B-6069-H104
A06B-0113-B078 A06B-0374-B576 A06B-6070-H004
A06B-0113-B079 A06B-0374-B577 A06B-6070-H500
A06B-0113-B175 A06B-0376-B675 A06B-6070-H600
A06B-0113-B178 A06B-0377-B175 A06B-6073-K001
A06B-0115-B275 A06B-0377-B575 A06B-6073-K250
A06B-0116-B075 A06B-0390-B060 A06B-6076-H001
A06B-0116-B203 A06B-0501-B001 A06B-6077-H106
A06B-0116-B204 A06B-0501-B002
本頁產品地址:http://www.apnrx.com/sell/show-8568471.html