第 8 章 机器人实体导航(自学二刷笔记)

重要参考:

课程链接: https://www.bilibili.com/video/BV1Ci4y1L7ZZ

讲义链接: Introduction · Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程

9.1 概述

实体机器人导航与仿真环境下的导航核心实现基本一致,主要区别在于导航实现之前,基本环境的搭建有所不同,比如:导航场景、传感器、机器人模型等,大致区别如下:

仿真环境 实体机器人
导航场景 依赖于gazebo搭建的仿真环境 依赖于现实环境
传感器 在gazebo中通过插件来模拟一些列传感器,比如:雷达、摄像头、编码器.... 使用的是真实的传感器
机器人模型 依赖于机器人模型,以实现仿真环境下的机器人的显示,通过robot_state_publisher、joint_state_publisher实现机器人各部件的坐标变换。 机器人模型不是必须的,如果不使用机器人可以通过static_transform_publisher发布导航必须的坐标变换;如果使用机器人模型也可以借助 robot_state_publisher、joint_state_publisher 发布坐标变换,当然后者可以在rviz中显示机器人模型,更友好。

总体而言,在实体机器人导航中,可以完全脱离 gazebo,而机器人模型是否使用,可以按需选择。

除此之外,实体机器人导航的开发环境也发生了改变,程序最终需要被部署在机器人端,我们可以在本地开发,然后通过ssh上传至机器人,或者也可以通过VScode的远程开发插件直接在机器人端编写程序。

9.2 VScode远程开发

在第8章,我们介绍了ssh远程连接的使用,借助于ssh可以远程操作树莓派端,但是也存在诸多不便,比如:编辑文件内容时,需要使用vi编辑器,且在一个终端内,无法同时编辑多个文件,本节将介绍一较为实用的功能------VSCode远程开发,我们可以在VScode中以图形化的方式在树莓派上远程开发程序,比ssh的使用更方便快捷,可以大大提高程序开发效率。

1.准备工作

VScode远程开发依赖于ssh,请首先按照8.5.3内容配置ssh远程连接。

2.为VScode安装远程开发插件

启动VScode,首先点击侧边栏的扩展按钮,然后在 "扩展:商店" 的搜索栏输入 "Remote Development"并点击同名插件,最后在右侧显示区中点击 "安装"

3.配置远程连接

步骤1:使用快捷键 "ctrl + shift + p "打开命令输入窗口,并输入 "Remote-SSH:Connect to Host... ",弹出列表中选择与之同名的选项。

步骤2:步骤1完成将弹出一个新的命令窗口如下,选择下拉列表中的 "Add New SSH Host"

步骤3:步骤2完成又将弹出一个新的命令窗口,在其中输入:ssh ubuntu@192.168.43.164,其中,ubuntu需要替换为你的登录账号,192.18.43.164 则替换为你的树莓派的ip地址。

步骤4:选择步骤3完成后的弹窗列表中的第一个选项(或直接回车),即可完成配置,配置成果后会有提示信息。

4.使用

步骤1:继续使用快捷键 "ctrl + shift + p "打开命令输入窗口,并输入 "Remote-SSH:Connect to Host...",此时列表中将显示步骤3中配置的ip地址,直接选择,选择后,VScode将打卡一个新的窗口。

或者,也可以点击侧边栏的 "远程资源管理器",在弹出的服务器列表中选择要连接的服务器,并右击,选择在本窗口或新窗口中实现远程连接。

步骤2:选择菜单栏的 "文件"下的 "打开文件夹",在弹窗列表中选择需要打开的文件夹并点击确定即可。

最终,我们就可以像操作本地文件一样实现远程开发了。

相关推荐
小码狐41 分钟前
并查集【数据结构与算法】【C语言版-笔记】
数据结构·笔记·并查集·c语言版
LearnTech_1232 小时前
【学习笔记】手写一个简单的 Spring MVC
笔记·学习·spring·spring mvc
笑鸿的学习笔记3 小时前
工具笔记之生成图表和可视化的标记语言Mermaid
笔记
kissSimple4 小时前
UE行为树编辑器图文笔记
笔记·ue5·编辑器·unreal engine·unreal engine 5
l1x1n04 小时前
DOS 命令学习笔记
笔记·学习·web安全
winds~5 小时前
自动驾驶-问题笔记-待解决
人工智能·笔记·自动驾驶
s_little_monster5 小时前
【QT】QT入门
数据库·c++·经验分享·笔记·qt·学习·mfc
alfiy6 小时前
Elasticsearch学习笔记(六)使用集群令牌将新加点加入集群
笔记·学习·elasticsearch
爱学的小涛6 小时前
【NIO基础】基于 NIO 中的组件实现对文件的操作(文件编程),FileChannel 详解
java·开发语言·笔记·后端·nio
爱学的小涛6 小时前
【NIO基础】NIO(非阻塞 I/O)和 IO(传统 I/O)的区别,以及 NIO 的三大组件详解
java·开发语言·笔记·后端·nio