黃生:18120764596/微信 廈門圣企機(jī)電設(shè)備有限公司 固話:0592-6081295 QQ:2708880336
淘寶店鋪:http://shop578899473.taobao.com/index.htm
接下來要將程序代碼上傳到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)簡單。循環(huán)函數(shù)只會(huì)訂閱(subscribe)數(shù)據(jù),任何Arduino循環(huán)都一樣。設(shè)定時(shí)要將ROS初始化,將各個(gè)ROS訊息訂閱者的訂閱叫出來。每個(gè)訂閱者會(huì)占據(jù)Arduino的RAM,數(shù)量取決于要用程序代碼做什么,以6個(gè)到12個(gè)為限。
Servo servo;IC200MDD848完整IC200MDD848完整IC200MDD848完整
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);
servo.write(angle);
}
ros::Subscriber
ros::NodeHandle nh;
void setup()
{
servo.attach(SERVOPIN);
nh.initNode();
nh.subscribe(sub);
}
void loop()
A06B-0267-B605
A06B-0757-B200
A06B-6111-H015
A06B-0275-B412
A06B-0758-B401
A06B-0309-B068
A06B-0759-B100
A06B-6111-H022
A06B-0309-B069
A06B-0759-B101
A06B-6111-H026
A06B-0309-B669
A06B-0759-B194
A06B-0310-B001
A06B-0759-B290
A06B-6111-H030
A06B-0310-B101
A06B-0760-B204
A06B-6111-H037
A06B-0310-B561
A06B-0783-B201
A06B-6111-H045
A06B-0310-B565
A06B-0815-B001
A06B-6114-H001
A06B-0310-B567
A06B-0816-B002
A06B-6114-H103
A06B-0312-B064
A06B-0826-B100
A06B-6114-H104
A06B-0312-B065
A06B-0828-B302
A06B-0312-B068
A06B-0829-B201
A06B-6114-H105
A06B-0312-B102
A06B-0829-B302
A06B-0312-B562
A06B-0830-B100
A06B-6114-H106
A06B-0312-B564
A06B-0831-B301
A06B-6114-H205
A06B-0312-B565
A06B-0842-B200
A06B-6114-H206
A06B-0313-B001
A06B-0845-B200
A06B-0846-B100
A06B-6114-H207
A06B-0313-B002
A06B-0848-B100
A06B-6114-H208