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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

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

: e0 Y) W# g+ E* V$ `( a0 X1. 方案概述
$ d! P# n/ j) E/ K
本文重点介绍低成本搭建ARM+ROS的硬件及底层实现。开发板选用HDG2L-IoT评估套件,默认配置为2G内存、8G存储,搭载可玩性极高的Ubuntu系统。
5 C1 X% x/ E: D$ K* a, J
6 ~, o2 B$ O+ t
开发套件默认的Ubuntu系统大概占用3.1G空间,剩余3.2G空间,在构建docker+ROS环境时可能会报eMMC空间不足的错误,所以需要调整HDG2L-IoT的启动参数,将启动参数改为引导到TF空间中。市面上常见的树莓派部署ROS方案也是如此操作。

: k) C$ N! B% @2. 方案准备
# R9 [4 X2 F* Q3 {$ z8 n  E
首先,需要用到的硬件如下所示。
4 \9 Z7 }% n5 L5 O3 N$ K* R8 j& o
1 y" \. g1 m" Y- O, E$ {
3 L5 Q) {. p3 m( s: S; |, k: W: f6 ~
3. TF卡挂载Ubuntu固件修改+ N& I2 ]3 D8 K5 I) @! j
本小节将介绍如何实现HDG2L-IoT挂载TF卡内的文件系统,步骤如下:
1)制作启动卡;
2)解压目标文件系统到TF卡内;
3)修改uboot启动参数;

, l" r* A0 S% f! B6 R. w% t  a  _3.1制作启动卡
+ A! S9 H7 M& S
首先制作启动卡,格式化TF卡的操作可通过瑞萨提供的shell脚本实现,在PC端的Ubuntu开发环境下,执行以下命令来下载操作脚本。
- b8 r+ \, L+ R+ G6 Q
9 G6 N" M! T" b, C. A
将需要被用作启动卡的TF卡插入到PC机内,用虚拟机来操作,调整步骤如下。首先打开虚拟机的USB 3.1功能,以免TF卡读取失败。

/ O4 {- Q& C- Q; x& u
, v& t8 W  y$ Z. Z4 G' m, ^/ V5 d
然后将TF卡导入Ubuntu虚拟机中,如下所示。
, o9 ?( W0 |& q
) `' T/ g0 I  ?1 z. F: B
系统能识别后,执行刚才下载的usb_sd_partition.sh脚本,如下所示。
; M/ P: U1 B. B+ o

1 W3 Q, T) F2 f: F6 a, n
脚本执行成功后,TF卡将分为两个分区,分区1为fat32,分区2为ext4。
) t8 W1 _2 \  C% g7 _
  {! n6 I$ _: n
(注:当前新版本的Windows系统比较少支持ext4格式的TF卡,所以在Windows环境下一般只看到分区1,分区2会提示需要格式才能识别,请忽略。)
$ Z  Q- Z0 n  p& f, k
3.2拷贝目标文件到TF中
* c! _4 T1 t* b5 h5 O, D7 D- a
将HDG2L-IoT配套的Ubuntu压缩包解压到ext4分区中,虚拟机内自动挂载到/media/${USER}/sdb2内。本机的解压命令如下所示。

% k8 @6 a( Z( _! O1 t8 h' w5 Y8 W

8 _  s$ y! a# \0 n6 u* V
将HDG2L-IoT配套的内核镜像拷贝到Windows下识别的TF分区中(FAT32系统允许被Windows系统识别,ext4系统不被识别),拷贝后如下所示。
( G9 O, |9 l7 L; p7 ~# d
' G' k5 W  b3 Z: H, m& B% P
) f( ]- Q8 l* A
3.3修改uboot启动参数
% A; X1 G+ i# j) W# f8 C# _1 Z0 T
最后需要调整HDG2L-IoT的uboot启动启动参数,引导其使用TF卡内的内核与文件系统,首先上电,在倒计时前进入uboot菜单,如下所示。

# |3 R! P6 b% I7 R9 @* \6 z

3 O8 X7 d6 J! H& G4 C  F$ `
将上一步中制作好的TF卡插入HDG2L-IoT板卡的TF卡槽中,在U-Boot提示符下设定以下变量,bootargs变量用于指定文件系统的载体,在系统内,TF卡槽占用的设备名为/dev/mmcblk1p2。

, g' f% W: B6 {

* i" p. u/ I  u" Z) s6 w# [' W
然后设置从TF的分区1内获取内核镜像和内核设备树,命令如下所示。
) A; J* `/ B  @* P* p% r

2 G! C+ x* Y) j4 A) a
设置完成后,通过以下命令保存uboot的环境变量,命令如下所示。
重新启动后,若TF卡正常,整体存储空间情况如下所示。
( k/ i' M3 E! I, x8 K

8 P5 W" b( Y: c/ B% g# b" B
若TF卡没插入,uboot的启动会报错误信息,错误信息如下所示。
8 C+ S; J" C) J4 N; }& e

# t; t0 w' J& m) Q2 f6 @% S
7 w* b( {# u) k0 W8 j& Y4. 安装docker环境' l, ]) ^) l& S* E, h
正常启动之后,开始搭建docker环境。

3 _: S5 i# r; p; o8 ]# a4.1安装docker软件
% f, p4 P  z: E5 r# G
首先,烧录后的第一次上电的板卡需要更新内部的软件版本,命令如下所示。update更新失败注意检测网络状态和date日期。部分软件可能体积过大,需要耐心等待。

% ?% o# X4 |( N2 e

) X5 [, R, q4 b7 s; |, P3 I" Y, C/ u
然后清除旧版本的docker软件,再重新安装docker.io。

/ a" X8 G1 C9 e- g, I, x, V

, g) M- i2 y8 [* D6 \9 n; L
启动docker。
9 ^8 d& Q5 v8 a) X. R- b/ P: c

/ S) Q: f7 s8 _& x; f" n8 Y
使能docker开机自启动。

/ D+ j8 W) }9 y8 L8 c! K
$ g' y2 D. B* h% I- K
检查docker运行状态。
* b6 h( I. ^' F. ]

2 q, q; L& e) D: A

6 j* U* a! ?' z$ a& ]
" g5 f' N& h  o: T: N' u8 u' s  p4.2获取镜像( b5 z: d" T+ S1 E
运行此命令可以从Docker Hub上下载现成镜像。

, u; I# @; g. \

4 Z: z& r) s# }+ a. c! j/ N
查看本地的镜像文件命令如下所示。
  d/ B2 R! L- t+ P! F* T

( w, _1 ?9 `' j  Z3 {6 I7 ]1 T5 `) h( X4 K+ y' R
4.3创建容器
. O% {* ?6 \5 c: Y7 ]. M: l
容器就是加载模板后运行的沙盒环境,具有运行时所需的可写文件层、应用程序也处于运行状态。概念上可能会与PC端常用的虚拟机混淆,虚拟机是包括内核、应用运行环境和其他系统环境的,而Docker容器就是独立运行的一个或一组应用以及他们必须的运行环境。
创建容器时,需要指定使用的镜像文件,这里使用上面用pull指令下载下来的镜像文件,创建命令如下所示。
( s5 p: y) a+ N$ D2 X5 ~

$ X+ J1 c4 v# M! I' O) H8 o% r
查看容器状态,命令如下所示,每个容器都有自己的CONTAINER_ID与NAMES,供后面的命令操作使用(可使用docker rename命令修改容器名,便于简便使用)。
# y& ~' j- O2 K) x# I+ I

% q: {3 e: j! p) Q4 a

' y  S! F# c7 q4.4启动容器# X* w3 f0 a3 G8 y2 F  s- ], U
容器创建后,通过CONTAINER_ID与NAMES来操作容器,启动命令如下所示。
$ o! ^5 o$ y6 Q5 m% Q6 c
+ ?- ^: N0 w$ [2 Z# B  O; T
上文所说,容器是运行一个或一组进程,docker ps命令里的COMMAND即为容器运行的进程,当前显示bash,即进入命令交互进程。通过以下命令进入容器内部。
6 R' F, g* Q4 r8 L0 J/ R* [1 ?) G
/ S! [8 z3 @7 r" P/ P7 I4 A% i
进入后,可以操作容器内的命令,如下所示。

$ Z# t' I9 f" j  G# w5 v* O
! a: K1 R* r; A
通过exit命令,可退出容器,退出后容器就处于停止状态,如下所示。

8 e; ]8 b$ q) f
  G. i( Z. H2 z! F0 Q* V
通过以上操作,我们就完成了硬件与底层的搭建,为ROS运行在这套开发板上做好了准备,下一章节将为大家带来ROS的部署方法。

2 S7 {: h5 p7 J, A  J, W1 S! o5 L1 g  p; i' _
  • TA的每日心情
    开心
    2022-12-5 15:27
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-7-29 10:31 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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