手柄遥控教程

来自Waveshare Wiki
跳转至: 导航搜索

ugv02使用教程

安装手柄驱动

sudo apt-get install jstest-gtk

将手柄信号发射器插入树莓派usb端口,打开手柄开关。检测手柄是否已连接上。

ls /dev/input/

如果输出中含有js0即说明手柄已被连接。
更改接口所属群组及权限:

sudo chgrp dialout /dev/input/js0

查看是否已修改正确:

ls -l /dev/input/js0

最终的权限及结果如下:
图片1-02.png
使用jstest命令来检查手柄是否工作,及测试无线手柄每个键所对应的数字。

sudo jstest /dev/input/js0

按下手柄各按键,观察输出是否有变化。

开发手柄遥控功能包

先给树莓派的ros2安装遥控功能包。

sudo apt-get install ros-humble-joy

进入工作空间,创建功能包。

cd ~/ugv02/src
ros2 pkg create ugv02_teleop

创建配置目录和launch目录。

cd /ugv02_teleop
mkdir config launch

然后在/ugv02/src/ugv02_teleop/config中新建ugv02_ps3.config.yaml对遥控命令进行配置。

teleop_twist_joy_node:
  ros__parameters:
    axis_linear:  # 遥感索引1的值表示控制linear     索引rostopic echo joy可以看出axes数字 
      x: 1
      y: 0
    scale_linear: # 低速运动linear最大值
      x: 0.25
      y: 0.25
    scale_linear_turbo: # 高度速运动linear最大值
      x: 0.6

    axis_angular:  # 遥感索引0的表示angular方向
      yaw: 3
    scale_angular:  # 低速运动angular最大值
      yaw: 1.0
    scale_angular_turbo:  # 高度速运动angular最大值
      yaw: 1.2

    enable_button: 0       # 低速,  防止摇杆误触,只有当按下A键时,左摇杆操控才会被触发。
    enable_turbo_button: -1 # 高速,   防止摇杆误触,只有当按下B键时,左摇杆操控才会被触发。

接着在/ugv02/src/ugv02_teleop/launch中新建ugv02_teleop.launch.py,编写代码用于启动手柄控制节点。

import os

from ament_index_python.packages import get_package_share_directory

import launch
import launch_ros.actions

def generate_launch_description():
    joy_config = launch.substitutions.LaunchConfiguration('joy_config')
    joy_dev = launch.substitutions.LaunchConfiguration('joy_dev')
    config_filepath = launch.substitutions.LaunchConfiguration('config_filepath')

    return launch.LaunchDescription([
        launch.actions.DeclareLaunchArgument('joy_vel', default_value='cmd_vel'),
        launch.actions.DeclareLaunchArgument('joy_config', default_value='ugv02_ps3'),   # 手柄配置文件名称
        launch.actions.DeclareLaunchArgument('joy_dev', default_value='/dev/input/js0'), # 手柄的连接串口
        launch.actions.DeclareLaunchArgument('config_filepath', default_value=[
            launch.substitutions.TextSubstitution(text=os.path.join(
                get_package_share_directory('ugv02_teleop'), 'config', '')),
            joy_config, launch.substitutions.TextSubstitution(text='.config.yaml')]),

        launch_ros.actions.Node(
            package='joy', executable='joy_node', name='joy_node',
            parameters=[{
                'dev': joy_dev,
                'deadzone': 0.3,
                'autorepeat_rate': 20.0,
            }]),
        launch_ros.actions.Node(
            package='teleop_twist_joy', executable='teleop_node',
            name='teleop_twist_joy_node', parameters=[config_filepath],
            remappings={('/cmd_vel', launch.substitutions.LaunchConfiguration('joy_vel'))},
            ),
    ])

在CMakeLists.txt添加

install(
  DIRECTORY config launch
  DESTINATION share/${PROJECT_NAME}
)

备注:只有当按下A键时,左摇杆操控才会被触发。 使用流程:先启动底盘,另外开终端。

sudo chgrp dialout  /dev/input/js0
ros2 launch ugv02_teleop ugv02_teleop.launch.py