目录
硬件:
1.一块 rk3588(接从机显示屏)【下位机】
2、一个有线手柄(接入主机)
3、主机、主机显示屏 【上位机】
4、一个路由器(主从机wifi接入同一个网络wifi名称:cdXXX)
软件:两台电脑上均是ubuntu20.04系统
实现效果:采用两台电脑,实现rk3588上使用无线手柄控制车体运动
将工控机作为上位机,rk3588作为下位机。
实现多机通信的主要步骤:
一、网络静态IP设置
利用ubuntu自身的系统配置设置静态ip的方法如下:
本人采用的是上位机与下位机连接同一个WIFI进行通信(接入同一个路由器WiFi)的方法。两台电脑操作完全相同。点开设置,选中WIFI,所连接网络右侧有设置按键,点击按键,进入设置,选择IPv4。
使用命令 ifconfig 分别查看两台电脑IP:
上位机电脑中ifconfig内容:
wlx0025中显示ip地址为:192.168.3.2,即为上位机电脑的ip地址。
下位机电脑中ifconfig内容:
wlan0中显示ip地址为:192.168.3.3,即为下位机电脑的ip地址。
在IPv4手动配置页面中,地址填为ip地址,子网掩码填255.255.255.0,网关填ip地址的前三个部分,加上.1,按照上图示例,即为192.168.3+.1->192.168.3.1,DNS与网关相同,亦为192.168.3.1。至此完成网络静态ip配置。设置完成后,可知上位机电脑IP为192.168.3.2,下位机电脑ip为192.168.3.3(这两个IP在随后的配置文件修改中需要用到)。
二、修改多机通信配置文件
ROS多机通信需要两台电脑的ROS连接同一个ROS Master。运行时,需要在PC端开启roscore。
1、修改上位机配置文件
(1)打开上位机电脑上的bashrc文件
gedit ~/.bashrc
(2)上位机电脑的bashrc文件中添加语句
export ROS_MASTER_URI=http://192.168.3.2:11311
export ROS_HOSTNAME=192.168.3.2
其中 192.168.3.2是 上位机电脑的IP,端口号写11311即可。
2、修改下位机配置文件
(1)打开下位机电脑上的bashrc文件
gedit ~/.bashrc
(2)下位机电脑的bashrc文件中添加语句
export ROS_HOSTNAME=192.168.3.3
export ROS_MASTER_URI=http://192.168.3.2:11311
其中 ROS_HOSTNAME表示下位机,192.168.3.3表示下位机ip, ROS_MASTER_URI表示上位机的URI,192.168.3.2是上位机IP,端口号11311。
三、上位机的准备工作
有线手柄接入上位机主机后,查看手柄的设备号:
ls /dev/input/
设备号一般表示为: jsX ,如果有js0、js1等多个设备号,可以通过拔插USB设备确定。
增加可执行权限:
sudo chmod 777 /dev/input/js0
之后,运行:
rosrun joy joy_node
使用rostopic list查看话题:
rostopic list
查看/joy话题的数据:
rostopic echo /joy
动动摇杆、按键看看/joy话题的数据是否变化,如果变化,则说明手柄接入正常。
四、下位机的准备工作
rk3588接入显示屏,连上路由器的wifi,运行:
roslaunch odXXX uav_serial_communicate.launch
其中,odXXX表示功能包(XXX模糊写法)。
输出例如上述图片内容,表明可以正常控制无人车运动了。
同时重开新terminal,使用rostopic list查看话题:
rostopic list
运行以下命令查看/joy话题的数据:
rostopic hz /joy
摇晃摇杆,能够订阅到/joy话题数据,就会输出上图红色方框里的数据;当停止摇晃摇杆,无法订阅/joy话题数据时,就会输出“no new messages”。