机器人连接和远程控制

准备

充电

  • 充电有两种方式:

    ①直接供电:电源适配器连接树莓派上的圆孔;

    ②电池供电:电源适配器插到蓝色的那个充电器,再将充电器与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】

  1. 首先需要检查【主机】和【Burger】的 IP 地址。

    打开终端,在终端中输入 ifconfig。

    如果你不希望之后频繁更改配置,你可以为Burger分配静态IP。

  2. 记住【Burger的IP】、【Burger的用户名】、【主机IP】。

  3. 主机中输入ssh -Y【Burger的用户名】@【Burger的IP】(这里是pi@192.168.1.133)

    -Y参数可以让你之后能直接在主机上gedit小车的.bashrc文件。如果不加这个参数,你可以使用nano编辑文件。(比如sudo nano ~/.bashrc)

  4. 输入密码(默认turtlebot,不排除有人二次改动),连接成功。

方案二:远程桌面连接mstsc

优点:好看;缺点:连接时不稳定。

  1. 在小车中安装xrdp服务:
pi@raspberrypi:~ $ sudo apt-get install xrdp
  1. 打开win电脑的远程桌面:win+r,输入mstsc,回车,输入ip,回车。
  2. 输入账号密码,连接成功,显示桌面。

网络配置

  1. 【主机】、【Burger】的终端中运行:

    gedit ~/.bashrc。

  2. 在.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】

  3. 重启终端或者source ~/.bashrc,重新ssh连接。

  4. 解释:export TURTLEBOT3_MODEL=burger是为了在后续可视化操作中调用正确的三维模型【burger】。

  5. 显示器可以关了,之后的操作直接在主机上就能完成。

下载各种依赖包

请直接复制粘贴表格内容,如果遇到错误,请直接查看最右侧解决方案。

下载完成的跳过这一步。如果报错,不要忘了回到这一步来看看喔!

依赖包 安装过程 安装报错时的解决方案
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检测网络配置是否正确

  1. 预期结果:【主机】、【Burger】都显示连接到【主机IP】。

  2. 异常情况:

    • 【主机】的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了。

运行远程控制程序包

  1. 【Burger】:roslaunch turtlebot3_bringup turtlebot3_robot.launch

    解释:在机器人桌面终端调用Turtlebot3 应用程序。

  2. 【主机】:roslaunch turtlebot3_bringup turtlebot3_remote.launch

    解释:启动Turtlebot远程应用。

  3. 【主机】:rosrun rviz rviz -d `rospack find turtlebot3_description`/rviz/model.rviz

    解释:启动Rviz。

  4. 【主机】:roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

    解释:运行无线操作依赖包中的键盘驱动程序。

  5. 在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:红色的是雷达检测的障碍物

【ROS】2.1 Turtlebot3汉堡Burger连接和远程控制的更多相关文章

  1. ROS开源小车TurtleBot3详情介绍(Burger)

    您为什么要选择ROS开源智能小车 ROS(RobotOperating System,机器人操作系统)是目前世界上更主流更多人使用的的机器人开源操作系统.它可以提供操作系统应有的服务,包括硬件抽象,底 ...

  2. ROS开源小车TurtleBot3详情介绍

    您为什么要选择ROS开源智能小车 ROS(Robot Operating System,机器人操作系统)是目前世界上更主流更多人使用的的机器人开源操作系统.它可以提供操作系统应有的服务,包括硬件抽象, ...

  3. UVA557 汉堡 Burger

    题面 https://www.luogu.org/problemnew/show/UVA557 这里顺便整理一下二维格点随机游走问题. 遇到这种问题时,需注意分母的计算问题. 设x为起点到终点的距离. ...

  4. ROS知识(9)----安装Turtlebot2和远程控制Turtlebot2

    安装turtlebot2,场景为:turtlebot2上搭载着一台电脑主机A,该电脑作为主机Master,有自带的电源和3D传感器,roscore在该台机器上启动.pc电脑远程连接A,和A通讯,pc不 ...

  5. ROS连接ABB机械臂调试详细教程-ROS(indigo)和ABB RobotStudio 6.03.02-

    在ROS industrial介绍中,给出了ROS和常用机械臂的连接方式.具体信息可以参考:http://wiki.ros.org/Industrial ROS连接ABB机械臂调试详细教程-ROS(i ...

  6. TurtleBot3使用课程-第一节a(北京智能佳)

    目录 1.ROS设置(远程PC) 2 1.1 ROS安装和设置 2 1.1.1 设置source.list 2 1.1.2 键设置 2 1.1.3 ROS安装 2 1.1.4安装包构建的依赖关系 2 ...

  7. ROS Hotspot服务器的搭建与设定!(上网认证)

    注:本文由Colin撰写,版权所有!转载请注明原文地址,谢谢合作! 说明:由于Hotspot设定的步骤比较多,此文档只讲解如何设定Hotspot的方法,关于ROS的安装与路由上网的配置请自行百度查阅. ...

  8. Get started with ros -- 1

    原创博文:转载请标明出处(周学伟):http://www.cnblogs.com/zxouxuewei/tag/ 一.Introduction: 机器人操作系统(ROS)是使机器人系统的不同部分能够发 ...

  9. 嵌入式的我们为什么要学ROS

  10. Windows远程连接的实现

          实验室有一台电脑,寝室里也有一台电脑,很多时候,事情还没有做完就不得不离开实验室,所以,在寝室里远程控制实验室的电脑是一件很有"意义"的事,其实,Windows系统已经 ...

随机推荐

  1. .NET程序员AI开发基座:Microsoft.Extensions.AI

    大家好,我是Edison. 微软在2024年11月就发布了新的AI核心库Microsoft.Extensions.AI,虽然目前还是一个预览版,但其可以大大简化我们的AI集成和开发工作. Micros ...

  2. [联合省选 2020A] 组合数问题 题解

    后面有一只大大的组合数,考虑下降幂干过去.\(x^k\) 并不好使,这边考虑转化 \(f(x)=\sum a_ix^i=\sum b_ix^\underline i\). \[\sum_{k=0}^n ...

  3. [JSOI2008]火星人 题解

    原题链接:\(luogu\)$\ \ $ \(BZOJ\)$\ \ $ \(LOJ\) 题目大意:有一个可以支持插入和修改的字符串,定义函数 \(\operatorname{LCQ(x,y)}\) 表 ...

  4. 使用 Visual Paradigm 的业务流程模型和符号 (BPMN) 综合指南

    业务流程模型和符号 (BPMN) 是一种用于建模和记录业务流程的标准化图形符号.它被广泛采用,因为它能够提供一种清晰.通用的语言,所有利益相关者(业务分析师.技术开发人员和管理人员)都能理解.Visu ...

  5. mybatis - [08] mybatis-config.xml 详解

    mybatis-config.xml中的标签需要按照一定顺序配置,否则会有以下提示. configuration(配置) properties(属性) settings(设置) typeAliases ...

  6. 借Processing语言及IDE做DOS批处理的事务( 批量修改文件夹或文件的名字 )

    一直想用Processing语言做一些批处理的事务,因为其自带的IDE功能紧凑易用,极度轻量,又加上Java语言的生态极具友好,处理一些windows相关操作完全可行,简单快捷. 这次就是用它做[批量 ...

  7. C# 一般处理程序ashx用于验证码

    1.用VS2019建立一个web应用程序,选mvc模板 2.选中项目邮件新建文件夹Webservice,然后添加一般处理程序Verify.ashx然后右键打开改写如下 1 public class V ...

  8. gorm插入报错Error 1292 (22007): Incorrect datetime value: ‘0000-00-00‘ for column ‘xxx‘ at row 1

    在MySQL中,'0000-00-00 00:00:00'不是一个合法的DATETIME值.从MySQL 5.7.5开始,默认情况下不允许插入零日期或零时间值到DATETIME或 TIMESTAMP列 ...

  9. 记vue修改数组属性,dom不发生变化的问题

    目录: 目录 目录: 开篇 正确的姿势 为什么 $set 开篇 今天在写vue的时候,出现了一个以前可能没遇到的问题.我利用一个数组记录列表下按钮的启用.禁用状态,但我点击某个列表项按钮后,会修改当前 ...

  10. 实现Windows之间(win10)的桌面连接的三步走方法

    实现Windows之间(win10)的远程桌面连接的三步走方法 ‍ 目录 ‍ 目录 实现Windows之间(win10)的远程桌面连接的三步走方法 目录 环境 step1:打开两台Windows电脑的 ...