参考链接:https://blog.csdn.net/RNG_uzi_/article/details/107285113?ops_request_misc=%7B%22request%5Fid%22%3A%22159901622719725211961014%22%2C%22scm%22%3A%2220140713.130102334.pc%5Fall.%22%7D
需求:TX2
连接Lidar
获取点云数据,由于TX2
安装在机器人上,不能外接屏幕,内存ROM
也很小,所以采用TX2
与雷达建立通讯,然后建立TX2
和PC
机的ROS
远程通讯(PC
机和TX2
都安装ubuntu18.04
)
PC
机和TX2
全部为系统为18.04
,ROS
版本全部为melodic
下面开始部署两台机器
TX2
作为主机用于数据采集
PC
机作为从机用于数据监控
1、首先主机、从机连到同一个wifi
下
使用ifconfig
命令查看本机的局域网IP
地址(主机、从机都需要看一下)
🚗 如果电脑连接的时有线网,则显示结果中,etho 部分的 inet addr 后面就是该电脑的 IP 地址;
🚗 如果电脑连接的是无线,则 wlan0 部分的 inet addr 后就是 IP 地址
以我自己的设备为例:
PC
机名为wzf-lenovo-N50-80
,192.168.88.253
TX2
名为nvidia-desktop
,192.168.88.250
2、 然后打开hosts
文件,在hosts
文件中,加入彼此的IP
地址和对应的计算机名。
🚗 (主机、从机都要添加)
sudo gedit /etc/hosts
添加后
127.0.0.1 localhost
127.0.1.1 wzf-lenovo-N50-80
192.168.88.253 wzf-lenovo-N50-80 #用tab,别用空格
192.168.88.250 nvidia-desktop
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
修改完成后,使用ping
命令来测试一下是否连通
主机(TX2)运行
ping 192.168.88.250
从机(PC机)运行
ping 192.168.88.253
3、在系统中只能有一个Master,需要让从机知道Master的位置
在 从机(PC机) 中需要对环境变量进行配置:
sudo gedit ~/.bashrc
在最后添加
export ROS_HOSTNAME=192.168.88.253 #从机,也就是PC机(当前机器的IP)
export ROS_MASTER_URI=http://192.168.88.250:11311 #TX2的IP,11311不要更改
最后
source ~/.bashrc
在 主机(TX2) 中需要对环境变量进行配置:
sudo gedit ~/.bashrc
在最后添加
export ROS_HOSTNAME=192.168.88.250 #TX2的IP
export ROS_MASTER_URI=http://192.168.88.250:11311 #TX2的IP,11311不要更改
最后
source ~/.bashrc
在主机 (TX2) 中运行
roscorerosrun turtlesim turtlesim_node
在**从机 (PC机)**中运行
rosrun turtlesim turtle_teleop_key
用从机的键盘可以实现对主机中小乌龟的控制,则多机通信配置正确。
当然PC机也可以使用rviz等命令,接收显示TX2采集的点云
实际测试的时候感觉PC
机控制TX2
,然后接收TX2
发布的话题,卡顿严重。可能我使用的是2Ghz
的wifi
吧(笔记本太老了,不支持5G
)。