在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!)    创芯人才网--重磅上线啦!
查看: 1224|回复: 0

[原创] 实现ARM+ROS(机器人操作系统)之环境搭建!

[复制链接]
发表于 2022-9-28 11:25:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
    如何低成本搭建arm+ROS的硬件载体?上文为大家介绍了实现的思路及原理,本文将为读者实际操作,展示ROS部署前的筹备工作及步骤分解。

1. 方案概述
本文重点介绍低成本搭建ARM+ROS的硬件及底层实现。开发板选用HDG2L-IOT评估套件,默认配置为2G内存、8G存储,搭载可玩性极高的Ubuntu系统。

ABUIABACGAAgpM-OmQYowNHy8gQwlgU46AE.jpg

开发套件默认的Ubuntu系统大概占用3.1G空间,剩余3.2G空间,在构建docker+ROS环境时可能会报eMMC空间不足的错误,所以需要调整HDG2L-IoT的启动参数,将启动参数改为引导到TF空间中。市面上常见的树莓派部署ROS方案也是如此操作。

2. 方案准备
首先,需要用到的硬件如下所示。

ABUIABACGAAgv8-OmQYokZKIfjC2Bzi4BQ.jpg
ABUIABACGAAgzs-OmQYo2rWD2AQw3wY4wAI.jpg


3. TF卡挂载Ubuntu固件修改
本小节将介绍如何实现HDG2L-IoT挂载TF卡内的文件系统,步骤如下:
1)制作启动卡;
2)解压目标文件系统到TF卡内;
3)修改uboot启动参数;

3.1制作启动卡
首先制作启动卡,格式化TF卡的操作可通过瑞萨提供的shell脚本实现,在PC端的Ubuntu开发环境下,执行以下命令来下载操作脚本。

ABUIABACGAAgh9DOmQYoodL_9AMwyQY4IQ.jpg

将需要被用作启动卡的TF卡插入到PC机内,用虚拟机来操作,调整步骤如下。首先打开虚拟机的USB 3.1功能,以免TF卡读取失败。

ABUIABACGAAgltDOmQYo5qzUmgUw5wY47gc.jpg

然后将TF卡导入Ubuntu虚拟机中,如下所示。

ABUIABACGAAgtdDOmQYogqaScDDfBzi-Aw.jpg

系统能识别后,执行刚才下载的usb_sd_partition.sh脚本,如下所示。

ABUIABACGAAgzdDOmQYo-5auxgIw0AY4SA.jpg

脚本执行成功后,TF卡将分为两个分区,分区1为fat32,分区2为ext4。

ABUIABACGAAg3tDOmQYokJOwBzDfAzgr.jpg

(注:当前新版本的Windows系统比较少支持ext4格式的TF卡,所以在Windows环境下一般只看到分区1,分区2会提示需要格式才能识别,请忽略。)

3.2拷贝目标文件到TF中
将HDG2L-IoT配套的Ubuntu压缩包解压到ext4分区中,虚拟机内自动挂载到/media/${USER}/sdb2内。本机的解压命令如下所示。

ABUIABACGAAg9tDOmQYo5La6nAcw0AY4Jg.jpg

将HDG2L-IoT配套的内核镜像拷贝到Windows下识别的TF分区中(FAT32系统允许被Windows系统识别,ext4系统不被识别),拷贝后如下所示。

ABUIABACGAAgjtHOmQYo3-DVtgMw7gg42wE.jpg


3.3修改uboot启动参数
最后需要调整HDG2L-IoT的uboot启动启动参数,引导其使用TF卡内的内核与文件系统,首先上电,在倒计时前进入uboot菜单,如下所示。

ABUIABACGAAg-dTOmQYo1OGN5wcwjwY4qAI.jpg

将上一步中制作好的TF卡插入HDG2L-IoT板卡的TF卡槽中,在U-Boot提示符下设定以下变量,bootargs变量用于指定文件系统的载体,在系统内,TF卡槽占用的设备名为/dev/mmcblk1p2。

ABUIABACGAAgq9XOmQYoiNumqwYwzAY4Ig.jpg

然后设置从TF的分区1内获取内核镜像和内核设备树,命令如下所示。

ABUIABACGAAgwdXOmQYox-m22gcw0QY4PQ.jpg

设置完成后,通过以下命令保存uboot的环境变量,命令如下所示。
ABUIABACGAAg39XOmQYovoGj5gYwzgY4JA.jpg
重新启动后,若TF卡正常,整体存储空间情况如下所示。

ABUIABACGAAg8tXOmQYozLygkgYwigY4qgI.jpg

若TF卡没插入,uboot的启动会报错误信息,错误信息如下所示。

ABUIABACGAAgg9bOmQYoq5W-8gQwrwQ45gM.jpg


4. 安装docker环境
正常启动之后,开始搭建docker环境。

4.1安装docker软件
首先,烧录后的第一次上电的板卡需要更新内部的软件版本,命令如下所示。update更新失败注意检测网络状态和date日期。部分软件可能体积过大,需要耐心等待。

ABUIABACGAAgmtbOmQYo_72_6QEwzwY4Jg.jpg

然后清除旧版本的docker软件,再重新安装docker.io。

ABUIABACGAAgytbOmQYo06baxAQwzgY4SA.jpg

启动docker。

ABUIABACGAAg8NbOmQYowIel2gQwzQY4JQ.jpg

使能docker开机自启动。

ABUIABACGAAggNfOmQYolpHjGTDQBjgj.jpg

检查docker运行状态。


ABUIABACGAAgjtfOmQYor4iy3gQwzgY4JQ.jpg
ABUIABACGAAg3dfOmQYowL7-3AMw_gY4tAM.jpg


4.2获取镜像
运行此命令可以从Docker Hub上下载现成镜像。

ABUIABACGAAg7NfOmQYo-LOEwQQwzQY4Ig.jpg

查看本地的镜像文件命令如下所示。

ABUIABACGAAg9dfOmQYooJbRsQEw1wY4Jg.jpg
ABUIABACGAAgi9jOmQYo2Kz2hgIwlgU4TA.jpg


4.3创建容器
容器就是加载模板后运行的沙盒环境,具有运行时所需的可写文件层、应用程序也处于运行状态。概念上可能会与PC端常用的虚拟机混淆,虚拟机是包括内核、应用运行环境和其他系统环境的,而Docker容器就是独立运行的一个或一组应用以及他们必须的运行环境。
创建容器时,需要指定使用的镜像文件,这里使用上面用pull指令下载下来的镜像文件,创建命令如下所示。

ABUIABACGAAgntjOmQYo7MjQygEw0AY4KA.jpg

查看容器状态,命令如下所示,每个容器都有自己的CONTAINER_ID与NAMES,供后面的命令操作使用(可使用docker rename命令修改容器名,便于简便使用)。

ABUIABACGAAgttjOmQYot6H5dDDSBjgk.jpg

ABUIABACGAAg1tjOmQYooum72AYwpwc4Qw.jpg

4.4启动容器
容器创建后,通过CONTAINER_ID与NAMES来操作容器,启动命令如下所示。

ABUIABACGAAg6tjOmQYooeL8mAEw0AY4Jw.jpg

上文所说,容器是运行一个或一组进程,docker ps命令里的COMMAND即为容器运行的进程,当前显示bash,即进入命令交互进程。通过以下命令进入容器内部。

ABUIABACGAAg-tjOmQYowNfryQIw0QY4JQ.jpg

进入后,可以操作容器内的命令,如下所示。

ABUIABACGAAgk9nOmQYo4L-n3QIwwwc4_QE.jpg

通过exit命令,可退出容器,退出后容器就处于停止状态,如下所示。

ABUIABACGAAgsNnOmQYoje6_iwYwpwc4jgE.jpg

通过以上操作,我们就完成了硬件与底层的搭建,为ROS运行在这套开发板上做好了准备,下一章节将为大家带来ROS的部署方法。


您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /3 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-18 21:58 , Processed in 0.022609 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表