Docker上のROS2(galactic)でteleop_twist_joy
docker-compose.yamlに以下のような設定を書きます.
services:
ros2_galactic:
build: .
container_name: ros2_galactic
network_mode: host # --net=host
# 重要:デバイスアクセス許可
privileged: true
volumes:
# 入力デバイス全体をマウント
- /dev/input:/dev/input
# 個別にデバイスを指定する場合(より安全)
devices:
- /dev/input/js0:/dev/input/js0
で,以下,それぞれターミナルを用意して実行.
ros2 run joy joy_node
ros2 topic list; ros2 topic echo /joy
ros2 run teleop_twist_joy teleop_node
ros2 topic echo /cmd_vel
Logitech Gamepad F310を使っているのですが,標準だと,
button 5 = RB Linear axis x on 5 = RT Angular axis yaw on 2 = LT
という割り当てになっているみたいです.
大変押しにくいです.
そこで,teleopを以下に変更
ros2 run teleop_twist_joy teleop_node \ --ros-args \ -p require_enable_button:=true \ -p axis_linear.x:=1 \ -p axis_angular.yaw:=3
これで,
前後が左のアナログスティックの前後の軸,
回転が右のアナログスティックの左右の軸
に対応します.
なお,F310ではなくX-Box 360として認識されると動きません.
その場合,/dev/input/event??を確認して,どの番号に対応しているのかを見つける必要があります.
その上で,ros2 run joy joy_nodeの部分に対して,環境変数を設定します.
以下の例は,/dev/input/event7に割り当てがあったときです.
export SDL_GAMECONTROLLERCONFIG="" export SDL_JOYSTICK_DEVICE=/dev/input/event7 ros2 run joy joy_node
コメントを残す