Turtlebot3调试必看——爬坑笔记(内含ROS和Turtlebot参考教程)

2023-12-28 18:18

本文主要是介绍Turtlebot3调试必看——爬坑笔记(内含ROS和Turtlebot参考教程),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

设备及系统版本:

PC端:

  • Lenovo Y7000P + Ubuntu18.04 + ROS Melodic。
  • 如果使用电脑也为此型号,系统建议安装Ubuntu18.04,因为安装16.04后会缺少独显、触摸版、无线网卡等驱动,后续安装也很麻烦。其他型号电脑可根据电脑情况自选,只是在按照官方说明书调试时要注意切换ROS版本(Ubuntu18.04对应ROS Melodic;Ubuntu16.04对应ROS Kinetic)。
    在这里插入图片描述

TurtleBot3:

  • 树莓派3B+ + 官网e-Manual提供的TurtleBot3 Raspbian image for Raspberry Pi 3B+镜像(基于Ubuntu16.04,已包含ROS Kinetic及一些turtlebot3需用的packages)
    在这里插入图片描述

  • 起初为了树莓派和PC的Ubuntu版本一致,所以安装了官网e-Manual提供的 Ubuntu 18.04.3 Preinstalled Server ARM64 for Raspberry Pi3,没有图形化界面,配置起来比较繁琐,e-Manual中也没有对应此版本的教程,需根据Kinetic中的教程进行修改(比如命令中包含Kinetic时,应改为Melodic),后面因为在“8.Autonomous Driving”中无法enable摄像头而放弃。此文最后附上了此系统下调试时的一些爬坑笔记,若使用此系统且还想试一试的同学可参考一下,若在8.2.1中能成功开启摄像头还烦请指教一下。
    在这里插入图片描述

  • 后来重新使用e-Manual提供的系统镜像进行配置,只能说真香,可省去很多步骤,主要是稳定。

  • 经过调试发现PC和树莓派Ubuntu、ROS版本不同也可。


参考教程:

主要参考(本文的debug也是针对此网站给出的e-Manual。)

  • ROBOTIS官网的e-Manual
    https://emanual.robotis.com/docs/en/platform/turtlebot3/quick-start/
    此网站需科学上网,否则打开网页特别慢。

其他可参考:

  • ROS官方教材:https://community.robotsource.org/t/download-the-ros-robot-programming-book-for-free/51(可点此直接下载 ROS Robot Programming (English) ;ROS机器人编程 (中文) )
  • 创客智造https://www.ncnynl.com/turtlebot3.html
  • 以及各路神仙的博客
  • Turtlebot4用户手册:http://www.turtlebot.net.cn/index.php?catid=115#pp241(基于ROS2)

爬坑笔记:

提示:我直接写e-manual中的章节号,便于定位,非笔记章节号。

3. Quick Start Guide
在设置3.1 PC setup 和3.2 SBC Setup时,注意要选对上面的ROS版本,Ubuntu18.04对应ROS Melodic;Ubuntu16.04对应ROS Kinetic。尤其PC端和树莓派端Ubuntu版本不一致时,注意切换。


3.1.2. Install ROS

wget https://raw.githubusercontent.com/ROBOTIS-GIT/robotis_tools/master/install_ros_kinetic.sh

在运行此步时,可能报错,原因是raw.githubusercontent.com这个网站是外网,在ROS的安装和使用中经常遇到,解决方法如下:

  • 方法1:科学上网

  • 方法2:连接手机热点,多执行几次,有概率可解决。

  • 方法3:修改hosts

    sudo nano /etc/hosts
    

    在最下面添加:

    151.101.84.133  raw.githubusercontent.com
    

    保存后重新运行指令即可。

  • 当然此处也可按照下面的提示,直接使用官方的ROS安装,但ROS安装的最后一步rosdep init的时候也会出现这个问题,仍需上述方法来解决。
    在这里插入图片描述


3.1.4. Install TurtleBot3 Packages

在这里插入图片描述
如果想要新建workspace,先无需运行apt-get install,否则还需运行下面Click here to expand中的spt-get remove。


3.1.6. Network Configuration

在这里插入图片描述

此处图片并非要操作什么,只是示意,此处也无需设置TurtleBot,也可忽略此处直接看后面步骤操作。

  • 此图是说明要在TurtleBot和PC的.bashrc中添加两句代码用来设置ROS通讯的IP,其中PC端在此步骤设置,注意两个IP均为PC的IP。TurtleBot端在3.2中设置,此处可忽略,区别是TurtleBot中设置的是PC的IP和Turtlebot的IP。

3.2.3.3. SSH

sudo ssh pi@192.168.x.x

无需大括号,必要时加sudo。


固定IP的方法
此处插播一条固定IP的方法,否则每次PC端和树莓派端关机重启连接wifi,会被动态分配不同的IP,导致ssh失效,还需重新查询,并更改.bashrc中的IP。

第一种情况:PC端和树莓派端在第三端路由器发射出来的局域网内

  • 通过网页输入ip的方法,进入路由器管理界面,不同路由器的管理界面ip不同,可查看路由器背面的标签或者百度一下(参考https://www.win7sky.com/luyouqidizhi/20170630-4508.html)。华为路由器的管理界面中有固定一个设备的IP的功能,其他路由器应该也可,自行百度。找到自己的PC和树莓派,固定IP即可。

第二种情况:PC端发热点,树莓派连接到PC端的热点上。

  • PC端发每次热点IP是固定的,也可用nm-connection-editor自定义IP,然后根据PC端的IP设置树莓派端。(方法参考https://www.feifeiboke.com/pcjishu/3617.html) 即在 /etc/dhcpcd.conf中设置static ip,此conf文档中有设置格式。192.168.x.x/24中的 /24 表示子网掩码为255.255.255.0。

3.2.3.8 设置IP
注意事项见上述3.1.6


3.3.7 验证OpenCR

  • 确保是用turtlebot自带的电池或者其他12v的电源给OpenCR供电,且打开了OpenCR板子上的开关,否则舵机带不动。下图开关状态为打开。
    在这里插入图片描述
  • 如果原来是用MicroUSB的5v电源给树莓派供电想要拔除,直接拔除会造成关机。可先连接OpenCR的12v电源,打开开关,然后再拔除树莓派MicroUSB供电线。(树莓派和OpenCR的电源是互通的,树莓派接5v或者OpenCR接12v均可同时开启两个板子,但是如果想让轮子转动,必须确保OpenCR接入了电池或者其他12v电源。)
  • 先按一下最大的那个,RESET;然后长按旁边SW1或SW2,至少5秒,看轮子是否转动,想要停下按RESET即可。

3.5.1. Run roscore
若要运行树莓派中的ROS命令,则必须保持PC端的roscore是启动状态。


3.6.1.1.1. Keyboard Teleoperation
运行teleop应同时运行树莓派中的bringup


3.6.1.2. RC100
若使用ROBOTIS RC100手柄(只有TurtleBot3 Waffle Pi里面有带),可无需运行任何指令,因为手柄是通过蓝牙和OpenRC直接通讯,不经过树莓派。通讯指令是在3.3中上传到OpenCR中的。


4.2.SLAM

export TURTLEBOT3_MODEL=${TB3_MODEL}

无需每次都要输入此句,因为已经写进.bashrc中了,可打开.bashrc检查一下,如没有运行一次即可,无需重复。


4.2.3 Mapping
建图时,受雷达传感器性能的限制,不要让机器人运动太快,也不要原地快速转动,容易造成地图混乱。


4.5.1 Save Map
如果在前面3.14中建立了新的workspace,建议在此处将map的储存路径改为自己的ws中,便于管理,名字也可根据实际环境更改。比如:

mkdir -p ~/catkin_ws/map
rosrun map_server map_saver -f ~/catkin_ws/map/labmap

但后面5.1.3中运行navigation时应注意修改map.yaml的路径和名字


5.2.&5.3. Navigation
表述的文字有点多,白话说一下:

  • 第一步:先用2D Pose Estimate给机器人定位,使雷达线的轮廓与地图尽量接近,此时可根据实际中机器人所在房间的位置来设置这个Pose,用墙角或者其他特征来判断。
  • 第二步:雷达线轮廓和地图接近后,可使用teleop来对位置和方向进行进一步校正,使雷达线轮廓与地图吻合。此处有个技巧:在第一步设置Pose的时候,以位置准确为主,方向可有偏差,然后在第二步的遥控校正时,仅校正角度即可。
  • 第三步:用2D Nav Goal设置目标位置和方向,尽量不要给机器人出难题,因为内置算法的参数还未优化,优化方法见5.4。

6.1.2 Launch Simulation World
三种机型和三种地图可任意组合,比如使用的机型为burger,仍可roslaunch World和House仿真环境,但是第一次打开House会特别慢,可先用Empty和World来尝试,尤其是电脑配置较低时。


6.2. SLAM Simulation
此处和4.2一样,无需每次都要运行export,除非想要更换机器人模型。


附:PC端Ubuntu18.04 + 树莓派端Ubuntu 18.04.3 Preinstalled Server ARM64 for Raspberry Pi3 爬坑笔记

提示:上述提到过的坑在Ubuntu18.04中基本都有,就不重述了,下面是一些只在Ubuntu18.04中遇到的坑。

3.2.3.5 配置WIFI

在这里插入图片描述
Ubuntu 18.04.3 Preinstalled Server ARM64 for Raspberry Pi3 只能在tty中调试,没有图形化界面,所以在连接ssh前的配置wifi需要自己手动打代码。

  • 首先需一字不差的按照教程给的代码编辑,代码的层级也要注意,每个层级隔两个空格,不能用tab,只能敲空格。还有冒号后的空格一定要有。

  • wifi name和password是带有双引号的,把里面的文字换成wifi名称和密码即可。例如:

      access-points:"wifi": password: "12345678"
    
  • 此步之后在运行第6步之前,需运行以下命令:

    sudo netplan generate   #检查代码格式是否正确
    sudo netplan apply      #应用
    ifconfig                #此时即可查询wifi设置是否成功,以及wlan0对应的IP
    

4. SLAM
从这里开始教程中就不支持Melodic了,但是按照Kinetic下面的教程进行还能继续。


8.1.2. Install Autorace Packages

sudo apt-get install ros-kinetic-image-transport ros-kinetic-cv-bridge ros-kinetic-vision-opencv python-opencv libopencv-dev ros-kinetic-image-proc

此步安装可能遇到python-opencv报错,但是更改一下python版本,比如python3-opencv,可运行,但是不知道这样是否正确。


8.2.1 Camera Imaging Calibration
此处打不开摄像头,网上查了一些,都是在可视化界面中的操作,可是此版本系统没有可视化界面,所以进行不下去了,如有大佬有办法解决,请告知,感谢!


按照Robotis官网提供的e-Manual调试的坑目前就只发现这么多,如果再有什么发现可以交流。本人Linux、ROS均为初学,若解决办法错误或者有更好的办法,欢迎指教。


这篇关于Turtlebot3调试必看——爬坑笔记(内含ROS和Turtlebot参考教程)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/546830

相关文章

Tolua使用笔记(上)

目录   1.准备工作 2.运行例子 01.HelloWorld:在C#中,创建和销毁Lua虚拟机 和 简单调用。 02.ScriptsFromFile:在C#中,对一个lua文件的执行调用 03.CallLuaFunction:在C#中,对lua函数的操作 04.AccessingLuaVariables:在C#中,对lua变量的操作 05.LuaCoroutine:在Lua中,

AssetBundle学习笔记

AssetBundle是unity自定义的资源格式,通过调用引擎的资源打包接口对资源进行打包成.assetbundle格式的资源包。本文介绍了AssetBundle的生成,使用,加载,卸载以及Unity资源更新的一个基本步骤。 目录 1.定义: 2.AssetBundle的生成: 1)设置AssetBundle包的属性——通过编辑器界面 补充:分组策略 2)调用引擎接口API

UnrealScriptIDE调试环境部署

先安装vs2010   再安装VSIsoShell.exe, 下载地址 https://pan.baidu.com/s/10kPNUuDGTbWXbz7Nos-1WA       fd3t   最后安装unside,下载地址 https://archive.codeplex.com/?p=uside  安装中间有一步选择Binary文件夹要选对路径。   安装好以后,启动 UDKDe

《offer来了》第二章学习笔记

1.集合 Java四种集合:List、Queue、Set和Map 1.1.List:可重复 有序的Collection ArrayList: 基于数组实现,增删慢,查询快,线程不安全 Vector: 基于数组实现,增删慢,查询快,线程安全 LinkedList: 基于双向链实现,增删快,查询慢,线程不安全 1.2.Queue:队列 ArrayBlockingQueue:

IDEA配置Tomcat远程调试

因为不想把本地的Tomcat配置改乱或者多人开发项目想测试,本文主要是记录一下,IDEA使用Tomcat远程调试的配置过程,免得一段时间不去配置到时候忘记(毕竟这次是因为忘了,所以才打算记录的…) 首先在catalina.sh添加以下内容 JAVA_OPTS="-Dcom.sun.management.jmxremote=-Dcom.sun.management.jmxremote.port

ROS话题通信流程自定义数据格式

ROS话题通信流程自定义数据格式 需求流程实现步骤定义msg文件编辑配置文件编译 在 ROS 通信协议中,数据载体是一个较为重要组成部分,ROS 中通过 std_msgs 封装了一些原生的数据类型,比如:String、Int32、Int64、Char、Bool、Empty… 但是,这些数据一般只包含一个 data 字段,结构的单一意味着功能上的局限性,当传输一些复杂的数据,比如:

操作系统实训复习笔记(1)

目录 Linux vi/vim编辑器(简单) (1)vi/vim基本用法。 (2)vi/vim基础操作。 进程基础操作(简单) (1)fork()函数。 写文件系统函数(中等) ​编辑 (1)C语言读取文件。 (2)C语言写入文件。 1、write()函数。  读文件系统函数(简单) (1)read()函数。 作者本人的操作系统实训复习笔记 Linux

Steam邮件推送内容有哪些?配置教程详解!

Steam邮件推送功能是否安全?如何个性化邮件推送内容? Steam作为全球最大的数字游戏分发平台之一,不仅提供了海量的游戏资源,还通过邮件推送为用户提供最新的游戏信息、促销活动和个性化推荐。AokSend将详细介绍Steam邮件推送的主要内容。 Steam邮件推送:促销优惠 每当平台举办大型促销活动,如夏季促销、冬季促销、黑色星期五等,用户都会收到邮件通知。这些邮件详细列出了打折游戏、

X-AnyLabeling使用教程

1.AI 模型自动分割标注使用教程 2.AI 模型自动目标检测标注使用教程

LVGL快速入门笔记

目录 一、基础知识 1. 基础对象(lv_obj) 2. 基础对象的大小(size) 3. 基础对象的位置(position) 3.1 直接设置方式 3.2 参照父对象对齐 3.3 获取位置 4. 基础对象的盒子模型(border-box) 5. 基础对象的样式(styles) 5.1 样式的状态和部分 5.1.1 对象可以处于以下状态States的组合: 5.1.2 对象