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

相关文章

使用Nginx来共享文件的详细教程

《使用Nginx来共享文件的详细教程》有时我们想共享电脑上的某些文件,一个比较方便的做法是,开一个HTTP服务,指向文件所在的目录,这次我们用nginx来实现这个需求,本文将通过代码示例一步步教你使用... 在本教程中,我们将向您展示如何使用开源 Web 服务器 Nginx 设置文件共享服务器步骤 0 —

Golang使用minio替代文件系统的实战教程

《Golang使用minio替代文件系统的实战教程》本文讨论项目开发中直接文件系统的限制或不足,接着介绍Minio对象存储的优势,同时给出Golang的实际示例代码,包括初始化客户端、读取minio对... 目录文件系统 vs Minio文件系统不足:对象存储:miniogolang连接Minio配置Min

手把手教你idea中创建一个javaweb(webapp)项目详细图文教程

《手把手教你idea中创建一个javaweb(webapp)项目详细图文教程》:本文主要介绍如何使用IntelliJIDEA创建一个Maven项目,并配置Tomcat服务器进行运行,过程包括创建... 1.启动idea2.创建项目模板点击项目-新建项目-选择maven,显示如下页面输入项目名称,选择

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

Linux下MySQL8.0.26安装教程

《Linux下MySQL8.0.26安装教程》文章详细介绍了如何在Linux系统上安装和配置MySQL,包括下载、解压、安装依赖、启动服务、获取默认密码、设置密码、支持远程登录以及创建表,感兴趣的朋友... 目录1.找到官网下载位置1.访问mysql存档2.下载社区版3.百度网盘中2.linux安装配置1.

Python使用pysmb库访问Windows共享文件夹的详细教程

《Python使用pysmb库访问Windows共享文件夹的详细教程》本教程旨在帮助您使用pysmb库,通过SMB(ServerMessageBlock)协议,轻松连接到Windows共享文件夹,并列... 目录前置条件步骤一:导入必要的模块步骤二:配置连接参数步骤三:实例化SMB连接对象并尝试连接步骤四:

Linux使用粘滞位 (t-bit)共享文件的方法教程

《Linux使用粘滞位(t-bit)共享文件的方法教程》在Linux系统中,共享文件是日常管理和协作中的常见任务,而粘滞位(StickyBit或t-bit)是实现共享目录安全性的重要工具之一,本文将... 目录文件共享的常见场景基础概念linux 文件权限粘滞位 (Sticky Bit)设置共享目录并配置粘

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin