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

相关文章

全网最全Tomcat完全卸载重装教程小结

《全网最全Tomcat完全卸载重装教程小结》windows系统卸载Tomcat重新通过ZIP方式安装Tomcat,优点是灵活可控,适合开发者自定义配置,手动配置环境变量后,可通过命令行快速启动和管理... 目录一、完全卸载Tomcat1. 停止Tomcat服务2. 通过控制面板卸载3. 手动删除残留文件4.

Java服务实现开启Debug远程调试

《Java服务实现开启Debug远程调试》文章介绍如何通过JVM参数开启Java服务远程调试,便于在线上排查问题,在IDEA中配置客户端连接,实现无需频繁部署的调试,提升效率... 目录一、背景二、相关图示说明三、具体操作步骤1、服务端配置2、客户端配置总结一、背景日常项目中,通常我们的代码都是部署到远程

Python的pandas库基础知识超详细教程

《Python的pandas库基础知识超详细教程》Pandas是Python数据处理核心库,提供Series和DataFrame结构,支持CSV/Excel/SQL等数据源导入及清洗、合并、统计等功能... 目录一、配置环境二、序列和数据表2.1 初始化2.2  获取数值2.3 获取索引2.4 索引取内容2

python依赖管理工具UV的安装和使用教程

《python依赖管理工具UV的安装和使用教程》UV是一个用Rust编写的Python包安装和依赖管理工具,比传统工具(如pip)有着更快、更高效的体验,:本文主要介绍python依赖管理工具UV... 目录前言一、命令安装uv二、手动编译安装2.1在archlinux安装uv的依赖工具2.2从github

C#实现SHP文件读取与地图显示的完整教程

《C#实现SHP文件读取与地图显示的完整教程》在地理信息系统(GIS)开发中,SHP文件是一种常见的矢量数据格式,本文将详细介绍如何使用C#读取SHP文件并实现地图显示功能,包括坐标转换、图形渲染、平... 目录概述功能特点核心代码解析1. 文件读取与初始化2. 坐标转换3. 图形绘制4. 地图交互功能缩放

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因

Java Scanner类解析与实战教程

《JavaScanner类解析与实战教程》JavaScanner类(java.util包)是文本输入解析工具,支持基本类型和字符串读取,基于Readable接口与正则分隔符实现,适用于控制台、文件输... 目录一、核心设计与工作原理1.底层依赖2.解析机制A.核心逻辑基于分隔符(delimiter)和模式匹

spring AMQP代码生成rabbitmq的exchange and queue教程

《springAMQP代码生成rabbitmq的exchangeandqueue教程》使用SpringAMQP代码直接创建RabbitMQexchange和queue,并确保绑定关系自动成立,简... 目录spring AMQP代码生成rabbitmq的exchange and 编程queue执行结果总结s