机器人连接和远程控制
准备
充电+用HDMI线连接Burger和显示屏
-
充电有两种方式:
①直接供电:电源适配器连接树莓派上的圆孔;
②电池供电:电源适配器插到蓝色的那个充电器,再将充电器与Burger底座的电池相连接。(当电池电量低于11V时,电池会发出持续的警报声,而且部分控件无法工作,此时应该将电池充电。)
当机器人不需要挪动,即调试阶段时,建议采取直接供电的方式。
直接供电真挺方便的,电池供电那个蓝色的充电器好难拔下来……
-
然后HDMI的插孔在USB插孔旁边,USB插孔在树莓派上面那一层。
那一排USB之后还可以接鼠标键盘等。
-
显示器的HDMI插孔可能在机子后边,多看看多找找,插得上的就是了。
-
然后,给显示器供电,再把Burger的开关打开(开关在树莓派上),然后显示器就亮了,就这样。
将Burger和主机连到同一个局域网中
- 主机连WiFi不用多说。Burger连WiFi就是在显示屏上面操作,和主机连WiFi没啥区别。
| 问题 | 解决办法 |
|---|---|
| 为啥要连同一个WiFi? | 答:ROS系统在使用过程中,移动机器人需要访问并传递信息到远程电脑建立的程序核心服务器(roscore),信息不经过互联网,所以只能在局域网中进行连接。 |
| Ubuntu虚拟机连不上WiFi | 1. 虚拟机-设置-网络适配器,选择桥接模式。 2. 编辑-虚拟网络编辑器-更改设置,在桥接的那个网卡中,把WiFi网卡改成自己的网卡。(真机上查看网络属性有网卡名字) |
| 真机连不上WiFi | ①连上了,只是上不了网。不行就算了,没必要有网。真想有就登录路由器管理界面(路由器盒子底下的网址),多设置设置,看看路由器是否可以连上别的网。 ②连不上。看看有没有对应的WiFi名称。如果连WiFi名字都搜不到,考虑重启路由器,还是不行就把路由器恢复出厂设置,再不行就看看别人搜得到吗,都不行就换个路由器…… |
主机ssh连接Burger
-
首先需要检查【主机】和【Burger】的 IP 地址。
打开终端,在终端中输入 ifconfig。如果你不希望之后频繁更改配置,你可以为Burger分配静态IP。
-
记住【Burger的IP】、【Burger的用户名】、【主机IP】。
-
主机中输入ssh -Y【Burger的用户名】@【Burger的IP】(这里是pi@192.168.1.133)
-Y参数可以让你之后能直接在主机上gedit小车的.bashrc文件。
-
输入密码(默认turtlebot,不排除有人二次改动),连接成功。
配置Burger和主机的网络
-
【主机】、【Burger】的终端中运行:
gedit ~/.bashrc。
-
在.bashrc中追加(或修改)(注意空格):
【主机】:
export ROS_MASTER_URI=http://【主机 IP】:11311
export ROS_HOSTNAME=【主机 IP】
export TURTLEBOT3_MODEL=burger【Burger】:
export ROS_MASTER_URI=http://【主机 IP】:11311
export ROS_HOSTNAME=【Burger的IP】 -
重启终端或者source ~/.bashrc,重新ssh连接。
-
解释:export TURTLEBOT3_MODEL=burger是为了在后续可视化操作中调用正确的三维模型【burger】。
-
显示器可以关了,之后的操作直接在主机上就能完成。
确保大部分依赖包都已经下载完成
如果你十分放心的话,可以跳过这一步。如果报错,不要忘了回到这一步来看看喔!
| 依赖包 | 安装过程 | 安装报错时的参考博客 |
|---|---|---|
| Turtlebot3的包 | mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone https://github.com/ROBOTIS-GIT/turtlebot3.git git clone https://github.com/ROBOTIS-GIT/hls_lfcd_lds_driver.git cd ~/catkin_ws && catkin_make sudo echo “source ~/catkin_ws/devel/setup.bash” >> ~/.bashrc |
问题解决方案1————-catkin_make编译时候的各种问题汇总 |
| roslaunch、使用rviz的时候需要的依赖包 | sudo apt update sudo apt-get install ros-noetic-robot-state-publisher ros-noetic-gmapping ros-noetic-rviz ros-noetic-joy ros-noetic-teleop-twist-joy ros-noetic-teleop-twist-keyboard ros-noetic-laser-proc ros-noetic-rgbd-launch ros-noetic-rosserial-arduino ros-noetic-rosserial-python ros-noetic-rosserial-client ros-noetic-rosserial-msgs ros-noetic-amcl ros-noetic-map-server ros-noetic-move-base ros-noetic-urdf ros-noetic-xacro ros-noetic-compressed-image-transport ros-noetic-rqt-image-view ros-noetic-gmapping ros-noetic-navigation ros-noetic-interactive-markers |
先更新源,然后报啥错就下啥包。(其中noetic更换为自己的ros版本。) |
控制的流程
roscore检测网络配置是否正确
-
预期结果:【主机】、【Burger】都显示连接到【主机IP】。
-
异常情况:
-
【主机】的IP值不对:按照配置Burger和主机的网络重新配置网络配置。
-
【Burger】的IP值不对:
-
如果显示器还开着,就按照配置Burger和主机的网络重新配置网络配置。
-
如果显示器已经关掉了,却直接gedit ~/.bashrc,可能会显示连接不上。

为了方便起见,我们在ssh连接后,直接在终端运行
export ROS_MASTER_URI = http://【主机 IP】:11311
export ROS_HOSTNAME = 【Burger的IP】从而可以直接改变小车对应的MASTER_URI。
也可以把ssh连接的指令换成ssh -Y 用户名@IP,这样就能打开gedit了。
-
-
运行远程控制程序包
-
【Burger】:roslaunch turtlebot3_bringup turtlebot3_robot.launch
解释:在机器人桌面终端调用Turtlebot3 应用程序。
-
【主机】:roslaunch turtlebot3_bringup turtlebot3_remote.launch
解释:启动Turtlebot远程应用。
-
【主机】:rosrun rviz rviz -d `rospack find turtlebot3_description`/rviz/model.rviz
解释:启动Rviz。
-
【主机】:roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
解释:运行无线操作依赖包中的键盘驱动程序。
-
在4中的终端中按w/a/s/d/x键就能用键盘远程控制小车。
order.txt
1 |
|