Closed kochigami closed 9 years ago
そもそもトピックはpublishできている(rostopic echo /joint_anglesで確認した)のに手が動かないので、手で使えるのか確認する
setAngles (names, angles, fractionMaxSpeed) names: The name or names of joints, chains, "Body", "JointActuators", "joints" or "Actuators" angles: One or more angles in radians fractionMaxSpeed: The fraction of maximum speed to use
changeAngles names: 上と同じ changes: One or more changes in radians fractionMaxSpeed: 上と同じ
stiffnessは”堅さ” setStiffnesses stiffnessが0.0だとjoint is free stiffnessが1.0だとfull torque power to reach a given position 多分、send ni :servo-on でservo-onするjointの中にhandが含まれていない send nao :joint-listの中に含まれていなかった
Naoqiの中で Body = Head + LArm + LLeg + RLeg + RArm LArm の中にLHand RArmの中にRHandが含まれている
roscd jsk_2014_04__pr2_73b2/scripts python almotiongetbodynames.py **._..***の結果 Body: ['HeadYaw', 'HeadPitch', 'LShoulderPitch', 'LShoulderRo.ll', 'LElbowYaw', 'LElbowRoll', 'LWristYaw', 'LHand', 'LHipYawPitch', 'LHipRoll', 'LHipPitch', 'LKneePitch', 'LAnklePitch', 'LAnkleRoll', 'RHipYawPitch', 'RHipRoll', 'RHipPitch', 'RKneePitch', 'RAnklePitch', 'RAnkleRoll', 'RShoulderPitch', 'RShoulderRoll', 'RElbowYaw', 'RElbowRoll', 'RWristYaw', 'RHand']
LLeg: ['LHipYawPitch', 'LHipRoll', 'LHipPitch', 'LKneePitch', 'LAnklePitch', 'LAnkleRoll'] Handある
Body Stiffnesses: [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0] Handだけにサーボが入っていなかった
NaoqiのsetStiffnesses('Body', 1.0)で、 NaoqiのBodyの中にはRHand, LHandが含まれているのでサーボが入る (getStiffnesses('Body')で確認できる) その状態で rostopic pub -1 /joint_angles nao_msgs/JointAnglesWithSpeed '{header: auto, joint_names: ["RHand","LHand"], joint_angles: [0.0,0.0], speed: 0.5}' をすればできた
headerとはなんぞや
1.モデルの関節を追加して、:servo-onでRHand, LHandにもサーボが入るように直すことをまず目指す 2,駄目だったら、プルリクを送るのは諦めて、オレオレ仕様にする nao-interface-kochigami-version.lに:servo-on-including-handみたいなのを作る そこではトピックを出す nao_driver_using_ros_nao.launchではサーボを入れるパイソンのコードを追記する これで自分では使える
Naoqiで定義されている関数 almotion_getbodynames.py Bodyで定義されている関節を表示 almotion_getstiffness.py 関節の堅さを表示(サーボオンしているか・していないか) almotion_setstiffness.py 例えばBodyにサーボオン・オフ nao_closehand.py (Naoqiには別名のファイルがある。closeHand()) 一度手を閉じてすぐ開く
①nao-interface.l :start-grasp でcloseHand()を呼び出すようなtopicを書く Naoqiに定義されているcloseHand()を使うと、一度握ってからすぐ手を開いてしまう
② /joint_anglesを使うとすぐ手を開くことはなさそう rostopic pub -1 /joint_angles nao_msgs/JointAnglesWithSpeed '{header: auto, joint_names: ["RHand","LHand"], joint_angles: [0.2,0.2], speed: 1.0}' のように書けばできそうだ しかし、頭や足はうまく行くが、手はうまくいかない
/joint_statesのRHand, LHandでは開いている状態で 0.9くらい 閉じている状態では0.0を指定すればよいはず?