1. 程式人生 > >ROS學習記錄(一)--簡單的命令

ROS學習記錄(一)--簡單的命令

實驗要用到kobuki,kinectv2,做三維重建,用到RGBDSLAMV2開原始碼和ROS系統,邊學邊記錄

ROS中有很多各種函式庫和工具,我們提供了四種預設安裝方式,你也可以單獨安裝某個特定軟體包。

桌面完整版安裝:(推薦) 包含ROS、rqt、rviz、通用機器人函式庫、2D/3D模擬器、導航以及2D/3D感知功能。

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

快速瞭解檔案系統概念

Packages: 軟體包,是ROS應用程式程式碼的組織單元,每個軟體包都可以包含程式庫、可執行檔案、指令碼或者其它手動建立的東西。

Manifest (package.xml): 清單,是對於’軟體包’相關資訊的描述,用於定義軟體包相關元資訊之間的依賴關係,這些資訊包括版本、維護者和許可協議等。
檔案系統工具
程式程式碼是分佈在眾多ROS軟體包當中,當使用命令列工具(比如ls和cd)來瀏覽時會非常繁瑣,因此ROS提供了專門的命令工具來簡化這些操作。

使用 rospack

rospack允許你獲取軟體包的有關資訊。在本教程中,我們只涉及到rospack中find引數選項,該選項可以返回軟體包的路徑資訊。

用法: rospack find [包名稱]
示例:$ rospack find roscpp
應輸出:YOUR_INSTALL_PATH/share/roscpp

使用 roscd

roscd是rosbash命令集中的一部分,它允許你直接切換(cd)工作目錄到某個軟體包或者軟體包集當中。
用法:roscd [本地包名稱[/子目錄]]
示例:roscdroscpp使Unixpwd pwd
你應該會看到:YOUR_INSTALL_PATH/share/roscpp

roscd只能切換到那些路徑已經包含在ROS_PACKAGE_PATH環境變數中的軟體包,要檢視ROS_PACKAGE_PATH中包含的路徑可以輸入:
echoROS_PACKAGE_PATH

export ROS_PACKAGE_PATH=/home/ada/Code/rgbdslam_catkin_ws/src:/opt/ros/kinetic/share:/home/ada/kinect/catin_ws/src

加入路徑,告訴ROS系統在哪裡搜尋更多的ROS包。
如果有相同名稱的多個包,ROS會選擇上出現的ROS_PACKAGE_PATH 第一個包。
如此就不需要進工作目錄下輸入命令了!
(想到上篇,其實只要把kinect2的包加入路徑應該就可以了!!沒知識真可怕)

roscd log

使用roscd log可以切換到ROS儲存日記檔案的目錄下。需要注意的是,如果你沒有執行過任何ROS程式,系統會報錯說該目錄不存在。

如果你已經執行過ROS程式,那麼可以嘗試:$ roscd log

使用 roslsh

rosls是rosbash命令集中的一部分,它允許你直接按軟體包的名稱而不是絕對路徑執行ls命令(羅列目錄)。

用法:rosls [本地包名稱[/子目錄]]
示例:$ rosls roscpp_tutorialsian應輸出:cmake package.xml srv

建立工作空間

建立catkin程式包

1. 程式包的組成

my_package/
     CMakeLists.txt
     package.xml   package.xml檔案提供有關程式包的元資訊
     每個目錄下只能有一個程式包。這意味著在同一個目錄下不能有巢狀的或者多個程式包存在.

一個簡單的工作空間:

workspace_folder/        -- WORKSPACE工作空間
  src/                   -- SOURCE SPACE 原始碼目錄
    CMakeLists.txt       -- 'Toplevel' CMake file, provided by catkin
    package_1/
      CMakeLists.txt     -- CMakeLists.txt file for package_1
      package.xml        -- Package manifest for package_1
    ...
    package_n/
      CMakeLists.txt     -- CMakeLists.txt file for package_n
      package.xml        -- Package manifest for package_n

2. 建立一個catkin程式包

cd ~/ada_ws/src

現在使用catkin_create_pkg命令來建立一個名為’beginner_tutorials’的新程式包,這個程式包依賴於std_msgs、roscpp和rospy:

catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

建立了名為brginner_tutorials資料夾,包含camkelists和package.cxml

catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
3. 檢視程式包的依賴關係

a. 直接依賴

rospack depends1 beginner_tutorials

(先source ../devel/setup.sh)這些依賴包儲存在package.xml檔案中
b. 間接依賴
比如rospy還有其它依賴包

rospack depends1 rospy

c. 一個程式包還可以有好幾個間接的依賴包
幸運的是使用rospack可以遞迴檢測出所有的依賴包。

4. 自定義package.xml
  <description>The beginner_tutorials package</description>
描述標籤

 <!-- One maintainer tag required, multiple allowed, one person per tag -->
  <!-- Example:  -->
  <!-- <maintainer email="[email protected]">Jane Doe</maintainer> -->
  <maintainer email="[email protected]">ada</maintainer>
  維護標籤

  <!-- One license tag required, multiple allowed, one license per tag -->
  <!-- Commonly used license strings: -->
  <!--   BSD, MIT, Boost Software License, GPLv2, GPLv3, LGPLv2.1, LGPLv3 -->
  <license>TODO</license>
  許可標籤
  (對於本教程我們將使用BSD協議,因為ROS核心元件的剩餘部分已經使用了該協議:
    <license>BSD</license>)

build_depend
buildtool_depend
run_depend
test_depend
依賴項標籤

除了catkin中預設提供的buildtool_depend,所有我們列出的依賴包都已經被新增到build_depend標籤中。
  <buildtool_depend>catkin</buildtool_depend>
  <build_depend>roscpp</build_depend>
  <build_depend>rospy</build_depend>
  <build_depend>std_msgs</build_depend>

在本例中,因為在編譯和執行時我們需要用到所有指定的依賴包,因此還需要將每一個依賴包分別新增到run_depend標籤中
  <run_depend>roscpp</run_depend>
  <run_depend>rospy</run_depend>
  <run_depend>std_msgs</run_depend>

編譯程式包

先source /opt/ros/kinetic/setup.sh
可以認為catkin_make是在CMake標準工作流程中依次呼叫了cmake 和 make

編譯指定程式包

catkin_make [make_targets] [-DCMAKE_VARIABLES=…]

多個一起編譯
# In a catkin workspace
$ catkin_make
$ catkin_make install  # (可選)
上述命令會編譯src資料夾下的所有catkin工程

開始編譯:

cd ~/ada_ws
catkin_make

報錯:The manifest (with format version 2) must not contain the following tags: run_depend
package.xml檔案中,不能包含run_depend,開啟package.xml,刪掉對應行,解決.

catkin_make輸出資訊:

catkin_make首先輸出它所使用到的每個空間所在的路徑
Base path: /home/ada/ada_ws
Source space: /home/ada/ada_ws/src
Build space: /home/ada/ada_ws/build
Devel space: /home/ada/ada_ws/devel
Install space: /home/ada/ada_ws/install

生成了build和devel資料夾:
build目錄是build space的預設所在位置,同時cmake和make也是在這裡被呼叫來配置並編譯你的程式包。
devel目錄是devel space的預設所在位置, 同時也是在你安裝程式包之前存放可執行檔案和庫檔案的地方。
現在我們已成功編譯了一個ROS程式包

理解ROS節點

圖概念概述

Nodes:節點,一個節點即為一個可執行檔案,它可以通過ROS與其它節點進行通訊,可以釋出或接收一個話題,可以提供或使用某種服務
Messages:訊息,訊息是一種ROS資料型別,用於訂閱或釋出到一個話題
Topics:話題,節點可以釋出訊息到話題,也可以訂閱話題以接收訊息
Master:節點管理器,ROS名稱服務 (比如幫助節點找到彼此)
rosout: ROS中相當於stdout/stderr。
roscore: 主機+ rosout + 引數伺服器
(引數伺服器會在後面介紹)。

ROS客戶端庫允許使用不同程式語言編寫的節點之間互相通訊:
rospy = python 客戶端庫
roscpp = c++ 客戶端庫
rosjs = javascripts客戶端庫
rosjava = java客戶端庫

roscore:執行所有ROS程式前首先要執行的命令

如果roscore執行後無法正常初始化,很有可能是存在網路配置問題。
參見 網路設定——單機設定
如果roscore不能初始化並提示缺少許可權,這可能是因為~/.ros資料夾歸屬於root使用者(只有root使用者才能訪問)
修改該資料夾的使用者歸屬關係:

$ sudo chown -R <your_username> ~/.ros

rosnode:檢視當前在執行什麼

rosnode list

如果你在執行類似於rosnode的指令時出現一些問題
也許你需要新增一些環境設定檔案到你的~/.bashrc或者手動重新配置他們。
rosnode顯示當前執行的ROS節點資訊。
rosnode list指令列出活躍的節點
輸出:/rosout 這個節點用於收集和記錄節點除錯輸出資訊,所以它總是在執行的。
rosnode info命令返回的是關於一個特定節點的資訊

 rosnode info /rosout

Node [/rosout]
Publications: 
 * /rosout_agg [rosgraph_msgs/Log]

Subscriptions: 
 * /rosout [unknown type]

Services: 
 * /rosout/get_loggers
 * /rosout/set_logger_level


contacting node http://ada-HP-Spectre-x360-Convertible-13-ae0xx:39211/ ...
Pid: 7160

rosrun : rosrun允許你使用包名直接執行一個包內的節點(而不需要知道這個包的路徑)

$ rosrun [package_name] [node_name]

執行:

rosrun turtlesim turtlesim_node
出來一烏龜0 0...
在新的終端
rosnode list

/rosout
/turtlesim

還可以通過命令列來改變名稱

rosrun turtlesim turtlesim_node __name:=my_turtle

在新的終端
rosnode list

/rosout
/my_turtle

ctrl+c不會關閉程序,最好關閉視窗
在終端中使用ctrl-C停止節點,而不是關閉視窗

rosnode cleanup

嘗試清除rosnode 列表

可以看到新的/my_turtle節點

理解ROS話題

開始小烏龜的例子

rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
然後可以用方向鍵控制運動
rosnode list
/rosout
/teleop_turtle
/turtlesim

解讀:
turtle_teleop_key在一個話題上釋出按鍵輸入訊息,而turtlesim則訂閱該話題以接收該訊息
使用rqt_graph來顯示當前執行的節點和話題

rqt_graph:能夠建立一個顯示當前系統執行情況的動態圖形

rosrun rqt_graph rqt_graph

這裡寫圖片描述

如果你將滑鼠放在/turtle1/command_velocity上方,相應的ROS節點(藍色和綠色)話題(紅色)就會高亮顯示。
正如你所看到的turtlesim_node和turtle_teleop_key節點正通過一個名為/turtle1/command_velocity的話題來互相通訊

rostopic:獲取有關ROS話題的資訊

    rostopic bw display bandwidth used by topic
    rostopic delay  display delay of topic from timestamp in header
    rostopic echo   print messages to screen
    rostopic find   find topics by type
    rostopic hz display publishing rate of topic    
    rostopic info   print information about active topic
    rostopic list   list active topics
    rostopic pub    publish data to topic
    rostopic type   print topic or field type

使用:
rostopic echo : 檢視某個話題上釋出的資料
rostopic echo [topic]

rostopic echo /turtle1/cmd_vel

接下來我們通過按下方向鍵使turtle_teleop_key節點發布資料

---
linear: 
  x: 0.0
  y: 0.0
  z: 0.0
angular: 
  x: 0.0
  y: 0.0
  z: -2.0
---
linear: 
  x: -2.0
  y: 0.0
  z: 0.0
angular: 
  x: 0.0
  y: 0.0
  z: 0.0
---

然後重新整理一下rqt_graph
這裡寫圖片描述
即rostopic echo 也訂閱了/turtle1/cmd_vel話題

rostopic list : 列出所有當前訂閱和釋出的話題

  -h, --help            show this help message and exit
  -b BAGFILE, --bag=BAGFILE
                        list topics in .bag file
  -v, --verbose         list full details about each topic
  -p                    list only publishers
  -s                    list only subscribers
  --host                group by host name

使用-v,顯示詳細資訊

rostopic list -v

Published topics:
 * /turtle1/color_sensor [turtlesim/Color] 2 publishers
 * /turtle1/cmd_vel [geometry_msgs/Twist] 1 publisher
 * /rosout [rosgraph_msgs/Log] 5 publishers
 * /rosout_agg [rosgraph_msgs/Log] 1 publisher
 * /turtle1/pose [turtlesim/Pose] 2 publishers

Subscribed topics:
 * /turtle1/cmd_vel [geometry_msgs/Twist] 3 subscribers
 * /rosout [rosgraph_msgs/Log] 1 subscriber

ROS Messages

話題之間的通訊是通過在節點之間傳送ROS訊息實現的。
對於釋出器(turtle_teleop_key和訂閱器(turtulesim_node)之間的通訊,釋出器和訂閱器之間必須傳送和接收相同型別的訊息
這意味著話題的型別是由釋出在它上面的訊息型別決定的
使用rostopic type命令可以檢視釋出在某個話題上的訊息型別。

rostopic type : 檢視釋出在某個話題上的訊息型別

rostopic type [topic]

$ rostopic type /turtle1/cmd_vel
geometry_msgs/Twist
$ rosmsg show geometry_msgs/Twist
geometry_msgs/Vector3 linear
  float64 x
  float64 y
  float64 z
geometry_msgs/Vector3 angular
  float64 x
  float64 y
  float64 z

即turtlesim節點所期望的訊息型別,如何結合訊息使用rostopic

rostopic pub : 把資料釋出到當前某個正在廣播的話題上

rostopic pub [topic] [msg_type] [args]

$ rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'2.0大小的線速度和1.8大小的角速度開始移動
publishing and latching message for 3.0 seconds

解讀:
命令會發布訊息到指定話題 釋出一條訊息後退出 話題名稱 訊息型別 – 引數
使用rostopic pub -r命令來發佈一個穩定的命令流

$ rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'

這條命令以1Hz的頻率釋出速度命令到速度話題上
重新整理一下rqt_graph
這裡寫圖片描述

可以看到rostopic釋出器節點(紅色)正在與rostopic echo節點(綠色)進行通訊

rostopic hz : 檢視資料釋出的頻率

rostopic hz [topic]

$ rostopic hz /turtle1/pose

rqt_plot : 實時顯示一個釋出到某個話題上的資料變化圖形

rosrun rqt_plot rqt_plot

這會彈出一個新視窗,在視窗左上角的一個文字框裡面你可以新增需要繪製的話題
在裡面輸入/turtle1/pose/x後之前處於禁用狀態的加號按鈕將會被使能變亮。
按一下該按鈕,並對/turtle1/pose/y重複相同的過程。
現在你會在圖形中看到turtle的x-y位置座標圖。
/turtle1/pose/theta
+顯示,-隱藏

理解ROS服務和引數

ROS Services

節點之間通訊的另一種方式。
服務允許節點發送請求(request) 並獲得一個響應(response)

rosservice : 使用 ROS 客戶端/伺服器框架提供的服務

rosservice list         輸出可用服務的資訊
rosservice call         呼叫帶引數的服務
rosservice type         輸出服務型別
rosservice find         依據型別尋找服務find services by service type
rosservice uri          輸出服務的ROSRPC uri 
$ rosservice list 檢視turtlesim節點提供的服務
**/clear**
/kill
**/reset**
/rosout/get_loggers
/rosout/set_logger_level  rosout節點提供
**/spawn**再生
/teleop_turtle/get_loggers
/teleop_turtle/set_logger_level
**/turtle1/set_pen
/turtle1/teleport_absolute
/turtle1/teleport_relative
/turtlesim/get_loggers
/turtlesim/set_logger_level**

rosservice type [service] 檢視clear服務型別

$ rosservice type clear
td_srvs/Empty
服務的型別為空(empty),這表明在呼叫這個服務是不需要引數(比如,請求不需要傳送資料,響應也沒有資料)

rosservice call 呼叫服務
rosservice call [service] [args]

$ rosservice call clear

清除了軌跡

rosservice type spawn | rossrv show 在給定的位置和角度生成新的烏龜

$ rosservice type spawn | rossrv show
float32 x
float32 y
float32 theta
string name
---
string name

$ rosservice call spawn 2 2 0.2 ""    未指定名稱
name: "turtle2"

rosparam : 使得我們能夠儲存並操作ROS引數伺服器(Parameter Server)上的資料

rosparam使用YAML標記語言的語法。 一般而言,YAML的表述很自然: 1是整型
1.0是浮點型
one是字串
true是布林
{a:b,c:d}是字典   
使用方法

rosparam set            設定引數
rosparam get            獲取引數
rosparam load           從檔案讀取引數
rosparam dump           向檔案中寫入引數
rosparam delete         刪除引數
rosparam list           列出引數名

rosparam list : 檢視引數伺服器上由那些引數

$ rosparam list
/background_b
/background_g
/background_r   3個引數用於設定背景顏色
/rosdistro
/roslaunch/uris/host_ada_hp_spectre_x360_convertible_13_ae0xx__42579
/rosversion
/run_id

改變引數值使用rosparam set,獲取引數值使用rosparam get
rosparam set [param_name]
rosparam get [param_name]

$ rosparam set background_r 150 
呼叫清除服務使得修改後的引數生效
$ rosservice call clear
$ rosparam get background_g  獲取背景的綠色通道的值
86
使用rosparam get來顯示引數伺服器上的所有內容
$ rosparam get /
background_b: 255
background_g: 86
background_r: 150
rosdistro: 'kinetic

  '
roslaunch:
  uris: {host_ada_hp_spectre_x360_convertible_13_ae0xx__42579: 'http://ada-HP-Spectre-x360-Convertible-13-ae0xx:42579/'}
rosversion: '1.12.12

  '
run_id: 52223180-ec90-11e7-855d-f894c2f54745

如果要儲存引數,

rosparam dump [file_name]
rosparam load [file_name] [namespace]

現在我們將所有的引數寫入params.yaml檔案:

$ rosparam dump params.yaml

你甚至可以將yaml檔案過載入新的名稱空間,比如說copy空間:

$ rosparam load params.yaml copy
$ rosparam get copy/background_b

顯示:255

使用rqt_console和rqt_logger_level進行除錯,以及如何使用roslaunch同時執行多個節點

使用rqt_console和rqt_logger_level

rqt_console屬於ROS日誌框架(logging framework)的一部分,用來顯示節點的輸出資訊
rqt_logger_level**允許我們修改節點執行時輸出資訊的日誌等級**(logger levels)
logger levels包括 DEBUG、WARN、INFO和ERROR

在啟動turtlesim之前先在另外兩個新終端中執行rqt_console和rqt_logger_level

$ rosrun rqt_console rqt_console
$ rosrun rqt_logger_level rqt_logger_level

這裡寫圖片描述

現在讓我們在一個新終端中啟動turtlesim:
$ rosrun turtlesim turtlesim_node
因為預設日誌等級是INFO,所以你會看到turtlesim啟動後輸出的所有資訊
日誌等級按以下優先順序排列:
Fatal
Error
Warn
Info
Debug

使用roslaunch來啟動多個turtlesim節點和一個模仿節點以讓一個turtlesim節點來模仿另一個turtlesim節點

roslauch : 用來啟動定義在launch檔案中的多個節點。
用法:
$ roslaunch [package] [filename.launch]

roscd beginner_tutorials

如果roscd執行失敗了,記得設定你當前終端下的ROS_PACKAGE_PATH環境變數
設定方法如下:
exportROSPACKAGEPATH=/kineticworkspace/sandbox:ROS_PACKAGE_PATH
roscdbeginnertutorialsbeginnertutorialsROS/Tutorials/CreatingPackage

相關推薦

ROS學習記錄()--簡單命令

實驗要用到kobuki,kinectv2,做三維重建,用到RGBDSLAMV2開原始碼和ROS系統,邊學邊記錄 ROS中有很多各種函式庫和工具,我們提供了四種預設安裝方式,你也可以單獨安裝某個特定軟體包。 桌面完整版安裝:(推薦) 包含ROS、rqt

前端小白之每天學習記錄----js簡單的組件封裝

學習 styles this src 元素 modal info clas mov 設計模式:是解決問題的模板 關於設計模式,可以閱讀湯姆大叔的博文http://www.cnblogs.com/TomXu/archive/2011/12/15/2288411.html 這裏

python 學習記錄

python 每天學習筆記#!/usr/bin/pytholn# -*- coding: UTF-8 -*-import mathimport sysdef print_13(): #for i in range(10): man_age = int(raw_input(‘enter input age:\

學習記錄

提示 相對 name 獲取 比較 div 就是 其中 dem 今天的話主要的精力都集中在郵件系統demo的實現,因為自己個人技術有限,所以做出來的相當簡陋,在其中碰到的問題其實也是比較多的,對於基於django的郵件相對來說比較容易,然後就是在提交數據,獲取post數據並加

LaTex學習記錄——一個簡單的封面

LaTex TeXstudio 操作系統:Ubuntu 14.04LTS;工具:TeXstudio;此外,我還安裝了完全的texlive(sudo apt-get install texlive-full,比較大,大家可以酌情安裝部分)。??在實際工作中,在文章中使用圖片是比較普遍的,這裏介紹一個簡單

linux學習記錄.4.常用命令

退出 CP 軟件工具 使用命令 nbsp comm ebo update 行號 幫助command --help 獲取‘command‘命令的幫助 目錄與文件 cd /home 進入‘home’目錄 cd .. 返回上一級目錄 cd 進入個

WebService學習記錄()

接受 語言 www. info sdl htm 容易 span 數據 1.1 什麽是WebService Web service是一個平臺獨立的,低耦合的,自包含的、基於可編程的web的應用程序,可使用開放的XML(標準通用標記語言下的一個子集)標準來描述、發布、發現、協調

Quartz學習記錄()

記錄 lib jobdetail 遞增 引入 指定 sim 其中 基於 1.quartz介紹和下載 官網:http://www.quartz-scheduler.org/ Quartz是OpenSymphony開源組織在Job scheduling領域又一個開源項目,它可以

Linux學習記錄()

應用服務 切換目錄 lin 平板電腦 路由器 成熟 區別 領導 計算機硬件 1.Linux的簡介 1.1.Linux的概述 Linux是基於Unix的開源免費的操作系統,由於系統的穩定性和安全性幾乎成為程序代碼運行的最佳系統環境。Linux是由Linus Torvalds(

Nginx學習記錄()

under 3.3 學習 color dex 穩定 靜態 inf 推薦 1. 什麽是nginx Nginx是一款高性能的http 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器。由俄羅斯的程序設計師Igor Sysoev所開發,官方測試nginx能夠支支撐

MongoDB學習記錄

users 泰安 系統設置 2.3 默認端口 erp nec acl 負責 本博客說明:最開始部分是一個運維部署案例模板,給開發安裝MongoDB都可以按照這個模板來進行基本部署,中間部分是自己研究其他博客記錄部署和授權相關內容,最後部分是網上視頻學習相關內容;www.mo

Nodejs學習記錄()--安裝設置篇

窗口切換 ati strong 直接 32位 回車 oot 目錄 release 安裝Node window window上安裝node可選擇以下兩種方式: 方式一:直接進入官網下載安裝 進入node.js官網點擊windows,選擇.msi後綴的,根據自己的電腦選擇對應的

windbg學習記錄()

1、安裝 如果你安裝了WDK或vs的相關版本,你都可以從安裝目錄中找到它們(一般在Debuggers目錄中)。如果沒有,你可以從下面的連結去下載安裝: Install Debugging Tools for Windows 32-bit Version http://www.mi

ROS學習筆記():工作空間的定義和建立方法

一、工作空間(Workspace): 定義 :存放工程開發相關檔案的資料夾。 檔案構成:( Workspace 下基本資料夾) src:程式碼空間,放置功能包原始碼的空間; build:編譯空間,編譯過程中產生的中間檔案; devel:開發空間,編譯完成後的

ROS學習筆記():建立工作空間和功能包

所有的ROS程式,包括我們自己開發的程式,都被組織成功能包,而ROS的功能包被存放在稱之為工作空間的目錄下。因此,在我們寫程式之前,第一步是建立一個工作空間以容納我們的功能包。其實ROS工作空間就是linux下的一個目錄,建立ROS工作空間就是建立一個linux目錄(我們建立名為catkin_ws的

jQuery學習記錄

jQuery:就是JavaScript庫中的一種,jQuery,很多優點     * JavaScript庫也可以叫JavaScript函式庫     * JavaScript庫:把一些瀏覽器相容性的程式碼或者是常用的函式封裝在一個js

Java學習記錄

計算機基礎知識     ①計算機(Computer)全稱:電子計算機,俗稱電腦。是一種能夠按照程式執行,自動、高速處理海量資料的現代化智慧電子裝置。由硬體和軟體所組成,沒有安裝任何軟體的計算機稱為裸機。常見的形式有臺式計算機、筆記本計算機、大型計算機等。 &nb

View的學習記錄()

View的學習記錄 本篇目的 View的呼叫 View檢視樹 Activity中檢視的結構 View的測量 onMeasure() MeasurSpec類 重寫onMeasure()

git學習記錄

一.git 安裝。     1.Linux安裝。可以試著輸入git,看系統中是否安裝git,如果沒有安裝會提示: $ git The program 'git' is currently not installed. You can install it by typin

python學習記錄

一、目的   由於專案釋出點多,更新迭代耗時,想搞一個自動釋出的任務,以前也沒有用python寫過,這個任務當做練手了。 二、步驟 1、安裝python,pip。我安裝的是python3.6,只要在安裝過程中選擇安裝pip即可。 2、首先考慮的是弄一個定時鐘跑,check_