【ROS】2.1 Turtlebot3汉堡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名字都搜不到,考虑重启路由器,还是不行就把路由器恢复出厂设置,再不行就看看别人搜得到吗,都不行就换个路由器…… |
小车连不上WiFi | wlan0是无线网卡,eth0是有线网卡。以下仅针对无线连接。 1. 如果连接成功,但是WiFi频繁闪烁:ifconfig检查wlan0网卡的IP地址是否正常。如果IP地址是115之类的奇怪数字,说明dhcp自动获取IP有问题。一般是因为树莓派的网卡设置有误。 解决方案:尝试用网线有线连接小车。或尝试手动获取IP地址。 2. 如果无法自动获取IP地址: 解决方案1:修改dhcpcd.conf:sudo nano /etc/dhcpd.conf 滑到最底端,删除曾连接过的wifi名称和密码。 ctrl+o保存,ctrl+x退出,sudo reboot重启(或者手动重启),然后再次连接网络即可。 解决方案2:sudo dhclient -d wlan0 #删除dhcp获取的ip sudo dhclient wlan0 -v #dhcp自动获取ip |
如何丢掉显示屏
方法一:ssh连接
优点:稳定;缺点:命令行操作,不好看。
ssh -Y【Burger的用户名】@【Burger的IP】
-
首先需要检查【主机】和【Burger】的 IP 地址。
打开终端,在终端中输入 ifconfig。如果你不希望之后频繁更改配置,你可以为Burger分配静态IP。
-
记住【Burger的IP】、【Burger的用户名】、【主机IP】。
-
主机中输入ssh -Y【Burger的用户名】@【Burger的IP】(这里是pi@192.168.1.133)
-Y参数可以让你之后能直接在主机上gedit小车的.bashrc文件。如果不加这个参数,你可以使用nano编辑文件。(比如sudo nano ~/.bashrc)
-
输入密码(默认turtlebot,不排除有人二次改动),连接成功。
方案二:远程桌面连接mstsc
优点:好看;缺点:连接时不稳定。
- 在小车中安装xrdp服务:
pi@raspberrypi:~ $ sudo apt-get install xrdp
- 打开win电脑的远程桌面:win+r,输入mstsc,回车,输入ip,回车。
- 输入账号密码,连接成功,显示桌面。
网络配置
-
【主机】、【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-gazebo-ros ros-noetic-gazebo-ros-control 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 libasound2-dev |
先更新源,然后报啥错就下啥包。(其中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
# 主机的准备工作:
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
#github国内有时候访问不上,可使用镜像,不过镜像有时候会挂,你们自己找个现在能用的镜像
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
# hub.fastgit.org镜像好像已经挂了,你们另外自己找其他的镜像也行
# git clone https://hub.fastgit.org/ROBOTIS-GIT/turtlebot3_msgs.git
# git clone https://hub.fastgit.org/ROBOTIS-GIT/turtlebot3.git
# git clone https://hub.fastgit.org/ROBOTIS-GIT/hls_lfcd_lds_driver.git
# 切换一下turtlebot3相关的库的版本,因为现在最新版本都是支持ROS2的,不是支持ROS1的
cd turtlebot3_msgs
git checkout noetic
cd ../turtlebot3
git checkout noetic
cd ../hls_lfcd_lds_driver
git checkout noetic
cd ~/catkin_ws && catkin_make
# 参考https://www.codenong.com/cs88087849/
sudo apt-get install ros-noetic-robot-state-publisher
sudo apt-get install ros-noetic-gmapping ros-noetic-rviz
sudo apt-get install 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
# 显示屏上:
ifconfig
# 记住【Burger的IP】192.168.1.133
# gedit ~/.bashrc
# 追加export ROS_MASTER_URI=http://【主机 IP】:11311
# 追加export ROS_HOSTNAME=【Burger的IP】
# source ~/.bashrc
# 主机终端A:
ifconfig
# 记住【主机IP】192.168.1.105
gedit ~/.bashrc
# 追加export ROS_MASTER_URI=http://【主机 IP】:11311
# 追加export ROS_HOSTNAME=【主机 IP】
# 追加export TURTLEBOT3_MODEL=burger
# 追加source ~/catkin_ws/devel/setup.bash
source ~/.bashrc
# roscore检查主机地址设置是否正确
# 主机终端B:
ssh -Y pi@【Burger的IP】
gedit ~/.bashrc
# 追加export ROS_MASTER_URI=http://【主机 IP】:11311
# 追加export ROS_HOSTNAME=【Burger的IP】
source ~/.bashrc
roscore
# 主机终端C:
ssh -Y pi@【Burger的IP】
roslaunch turtlebot3_bringup turtlebot3_robot.launch
# 主机终端D:
# roslaunch turtlebot3_bringup turtlebot3_remote.launch
rosrun rviz rviz -d `rospack find turtlebot3_description`/rviz/model.rviz
# 上一条注:开启仿真模拟rviz
# 主机终端E:
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
# 上一条注:用wasd控制,可以看到rviz上的车也有动静;
# rviz:红色的是雷达检测的障碍物
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix