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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

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

- X, F$ D3 T  \: D  d& D3 d1. 方案概述
; F* m, u: B' N
本文重点介绍低成本搭建ARM+ROS的硬件及底层实现。开发板选用HDG2L-IoT评估套件,默认配置为2G内存、8G存储,搭载可玩性极高的Ubuntu系统。

, ?7 S/ p) B+ r+ C8 Z
6 o2 E. H& F8 D- v
开发套件默认的Ubuntu系统大概占用3.1G空间,剩余3.2G空间,在构建docker+ROS环境时可能会报eMMC空间不足的错误,所以需要调整HDG2L-IoT的启动参数,将启动参数改为引导到TF空间中。市面上常见的树莓派部署ROS方案也是如此操作。
4 t5 c: A# h5 B4 `6 |- c5 @
2. 方案准备, E3 Q- d) B, O7 d3 Z
首先,需要用到的硬件如下所示。

: c4 P8 X  _6 t% T

: L* r( T% y' I- O# m, |' A- B1 A+ d, |; n8 D1 s2 |8 I
3. TF卡挂载Ubuntu固件修改
7 b) l) c2 e) ~
本小节将介绍如何实现HDG2L-IoT挂载TF卡内的文件系统,步骤如下:
1)制作启动卡;
2)解压目标文件系统到TF卡内;
3)修改uboot启动参数;
  ^" {6 j1 W' x% V
3.1制作启动卡
3 }' y4 }+ F+ V+ e" A& v  i. F
首先制作启动卡,格式化TF卡的操作可通过瑞萨提供的shell脚本实现,在PC端的Ubuntu开发环境下,执行以下命令来下载操作脚本。

0 n) n7 c' d+ [7 Z, W

/ l! P- V% k8 {4 j0 z3 \
将需要被用作启动卡的TF卡插入到PC机内,用虚拟机来操作,调整步骤如下。首先打开虚拟机的USB 3.1功能,以免TF卡读取失败。
9 w% m2 p- Q" u' o4 d& j' i
' Y! f/ B/ Q' ]6 E+ [4 j
然后将TF卡导入Ubuntu虚拟机中,如下所示。
! B/ _% y5 K- F4 d, ]5 Y% C

# F6 G- e2 W7 ^6 V
系统能识别后,执行刚才下载的usb_sd_partition.sh脚本,如下所示。
( \( j6 ^5 d: _0 D

# ^; c0 W! s# Q" g% b! s) C9 Q
脚本执行成功后,TF卡将分为两个分区,分区1为fat32,分区2为ext4。
+ K! G3 V$ V+ W8 m$ b" R8 x& f0 i
2 D/ Y4 k# B7 l+ K- M3 T* K
(注:当前新版本的Windows系统比较少支持ext4格式的TF卡,所以在Windows环境下一般只看到分区1,分区2会提示需要格式才能识别,请忽略。)
  @0 _. o1 g6 y3 e' q; f) |
3.2拷贝目标文件到TF中
+ m, P/ ~; {+ z0 A4 w
将HDG2L-IoT配套的Ubuntu压缩包解压到ext4分区中,虚拟机内自动挂载到/media/${USER}/sdb2内。本机的解压命令如下所示。

3 ]% l) N; H# s% y9 u! k
' B) n5 \6 ]! O. r: [$ H" m
将HDG2L-IoT配套的内核镜像拷贝到Windows下识别的TF分区中(FAT32系统允许被Windows系统识别,ext4系统不被识别),拷贝后如下所示。

, f  Y) o1 _8 h

! v) H9 ^" |8 }$ s* k
6 T, ^' C/ _2 {% C* y: b" k3.3修改uboot启动参数
/ b* W/ m  K* c. }/ y6 g' c! p! f
最后需要调整HDG2L-IoT的uboot启动启动参数,引导其使用TF卡内的内核与文件系统,首先上电,在倒计时前进入uboot菜单,如下所示。

8 w/ @8 m6 [. [' V& _& Q0 Y1 n
- V" w& x& E; l* c8 [6 s) t, Z
将上一步中制作好的TF卡插入HDG2L-IoT板卡的TF卡槽中,在U-Boot提示符下设定以下变量,bootargs变量用于指定文件系统的载体,在系统内,TF卡槽占用的设备名为/dev/mmcblk1p2。

7 A1 v9 j+ j' E/ L8 f5 s8 x! B4 T, O$ v

* E4 j, u$ S9 z3 J7 y
然后设置从TF的分区1内获取内核镜像和内核设备树,命令如下所示。
" l' [6 B" v! k6 X0 P
; F4 T/ k6 U& c' C, x+ _
设置完成后,通过以下命令保存uboot的环境变量,命令如下所示。
重新启动后,若TF卡正常,整体存储空间情况如下所示。
' l2 I, _( |+ p) G& Q1 Q

9 l* k, f# J/ t: J
若TF卡没插入,uboot的启动会报错误信息,错误信息如下所示。

8 o/ X, U% D* D

5 D8 m5 h! p; P* `
7 \( d8 L, y0 K$ ?4. 安装docker环境
; |- ~- H' n0 P8 T
正常启动之后,开始搭建docker环境。

. c: E6 s2 _) g! S2 Y' `( [5 T4.1安装docker软件
6 w9 m3 K4 ^5 t* t9 D, r5 q
首先,烧录后的第一次上电的板卡需要更新内部的软件版本,命令如下所示。update更新失败注意检测网络状态和date日期。部分软件可能体积过大,需要耐心等待。

8 p. n# y5 @& F5 T
7 C3 L, M/ Y% u& {
然后清除旧版本的docker软件,再重新安装docker.io。
1 P; K9 r* V( D8 P, y

" y$ J% Y7 c! r; \  x9 u; s/ v
启动docker。
, x0 w; I1 P- Y, e% V, x! \
( h9 S' ]/ h0 B* }0 Y$ t  g" |* f
使能docker开机自启动。
; v+ B' z+ ]9 n" b6 t

. B; [* e% o8 y1 d# I
检查docker运行状态。

% H% |! M0 q: E4 k7 s, I+ P% k! X7 p9 Y5 \$ n# K

# ~* W! b1 q1 B3 }1 F
+ W7 P9 e% L% ?6 C) x/ K  E( c4.2获取镜像2 _9 M$ X5 X9 y9 f' G' q8 U9 A
运行此命令可以从Docker Hub上下载现成镜像。
+ [& z0 D; Z9 V
4 p0 ~( @$ C& Y) b6 d
查看本地的镜像文件命令如下所示。

; q  h$ _% o# x$ |5 F, B2 x* e+ y
/ m3 K5 X& G  F$ |$ |
) B( K, F& w# W( ~
4.3创建容器0 q$ y$ ?3 ~9 D  z1 g
容器就是加载模板后运行的沙盒环境,具有运行时所需的可写文件层、应用程序也处于运行状态。概念上可能会与PC端常用的虚拟机混淆,虚拟机是包括内核、应用运行环境和其他系统环境的,而Docker容器就是独立运行的一个或一组应用以及他们必须的运行环境。
创建容器时,需要指定使用的镜像文件,这里使用上面用pull指令下载下来的镜像文件,创建命令如下所示。
5 K- D  D- a" \* b# A) ^' q5 i0 }

: {2 \' B5 s. p& V) R: k% P
查看容器状态,命令如下所示,每个容器都有自己的CONTAINER_ID与NAMES,供后面的命令操作使用(可使用docker rename命令修改容器名,便于简便使用)。

" O" M6 {5 H$ F" T/ Z7 \% W

+ m4 V* g0 d2 C& `

3 u& [# [% {' c. M* v: s4.4启动容器$ @1 A2 O8 z) I
容器创建后,通过CONTAINER_ID与NAMES来操作容器,启动命令如下所示。

) E+ H' Q3 N% j/ J
2 O6 @, Y, E# W# C3 ~6 ]' \
上文所说,容器是运行一个或一组进程,docker ps命令里的COMMAND即为容器运行的进程,当前显示bash,即进入命令交互进程。通过以下命令进入容器内部。

& @0 \$ F" S! m4 ]( d5 D2 s

& y+ p5 |$ l3 {+ i' X; }5 a+ M# `3 `
进入后,可以操作容器内的命令,如下所示。

# {6 g4 B- ?4 C8 B. E
' \7 K; x" x" G1 g+ @+ L$ w
通过exit命令,可退出容器,退出后容器就处于停止状态,如下所示。

- t& T4 N- f3 C8 {' X

/ F( M2 h! z5 H" H% k. x$ M4 ~
通过以上操作,我们就完成了硬件与底层的搭建,为ROS运行在这套开发板上做好了准备,下一章节将为大家带来ROS的部署方法。
0 A1 x8 x2 S0 n4 J
  Y: q6 X7 e& ]% u& R+ K
  • 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 20:48 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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