环境:Ubuntu18.04 + ROS Melodic
硬件:北通阿修罗2te无线版+笔记本(主机)+AGX工控机(从机)+JP-Chassis
一、ROS配置和使用“北通”无线手柄
(1)安装joy package
sudo apt-get install ros-melodic-joy
joy package为通用的Linux操纵杆提供了ROS驱动,可以实现Linux操纵杆和ROS交互。joy_node节点发布一个包含操纵杆每一个按钮和轴状态的”Joy”消息。joy-ROS Wiki说明
(2)配置Xbox One无线手柄
1)将手柄接收机与笔记本相连
ls /dev/input/
显示所有输入设备的列表,如出现jsX则表示连接成功(我的电脑显示为js0)。
2)测试手柄
sudo jstest /dev/input/jsX
终端会显示手柄的如下输出信息,移动手柄可看到数据的变化。(注意:Axes正负状态相反)
Axes: 0: 0 1: 0 2:-32767 3: 0 4: 0 5:-32767 6: 0 7: 0
Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off
3)更改手柄权限
让ROS的节点joy_node可以使用手柄
ls -l /dev/input/jsX
显示如下:
crw-rw-XX-+ 1 root input 13, 0 8月 4 19:18 /dev/input/js0
如果XX是rw的话,说明设备配置成功.
如果XX是r–或者其他的话,说明没有配置成功,你需要:
sudo chmod a+rw /dev/input/jsX
(3)配置“北通”无线手柄
要使手柄的数据发布在ROS上,我们需要启动joy package中的joy_node节点。
首先,我们需要将设备名这个参数设置为当前的设备名,默认为js0.
roscore
rosparam set joy_node/dev "/dev/input/jsX"
然后启动joy_node节点:
rosrun joy joy_node
在新终端用rostopic echo查看joy这个话题的数据:
rostopic echo joy
(4)测试和校准
jstest-gtk是一个可以测试手柄的工具,可以显示哪个按钮和轴被按下,可以校准和重新为手柄设置每个按钮的索引
1)安装jstest-gtk:
sudo apt-get install jstest-gtk
2)在终端输入以下命令,打开jstest-gtk的GUI:
jstest-gtk
3)点击属性按钮,可以进行测试
二、主从机远程控制JP-Chassis底盘
ROS主从机设置详见:主从机设置
主机(全部在笔记本完成)
(开服务、进远程)
roscore
ssh kyxz(被控AGX工控机用户名)@192.168.10.10(被控AGX工控机IP Adress)
安装ssh: sudo apt-get install ssh
byobu
安装byobu:sudo apt install byobu
F2:新建终端,F3:上一终端,F4:下一终端;Ctrl+D:退出
cd catkin_ws
source devel/setup.bash
roslaunch mick_bringup mickx2_bringup.launch
新建终端:
roslaunch transfor_joy transfor_joy.launch
至此,已完成ROS配置和使用“北通”无线手柄,主从机远程控制JP-Chassis底盘!