机器人编程教程5使用Git和SD卡副本备份代码

这篇具有很好参考价值的文章主要介绍了机器人编程教程5使用Git和SD卡副本备份代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

5使用Git和SD卡副本备份代码

在本章中,您将学习到以下内容:

  • 代码是如何破坏或丢失的
  • 策略 1 - 将代码保存在电脑上并上传
  • 策略 2:使用 Git 回溯历史
  • 策略 3 - 制作 SD 卡备份

5.1 代码是如何破坏或丢失的

代码和它的近亲--配置,都需要时间和艰苦的努力。代码需要配置才能运行,例如 Raspberry Pi 操作系统配置、额外软件和必要的数据文件。两者都需要研究和学习,需要设计、制作、测试和调试。

很多糟糕的情况会导致代码丢失。我在经过数周的工作后,在带机器人去参加展会的前一周就遇到过这种情况。那么,您的代码会发生什么情况呢?

5.1.1 SD 卡数据丢失和损坏

SD 卡损坏是指 SD 卡中用来保存代码、Raspberry Pi 操作系统和任何你准备好的东西的数据被破坏。文件无法读取,或者卡无法使用。SD 卡上的信息可能会永久丢失。

如果 Raspberry Pi 意外断电,SD 卡可能会损坏,导致数据丢失。发热的 Pi 会慢慢烘烤 SD卡,损坏它。Pi 上的视觉处理就容易发热。如果Pi通过GPIO引脚或电源发生严重的电气故障,SD 卡也会受损。

5.1.2代码或配置更改

编码意味着尝试。有些会成功,有些则会失败。在这种情况下,你会想回头看看你都改了些什么。

错误的配置也会让机器人失去作用,比如 Pi 无法联网或启动。系统软件包升级可能会出错,导致代码无法工作,或者需要对代码进行大量修改才能重新工作。

这些问题结合在一起可能会造成真正的噩梦。我曾见过代码的修改导致机器人行为失常,并以损坏 SD 卡的方式损坏自身。在一次重要的机器人活动前两周,我一直在更新操作系统的软件包,结果把电源线弄断了,导致 SD 卡损坏,Raspberry Pi 操作系统也随之损坏,重建操作系统的过程非常痛苦。这是一次惨痛的教训。

5.2 策略 1 - 将代码保存在电脑上并上传

通过安全文件传输协议(SFTP),您可以将文件从电脑传输到 Pi。这种策略可以让你在电脑上编写代码,然后上传到 Raspberry Pi。您可以选择自己的编辑器,并安全地拥有多个副本。
编辑代码需要专门设计的软件。针对Python推荐使用Mu、Microsoft VS Code、WingIDE、Geany、Notepad++ 和 PyCharm。

SFTP 使用 SSH 通过网络在 Raspberry Pi 上复制文件。让我们来看看如何操作:

  • 首先,在 PC 上创建一个文件夹,用于存储机器人代码;例如,my_robot_project。

  • 在该文件夹中,用编辑器制作一个测试文件,只需打印一段文字即可。将这段代码放入名为 hello.py 的文件中:


print("Raspberry Pi is alive")

  • 我们将把它复制到机器人上并运行。您可以使用 https://filezilla-project.org 上的 SFTP 工具 FileZilla 进行复制。下载并按照安装说明操作:

机器人编程教程5使用Git和SD卡副本备份代码

  • 插入Raspberry Pi并启动电源。你会发现在右侧面板底部,FileZilla显示"未连接"。
  • 在"Host"框中,键入您在无头设置中为机器人Pi提供的本地主机名,前缀为ftp://;例如,sftp://myrobot.local。
  • 在用户名框中输入pi,在密码框中输入之前设置的密码。
  • 单击 Quickconnect 按钮连接Raspberry Pi。
  • 连接完成后,你会在右侧的远程站点面板中看Raspberry Pi的文件,如图 5.2 所示:

机器人编程教程5使用Git和SD卡副本备份代码

  • 使用左侧的本地站点面板进入你电脑上的代码。

  • 现在单击图左上方突出显示的 hello.py,并将其拖动到右下角面板,将其放到Raspberry Pi上:
    机器人编程教程5使用Git和SD卡副本备份代码

  • 你拖动文件时,你会在"已排队文件"部分看到它。由于文件较小,它只会在队列状态中停留一瞬间。你也可以对整个文件夹使用同样的系统。你很快就能在远程站点(Raspberry Pi)看到文件,如图右侧面板所示。

  • 要运行这段代码,请使用 PuTTY 登录 Pi 并尝试执行以下命令:

$ python3 hello.py
Raspberry Pi is alive

这一策略是让代码更安全的良好开端。通过在笔记本电脑/PC 上工作并复制到Pi上,你可以保证除了机器人上的那个副本外,总有一个副本。你还可以在电脑上使用任何你喜欢的代码编辑器,并在错误传到树莓派之前就发现它们。

5.2 策略2:使用Git回溯历史

Git是一种流行的源代码控制形式,是记录代码修改历史的一种方式。你可以回溯修改,查看修改内容,还原旧版本,并在注释日志中记录修改原因。Git 能将代码存储在多个位置,以防硬盘出现故障。Git将代码及其历史存储在仓库(或称 repos)中。在Git中,你可以创建分支,即整套代码的副本,与你的代码并行尝试各种想法,之后再将这些想法合并回主分支。

我将带你开始使用Git,但这部分内容只能让你了解Git的一些皮毛。让我们开始吧:

如果你使用的是Windows或macOS,我建议你使用GitHub应用程序,这样设置会更简单。

  • Git要求你在电脑上使用命令行设置身份:
> git config --global user.name "<Your Name>"
> git config --global user.email <your email address>
  • 要将这个项目置于源代码控制之下,我们需要初始化它并提交第一段代码。请确保您已进入代码文件夹(my_robot_project),然后在计算机命令行中键入以下内容:
> git init .
Initialized empty Git repository in C:/Users/danny/
workspace/my_robot_project/.git/
> git add hello.py
> git commit -m "Adding the starter code"
[master (root-commit) 11cc8dc] Adding the starter code
1 file changed, 1 insertion(+)
create mode 100644 hello.py

"git init ."命令Git将文件夹创建为Git仓库。"git add"将hello.py文件保存在仓库。

  • 现在我们可以用"git log"查看日志了:
> git log
commit 11cc8dc0b880b1dd8302ddda8adf63591bf340fe (HEAD ->
master)
Author: Your Name <your@email.com>
Date: <todays date>
Adding the starter code
  • 现在修改 hello.py 中的代码,将其改成这样:
import socket
print('%s is alive!' % socket.gethostname())

让我们看看这段代码与之前有什么不同:

> git diff hello.py
diff --git a/hello.py b/hello.py
index 3eab0d8..fa3db7c 100644
--- a/hello.py
+++ b/hello.py
@@ -1 +1,2 @@
-print("Raspberry Pi is alive")
+import socket
+print('%s is alive!' % socket.gethostname())

以上是Git显示差异的方式。Git将这些改动理解为去掉了打印行,取而代之的是导入和打印行。我们可以把它添加到Git中,生成一个新版本,然后再用 git log查看两个版本:

> git add hello.py
> git commit -m "Show the robot hostname"
[master 912f4de] Show the robot hostname
1 file changed, 2 insertions(+), 1 deletion(-)
> git log
commit 912f4de3fa866ecc9d2141e855333514d9468151 (HEAD ->
master)
Author: Your Name <your@email.com>
Date: <the time of the next commit>
Show the robot hostname
commit 11cc8dc0b880b1dd8302ddda8adf63591bf340fe (HEAD ->
master)
Author: Your Name <your@email.com>
Date: <todays date>
Adding the starter code

这样你就可以回溯到以前的版本,或只是比较版本,并保护自己免受可能会让你后悔的改动。

现在,我们可以回溯和向前(至少对我们的代码而言),我们可以更自信地进行修改。只要记住频繁提交--尤其是在完成某些工作之后!

5.3 策略3-制作 SD 卡备份

开始之前,请正确关闭 Raspberry Pi,取出 SD 卡并将其放入电脑。这些干净的镜像文件很大,所以不要把它们放到 Git 仓库中。在任何情况下,根据镜像文件的大小不同,这项操作都需要 20-30 分钟。

5.3.1 Windows

Windows上将使用Win32DiskImager。因此,我们的第一步就是安装和设置它。继续:

从https://sourceforge.net/projects/win32diskimager获取安装程序。

机器人编程教程5使用Git和SD卡副本备份代码

机器人编程教程5使用Git和SD卡副本备份代码

在"文件名"方框中将图像命名为myrobot.img。然后单击"打开"按钮确认:

机器人编程教程5使用Git和SD卡副本备份代码

单击"读取"按钮开始复制图像。在读取图像的过程中,你会看到一个进度条和剩余时间估算。图像复制完成后,Win32 Disk Imager会告诉你读取成功,然后你就可以退出软件了:

参考资料

  • 软件测试精品书籍文档下载持续更新 https://github.com/china-testing/python-testing-examples 请点赞,谢谢!
  • 本文涉及的python测试开发库 谢谢点赞! https://github.com/china-testing/python_cn_resouce
  • python精品书籍下载 https://github.com/china-testing/python_cn_resouce/blob/main/python_good_books.md
  • Linux精品书籍下载 https://www.cnblogs.com/testing-/p/17438558.html
  • Raspberry Pi(树莓派4B)4轻松入门(上)-安装 https://www.cnblogs.com/testing-/p/17604049.html
  • Raspberry Pi 基金会安装 Raspberry Pi 操作系统指南:https://www.raspberrypi.org/documentation/installation/installing-images/README.md。
  • 《Raspberry Pi By Example》,Ashwin Pajankar和Arush Kakkar,Packt Publishing,其中有一节介绍Raspberry Pi的替代操作系统,以及许多令人兴奋的 Raspberry Pi项目。
  • Raspberry Pi GPIO 引脚输出 (https://pinout.xyz/): 它介绍了不同电路板与Raspberry Pi的实际引脚连接方式。
  • GitHub 上的《Git 手册》:https://guides.github.com/introduction/git-handbook/。该文档全面介绍了 Git 是什么、它能解决什么问题,以及使用其功能的起点。
  • 手把手教你使用 Git 进行版本控制:https://www.packtpub.com/application-development/hands-version-control-git-video。这是一个关于如何使用Git的视频教程。
  • GitHub 指南:https://guides.github.com/。一系列关于如何充分利用Git和GitHub的指南。
  • GitLab基础:https://docs.gitlab.com/ee/gitlab-basics/。GitLab是GitHub的绝佳替代品,拥有庞大的社区和一些出色的Git使用指南。

5.3.2 Mac

MacOS有一种制作SD卡和磁盘镜像的内置方法。这就是使用内置的磁盘工具。让我们来看看它是如何工作的:

机器人编程教程5使用Git和SD卡副本备份代码

单击 "查看 "菜单:

机器人编程教程5使用Git和SD卡副本备份代码

现在点击显示所有设备选项。选择包含启动卷的设备:

机器人编程教程5使用Git和SD卡副本备份代码

在菜单栏中,选择文件 | 新映像:
机器人编程教程5使用Git和SD卡副本备份代码

在此菜单下,选择 "从 <您的存储设备> 映像":

机器人编程教程5使用Git和SD卡副本备份代码

磁盘工具将显示一个对话框。设置文件名和位置,并格式化为 DVD/CD 母盘:
机器人编程教程5使用Git和SD卡副本备份代码

磁盘工具为这些文件提供 .cdr 扩展名:

机器人编程教程5使用Git和SD卡副本备份代码

将其重命名为 .iso:

机器人编程教程5使用Git和SD卡副本备份代码

您需要确认是否需要这样做:
机器人编程教程5使用Git和SD卡副本备份代码

现在,你可以在 macOS 上创建SD镜像文件,以便与balenaEtcher 一起使用。

5.3.3 Linux

在Linux下,备份SD卡可以通过命令行dd命令完成。在了解如何操作之前,我们首先需要找到设备的位置。让我们开始吧:

插入卡并键入以下命令查找设备的位置:

$ dmesg

该命令将输出很多内容,但您只对接近末尾的一行感兴趣,该行内容如下:

sd 3:0:0:0: [sdb] Attached SCSI removable disk

卡在方括号[sdb]中,在你的电脑上可能有所不同。SD卡的位置将是/dev/<驱动器位置>,例如/dev/sdb。

请注意正确的位置,因为您可能会破坏SD卡或计算机硬盘中的内容。如果不确定,请勿使用此方法。

确定SD卡位置(如 /dev/sdb 或 /dev/disk1)后,就可以使用 dd 命令启动克隆。该命令可将数据转入或转出驱动器:

$ sudo dd if=/dev/sdb of=~/myrobot.img bs=32M
Password:
474+2 records in
474+2 records out
15931539456 bytes (16 GB, 15 GiB) copied, 4132.13 s, 3.9
MB/s

if参数为输入文件,本例中为SD卡。of参数是输出文件,即克隆卡中的myrobot.img文件。

bs参数是区块大小,因此将其设置为32M,会使操作更快。

你需要输入用户密码才能启动。dd命令会将myrobot.img文件创建为主目录下整个SD卡的克隆文件。dd在完成之前不会有任何输出,然后会显示有关操作的统计信息。文章来源地址https://www.toymoban.com/news/detail-649300.html

到了这里,关于机器人编程教程5使用Git和SD卡副本备份代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【机器人仿真Webots教程】-控制器编程指南

    1.1 controller与场景树节点 在Webots中,场景树节点(Scene Tree Nodes)是Webots仿真环境中的各种对象,包括机器人模型、传感器、环境物体等。每个节点都有其在场景树中的位置,节点之间可以形成层次结构,以便组织和管理模拟环境。 控制器程序(Controller Program)是用于控制机

    2024年02月06日
    浏览(32)
  • 斯坦福JSKarel编程机器人使用介绍

    为了避免被编程语言固有的复杂性所困扰,有一个被称为卡雷尔(Karel)机器人的微型世界(microworld)的简化环境,可以让编程初学者从中学习理解编程的基本概念,而不必掌握大量无关的细节,让编程初学者更容易理解编程的要点和思维方式。 斯坦福Karel是一门面向初学者

    2024年02月05日
    浏览(32)
  • 遨博协作机器人高级编程 - 遨博机器人SDK用户自定义算法接口介绍与使用

    目录 一、简介 二、环境版本 三、开发环境部署 1.二次开发资料下载 2. AUBO PE编程仿真环境配置 四、linux C++ SDK示例 1. 编程环境 2. 加载C++ SDK工程 3. linux C++ SDK 文件构成 4.运行SDK示例 五、构建用户自定义算法SDK示例工程 1.Linux C++ SDK透传接口 2.  创建新项目 3.导入遨博机器人

    2024年02月14日
    浏览(26)
  • RobotStudio教程:ABB机器人拆垛与码垛应用示教编程与虚拟仿真

    目录 任务描述 机器人拆垛与码垛工作站创建 机器人拆垛与码垛工作流程分析 机器人位置偏移函数介绍 机器人拆垛与码垛应用示教编程 机器人拆垛与码垛虚拟仿真 在RobotStudio软件中创建ABB机器人拆垛与码垛工作站,并示教机器人拆垛与码垛程序,实现机器人拆垛与码垛应用

    2023年04月16日
    浏览(35)
  • 遨博协作机器人高级编程 -AUBOPE SDK Python接口介绍与使用

    目录 一、简介 二、环境版本 三、Python SDK接口简介 1.Python SDK接口数据 2. Python SDK接口函数示例 四、任务实施 五、任务拓展 大家好,本篇文章主要针对AUBOPE系统基于Python编程语言的SDK开发方面进行讲解。掌握Windows系统下Python环境的搭建,掌握机器人Python编程接口的开发流程

    2024年02月12日
    浏览(69)
  • 使用Python搭建钉钉机器人的教程

      钉钉机器人(DingTalk Robot)是钉钉提供的一种自定义机器人,可以在钉钉群组中自动发送消息、接收消息、进行提醒等功能。通过使用Python编程语言,你可以方便地与钉钉机器人进行交互。在本教程中,我们将介绍如何使用Python搭建钉钉机器人,并发送消息到指定的钉钉群

    2024年02月11日
    浏览(24)
  • 工业机器人编程与操作-搬运机器人码垛系统编程与仿真

    目录 一、设计背景  二、课程设计任务要求 三、设备导入并布局 四、传送带的smart组件 五、传送带整体思路 六、夹爪的smart组件6.1 LineSensor被测是否有任何对象与两点之间 七、夹爪整体思路 八、程序配置 九、各程序 参考文献 在科技和经济飞速发展的背景下,人力成本不断

    2024年02月07日
    浏览(42)
  • 使用易语言+myqq制作QQ群管理机器人-入门教程

    QQ群管理如何提高效率?当然是使用QQ机器人来管理群最轻松了。 如果你有兴趣自己制作一款机器人,那么我将教你制作一款简单的机器人! 1:安装易语言,如果你不会易语言,这个教程您可能会看不懂,当然,只要您有一定编程经验,要看懂还是很简单的。 2:下载myqq。百

    2024年02月09日
    浏览(56)
  • 医疗机器人软件中的机器人机器人编程技术:机器人技术的创新应用

    作者:禅与计算机程序设计艺术 随着科技的发展,医疗机器人逐渐成为人们关注的热门话题。医疗机器人可以在医院、康复中心等各种场合为病人提供帮助,不仅可以提高工作效率,还能降低医护人员的工作强度。而机器人编程技术则是实现医疗机器人功能的关键,本文将围

    2024年02月07日
    浏览(44)
  • 超详细API插件使用教程,教你开发AI垃圾分类机器人

    本文分享自华为云社区【案例教学】华为云API对话机器人的魅力—体验AI垃圾分类机器人,作者:华为云PaaS服务小智。 体验用Huawei Cloud API开发AI垃圾分类机器人,并学习AI自然语言的情感分析、文本分词、文本翻译等能力。 API插件支持 VS Code IDE、IntelliJ IDEA等平台、以及华为

    2024年02月08日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包