0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

fireflyROC-RK3308主板ROS简介

firefly 来源:firefly 作者:firefly 2019-12-21 11:20 次阅读

ROS 使用指南

简介

ROS ( Robot Operating System, 机器人操作系统) ,提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。它提供了硬件抽象、设备驱动、函数库、可视化工具、消息传递和软件包管理等诸多功能。ROS 遵循 BSD 开源许可协议。

ROS 维基

ROS 支持版本

目前 ROS 的发布版本,官方只支持 Ubuntu Linux 等安装,但由于在 OpenEmbedded/Yocto 框架下维护了meta-ros layer,使得我们可以将ROS集成到同样基于 Openembedded 框架 的嵌入式Linux中运行。

OpenEmbedded 框架提供了通用的交叉编译环境。在此开发环境允许开发人员自己配置编译工具链,编译程序,并为其嵌入式系统,创建完整的Linux发行版。 它可通过丰富的板级支持包,以支持各种硬件架构和嵌入式主板。

目前 ROS OpenEmbedded meta-ros Layer 有三个版本,分别支持 ROS hydro,indigo 和 kinetic 发行版本。其中 ROS indigo是支持最好的一个版本,ROC-RK3308-CC ROS 系统所集成的也是这个版本,同时根文件系统是基于的 Yocto 版本为 Rocko所构建的。

PC 端(Ubunut主机)安装 ROS

查看ROS所有的发行版本。目前 ROS 最新的版本,也是官方推荐的版本是 ROS Melodic Morenia 。其安装教程官方有很详细的介绍,需要注意的是,不同的Ubuntu版本,对应安装不同的 ROS 版本,例如 ROS Melodic Morenia 主要针对 Ubuntu 18.04 (Bionic) release,而 ROS Indigo Igloo 则针对 Ubuntu 14.04 LTS (Trusty) release。

由于 ROC-RK3308-CC 的 ROS 系统使用的是 ROS Indigo Igloo 版本,所以我们主机这里也安装 ROS Indigo Igloo 版本进行测试,下面的简要安装教程也是主要针对 Ubuntu 14.04 (ROS Indigo),其他版本的安装教程可到官网维基查询。

平台说明

ROS Indigo 仅仅只支持Ubuntu 13.10 (Saucy) 和 Ubuntu 14.04 (Trusty)。这里在Ubuntu 14.04系统上安装ROS。

安装步骤

配置Ubuntu仓库

允许”restricted”,”universe”,”multiverse.”。

设置软件源

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

或者来自中国的源:

sudo sh -c '. /etc/lsb-release && echo "deb http://ros.exbot.net/rospackage/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'

可根据UbuntuMirrors自己选。

添加key

sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

安装

1、更新软件索引

sudo apt-get update

2、安装:

这里推荐 Desktop-Full 安装: ROS, rqt, rviz, robot-generic libraries, 2D/3D simulators and 2D/3D perception。

sudo apt-get install ros-indigo-desktop-full

3、初始化 rosdep:

使用ROS之前,需要初始化rosdep,以解决一些系统依赖问题。

sudo rosdep init rosdep update

4、环境配置

echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc source ~/.bashrc

5、推荐安装 rosinstall,一个非常好用的命令行工具

sudo apt-get install python-rosinstall

6、测试

安装官方的教学例子:

sudo apt-get install ros-indigo-ros-tutorials

启动其中一个例子:

roslaunch roscpp_tutorials talker_listener.launch

一切正常的话,你将会看到以下结果:

SUMMARY ======== PARAMETERS * /rosdistro: indigo * /rosversion: 1.11.21 NODES / listener (roscpp_tutorials/listener) talker (roscpp_tutorials/talker) ROS_MASTER_URI=http://localhost:11311 core service [/rosout] found process[listener-1]: started with pid [9520] process[talker-2]: started with pid [9521] [ INFO] [1545896255.189016471]: hello world 0 [ INFO] [1545896255.289000624]: hello world 1 [ INFO] [1545896255.388990355]: hello world 2 [ INFO] [1545896255.489031727]: hello world 3 [ INFO] [1545896255.489457481]: I heard: [hello world 3] [ INFO] [1545896255.589028597]: hello world 4 [ INFO] [1545896255.589358894]: I heard: [hello world 4]

使用教程

接下来。通过我们一个简单的demo:firefly_controller,来阐述 ROS 系统的使用方式。

此 Demo 展示了如何在两台机器上使用ROS系统,详述了使用ROS_MASTER_URI来配置多台机器使用同一个master ,其主要功能是:

通过PC端的键盘,控制 ROC-RK3308-CC 主板上的两个LED灯的亮灭

外接温湿度传感器,获取当前的温湿度值

其中采用的温湿度传感器模块是:SHT30,盛世瑞恩出产的一款温湿度传感器,基于i2c传输协议。代码主要参考了ROC-RK3308-CC开发实例总结–SHT30温湿度模块调试。

ROC-RK3308-CC 设备端准备

烧写固件

按照《升级固件》进入loader模式,从固件地址: ROC-RK3308-CC_Yocto_ROShttps://pan.baidu.com/s/16tzgJBa-jY0lRB_K_yvcqA下载固件,解压,执行命令:

sudo upgrade_tool ul MiniLoaderAll.bin && \ sudo upgrade_tool di -p parameter.txt && \ sudo upgrade_tool di -uboot uboot.img && \ sudo upgrade_tool di -trust trust.img && \ sudo upgrade_tool di -boot zboot.img && \ sudo upgrade_tool di -rootfs rootfs.img && sudo upgrade_tool rd

按照《上手教程》,给 ROC-RK3308-CC 主板上电开机,接上串口。上电后需要输入账号密码进入系统,输入root即可,无需密码。

注意:如果有温湿度传感器模块SHT30,先接上模块再上电,这里使用I2C1进行通信,按引脚描述图接上VCC5、GND、I2C1_SDA、I2C1_SCL即可。

初始化配置

根文件系统里,我们放了两个小工具,方便配置环境:

ls /home/root setup.sh wifi.sh

首先上电开机后,先连接wifi(WiFi需要和PC主机在同一网段,可互相ping通),通过脚本配置,其中ssid为你的WiFi账号,psk为你的密码

./wifi.sh $ssid $psk

接着配置 ROS 环境,这里我们将以PC主机端为master(整个ROS运行环境只需要一个master),所以这里不需要启动 roscore

source ./setup.sh $master_ip

其中master_ip是PC主机端的ip地址,这里主要配置了ROS_MASTER_URI和ROS_HOSTNAME,具体细节查看 setup.sh 脚本。

运行 demo 节点

rosrun firefly_controller firefly_controller

等待 PC主机端 准备好即可。

PC 端准备

注意:以下操作方法使用了catkin工具,只适用于ROS Groovy及后期版本,对于ROS Fuerte及早期版本请使用rosbuild,这里不讲述。

Demo 软件包下载

Demo 软件包下载:firefly_iot_keyboard.tar.bz2https://pan.baidu.com/s/11DojLWYYJ9uuUsmNMsWyFg

创建 ROS 工作空间

如果你是初次安装 ROS,可通过catkin方式创建ROS工作空间:

mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src

即使这个工作空间是空的(在src目录中没有任何软件包,只有一个CMakeLists.txt链接文件),你也可以编译它。

cd ~/catkin_ws/ catkin_make

编译

现在先将下载的Demo 软件包解压到工作空间的src目录:

tar -xjf firefly_iot_keyboard.tar.bz2 -C ~/catkin_ws/src/

然后编译工作空间:

cd ~/catkin_ws/ catkin_make

执行

分别打开两个终端,每个终端都需要按以下操作配置。

配置当前工作空间为ROS工作环境的最顶层:

cd ~/catkin_ws/ source devel/setup.bash

配置ROS_HOSTNAME为主机ip地址,不然设备端那边不识别。

export ROS_HOSTNAME=$master_ip

其中一个终端运行demo键盘控制节点:

rosrun firefly_iot_keyboard keyboard.py

另一个终端运行demo接收节点

rosrun firefly_iot_keyboard receiver.py

最终效果

效果图如下:

PC 端

注意,如果不能控制,请选中 keyboard.py 所在的终端窗口以确保你的按键输入能够被捕获。

终端键盘控制:

rosrun firefly_iot_keyboard keyboard.py Reading from the keyboard and Publishing to firefly_controller! ---------------------------------------------------------------- keymap: LED: b : Blue LED ON/OFF r : Red LED ON/OFF Sensor: t : show Temperature and Humidity

当按下r和b,将会控制设备端红蓝LED灯的亮灭,如果外接了温湿度传感器sht30,按下t将会获得设备端传过来的温湿度值,被另一”receiver.py”所在终端接受。

终端接收:

rosrun firefly_iot_keyboard receiver.py currently: Temperature 28.607613c Humidity 49.396507%

ROC-RK3308-CC 设备端

串口效果:

root@rockchip-rk3308-evb:~# rosrun firefly_controller firefly_controller [ INFO] [1545900033.047350122]: I heard: [blue] [ INFO] [1545900034.086951914]: I heard: [red] [ INFO] [1545900035.106874956]: I heard: [sht30]

调试

使用rosnode list命令,列出活跃的节点:

rosnode list /firefly_base_controller /firefly_iot_keyboard /firefly_iot_receiver /rosout

可看到当前运行的demo,有三个节点在运行:/firefly_base_controller、/firefly_iot_keyboard、/firefly_iot_receiver

通过rostopic list命令,能够列出所有当前订阅和发布的话题:

rostopic list /cmd_vel /rosout /rosout_agg /temphumidity

这里可看到当前运行的demo有发布了两个Topic:/temphumidity、/cmd_vel

使用命令rostopic echo可以显示在某个话题上发布的数据:

rostopic echo /temphumidity humidity: 50.0968933105 temp: 24.1374816895 --- humidity: 51.638053894 temp: 23.3657588959 ---

使用工具rqt_graph查看当前 ROS 系统运行情况的图形:

rosrun rqt_graph rqt_graph

这里需要事先安装 rqt_graph :

sudo apt-get install ros-indigo-rqt sudo apt-get install ros-indigo-rqt-common-plugins

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    10990

    浏览量

    206738
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6064

    浏览量

    34614
  • Firefly
    +关注

    关注

    2

    文章

    534

    浏览量

    6757
  • RK3308
    +关注

    关注

    1

    文章

    39

    浏览量

    946
收藏 人收藏

    评论

    相关推荐

    ROC-RK3308-CC 四核64位AIOT主板

    `主板微型小巧,采用了高性价比RK3308核心处理器,整合高性能CODEC音频编解码器,支持国内外多种人工智能及物联网操作系统,可配置六个麦克风阵列以及POE扩展板。ROC-RK3308-CC是一款
    发表于 10-12 11:06

    ROC-RK3308主板CC固件编译的知识点解析,绝对实用

    ROC-RK3308主板CC固件编译的知识点解析,绝对实用
    发表于 03-09 07:29

    RK3308-CC-PLUS板子启用ROS模块后交叉编译,menuconfig中没有ROS选项怎么解决?

    RK3308-CC-PLUS板子启用ROS模块后交叉编译,menuconfig中没有ROS选项怎么解决?
    发表于 03-09 06:23

    分享一份RK3308开发板ROS使用手册指南

    ,ROC-RK3308-CC ROS 系统所集成的也是这个版本,同时根文件系统是基于的 Yocto 版本为 Rocko所构建的。原作者:Firefly Wiki
    发表于 08-16 18:04

    firefly RK3308开发板ROC-RK3308-CC四核64位AIOT主板规格

    ROC-RK3308-CC 四核64位AIOT主板
    的头像 发表于 11-03 11:08 4322次阅读
    firefly <b class='flag-5'>RK3308</b>开发板ROC-<b class='flag-5'>RK3308</b>-CC四核64位AIOT<b class='flag-5'>主板</b>规格

    fireflyROC-RK3308B主板CC-U-Boot简介

    RK U-Boot 基于开源的 U-Boot 进行开发,工作模式有启动加载模式和下载模式。
    的头像 发表于 12-20 08:59 1256次阅读
    <b class='flag-5'>fireflyROC-RK3308</b>B<b class='flag-5'>主板</b>CC-U-Boot<b class='flag-5'>简介</b>

    fireflyROC-RK3308B-CC--启动模式说明

    ROC-RK3308B-CC 有着非常灵活的启动方式。一般情况下,除非硬件损坏,ROC-RK3308B-CC 主板是不会变砖的。
    的头像 发表于 12-20 09:20 2544次阅读

    fireflyROC-RK3308B主板CC教程简介

    确认主板配件连接无误后,通过 USB Type-C 线给 ROC-RK3308B-CC 供电。
    的头像 发表于 12-20 09:32 1981次阅读

    fireflyROC-RK3308主板CC源码简介

    firefly
    的头像 发表于 12-20 10:12 7200次阅读

    fireflyROC-RK3308U-Boot简介

    RK U-Boot 基于开源的 U-Boot 进行开发,工作模式有启动加载模式和下载模式。
    的头像 发表于 12-21 11:10 1781次阅读
    <b class='flag-5'>fireflyROC-RK3308</b>U-Boot<b class='flag-5'>简介</b>

    微雪电子RK3308主板CC启动模式介绍

    ROC-RK3308-CC 有着非常灵活的启动方式。一般情况下,除非硬件损坏,ROC-RK3308-CC 主板是不会变砖的。
    的头像 发表于 12-23 15:47 2041次阅读

    微雪电子RK3308主板CC上手介绍

    确认主板配件连接无误后,通过 USB Type-C 线给 ROC-RK3308-CC 供电。
    的头像 发表于 12-23 15:50 1978次阅读

    Core 3308Y源代码RK3308B Linux SDK

    电子发烧友网站提供《Core 3308Y源代码RK3308B Linux SDK.txt》资料免费下载
    发表于 09-13 10:03 2次下载
    Core <b class='flag-5'>3308</b>Y源代码<b class='flag-5'>RK3308</b>B Linux SDK

    IoT四核64位开源主板ROC RK3308B CC规格书

    电子发烧友网站提供《IoT四核64位开源主板ROC RK3308B CC规格书.pdf》资料免费下载
    发表于 09-13 09:35 1次下载
    IoT四核64位开源<b class='flag-5'>主板</b>ROC <b class='flag-5'>RK3308</b>B CC规格书

    四核64位开源主板ROC RK3308B CC Plus规格书

    电子发烧友网站提供《四核64位开源主板ROC RK3308B CC Plus规格书.pdf》资料免费下载
    发表于 09-13 09:33 0次下载
    四核64位开源<b class='flag-5'>主板</b>ROC <b class='flag-5'>RK3308</b>B CC Plus规格书