学习经历

王思为

此次使用的套件是古月居提供的OriginBot智能机器人(导航版),搭载地平线机器人开发板——旭日X3派。根据老师的介绍这块板子具有很高的算力,足以支持深度学习等AI功能的实现,以ROS2和TogetherROS作为软件系统,具有相当丰富的原装应用,能够快速开始SLAM、导航定位。视觉处理、机器学习的开发。此外,OriginBot是开源的,据说连硬件设计部分都是开源的,方便学习了解实现过程。

第一天来到地点后,首先对此次培训的工具进行了简要的介绍,两人一组分了一台车,首先进行组装,借此熟悉了OriginBot的组成结构。由于OriginBot出厂未烧写SD卡镜像和控制器固件,在组装完成后我们将提供的文件烧写进去,在启动完RDK X3后进行了网络配置。之后又进行了一系列环境配置,安装了各类功能包和依赖库,以满足后续机器人开发的使用。本次学习使用的是Ubuntu22.04,Ubuntu操作系统是ROS的部署平台,老师讲了Linux的一些基本指令,如何通过终端进行文件操作。完成套件组装和系统烧写后,接下来就启动OriginBot了,ssh连接后通过输入指令依次启动机器人底盘驱动和键盘控制节点。成功完成后就可通过键盘控制机器人的移动。第一天的授课到这就基本结束了。

第二天理论讲解较多,一开始为我们介绍了控制器软件的总体架构:

 

在STM32中,定时器让各个功能模块按照准确的时间顺序稳定运行,比如控制图中的电压检测和获取IMU数据等操作的运行顺序。在电源电压检测中,检测到电源电压过低就会让蜂鸣器响,同时会把这个电源电压通过串口1发送出去。其他功能模块同理。所有的数据都是通过这个串口UART1来和外部做通讯。这里的外部指的就是ROS驱动包。

 

老师为我们展示主函数并讲解了它的运行流程。几个初始化命令后接循坏语句来写的各个功能模块。比如电源电压检测部分:While首先判断串口有没有接收到数据,然后判断发送数据是否到达了时间周期,若到达了时间周期首先会检测电源电压是否过低,若过低蜂鸣器报警,同时会把电池电压发送出去,还有电机速度、陀螺仪加速度、角速度等参数发送给串口1。在讲解完控制器大体的逻辑和控制结构后,老师继续讲解了如何对源码进行调试。控制器固件的源码也是开源的,非常方便调试与二次开发。本次学习使用的是Keil来完成控制器的编译配置。由于缺少一个组件无法用ST-link进行在线调试,故本次学习是通过编译生成HEX二进制文件,再通过FlyMCU烧录进去。在对代码简单的修改并下载到控制器后,我们成功实现了简单二次开发,再一次加深了对其控制原理的理解。完成这部分的学习后老师继续讲解了IO控制、串口通信原理和IMU通信协议的相关内容。之后我们使用XCOM来观察串口接收到的数据。

第三天首先也是进行理论讲解,老师为我们讲授了ROS通信机制,以及通信协议的上位机实现。包括话题通信,发布订阅的基础概念等等

图中originbot_base 为小车最基本的功能包,下面为其功能,他会订阅cmd_vel这个话题,这个话题是速度指量,会通过串口发送给控制器。下面还有三个服务,也是通过串口给STM32控制器发送数据,从STM32接收到数据里包括电压、编码器、还有IMU数据。得到数据后通过ROS接口发送数据。结合代码为我们讲解了是怎么接受数据并解析数据的。

下午则是让我们运行OriginBot的人体跟踪和SLAM地图构建功能。SSH连接OriginBot后在终端输入指令启动机器人底盘,再输入lauch启动指令便可启动人体跟随功能。同样在终端中输入对应的指令启动机器人底盘和激光雷达,再启动cartographer建图算法,在Ubuntun中启动上位机可视化软件即可看到构建的地图,建图完成后通过指令保存,再拷贝到相应路径中。至此本次学习圆满结束。

 总结与体会

本次训练营采用的是理论加实操的教学模式,在三天的学习里完成了OriginBot的快速上手,对其运行原理和二次开发有了初步的了解,在实践过程中遇到的许多的问题,古月居的老师们都一一耐心解答,还会讲授一些学习方法和方向。本次学习还让我了解到了自身的一些基础知识的不足,很多地方都是知其然不知其所以然,对其底层逻辑了解不够充分,亟待后须的学习。本次训练营还让我充分体会到,智能机器人的学习离不开实物,许多课本上的晦涩难懂的知识通过一次又一次的实践才能理解,非常感谢有这样一个难得的学习机会。

学习视频链接

ROS2入门教程:https://book.guyuehome.com/

ROS2入门二十一讲:https://www.bilibili.com/video/BV16B4y1Q7jQ/

Originbot项目主页:http://originbot.org/

从0开发智能小车:https://class.guyuehome.com/p/t_pc/course_pc_detail/column/p_6332a82ee4b0eca59c36826b

TogetheROS™·Bot核心原理与应用:https://class.guyuehome.com/p/t_pc/course_pc_detail/big_column/p_63774a4be4b083231ed08f85

关于在古月居实习的总结报告

张行乐

经过为期三天的企业实训,让我体悟到了许多新的关于智能小车的知识和奥妙。短短三天的实训是在我们充实、奋斗的过程中完成的。对此我有许多感触也认识到了许多自己的不足。在这里首先感谢为我们培训的伍老师和吴老师,对他们表示深深的谢意。

培训开始的第一天,是老师教大家如何将智能小车组装起来。复杂的小车在老师的悉心教导下逐渐也变得简单起来。虽然我们组的运气非常好,抽到了唯一一辆老师已经组装好的小车,但其实说实话小组成员们非常想动手尝试一下小车的组装,好在通过观摩其他小组的组装过程,我们首先进行了智能小车的组装工作。通过学习和指导,我们成功地将小车的各个部件进行组装,包括底盘、驱动电机、传感器等。在组装的过程中,我们学习了小车各个部件的功能和作用,为后续的配置和开发工作奠定了基础。之后就是老师“手把手”教导我们下载必要的软件、教学简单的操作步骤如给小机器人联网、人体跟随等。总的来说第一天的培训还是十分轻松的。

第二天、第三天所要学习的就是本次培训的主要内容了。第二天先由吴老师教我们利用串口为小车配置环境。在小车组装完成后,我们学习了如何利用串口为小车配置环境。通过串口通信,我们成功地为小车配置了各种传感器和模块,包括摄像头、雷达等传感器。这些配置为小车的后续功能实现提供了基础支持。还有使用keil搭建嵌入式开发环境 在实训中,我们还学习了如何使用keil软件搭建嵌入式开发环境。通过keil,我们能够进行小车的程序编写、调试和下载等工作。这为我们后续的小车功能开发提供了必要的技术支持。

第三天由伍老师为我们带来ROS方面的知识。ROS开发环境配置以及ROS使用的相关知识 在实训中,我们还学习了ROS(机器人操作系统)开发环境的配置以及相关知识。通过ROS,我们能够更加便捷地进行机器人应用程序的开发和测试,同时能够利用ROS的功能包来实现小车的自主导航、人体跟随等功能。实现小车自主导航、人体跟随、地图搭建等功能 通过综合运用串口配置、keil开发环境和ROS,我们成功地实现了小车的自主导航、人体跟随和地图搭建等功能。我们编写了程序,成功让小车在特定环境下进行自主导航,实现了人体跟随功能,同时还成功地搭建了地图,为小车的路径规划和导航提供了数据支持。

总的来说,通过企业三天的实训,我们获得了丰富的知识和技能,掌握了智能小车的组装、配置、开发和功能实现等方面的技术。这些技能将对我们未来的工作和学习产生积极的影响,并为我们的职业发展打下了坚实的基础。同时,通过实践,我们对ROS的使用和机器人应用开发有了更深入的理解和掌握,为我们未来的科研和工程项目提供了宝贵的经验。