/head/tilt
/rosout
/rosout_agg
$ rostopic pub -1 /head/tiltstd_msgs/Float32 0.4
1746-OB32发货1746-OB32发货1746-OB32发货
$ rostopic pub -1 /head/tilt std_msgs/Float320.9
这个阶段当中,能够将所有发布数值到ROS的已知方法用在控制伺服机上。假如从0改成1,伺服机就会全速运行。这本来并没有问题,但实际上我们想要逐渐加速以达到全速,然后再逐渐减速,停在目标角度上。假如伺服机骤然运转,机器人的动作就会变得僵硬,让周围的人吓一跳。
Terry和Houndbot都是ROS机器人,以6061个铝合金零件制造而成。项目的目标是要尽量让这些机器人自主运动。
以下的Python脚本程序会监听「/head/tilt/smooth」的讯息,朝「/head/tilt」发布许多讯息,好让伺服机转到目标角度之前慢慢加速,再慢慢延迟旋转。当讯息抵达「/head/tilt/smooth」时一定会呼叫「moveServo_cb」。这个回调函式会从-90到+90度之间每10度产生1个数值,追加到角度数组当中。「sin()」会取这个角度,数值从-1到+1慢慢增加。该数值加1之后,范围就会变成0到+2,再除以2之后, 0到+1的曲线数值数组就完成了。然后再看看m数组当中,每当发布讯息时,就会稍微前进一点,范围在r之内,直到1*r或是全范围为止。
#!/usr/bin/env python
from time import sleep
import numpy as np
import rospy
from std_msgs.msg import Float32
currentPosition = 0.5
pub = None
A06B-0315-B001 A06B-1008-B100 A06B-6134-H302
A06B-1008-B702 A06B-6134-H303
A06B-1012-B100 A06B-6134-K003
A06B-0315-B002 A06B-1012-B102 A06B-6134-K201
A06B-0315-B004 A06B-1040-B200
A06B-0315-B005 A06B-1405-B100 A06B-6140-H006
A06B-0315-B032 A06B-1408-B200 A06B-6140-H011
A06B-0315-B043 A06B-1444-B100 A06B-6140-H026
A06B-0315-B062 A06B-6035-H321 A06B-6140-H030
A06B-0315-B069 A06B-6039-K303 A06B-6140-H037
A06B-0315-B072 A06B-6041-H103 A06B-6140-H045
A06B-0315-B202 A06B-6044-H007 A06B-6140-H055
A06B-0315-B204 A06B-6044-H008 A06B-6141-H006
A06B-0315-B574 A06B-6044-H103 A06B-6141-H011
A06B-0317-B002 A06B-6047-H004 A06B-6141-H022
A06B-0317-B006 A06B-6047-H050 A06B-6141-H026
A06B-0317-B072 A06B-6050-H050 A06B-6141-H030
A06B-0317-B074 A06B-6050-H052 A06B-6141-H037
A06B-0317-B202 A06B-6050-H053
A06B-0317-B274 A06B-6050-H054 A06B-6141-H045