ros常用命令

Nodes:節點,一個節點即爲一個可執行文件,它可以通過ROS與其它節點進行通信。
Messages:消息,消息是一種ROS數據類型,用於訂閱或發佈到一個話題。
Topics:話題,節點可以發佈消息到話題,也可以訂閱話題以接收消息。
Master:節點管理器,ROS名稱服務 (比如幫助節點找到彼此)。
rosout: ROS中相當於stdout/stderr。

[Remote PC] 顯示topic的消息定義
$ rostopic type [topic] | rosmsg show

[Remote PC] 顯示Node或Topic相關信息
$ rosnode info [node] # 可相看Node的所有相關的Topic和Service
$ rostopic info [topic]

[ROS TF查看TF在幹什麼]
$ rosrun tf view_frames # 生成座標系樹並保存在 frames.pdf中
$ evince frames.pdf # 顯示上面生成的座標系樹

$ rosrun rqt_tf_tree rqt_tf_tree # 查看實時座標系樹

$ rosrun tf tf_echo [reference_frame] [target_frame] # target_frame相對於reference_frame的座標
如:rosrun tf tf_echo map odom

==Turtlebot3-burger begin=

apt-cache search ros-Kinetic
sudo apt-get install ros-Kinetic-PACKAGE
sudo apt-get install ros-Kinetic-slam-gmapping

[Remote PC] 啓動Master, 一個系統就一個Master,通過配置環境變量ROS_MASTER_URI進行配置,它管理消息的收發以及node註冊
$ roscore

[TurtleBot3 SBC] 啓動讀串口結點(serial_node.py port=/dev/ttyACM0 baud=115200)、
讀LDS數據(hlds_laser_publisher port=/dev/ttyUSB0 frame_id=base_scan)
$ roslaunch turtlebot3_bringup turtlebot3_robot.launch

或以下兩條命令
$ roslaunch turtlebot3_bringup turtlebot3_core.launch
$ roslaunch turtlebot3_bringup turtlebot3_lidar.launch

[Remote PC] 運行 RViz 以查看激光點數據
export TURTLEBOT3_MODEL=burger
roslaunch turtlebot3_bringup turtlebot3_model.launch

[Remote PC] 通過鍵盤控制線速度和角速度
$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

[Remote PC] 運行SLAM
$ roslaunch turtlebot3_slam turtlebot3_slam.launch

[Remote PC] 設置SLAM算法 gmapping, cartographer, hector, karto, frontier_exploration
$ roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping
$ roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=cartographer

[Remote PC] 保存地圖, 保存到
$ rosrun map_server map_saver -f ~/map

==Turtlebot3-burger end=

SLAM算法分爲三類:Kalman濾波、概率濾波、圖優化

https://ieeexplore.ieee.org/document/8206595/
VinySLAM: An indoor SLAM method for low-cost platforms based on the Transferable Belief Model

ROS_PACKAGE_PATH

rosbag record/play : 錄製/回放topics

創建ROS程序包
$ cd ~/catkin_ws/src
#catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp # 創建一個名爲’beginner_tutorials’的新程序包,
# 這個程序包依賴於std_msgs、roscpp和rospy
$ rospack depends1 beginner_tutorials # 查看程序的一級依賴包
$ rospack depends beginner_tutorials # 查看程序的遞歸依賴包

#在catkin工作空間下
$ catkin_make [make_targets] [-DCMAKE_VARIABLES=…] # catkin_make是在CMake標準工作流程中依次調用了cmake 和 make

$ rosed [package_name] [filename] # ros編輯器,它調用vim,簡化進入特定目標

$ rosmsg show beginner_tutorials/Num # 查看消息定義
$ rossrv show beginner_tutorials/AddTwoInts # 查看服務定義

####### Running #########
$ roscore ## 是你在運行所有ROS程序前首先要運行的命令。
$ rosnode list ## 列出活躍的節點

$ rosrun [package_name] [node_name] # rosrun允許你使用包名直接運行一個包內的節點(而不需要知道這個包的路徑)
# node_name是一個可執行程序的文件名

$ roslaunch [package_name] [filename.launch] # 使用roslaunch同時運行多個節點

$ rosrun rqt_graph rqt_graph # 顯示當前系統運行情況的動態圖形 (node間的發佈、訂閱關係)

ROS Messages: 話題之間的通信是通過在節點之間發送ROS消息實現的(Send=>Receive,即P2P模式)

$ rostopic list # 列出所有活躍的topics
$ rostopic list -h # 查看幫助
$ rostopic echo [topic] # 顯示在某個話題上發佈的數據

$ rostopic list -v # 顯示出有關所發佈和訂閱的話題及其類型的詳細信息
$ rostopic type [topic] # 查看所發佈話題的消息類型(msg type)
$ rosmsg show [msg_type] # 查看消息的詳細定義
$ rostopic type [topic] | rosmsg show

[topic]=>[msg_type]=>[msg definition]

$ 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]’ # -1:表示運行一次就退出
$ rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 – ‘[2.0, 0.0, 0.0]’ ‘[0.0, 0.0, 1.8]’ #以1Hz的頻率發送消息

$ rostopic hz [topic] # 查看數據發佈的頻率
$ rosrun rqt_plot rqt_plot # 實時顯示一個發佈到某個話題上的數據變化圖形

ROS Services: 服務(services)是節點之間通訊的另一種方式 (Request->Response,即CS模式)
服務允許節點發送請求(request) 並獲得一個響應(response)

$ rosservice list # 列出可用服務的信息
$ rosservice type [service] #查看服務所需要的參數類型
$ rosservice call [service] [args] # 請求一個服務, 例如清除屏幕:rosservice call clear
$ rossrv show [service_type] #查看服務參數的詳細定義
$ rosservice type [service] | rossrv show # e.g. rosservice type spawn | rossrv show

rosparam: 存儲並操作ROS參數服務器(Parameter Server)上的數據
$ rosparam list # 列出參數服務器上的所有參數
$ rosparam get / # 顯示參數服務器上的所有內容
$ rosparam set [param_name] # 修改參數值 e.g. rosparam set background_r 150
$ rosservice call clear # 使修改參數生效
$ rosparam dump [file_name] # 將所有參數寫入params.yaml文件 e.g.: rosparam dump params.yaml
$ rosparam load [file_name] [namespace] # 載入服務器參數

調試信息
$ rosrun rqt_console rqt_console # 顯示調試信息
$ rosrun rqt_logger_level rqt_logger_level # 控制調試信息的輸出級別

ROS消息和ROS服務
#消息(msg): msg文件就是一個描述ROS中所使用消息類型的簡單文本。它們會被用來生成不同語言的源代碼。
#服務(srv): 一個srv文件描述一項服務。它包含兩個部分:請求和響應。
#msg文件存放在package的msg目錄下,srv文件則存放在srv目錄下。
#msg文件實際上就是每行聲明一個數據類型和變量名。
#在ROS中有一個特殊的數據類型:Header,它含有時間戳和座標系信息。
#msg示例
Header header
string child_frame_id
geometry_msgs/PoseWithCovariance pose
geometry_msgs/TwistWithCovariance twist

#sev示例(srv文件分爲請求和響應兩部分,由’—'分隔)
int64 A
int64 B

int64 Sum

[Remote PC] 安裝應用 (Demos using TurtleBot3)
$ sudo apt-get install ros-kinetic-ar-track-alvar
$ sudo apt-get install ros-kinetic-ar-track-alvar-msgs
$ cd ~/catkin_ws/src
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3_applications.git
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3_applications_msgs.git
$ cd ~/catkin_ws && catkin_make

rostopic list
rostopic echo /imu
/opt/ros/kinetic/lib/rosserial-python/serial_node.py: 讀取所有數據
ardunio: 編程語言

DynamixelSDK: 電機
IMU:

$roscore
$roslaunch tiny_slam tinyslam_turtlebot3.launch # read data
$roslaunch cartographer_ros turtlebot3_burger.launch

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章