1. 简介
Tinymal-B的感知系统开发主要通过ROS和机器人的SDK完成,目前采用了市面上开源的小车ROS系统镜像,进一步通过增加四足机器人相关的导航算法、修改机器人模型实现Tinymal在室内环境下基于视觉或雷达的自主导航,进一步可以借助图像识别等技术完成对目标的检测、交互行为的规划,从而帮助大家快速入门四足机器人导航的相关技术内容,我们默认采用了RealSense D435和JetsonNano以及2D雷达作为基本传感器配置,并且可以进一步扩展语音交互或声源识别等模块,基于我们的开源理念很多模块都是采购了市面上现成的模组,因此我们教程中很多内容仅提供了扩展的软件。
2. SLAM与ROS基本环境的搭建
我们默认采用JetsonNano运行各类的感知例子,其即具有较好的CPU处理能力采用Cuda又能保证实时的目标检测等任务,对于感知算法开发我们采用了虚拟机作为主要环境但同时可以采用远程桌面实现在JetsonNano上的直接开发与编译,最终采用UDP的通讯方式感知计算结果将与主控完成通讯,获取机器人实时的里程计信息并下达控制指令,具体流程如下图所示:
1)由于我们采用了网络上开源的小车ROS系统如要针对四足机器人使用需要进一步完成代码的修改,首先完成JetsonNano镜像的下载:
链接:https://pan.baidu.com/s/1N4uAUHb-U1v9JkrcjxXbDQ
提取码:xt6r
2)采用balenaEtcher,完成对SD卡的烧录,将JetsonNano用网线与路由器连接,由于我们默认仅提供1路降压,JetsonNano的供电需要自行焊接;
3)供电后,连接WIFI登录路由器管理界面,查看JetsonNano的IP地址;
4)之后采用WinSCP完成我们提供四足机器人源码的替换,采用远程桌面完成在JetsonNano新代码的编译;
5)最终安装VMware虚拟机,首次安装后推荐增加硬盘的空间并重新分配空余空间:
链接:https://pan.baidu.com/s/1Cm_7vXvmnSoc4mFMqVdRTg
提取码:1q2s
2.1 系统重新与源更新
JetsonNano默认烧录的镜像为Ubuntu18.06,ROS版本为melodic,由于内部源授权较老因此需要首先重新完成apt-get update,首先完成对源的修改:
sudo vi /etc/apt/sources.list
注:在VIM中按键i进入编辑模式,ESC退出编辑,输入wq回车完成保存!
注释所有源地址,复制:
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
然后输入sudo apt-get install --reinstall ca-certificates;
然后完成sudo apt-get update,知道不报错为止,如果有其他错误可以复制相关错误在百度上查找解决方案。
参考资料:https://blog.csdn.net/Chaowanq/article/details/121559709
在完成更新之后,我们建议安装nano文本编辑器,其相比vim使用更加方便;
2.2 基本导航框架介绍
感知教程默认运行我们提供的稳定版本固件,即机器人底盘控制并不需要考虑,我们在navigation_task中采集了机器人实时的系统状态包括质心位置、速度、姿态和关节等数据,前者可以用于SLAM导航所需的底盘里程计信息,后者可以用于在Rviz中数字孪生可视化,最终通过UDP通讯完成与SLAM控制器的实时通讯:
在我们开源的导航工程中,SDK部分具有独立的线程,其采用非阻塞的方式持续读取SLAM控制器发送的指令,并同步回传底层的系统数据:
通过操作结构体,完成UDP数据的收发,其主要接受了导航规划得到的机体速度、转向速度:
之后采用UDP完成向感知计算机数据的回传,其与发送至上位机的数据一致: