手柄遥控教程
来自Waveshare Wiki
ugv02使用教程
- 序章 基于ros2开发ugv02功能目录
- 教程一 树莓派基于ros2开发ugv02底盘初始化操作
- 教程二 基于vscode的树莓派远程开发教程
- 教程三 底盘控制教程
- 教程四 手柄遥控教程
- 教程五 ugv02使用雷达教程
- 教程六 cartographer建图教程
- 教程七 nav2导航教程
- 教程八 建图与导航同时进行教程
安装手柄驱动
sudo apt-get install jstest-gtk
将手柄信号发射器插入树莓派usb端口,打开手柄开关。检测手柄是否已连接上。
ls /dev/input/
如果输出中含有js0即说明手柄已被连接。
更改接口所属群组及权限:
sudo chgrp dialout /dev/input/js0
查看是否已修改正确:
ls -l /dev/input/js0
最终的权限及结果如下:
使用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