三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

JupyterLab初次尝试使用;机器人上位机与下位机;

JupyterLab初次尝试使用;机器人上位机与下位机;

JupyterLab初次尝试使用;

最近要对机器人进行编程,代码编写,初期开发可能需要用到JupyterLab,方便测试机器人的各个组件调用是否正常。

JupyterLab是什么?

  • 交互式开发环境:JupyterLab 是一个开源的交互式开发环境,它提供了一个易于使用的界面,用于编写代码、运行实验和查看数据。
  • 适合数据科学和机器学习:虽然最初设计用于数据科学和机器学习,但它的灵活性和易用性使其成为机器人编程和实验的理想选择。
  • 基于网页的工具:作为一个基于浏览器的应用,JupyterLab 不需要复杂的安装过程,用户可以在几乎任何操作系统上使用它。

使用JupyterLab开发的优势

  • 易于上手的编程环境:JupyterLab 提供的简洁、直观的用户界面,使得编程和实验对于初学者更加友好。通过交互式笔记本轻松编写和测试代码,适合初学者逐步探索和学习。
  • 即时反馈和结果可视化:即时反馈,用户可以立即看到代码更改的效果,这对于调试和学习非常有用。JupyterLab 可以方便地进行数据可视化,帮助理解机器人的行为和性能。
  • 支持多种编程语言:JupyterLab 支持 Python 等多种编程语言,为各种技能水平的用户提供灵活性。
  • 自定义和扩展功能:JupyterLab 具有的高度可定制性和扩展性,用户可以根据自己的需要添加新功能或工具。
  • 跨平台和可访问性:JupyterLab 是基于网页的工具,具有出色的跨平台能力,它可以在不同操作系统上运行,通过浏览器即可访问。

什么时候用JupyterLab

初期探索阶段 → JupyterLab 很合适

  • 测试电机、传感器、摄像头等接口
  • 验证某个 API 是否正常返回数据
  • 快速可视化传感器数据
  • 试验某个算法的效果

先用 JupyterLab 把机器人各接口摸熟,再切回 VSCode 做工程化开发。

机器人上位机与下位机

基本概念

上位机 下位机
硬件 工控机、Jetson 等 STM32、Arduino 等单片机
系统 Linux / Ubuntu 裸机或 RTOS
语言 Python、C++ C / C++
职责 决策、感知、算法 电机控制、传感器读取
通信 ROS2、WiFi 串口、CAN 总线

配件归属

上位机(大数据量、需要算力)

  • 摄像头(USB / CSI / 深度摄像头)
  • 激光雷达(2D / 3D)
  • 运行 YOLO、LLM、导航等算法

下位机(实时控制、低数据量)

  • 底盘电机 + 驱动器
  • 编码器、IMU
  • 超声波、碰撞开关等

判断原则:数据量大、需要算法处理 → 上位机;实时性要求高、低数据量 → 下位机

典型架构

上位机
├── 视觉识别(YOLO)
├── LLM 代理工作流
├── 导航规划
└── 发布 /cmd_vel↓ 串口 / CAN
下位机
├── 底盘电机控制
├── IMU数据采集
└── 执行速度/转向指令

二次开发原则

  • 99% 的代码写在上位机
  • 下位机由厂商提供,当黑盒使用
  • 通过 ROS2 话题或串口协议与下位机通信

换底盘流程

换底盘只需在上位机重写适配层,上层代码不动:

代理 / 导航 / YOLO 代码   ← 不动↓ /cmd_vel适配层                ← 针对新底盘协议重写↓ 串口 / CAN新底盘

优先选支持 ROS2 标准话题(/cmd_vel)的底盘,换底盘时适配层都不用改。

← 返回列表