手柄遥控教程
来自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
