找回密码
 注册
关于网站域名变更的通知
查看: 282|回复: 1
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-9-28 11:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

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

7 g  M- I" U( a* M" }1. 方案概述
; C5 G7 v3 b  y2 N- I7 q# X9 w
本文重点介绍低成本搭建ARM+ROS的硬件及底层实现。开发板选用HDG2L-IoT评估套件,默认配置为2G内存、8G存储,搭载可玩性极高的Ubuntu系统。

; S& d  o$ R3 a7 X3 F1 }- q6 o- I

; C# W9 h* t( s# V* C
开发套件默认的Ubuntu系统大概占用3.1G空间,剩余3.2G空间,在构建docker+ROS环境时可能会报eMMC空间不足的错误,所以需要调整HDG2L-IoT的启动参数,将启动参数改为引导到TF空间中。市面上常见的树莓派部署ROS方案也是如此操作。
9 e& C5 z* x/ Q& l" N
2. 方案准备
6 Z5 N7 W5 J- U
首先,需要用到的硬件如下所示。
- C2 u! c/ X! l3 ?1 W
. G* u$ s! q0 e$ B

( d$ y8 @- r" y; w4 D3. TF卡挂载Ubuntu固件修改, x" ^: i7 u8 ]- _. g9 g: H* D
本小节将介绍如何实现HDG2L-IoT挂载TF卡内的文件系统,步骤如下:
1)制作启动卡;
2)解压目标文件系统到TF卡内;
3)修改uboot启动参数;

. ~" I4 P) Q4 `; c3.1制作启动卡% C  ]# X8 l7 G/ @
首先制作启动卡,格式化TF卡的操作可通过瑞萨提供的shell脚本实现,在PC端的Ubuntu开发环境下,执行以下命令来下载操作脚本。
) l' @) f' ~9 r, u, g. A7 w4 t

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

) t/ z6 A- ?1 o) V

  q! M$ E9 a, G3 Y, R6 W7 k4 E. R
然后将TF卡导入Ubuntu虚拟机中,如下所示。

1 O0 T" B0 x) p, ]( s. L# M
$ g7 L& F3 T2 ^: s1 X- h
系统能识别后,执行刚才下载的usb_sd_partition.sh脚本,如下所示。
. o0 E3 l; J6 |7 D8 N1 l
8 g/ s, b2 N8 ?: ]2 G- q
脚本执行成功后,TF卡将分为两个分区,分区1为fat32,分区2为ext4。

( F. r# V, ~# m$ D
' _6 H* V* ?6 ~& t$ X2 ^: R
(注:当前新版本的Windows系统比较少支持ext4格式的TF卡,所以在Windows环境下一般只看到分区1,分区2会提示需要格式才能识别,请忽略。)
' B+ G  H( g. {+ G3 |
3.2拷贝目标文件到TF中
5 t8 [4 R  A6 ~9 T9 y
将HDG2L-IoT配套的Ubuntu压缩包解压到ext4分区中,虚拟机内自动挂载到/media/${USER}/sdb2内。本机的解压命令如下所示。
2 A5 ^* V8 B0 n' ]
6 i- P# ^/ u0 c3 ^
将HDG2L-IoT配套的内核镜像拷贝到Windows下识别的TF分区中(FAT32系统允许被Windows系统识别,ext4系统不被识别),拷贝后如下所示。
( E6 H4 m: W/ _; m) p8 z$ x
, K- Y% j% p1 M  q

7 k( y9 U9 i% z- J4 Q- r) L3.3修改uboot启动参数
6 x$ H( a. F' [$ k. Q4 O6 D
最后需要调整HDG2L-IoT的uboot启动启动参数,引导其使用TF卡内的内核与文件系统,首先上电,在倒计时前进入uboot菜单,如下所示。

9 V$ r, Z; o! F2 P5 x! Y
6 y5 t/ z  O; w  n0 ^$ Z- a
将上一步中制作好的TF卡插入HDG2L-IoT板卡的TF卡槽中,在U-Boot提示符下设定以下变量,bootargs变量用于指定文件系统的载体,在系统内,TF卡槽占用的设备名为/dev/mmcblk1p2。

+ V! t, F$ N3 z1 a7 h. c8 T
1 q" Z2 d2 s/ `) W
然后设置从TF的分区1内获取内核镜像和内核设备树,命令如下所示。

+ x9 Z! [* N8 \4 {2 w6 t
8 J+ z8 `2 B  v5 C% e( N0 K
设置完成后,通过以下命令保存uboot的环境变量,命令如下所示。
重新启动后,若TF卡正常,整体存储空间情况如下所示。
/ q6 q+ @2 z9 L! O
6 n' H7 J+ e8 y  C; V6 X4 Z& s
若TF卡没插入,uboot的启动会报错误信息,错误信息如下所示。
. _1 j' |7 ^! p. a# h

( \) J4 w7 H1 [4 T8 U+ D3 [$ h$ q) W! [
4. 安装docker环境
# P; Z1 T6 m0 e( }, p7 i* H
正常启动之后,开始搭建docker环境。
# x1 R8 f1 I9 n! _! y' T
4.1安装docker软件
3 {* a5 \* k: e; w5 d1 N
首先,烧录后的第一次上电的板卡需要更新内部的软件版本,命令如下所示。update更新失败注意检测网络状态和date日期。部分软件可能体积过大,需要耐心等待。

" y$ o% e3 b# y3 v" L# _. f0 k2 ^
! l: D# e$ e* P3 S- Z2 l1 v% w* g
然后清除旧版本的docker软件,再重新安装docker.io。

$ c, A2 b% C/ x* h7 [; O

( @' g* @/ k8 B' x4 ]% J
启动docker。
9 |7 o! G2 a4 Q* g8 ~

& k" O9 w$ \* A* Y+ b
使能docker开机自启动。

6 d7 x6 A3 H& N% {( @
% V8 F0 V! R) N# L" w, z
检查docker运行状态。
( ~  c# C2 `) e8 {( F, K0 q3 J
( ?' n& A/ y' `) Z
. {; b- I, k  C& g% \9 e
3 o6 w* `0 Q/ `, |0 O+ X- Z5 T, w9 _" H
4.2获取镜像" r' {6 ~' f1 M% J8 y4 n6 {& l
运行此命令可以从Docker Hub上下载现成镜像。
) r* V* g% ?/ V" n3 o8 V# ~) e( c1 X

) R3 ^4 }. z7 |+ q; d2 D/ X
查看本地的镜像文件命令如下所示。

. G( y" L- Q  u) w/ x7 T* X
' P  [- H- [9 K; F
/ F, Y1 j' j1 C3 R9 z
4.3创建容器" ?% r: P1 D, }/ H% b, k  r; ?# b
容器就是加载模板后运行的沙盒环境,具有运行时所需的可写文件层、应用程序也处于运行状态。概念上可能会与PC端常用的虚拟机混淆,虚拟机是包括内核、应用运行环境和其他系统环境的,而Docker容器就是独立运行的一个或一组应用以及他们必须的运行环境。
创建容器时,需要指定使用的镜像文件,这里使用上面用pull指令下载下来的镜像文件,创建命令如下所示。

8 r3 L3 J( R7 i$ V2 _
9 K  v& Y2 m9 ]+ Q# Y# c2 ]
查看容器状态,命令如下所示,每个容器都有自己的CONTAINER_ID与NAMES,供后面的命令操作使用(可使用docker rename命令修改容器名,便于简便使用)。
1 n7 ~5 v/ y* ~; @" S. O8 p

& v# `( r) r. D  S8 ?
9 b8 o& ?* E( c& K1 Q
4.4启动容器
( {8 y9 ~! j" S% r+ {
容器创建后,通过CONTAINER_ID与NAMES来操作容器,启动命令如下所示。
3 O% O& p8 K( ]0 m: g/ N! |

3 a$ \5 t, U2 [: p" R) O5 q
上文所说,容器是运行一个或一组进程,docker ps命令里的COMMAND即为容器运行的进程,当前显示bash,即进入命令交互进程。通过以下命令进入容器内部。
  X  r) h1 W) X6 c. e+ J3 S! J# z

% c; ^: ~; O. ?# j
进入后,可以操作容器内的命令,如下所示。

* G' @9 G* k! @$ i) @% {  |% N
5 x' g, ?( [" p6 g8 h! ^7 S
通过exit命令,可退出容器,退出后容器就处于停止状态,如下所示。
! i( Z8 l* p& r. M
" \. C* y6 D% O- d: Y2 D3 S
通过以上操作,我们就完成了硬件与底层的搭建,为ROS运行在这套开发板上做好了准备,下一章节将为大家带来ROS的部署方法。
: I; k9 u! ^; T! G3 n5 h

  M, D6 l- O6 Y2 U
  • TA的每日心情
    开心
    2022-12-5 15:27
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2022-9-28 16:24 | 只看该作者
    步骤太详细了,我去试试
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-11-23 19:04 , Processed in 0.156250 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表