Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update the robot model of dxl_7dof_arm #244

Merged
merged 4 commits into from
Nov 30, 2018
Merged

Conversation

tongtybj
Copy link
Collaborator

@tongtybj tongtybj commented Sep 14, 2018

From #243

前提として実機が正しいわけではない,というのがありますので,実機を変えるのも有りだと思ってすすめるのがよいですが,

From #161

そもそも実機でrirobotも:anlge-vectorしてgripperが含まれないようにしておくのが標準的な使い方だと思うので、モデルの方から治していく必要があるかな.

@k-okada
pr2.lを参考に、まずはkinematics modelを直してみましたが、このような記述方法は正しいでしょうか?

このコミットを踏まえて、次はrobot-interfaceの方を治し、最後にgazebo_simulationの部分を実装したいと思っています。

@k-okada
Copy link
Member

k-okada commented Sep 18, 2018

このコミットを踏まえて、次はrobot-interfaceの方を治し

これはどこのファイルのことかな?この方向で良さそうにはおもいますが.

@k-okada
Copy link
Member

k-okada commented Sep 18, 2018

あと,やたらevalしているのも,必要ないかとおもいます.

@tongtybj
Copy link
Collaborator Author

これはどこのファイルのことかな

これはアーム単体モデルdynamixel_7dof_arm/euslisp/dxl-7dof-arm-robot.lを中心に直しています。

いくつかコミットを追加しましたが、いずれもgripper_controllerとfullbody_controllerを分離することが目的です。
実機及びkinematics-simulatorでの:start-grasp:inverse-kinematics,:go-posの正常動作が確認できました。

@tongtybj
Copy link
Collaborator Author

あと,やたらevalしているのも,必要ないかとおもいます.

evalの部分を念入りに読んでみました。

それで、ご教示願いたいのですが、現状ros packageがモデルごとに分けられていますね。

  • 台車単体riモデル: turtlebot-interface :super robot-interface
  • アーム単体riモデル: dxl-7dof-arm-interface :super robot-interface
  • 合体riモデル: dxl-armed-turtlebot-interface :super robot-interface

疑問1: eusは多重継承可能でしょうか。例えば、dxl-armed-turtlebot-interface :super (list turtlebot-interface dxl-7dof-arm-interface).
疑問2: そもそも、この構図は菱型継承ですね。 だから、継承やインスタンスとして持つより、共通の関数だけ抽出して、 evalを使ったのかなと思いました(https://github.com/jsk-enshu/robot-programming/blob/master/dxl_armed_turtlebot/euslisp/dxl-armed-turtlebot-interface.l#L19-L23)
疑問3: PR2の pr2-interface :super robot-move-base-interfaceに準ずる実装に直すべきなのか。

@k-okada
Copy link
Member

k-okada commented Sep 19, 2018 via email

@tongtybj
Copy link
Collaborator Author

みたいに,そのクラス(ここではcamera-model)に対してある特定のメンバ関数が呼ばれた時(:projection.....)には,すべて特定のスロット変数(vwing)に投げる,ということができます

質問ですが、 https://github.com/jsk-enshu/robot-programming/blob/master/dxl_armed_turtlebot/euslisp/dxl-armed-turtlebot.l#L63-L83
の部分も実は:forwardで解決できるということでしょうか。

@k-okada
Copy link
Member

k-okada commented Sep 27, 2018 via email

@tongtybj
Copy link
Collaborator Author

forward するメソッドが多いので、 以下のようにリストを作って、一気に渡そうとしてみたのですが、
うまく行かないです。

(require :dxl-7dof-arm-robot "package://dynamixel_7dof_arm/euslisp/dxl-7dof-arm-robot.l")

;; forward function                                                                                                                                                                                                                                                                
(defun forward-function-list (keyword-list)
  (let (forward-methods
        (arm-robot-methods (send (instance dxl-7dof-arm-robot :init) :methods)))
    (setq forward-methods
          (flatten
           (remove-duplicates
            (mapcar
             #'(lambda (keyword)
                 (remove-if-not
                  #'(lambda (x) (substringp keyword (string-downcase x)))
                  arm-robot-methods))
             keyword-list
             ))))
    forward-methods))
(setq key-funcs (forward-function-list (list "arm"))) ;;global var  

(defclass dxl-armed-turtlebot-robot
  :super turtlebot-with-sensors-robot
  :slots ((arm-robot :forward key-funcs)
          arm-base-fixed-joint ;; アームのルートリンクと台車を接続するための関節                                                                                                                                                                                                   
          )
  )

多分, :forward selectorsにリストを入れるのが間違っていると思っているのですが、
正しい方法を教えていただければと思います。

@tongtybj
Copy link
Collaborator Author

もうひとつ質問ですが、

robot-interface (dxl-armed-trutlebot)の中にrobot-interface (turtlbot_base)のインスタンスを持つと、Kinematics Simulatorのviewerが2つのモデルを交互に表示することになってしまいましたが、下記の部分が関係している思います。
https://github.com/jsk-ros-pkg/jsk_pr2eus/blob/master/pr2eus/robot-interface.l#L184-L205

@tongtybj
Copy link
Collaborator Author

@k-okada

#245 がこのPR依存で、こっちをマージしようかと思いますが、

ただ、

あと,やたらevalしているのも,必要ないかとおもいます.

に関する

みたいに,そのクラス(ここではcamera-model)に対してある特定のメンバ関数が呼ばれた時(:projection.....)には,すべて特定のスロット変数(vwing)に投げる,ということができます.

がまだ解決しておりませんが、それは別のPRで行う方向でもいいでしょうか。

@k-okada
Copy link
Member

k-okada commented Nov 30, 2018 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants