ArbotiX是什么:
ArbotiX是含有一个差速驱动机器人的rviz模拟器,机器人运动及topic数据的3D显示,但不包含物理学引擎。使用ArbotiX控制机械臂非常便捷。
在讲ArbotiX配置文件之前我们来看看机器人模型
这是ros_by_example 2当中的机器人。主要由三部分组成:头部,机械臂和底座
头部关节由上下摇摆关节和左右转向关节组成
机械臂由以下几部分组成:肩关节,肘关节,前臂关节,腕关节,手掌右关节,手掌左关节和夹持器关节
现在我们来看看ArbotiX配置文件
第一部分是一些设置参数,像串行端口,波特率,读写设置和读写速率设置
portbaud
port: /dev/ttyUSB0port指控制器连接的串行端口
baud: 1000000 baud指波特率
rate: 100
sync_write: True 设置为true会使控制器把数据同时发给所有的伺服电机
sync_read: False True只会在ArbotiX控制器才奏效,如果使用的是USB2Dynamixel必须设置为false
read_rate: 20
write_rate: 20
下面是第二部分:使用joints设置伺服电机参数
joints: {
头部左右摇摆关节。id为伺服电机的Dynamixel硬件ID
当发布关节状态时,neutral值由arbotix驱动映射为0弧度。
max_angle:
head_pan_joint:{id: 1, neutral: 512, min_angle: -145, max_angle: 145},
head_tilt_joint:{id: 2, neutral: 512, min_angle: -90, max_angle: 90},
invert:一些电机将会被固定,这样增加的旋转角度在ROS-sense中会产生负的旋转
如果发现一个特定的伺服电机以一个在URDFTrue
right_arm_shoulder_roll_joint: {id: 3, neutral: 512, invert: True},
right_arm_elbow_flex_joint: {id: 4, neutral: 512, min_angle: -90,max_angle: 90},
right_arm_forearm_flex_joint: {id: 5, neutral: 512, min_angle: -90,max_angle: 90},
right_arm_wrist_flex_joint: {id: 6, neutral: 512, min_angle: -90,max_angle: 90},
对于EXMX4096
right_arm_shoulder_pan_joint: {id: 7, ticks: 4096, neutral: 2048,min_angle: -100, max_angle: 100},
right_arm_shoulder_lift_joint: {id: 8, ticks: 4096, neutral: 1024,invert: True},
right_gripper_finger_joint: {id: 9, neutral: 512}
}
第三部分是我们的控制器部分
controllers: {
底座控制。只有当使用一个真实的ArbotiXcontroller来控制电动机驱动和一个差动齿轮驱动的底座的时候才会起作用
当使用一个模拟机器人的时候,最重要的参数是base_frame_id
base_controller:{type: diff_controller, base_frame_id: base_footprint, base_width:0.26, ticks_meter: 4100, Kp: 12, Kd: 12, Ki: 0, Ko: 50, accel_limit:1.0 },
手臂轨迹行为控制,控制多个关节
onboard:如果使用的是USB2Dynamixel控制器,这个参数就必须设置为False。True只对ArbotiX控制器有效这个控制器
action_name:这个参数定义了关节轨迹行为控制器的命名空间。我们在控制器名字后面加上动作名字。就成了一个完整的名门
type:arbotix节点包括2种控制器,这里的follow_controller是管理关节轨迹的
right_arm_controller: {onboard: False, action_name:right_arm_controller/follow_joint_trajectory, type:follow_controller, joints: [right_arm_shoulder_pan_joint,right_arm_shoulder_lift_joint, right_arm_shoulder_roll_joint,right_arm_elbow_flex_joint, right_arm_forearm_flex_joint,right_arm_wrist_flex_joint]},
看了手臂控制器部分,头部控制器部分也就差不多了
head_controller:{onboard: False, action_name:head_controller/follow_joint_trajectory, type: follow_controller,joints: [head_pan_joint, head_tilt_joint]}
}
以上就是ArbotiX配置文件的一些解读。配置好以后我们就能使用ArbotiX控制机器人了。
当然了有一点需要说明的是:在写配置文件时需要注意的是yaml语言不支持table,只能使用空格。