很多时候,由于嵌入式系统的不可视和不方便性,我们需要在自己的PC机上进行嵌入式系统内的操作,即远程控制
瓶子酱这一次遇到的问题是主机和嵌入式板子之间的联通不是很稳定而且连的也不是很好。
首先,瓶子酱的PC端的操作系统(OS)是Ubuntu16.04,ROS的版本是kinetic,要远程控制的小车的控制器是树莓派板子。
https://github.com/mktk1117/six_wheel_robot/wiki/Communication-between-Raspberry-Pi-and-PC-(ROS)
这是github上一个非常好的教程,可以跟着来。
瓶子酱遇到的问题联通不好的问题,分析原因,有两个:一,在自己能够理解的范围内改动程序,并且操作和改动一定要整齐!(这里有两个意思,一个是操作,书写的程序要整齐,一个是要将一些主要的数据等用简短易理解的且不会有争议的名字代替)二,一定要做到万无一失,不要让系统犯糊涂。这就要求除了bash文件外,两个系统的连接文件里也要写清楚:
下面是瓶子酱的具体一些操作,仅供参考[因为糊涂的瓶子酱在这里卡了近乎2天,不希望再有人被困了]
pc$sudo vim /etc/hosts [1.一定要sudo因为文件较重要,需要该机算计的管理员权限(只要你知道pc和机器人控制器的开机密码就行~),若不sudo打开,文件就是只读模式2./etc/hosts 是计算机的网段连接的文件]
i——>变成可插入模式
在合适的地方添加:
192.168.43.212 mypc
192.168.43.19 raspberry
[以上两行的格式是:IP地址 IP名;IP地址是在不论是你自己的电脑还是机器人控制器(嵌入式系统)上打开终端用$ifconfig命令查看;或者在右上角的wifi标志点击后下方的连接信息中查看;IP名是自己起的,这里mypc是我的笔记本电脑,raspberry代表树莓派raspberry pi控制器]
wlan0 Link encap:Ethernet HWaddr a4:34:d9:e8:55:03 inet addr:192.168.43.212 Bcast:212.191.89.127 Mask:255.255.255.128 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Esc——>退出插入模式
:wq——>保存并退出vim文本编辑器
***在树莓派上做相同修改!!
pc$vim ~/.bashrc
i——>变成可插入模式
在文末插入:
export ROS_HOSTNAME=mypc
export ROS_MASTER_URI=http://raspberry:11311
Esc——>退出插入模式
:wq——>保存并退出vim文本编辑器
pc$source ~/.bashrc [让bash文件立即生效]
在pc上$ping raspberry
验证是否修改成功:若成功:
pc$ ping raspberry
PING raspberry (192.168.43.19) 56(84) bytes of data.
64 bytes from raspberry (192.168.43.19): icmp_seq=1 ttl=64 time=3.11 ms
64 bytes from raspberry (192.168.43.19): icmp_seq=2 ttl=64 time=5.22 ms
64 bytes from raspberry (192.168.43.19): icmp_seq=3 ttl=64 time=4.30 ms
ctrl+c
pc$ssh hit@raspberry [再使用ssh hit@192.168.43.19是不行的了,因为IP已经被唤为raspberry了,否则将不识别]
输入密码
raspberry$vim ~/.bashrc
文末插入:(并保存退出)
export ROS_HOSTNAME=raspberry export ROS_MASTER_URI=http://raspberry:11311
raspberry$source ~/.bashrc [使文件立即生效!]
raspberry$roscore
[若报错roscore cannot run as another roscore/master is already running.]
raspberry$killall -9 roscore
[回:roscore: no process found说明是master在运行,不是roscore]
raspberry$killall -9 rosmaster
raspberry$roscore
。。。
再开一个终端,为了来控制树莓派进行具体的操作,注意:在pc端再打开一个新终端进行远程控制链接(ssh)前,一定要先source一下这样才能生效,否则不行!
pc$vim ~/.bashrc [检查一下,配置是不是对的]
pc$source ~/.bashrc [每开一次终端都要source!]
pc$ping raspberry [检查通信」
pc$ssh hit@raspberry 「链接」
密码
raspberry$roslaunch rikirobot bringup.launch 「远程开启机器人系统里的启动文件」·「可以运行!完美~~」