歩行の形を少し整えた。
足が上がっていないにもかかわらず、歩いているかのような感じになってきている(笑)
これで、折りたためる膝があれば、普通に歩けると思うのだが。
まあ、もう少し、この膝なし足ロボットで試験しよう。
cosmで書いた制御プログラムは次のようなものだ。何か、それらしい感じを読み取ることができるのかもしれない。
####################################### # ashiro1-10.cosm # 逆振り子二足歩行 # 2017年7月4日 作成 # 2017年7月6日 ver.2 # 傾けた時に、前後の足を戻す操作を入れる ####################################### %defspeed normal { interval:3 #steps:25 steps:15 } %defspeed fast { interval:3 #steps:25 steps:10 } # 40にすると倒れる %param invpen_angle 35 # 揺れの逆足の開き角度 # 揺れた時に、揺れる方向の逆足が少し開いていないと、 # 近づきすぎて倒れる:逆足の吊り上げ角度にもなっている # %param open_inv 15 %param open_inv 20 # 釣り上げられた足の閉じる方向への角度 %param close_inv 10 ###################################### # 0 バージョンは、前後の足の動きを意識しないもの # 最初の揺らしに使うと思う ###################################### %defangles right_invpen_0 { #右に傾ける動きをする # 逆足は開きを少し大きくしないと縮まって倒れる RightUpperRight:$invpen_angle-$open_inv RightUpperLeft:-$invpen_angle+$open_inv LeftUpperRight:$invpen_angle-$close_inv LeftUpperLeft:-$invpen_angle+$close_inv # 上の動きに合わせて、足も角度をつけて # 床にぴったりさせようとしているが、ちょっとずれている RightLowerRight:$invpen_angle RightLowerLeft:-$invpen_angle # 逆足は開きを少し大きくしないと縮まって倒れる LeftLowerRight:$invpen_angle LeftLowerLeft:-$invpen_angle } %defangles left_invpen_0 { #左に傾ける動きをする # 逆足は開きを少し大きくしないと縮まって倒れる RightUpperRight:-$invpen_angle+$close_inv RightUpperLeft:$invpen_angle-$close_inv LeftUpperRight:-$invpen_angle+$open_inv LeftUpperLeft:$invpen_angle-$open_inv # RightLowerRight:-$invpen_angle RightLowerLeft:$invpen_angle LeftLowerRight:-$invpen_angle LeftLowerLeft:$invpen_angle } ###################################### # 1 バージョンは、前後の足の動きの中で使う # 前のステップで開いた足を戻す、前後の操作が入る # 後ろに残っている足は、前足が垂直になるまでに # さらに追加的に開く %param excess_open 10 ###################################### %defangles right_invpen_1 { #右に傾ける動きをする # 逆足は開きを少し大きくしないと縮まって倒れる RightUpperRight:$invpen_angle-$open_inv RightUpperLeft:-$invpen_angle+$open_inv LeftUpperRight:$invpen_angle LeftUpperLeft:-$invpen_angle # 上の動きに合わせて、足も角度をつけて # 床にぴったりさせようとしているが、ちょっとずれている RightLowerRight:$invpen_angle RightLowerLeft:-$invpen_angle # 逆足は開きを少し大きくしないと縮まって倒れる LeftLowerRight:$invpen_angle LeftLowerLeft:-$invpen_angle # 前後に開いた足の処理 # 右足が前、左足が後ろの状態で開いている # 前になっている右足を、直立状態まで戻す # 後ろ足は、床に設置したまま、傾きを加える # RightUpperFront:0 RightUpperBack:0 LeftUpperFront:-$step_length-$excess_open LeftUpperBack:$step_length+$excess_open # RightLowerFront:0 RightLowerBack:0 LeftLowerFront:-$step_length-$excess_open LeftLowerBack:$step_length+$excess_open } %defangles left_invpen_1 { #左に傾ける動きをする # 逆足は開きを少し大きくしないと縮まって倒れる RightUpperRight:-$invpen_angle RightUpperLeft:$invpen_angle LeftUpperRight:-$invpen_angle+$open_inv LeftUpperLeft:$invpen_angle-$open_inv # RightLowerRight:-$invpen_angle RightLowerLeft:$invpen_angle LeftLowerRight:-$invpen_angle LeftLowerLeft:$invpen_angle # RightUpperFront:$step_length+$excess_open RightUpperBack:-$step_length-$excess_open LeftUpperFront:0 LeftUpperBack:0 # RightLowerFront:$step_length+$excess_open RightLowerBack:-$step_length-$excess_open LeftLowerFront:0 LeftLowerBack:0 } ###################################### # 前後に開く(すでに重心が移ったのちの動作) # 歩幅 %param step_length 15 # 出した方の足が着地する時に、後ろに倒れないよう # 少し前かがみ加減の角度で足先を出す %param slouch 10 ###################################### %defangles right_forward_1 { # 右に傾いた時に、左足を前に、右足を後ろにする動作 RightUpperFront:$step_length RightUpperBack:-$step_length LeftUpperFront:-$step_length LeftUpperBack:$step_length # RightLowerFront:$step_length RightLowerBack:-$step_length LeftLowerFront:-$step_length+$slouch LeftLowerBack:$step_length-$slouch } %defangles left_forward_1 { # 左に傾いた時に、右足を前に、左足を後ろにする動作 RightUpperFront:-$step_length RightUpperBack:$step_length LeftUpperFront:$step_length LeftUpperBack:-$step_length # RightLowerFront:-$step_length+$slouch RightLowerBack:$step_length-$slouch LeftLowerFront:$step_length LeftLowerBack:-$step_length } %defexec walk { stand:all speed:normal # 右に倒す、前後の動作は何もしない # 半分の動きしかできず、揺れが小さいので setAngle:right_invpen_0 # 揺れは早く動かす # 左に倒す speed:fast setAngle:left_invpen_0 # 足を開く # 開くときは、normalにする speed:normal setAngle:left_forward_1 # 普通の歩行に移る exec:walk_sub,3 } %defexec walk_sub{ # 逆の動きに対応するバージョン # 右に倒す speed:fast setAngle:right_invpen_1 # 足を開く speed:normal setAngle:right_forward_1 # 左に倒す speed:fast setAngle:left_invpen_1 # 足を開く speed:normal setAngle:left_forward_1 } %exec walk 1