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文章
11225瀏覽量
208920 -
嵌入式主板
+關注
關注
7文章
6085瀏覽量
35213 -
Firefly
+關注
關注
2文章
538瀏覽量
6985 -
RK3308
+關注
關注
1文章
39瀏覽量
1112
發布評論請先 登錄
相關推薦
評論