ROS 使用指南
簡介
ROS ( Robot Operating System, 機器人操作系統(tǒng)) ,提供一系列程序庫和工具以幫助軟件開發(fā)者創(chuàng)建機器人應(yīng)用軟件。它提供了硬件抽象、設(shè)備驅(qū)動、函數(shù)庫、可視化工具、消息傳遞和軟件包管理等諸多功能。ROS 遵循 BSD 開源許可協(xié)議。
ROS 維基
ROS 支持版本
目前 ROS 的發(fā)布版本,官方只支持 Ubuntu Linux 等安裝,但由于在 OpenEmbedded/Yocto 框架下維護了meta-ros layer,使得我們可以將ROS集成到同樣基于 Openembedded 框架 的嵌入式Linux中運行。
OpenEmbedded 框架提供了通用的交叉編譯環(huán)境。在此開發(fā)環(huán)境允許開發(fā)人員自己配置編譯工具鏈,編譯程序,并為其嵌入式系統(tǒng),創(chuàng)建完整的Linux發(fā)行版。 它可通過豐富的板級支持包,以支持各種硬件架構(gòu)和嵌入式主板。
目前 ROS OpenEmbedded meta-ros Layer 有三個版本,分別支持 ROS hydro,indigo 和 kinetic 發(fā)行版本。其中 ROS indigo是支持最好的一個版本,ROC-RK3308-CC ROS 系統(tǒng)所集成的也是這個版本,同時根文件系統(tǒng)是基于的 Yocto 版本為 Rocko所構(gòu)建的。
PC 端(Ubunut主機)安裝 ROS
查看ROS所有的發(fā)行版本。目前 ROS 最新的版本,也是官方推薦的版本是 ROS Melodic Morenia 。其安裝教程官方有很詳細的介紹,需要注意的是,不同的Ubuntu版本,對應(yīng)安裝不同的 ROS 版本,例如 ROS Melodic Morenia 主要針對 Ubuntu 18.04 (Bionic) release,而 ROS Indigo Igloo 則針對 Ubuntu 14.04 LTS (Trusty) release。
由于 ROC-RK3308-CC 的 ROS 系統(tǒng)使用的是 ROS Indigo Igloo 版本,所以我們主機這里也安裝 ROS Indigo Igloo 版本進行測試,下面的簡要安裝教程也是主要針對 Ubuntu 14.04 (ROS Indigo),其他版本的安裝教程可到官網(wǎng)維基查詢。
平臺說明
ROS Indigo 僅僅只支持Ubuntu 13.10 (Saucy) 和 Ubuntu 14.04 (Trusty)。這里在Ubuntu 14.04系統(tǒng)上安裝ROS。
安裝步驟
配置Ubuntu倉庫
允許”restricted”,”universe”,”multiverse.”。
設(shè)置軟件源
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'
可根據(jù)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,以解決一些系統(tǒng)依賴問題。
sudo rosdep init rosdep update
4、環(huán)境配置
echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc source ~/.bashrc
5、推薦安裝 rosinstall,一個非常好用的命令行工具
sudo apt-get install python-rosinstall
6、測試
安裝官方的教學(xué)例子:
sudo apt-get install ros-indigo-ros-tutorials
啟動其中一個例子:
roslaunch roscpp_tutorials talker_listener.launch
一切正常的話,你將會看到以下結(jié)果:
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 系統(tǒng)的使用方式。
此 Demo 展示了如何在兩臺機器上使用ROS系統(tǒng),詳述了使用ROS_MASTER_URI來配置多臺機器使用同一個master ,其主要功能是:
通過PC端的鍵盤,控制 ROC-RK3308-CC 主板上的兩個LED燈的亮滅
外接溫濕度傳感器,獲取當(dāng)前的溫濕度值
其中采用的溫濕度傳感器模塊是:SHT30,盛世瑞恩出產(chǎn)的一款溫濕度傳感器,基于i2c傳輸協(xié)議。代碼主要參考了ROC-RK3308-CC開發(fā)實例總結(jié)–SHT30溫濕度模塊調(diào)試。
ROC-RK3308-CC 設(shè)備端準(zhǔn)備
燒寫固件
按照《升級固件》進入loader模式,從固件地址: ROC-RK3308-CC_Yocto_ROShttps://pan.baidu.com/s/16tzgJBa-jY0lRB_K_yvcqA下載固件,解壓,執(zhí)行命令:
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 主板上電開機,接上串口。上電后需要輸入賬號密碼進入系統(tǒng),輸入root即可,無需密碼。
注意:如果有溫濕度傳感器模塊SHT30,先接上模塊再上電,這里使用I2C1進行通信,按引腳描述圖接上VCC5、GND、I2C1_SDA、I2C1_SCL即可。
初始化配置
根文件系統(tǒng)里,我們放了兩個小工具,方便配置環(huán)境:
ls /home/root setup.sh wifi.sh
首先上電開機后,先連接wifi(WiFi需要和PC主機在同一網(wǎng)段,可互相ping通),通過腳本配置,其中ssid為你的WiFi賬號,psk為你的密碼
./wifi.sh $ssid $psk
接著配置 ROS 環(huán)境,這里我們將以PC主機端為master(整個ROS運行環(huán)境只需要一個master),所以這里不需要啟動 roscore
source ./setup.sh $master_ip
其中master_ip是PC主機端的ip地址,這里主要配置了ROS_MASTER_URI和ROS_HOSTNAME,具體細節(jié)查看 setup.sh 腳本。
運行 demo 節(jié)點
rosrun firefly_controller firefly_controller
等待 PC主機端 準(zhǔn)備好即可。
PC 端準(zhǔn)備
注意:以下操作方法使用了catkin工具,只適用于ROS Groovy及后期版本,對于ROS Fuerte及早期版本請使用rosbuild,這里不講述。
Demo 軟件包下載
Demo 軟件包下載:firefly_iot_keyboard.tar.bz2https://pan.baidu.com/s/11DojLWYYJ9uuUsmNMsWyFg
創(chuàng)建 ROS 工作空間
如果你是初次安裝 ROS,可通過catkin方式創(chuàng)建ROS工作空間:
mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src
即使這個工作空間是空的(在src目錄中沒有任何軟件包,只有一個CMakeLists.txt鏈接文件),你也可以編譯它。
cd ~/catkin_ws/ catkin_make
編譯
現(xiàn)在先將下載的Demo 軟件包解壓到工作空間的src目錄:
tar -xjf firefly_iot_keyboard.tar.bz2 -C ~/catkin_ws/src/
然后編譯工作空間:
cd ~/catkin_ws/ catkin_make
執(zhí)行
分別打開兩個終端,每個終端都需要按以下操作配置。
配置當(dāng)前工作空間為ROS工作環(huán)境的最頂層:
cd ~/catkin_ws/ source devel/setup.bash
配置ROS_HOSTNAME為主機ip地址,不然設(shè)備端那邊不識別。
export ROS_HOSTNAME=$master_ip
其中一個終端運行demo鍵盤控制節(jié)點:
rosrun firefly_iot_keyboard keyboard.py
另一個終端運行demo接收節(jié)點
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
當(dāng)按下r和b,將會控制設(shè)備端紅藍LED燈的亮滅,如果外接了溫濕度傳感器sht30,按下t將會獲得設(shè)備端傳過來的溫濕度值,被另一”receiver.py”所在終端接受。
終端接收:
rosrun firefly_iot_keyboard receiver.py currently: Temperature 28.607613c Humidity 49.396507%
ROC-RK3308-CC 設(shè)備端
串口效果:
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]
調(diào)試
使用rosnode list命令,列出活躍的節(jié)點:
rosnode list /firefly_base_controller /firefly_iot_keyboard /firefly_iot_receiver /rosout
可看到當(dāng)前運行的demo,有三個節(jié)點在運行:/firefly_base_controller、/firefly_iot_keyboard、/firefly_iot_receiver
通過rostopic list命令,能夠列出所有當(dāng)前訂閱和發(fā)布的話題:
rostopic list /cmd_vel /rosout /rosout_agg /temphumidity
這里可看到當(dāng)前運行的demo有發(fā)布了兩個Topic:/temphumidity、/cmd_vel
使用命令rostopic echo可以顯示在某個話題上發(fā)布的數(shù)據(jù):
rostopic echo /temphumidity humidity: 50.0968933105 temp: 24.1374816895 --- humidity: 51.638053894 temp: 23.3657588959 ---
使用工具rqt_graph查看當(dāng)前 ROS 系統(tǒng)運行情況的圖形:
rosrun rqt_graph rqt_graph
這里需要事先安裝 rqt_graph :
sudo apt-get install ros-indigo-rqt sudo apt-get install ros-indigo-rqt-common-plugins
-
Linux
+關(guān)注
關(guān)注
87文章
11457瀏覽量
212770 -
嵌入式主板
+關(guān)注
關(guān)注
7文章
6096瀏覽量
36138 -
Firefly
+關(guān)注
關(guān)注
2文章
541瀏覽量
7397 -
RK3308
+關(guān)注
關(guān)注
1文章
40瀏覽量
1461
發(fā)布評論請先 登錄
ROC-RK3308-CC 四核64位AIOT主板
RK3308-CC-PLUS板子啟用ROS模塊后交叉編譯,menuconfig中沒有ROS選項怎么解決?
分享一份RK3308開發(fā)板ROS使用手冊指南
fireflyROC-RK3308B-CC固件編譯工具簡介
fireflyROC-RK3308B-CC--啟動模式說明
fireflyROC-RK3308B主板CC教程簡介
微雪電子RK3308主板CC啟動模式介紹
IoT四核64位開源主板ROC RK3308B CC規(guī)格書

四核64位開源主板ROC RK3308B CC Plus規(guī)格書

評論