5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

EV3+ROS+ev3_robot_gyro_carを読んでみた

Posted at

ROS初心者がこちら記事を読みつつgyro_carを動かしてみた。なんとなく動いたけど中身がどうなってるのか知りたかったので、軽く調べたメモ。

登場するノード

以下の8つ

  • nxt_teleop
  • base_controller
  • ev3_ros
  • js_agg
  • robot_pose_ekf
  • base_footprint_fixed_publisher
  • robot_state_publisher
  • base_odometry

Screenshot.png

各ノードの役割

※使ってなさそうなノードは調べてません

nxt_teleop

C++で書かれている(他のノードはpython)
キーボードの入力を拾って矢印キーが入力された場合に前進後退、旋回の指定値を/cmd_velに書き込む。0.15秒おきに/cmd_velの初期化が走っている。

/cmd_velの構造は以下のようになっている。使っているのはlinear:xとangular:zのみで、-1,0,1のいずれかの値をとる。

linear:
  x: 0.0
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 0.0

base_controller

nxt_teleopの入力(/cmd_vel)とEV3のモータの状態(/joint_stats)から次のモータの出力値を/joint_commandに書き込む。

/joint_commandの構造は以下のようになっている。左右それぞれのモータ出力値が出ている

name: l_wheel_joint
effort: 19.7664285714
---
name: r_wheel_joint
effort: 19.7664285714

ev3_ros

gyro_carの本体。メインループがあり、rpycを使ってEV3とコネクトしている。
/joint_controllerからの出力値を読み、値を補正してmortorを駆動させている。
モータの状態を/joint_stateに、超音波センサの値を/ultrasonic_sensor、ジャイロセンサの値を/gyro, /gyro_imuに書き込んでいるが、/joint_state,/gyro_imu以外は使われていない。
モータやセンサの構成情報などはev3_robot_gyro_carの方に設定がある。

/joint_stateの構造は以下のようになっている。

header:
  seq: 9122
  stamp:
    secs: 1446688086
    nsecs: 660684108
  frame_id: ''
name: ['l_wheel_joint']
position: [5.654866776461628]
velocity: [1.0]
effort: [0.0]

js_agg

ev3_rosからのモータフィードバック(/joint_state)をバリデーションし、base_controllerが読める形式に繋げて/joint_statesに書き込んでいる。
バリデーションの内容はnameの数とposition,velocity,effortのデータ数が一致しているかを見ている程度。

/joint_statesの構造は以下のようになっている。

header:
  seq: 18539
  stamp:
    secs: 1446695836
    nsecs: 102682113
  frame_id: ''
name: ['l_wheel_joint', 'r_wheel_joint']
position: [8.377580409572781, 31.747539093776854]
velocity: [1.0, 1.0]
effort: [0.0, 0.0]

その他のノード

値を読んだり書いたりしているが、ev3_rosに影響していないので読んでいない。
将来的にrobot_pose_ekfで倒立制御をしたりするのかな?

参考にしてモーター2つのロボを動かしてみた

ev3_robot_gyro_carを参考に、必要なノードのみでロボを動かしてみた

構成

  • (モーター+車輪) * 2
  • 倒立制御をしないため、本体をささえるためのベアリング1

robo.JPG

ノード構成

ev3_robot_gyro_carを参考に必要なパッケージだけを抜き出し。ロボの設定を変更するだけで動作した。

Screenshot-2.png

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?