Week 4:命令行、机器人基础概念与 Python 仿真

本周从更底层的角度理解“程序如何运行”,并补充 Ubuntu 权限、网络、SSH、Git、Python 和 PyBullet 仿真基础。

课堂内容

  1. 编程基础概念说明。
  2. 机器人基础概念说明。
  3. 运行程序作业。

答疑安排

  • 周三下午 3 点半到晚上 9 点。
  • 也可以随时微信提问。
  • 有问题请大胆、大方提问。

命令行的意义

开发软件然后运行的本质:

程序(文本)
-> 编译 / 解释
-> 可执行文件或运行时指令
-> 运行于各类平台

不同平台会带来不同运行结果:

  • 操作系统:Windows、Linux、macOS、iOS、Android。
  • 芯片平台:x86、amd64、arm64。
  • 嵌入式设备:单片机、Arduino、树莓派。
  • 并行计算平台:GPU。
  • 实时系统、DSP、FPGA 等。

命令行也叫 terminal / CLI,是运行系统内核和开发工具的重要入口。图形界面 GUI 更面向普通用户,命令行更接近开发和运维工作。

物理机、虚拟机、Ubuntu 与 Docker

课堂类比:

  • 物理机:买房。
  • 虚拟机:租房,例如 VMware Workstation、WSL。
  • 容器化:开房间,例如 Docker。

WSL 是微软官方的虚拟化架构。Docker 在 Windows 上也可以基于 WSL 运行,让每个应用拥有相对独立的环境。

IP 地址与通信

常见概念:

  • IPv4 地址,例如 192.168.0.1
  • IPv6 地址。
  • DNS 服务器地址。
  • 广域网 / 局域网 / 本机回环地址 127.0.0.1
  • 外网 / 内网。

查看外网地址可以打开:

https://www.ip138.com

测试网络连通性:

ping ip地址或网址

ROS1、ROS2 与通信

早期 ROS1 通信常涉及 TCP / UDP:

  • TCP 需要握手,可靠但开销更高。
  • UDP 更快,但可能丢包。

ROS2 使用 DDS 技术,更适合分布式机器人系统。

ROS1 到 ROS2 通信机制变化说明

什么是 SSH

SSH 是安全外壳协议。Git 可以使用 SSH 连接远程服务器,也可以直接登录远程机器:

ssh root@110.110.110.110

格式是:

用户名@远程或局域网计算机地址

Ubuntu 权限

Ubuntu 中常见用户权限:

  • root:完整控制权限,风险也最高。
  • sudo:普通用户临时执行高权限命令的前缀。
  • 普通用户:日常开发使用。

常用命令:

su 用户名
exit
sudo bash

Ubuntu 目录表示

/     根目录
.     当前目录
..    上一级目录
~     用户目录,例如 /home/robot

常用命令:

pwd
cd 目录地址
ls
ls 目录地址
mv 当前地址 新地址

Git 与 GitHub

Git 是程序版本管理工具,类似代码的游戏存档。写错了可以回退,多人可以独立开发后合并。

GitHub 是常用的远程代码仓库服务器,也可以使用 Gitee、GitLab 或自建服务器。

Git 和 GitHub 的关系说明

SSH key 相关命令:

ssh-keygen -t ed25519 -C "your@email"
ls ~/.ssh
cat ~/.ssh/id_ed25519.pub

SSH key 私钥和公钥说明

自由度概念图 1

自由度概念图 2

运动学概念图

机器人运动学示意图

Python 与 PyBullet

安装 Python:

sudo apt install python

进入程序目录后运行:

python3 程序名字.py

安装 pip 和 PyBullet:

sudo apt install python3-pip
pip3 install pybullet

运行机器狗仿真程序示例:

git clone https://github.com/bulletphysics/pybullet_robots
python3 laikago.py

课堂练习:运行程序,修改关节参数,观察机器狗运动或倒下。

PyBullet 机器狗仿真实验截图

Python 控制小乌龟

课堂提到的练习方向:

  1. 保存 Python 程序文件。
  2. 启动 turtlesim 节点。
  3. 运行 Python 程序控制小乌龟。

参考页面:

https://course.a-real.me/content/week3.html

results matching ""

    No results matching ""