日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ROS入门、ROS完整教程

發布時間:2023/12/15 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ROS入门、ROS完整教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ROS學習入門

說明:

  • 學習視頻:古月居 ROS入門21講

  • 代碼:https://github.com/huchunxu/ros_21_tutorials

    文章目錄

    • ROS學習入門
      • 1. ROS常用命令
      • 2.工作空間
          • 1.創建工作空間
          • 2.創建功能包
          • 3.配置環境變量
      • 3.示例
          • 1.發布者示例
          • 2.發布者示例
      • 4.自定義話題消息與使用
          • 1.編寫msg文件
          • 2.編寫測試文件
          • 3.編譯運行
      • 5.示例
          • 1.客戶端示例
          • 2.服務端示例
      • 6.自定義服務數據與使用
          • 1.編寫srv文件
          • 2.編寫測試文件
          • 3.編譯運行
      • 7.參數使用示例
      • 8.TF坐標變換
          • 1.TF變換演示
          • 2.TF示例
      • 9.launch文件使用
          • 1.基本語法
          • 2.示例

1. ROS常用命令

(1)rosnode 顯示當前 節點 信息

rosnode list #獲得運行節點列表 rosnode info [node-name] #獲得特定節點的信息 rosnode ping [node-name] #測試節點是否連通 rosnode kill [node-name] #終止節點

(2)**rospack ** 獲取 軟件包 的有關信息

rospack find #顯示軟件包的目錄 rospack list                #顯示出當前的包信息 rospack depends1 [package_name]    #顯示當前包的一級依賴 rospack depends [package_name]      #顯示當前包的所有依賴

(3)rostopic 獲取 話題 的有關信息

rostopic bw #顯示主題使用的帶寬 rostopic delay #從標題中的時間戳顯示主題的延遲 rostopic echo #將消息打印到屏幕 rostopic find #按類型查找主題 rostopic hz #顯示主題的發布率 rostopic info #打印有關活動主題的信息 rostopic list #列出活動主題 rostopic pub #將數據發布到主題 rostopic type #打印主題或字段類型

(4)rosmsg 獲取 消息 的有關信息

rosmsg show rosmsg info rosmsg list

(5)rosbag 運行 錄制

rosbag record -a -o [file_name] #將運行過程錄制到文件中 rosbag play [file_name] #回放bag文件 rosbag info [file_name] #查看bag包內容

(6)rosservice 獲取 服務 的有關消息

rosservice type rosservice info rosservice list

(7)rosparam 獲取 參數 的有關消息

rosparam list #列出當前的參數 rosparam get [param_key] #顯示某個參數值 rosparam set [param_key] [param_value] #設置某個參數值 rosparam dump [file_name] #保存到參數文件 rosparam load [file_name] #從文件中讀取參數 rosparam delete [param_key] #刪除參數

(8)顯示 節點圖

rqt_graph

(9)運行程序

rosrun

(10)運行launch文件

roslaunch

(11)啟動 rqt_logger_level 圖形化工具

rosrun rqt_logger_level rqt_logger_level

(12)啟動 rqt_console圖形化工具

rqt_console

(13)啟動 rqt_top圖形化工具

rosrun rqt_top rqt_top

(14)啟動 rqt_topic圖形化工具

rosrun rqt_topic rqt_topic

(15)啟動 可視化監視器

rosrun rqt_runtime_monitor rqt_runtime_monitor

(16)啟動 圖形查看器

rosrun rqt_image_view rqt_image_view

(17)啟動 rqt_bag圖形化工具

rqt_bag

(18)啟動 rqt_gui圖形化工具

rosrun rqt_gui rqt_gui

(19)分析包的潛在問題

roswtf

(20)查看 ROS_PACKAGE_PATH環境變量

echo $ROS_PACKAGE_PATH

2.工作空間

工作空間是一個存放工程開發相關文件的文件夾

  • src:代碼空間;存放功能包的源碼
  • build:編譯空間;存放編譯過程中的中間文件
  • devel:開發空間;存放開發過程中的可執行文件和庫
  • install:安裝空間;存放最終生成的可執行文件

1.創建工作空間

mkdir -p /catkin_ws/src cd catkin_ws catkin_make #產生build、devel空間 catkin_make install #產生install空間

2.創建功能包

# catkin_create_pkg <package_name> [depend1] [depend2] [depend3] cd src catkin_create_pkg test_pkg roscpp rospy std_msgs # cd .. # catkin_make #可以進行編譯

3.配置環境變量

source devel/setup.bash #僅對當前終端有效 vim ./bashrc source ~/catkin_ws/devel/setup.bash #在文件最后添加

3.示例

發布者和訂閱者示例

1.發布者示例

cd ~/catkin_ws/src catkin_create_pkg learning_topic roscpp rospy std_msgs geometry_msgs turtlesim # 創建功能包 cd learning_topin/src vim velocity_publisher.cpp #創建一個.cpp文件 /*********************************************************************** Copyright 2020 GuYueHome (www.guyuehome.com). ***********************************************************************//*** 該例程將發布turtle1/cmd_vel話題,消息類型geometry_msgs::Twist*/#include <ros/ros.h> #include <geometry_msgs/Twist.h>int main(int argc, char **argv) {// ROS節點初始化ros::init(argc, argv, "velocity_publisher");// 創建節點句柄ros::NodeHandle n;// 創建一個Publisher,發布名為/turtle1/cmd_vel的topic,消息類型為geometry_msgs::Twist,隊列長度10ros::Publisher turtle_vel_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 10);// 設置循環的頻率ros::Rate loop_rate(10);int count = 0;while (ros::ok()){// 初始化geometry_msgs::Twist類型的消息geometry_msgs::Twist vel_msg;vel_msg.linear.x = 0.5;vel_msg.angular.z = 0.2;// 發布消息turtle_vel_pub.publish(vel_msg);ROS_INFO("Publsh turtle velocity command[%0.2f m/s, %0.2f rad/s]", vel_msg.linear.x, vel_msg.angular.z);// 按照循環頻率延時loop_rate.sleep();}return 0; } cd .. # ~/catkin_ws/src/learning_topic vim CMakeLists.txt #打開CMakeLists.txt,新增兩句 add_executable(velocity_publisher src/velocity_publisher.cpp) target_link_libraries(velocity_publisher ${catkin_LIBRARIES}) cd ~/catkin_ws #切換到工作空間 catkin_make #編譯

接下來進行運行

1. roscore 2. rosrun turtlesim turtlesim_node 3. rosrun learning_topic velocity_publisher

2.發布者示例

cd learning_topin/src vim pose_subscriber.cpp #創建一個.cpp文件 /*********************************************************************** Copyright 2020 GuYueHome (www.guyuehome.com). ***********************************************************************//*** 該例程將訂閱/turtle1/pose話題,消息類型turtlesim::Pose*/#include <ros/ros.h> #include "turtlesim/Pose.h"// 接收到訂閱的消息后,會進入消息回調函數 void poseCallback(const turtlesim::Pose::ConstPtr& msg) {// 將接收到的消息打印出來ROS_INFO("Turtle pose: x:%0.6f, y:%0.6f", msg->x, msg->y); }int main(int argc, char **argv) {// 初始化ROS節點ros::init(argc, argv, "pose_subscriber");// 創建節點句柄ros::NodeHandle n;// 創建一個Subscriber,訂閱名為/turtle1/pose的topic,注冊回調函數poseCallbackros::Subscriber pose_sub = n.subscribe("/turtle1/pose", 10, poseCallback);// 循環等待回調函數ros::spin();return 0; } cd .. # ~/catkin_ws/src/learning_topic vim CMakeLists.txt #打開CMakeLists.txt,新增兩句 add_executable(pose_subscriber src/pose_subscriber.cpp) target_link_libraries(pose_subscriber ${catkin_LIBRARIES}) cd ~/catkin_ws #切換到工作空間 catkin_make #編譯

接下來進行運行

1. roscore 2. rosrun turtlesim turtlesim_node 3. rosrun learning_topic pose_subscriber

4.自定義話題消息與使用

1.編寫msg文件

cd ~/catkin_ws/src/learning_topic mkdir msg cd msg vim Persion.msg #創建.msg文件 string name uint8 age uint8 sexuint8 unknown = 0 uint8 male = 1 uint8 female = 2

在.xml文件中添加(固定配置)

<build_depend>message_generation</build_depend> <exec_depend>message_runtime</exec_depend>

CMakeList.txt文件中添加

find_package(... message_generation)add_message_files(FILES Person.msg) generate_messages(DEPENDENCIES std_msgs)catkin_package(... message_runtime)

2.編寫測試文件

cd ~/catkin_ws/src/learning_topic/src vim person_publisher.cpp /*********************************************************************** Copyright 2020 GuYueHome (www.guyuehome.com). ***********************************************************************//*** 該例程將發布/person_info話題,自定義消息類型learning_topic::Person*/#include <ros/ros.h> #include "learning_topic/Person.h"int main(int argc, char **argv) {// ROS節點初始化ros::init(argc, argv, "person_publisher");// 創建節點句柄ros::NodeHandle n;// 創建一個Publisher,發布名為/person_info的topic,消息類型為learning_topic::Person,隊列長度10ros::Publisher person_info_pub = n.advertise<learning_topic::Person>("/person_info", 10);// 設置循環的頻率ros::Rate loop_rate(1);int count = 0;while (ros::ok()){// 初始化learning_topic::Person類型的消息learning_topic::Person person_msg;person_msg.name = "Tom";person_msg.age = 18;person_msg.sex = learning_topic::Person::male;// 發布消息person_info_pub.publish(person_msg);ROS_INFO("Publish Person Info: name:%s age:%d sex:%d", person_msg.name.c_str(), person_msg.age, person_msg.sex);// 按照循環頻率延時loop_rate.sleep();}return 0; }
vim person_subscriber.cpp /*********************************************************************** Copyright 2020 GuYueHome (www.guyuehome.com). ***********************************************************************//*** 該例程將訂閱/person_info話題,自定義消息類型learning_topic::Person*/#include <ros/ros.h> #include "learning_topic/Person.h"// 接收到訂閱的消息后,會進入消息回調函數 void personInfoCallback(const learning_topic::Person::ConstPtr& msg) {// 將接收到的消息打印出來ROS_INFO("Subcribe Person Info: name:%s age:%d sex:%d", msg->name.c_str(), msg->age, msg->sex); }int main(int argc, char **argv) {// 初始化ROS節點ros::init(argc, argv, "person_subscriber");// 創建節點句柄ros::NodeHandle n;// 創建一個Subscriber,訂閱名為/person_info的topic,注冊回調函數personInfoCallbackros::Subscriber person_info_sub = n.subscribe("/person_info", 10, personInfoCallback);// 循環等待回調函數ros::spin();return 0; }
cd .. vim CMakeLists.txt #添加以下 add_executable(person_publisher src/person_publisher.cpp) target_link_libraries(person_publisher ${catkin_LIBRARIES}) add_dependencies(person_publisher ${PROJECT_NAME}_generate_messages_cpp)add_executable(person_subscriber src/person_subscriber.cpp) target_link_libraries(person_subscriber ${catkin_LIBRARIES}) add_dependencies(person_subscriber ${PROJECT_NAME}_generate_messages_cpp)

3.編譯運行

cd ~/catkin_ws catkin_make 1.roscore 2.rosrun learning_topic person_subscriber 3.rosrun learning_topic person_publisher

5.示例

客戶端與服務端示例

1.客戶端示例

cd ~/catkin_ws/src catkin_create_pkg learning_service roscpp rospy std_msgs geometry_msgs turtlesim #創建包 cd learning_service/src vim turtle_spawn.cpp #創建C++文件 /*********************************************************************** Copyright 2020 GuYueHome (www.guyuehome.com). ***********************************************************************//*** 該例程將請求/spawn服務,服務數據類型turtlesim::Spawn*/#include <ros/ros.h> #include <turtlesim/Spawn.h>int main(int argc, char** argv) {// 初始化ROS節點ros::init(argc, argv, "turtle_spawn");// 創建節點句柄ros::NodeHandle node;// 發現/spawn服務后,創建一個服務客戶端,連接名為/spawn的serviceros::service::waitForService("/spawn");ros::ServiceClient add_turtle = node.serviceClient<turtlesim::Spawn>("/spawn");// 初始化turtlesim::Spawn的請求數據turtlesim::Spawn srv;srv.request.x = 2.0;srv.request.y = 2.0;srv.request.name = "turtle2";// 請求服務調用ROS_INFO("Call service to spwan turtle[x:%0.6f, y:%0.6f, name:%s]", srv.request.x, srv.request.y, srv.request.name.c_str());add_turtle.call(srv);// 顯示服務調用結果ROS_INFO("Spwan turtle successfully [name:%s]", srv.response.name.c_str());return 0; }; cd .. vim CMakeLists.txt #修改CMakeLists.txt文件(添加) add_executable(turtle_spawn src/turtle_spawn.cpp) target_link_libraries(turtle_spawn ${catkin_LIBRARIES})

編譯與運行

cd ~/catkin_ws catkin_make 1.roscore 2.rosrun turtlesim turtlesim_node 3.rosrun learning_service turtle_spawn

2.服務端示例

cd ~/catkin_ws/src/learning_service/src vim turtle_command_server.cpp /*********************************************************************** Copyright 2020 GuYueHome (www.guyuehome.com). ***********************************************************************//*** 該例程將執行/turtle_command服務,服務數據類型std_srvs/Trigger*/#include <ros/ros.h> #include <geometry_msgs/Twist.h> #include <std_srvs/Trigger.h>ros::Publisher turtle_vel_pub; bool pubCommand = false;// service回調函數,輸入參數req,輸出參數res bool commandCallback(std_srvs::Trigger::Request &req,std_srvs::Trigger::Response &res) {pubCommand = !pubCommand;// 顯示請求數據ROS_INFO("Publish turtle velocity command [%s]", pubCommand==true?"Yes":"No");// 設置反饋數據res.success = true;res.message = "Change turtle command state!";return true; }int main(int argc, char **argv) {// ROS節點初始化ros::init(argc, argv, "turtle_command_server");// 創建節點句柄ros::NodeHandle n;// 創建一個名為/turtle_command的server,注冊回調函數commandCallbackros::ServiceServer command_service = n.advertiseService("/turtle_command", commandCallback);// 創建一個Publisher,發布名為/turtle1/cmd_vel的topic,消息類型為geometry_msgs::Twist,隊列長度10turtle_vel_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 10);// 循環等待回調函數ROS_INFO("Ready to receive turtle command.");// 設置循環的頻率ros::Rate loop_rate(10);while(ros::ok()){// 查看一次回調函數隊列ros::spinOnce();// 如果標志為true,則發布速度指令if(pubCommand){geometry_msgs::Twist vel_msg;vel_msg.linear.x = 0.5;vel_msg.angular.z = 0.2;turtle_vel_pub.publish(vel_msg);}//按照循環頻率延時loop_rate.sleep();}return 0; } cd .. vim CMakeLists.txt #修改CMakeLists.txt文件(添加) add_executable(turtle_command_server src/turtle_command_server.cpp) target_link_libraries(turtle_command_server ${catkin_LIBRARIES})

編譯運行

cd ~/catkin_ws catkin_make 1.roscore 2.rosrun turtlesim turtlesim_node 3.rosrun learning_service turtle_command_server 4.rosservice call /turtle_command "{}"

6.自定義服務數據與使用

1.編寫srv文件

cd ~/catkin_ws/src/learning_service mkdir srv cd srv vim Person.srv string name uint8 age uint8 sexuint8 unknown = 0 uint8 male = 1 uint8 female = 2--- string result

修改package.xml文件(添加)

<build_depend>message_generation</build_depend> <exec_depend>message_runtime</exec_depend>

修改CMakeLists.txt文件(添加)

find_package(... message_generation)add_message_files(FILES Person.srv) generate_messages(DEPENDENCIES std_msgs)catkin_package(... message_runtime)

2.編寫測試文件

cd ~/catkin_ws/src/learning_service/src vim person_server.cpp /*********************************************************************** Copyright 2020 GuYueHome (www.guyuehome.com). ***********************************************************************//*** 該例程將執行/show_person服務,服務數據類型learning_service::Person*/#include <ros/ros.h> #include "learning_service/Person.h"// service回調函數,輸入參數req,輸出參數res bool personCallback(learning_service::Person::Request &req,learning_service::Person::Response &res) {// 顯示請求數據ROS_INFO("Person: name:%s age:%d sex:%d", req.name.c_str(), req.age, req.sex);// 設置反饋數據res.result = "OK";return true; }int main(int argc, char **argv) {// ROS節點初始化ros::init(argc, argv, "person_server");// 創建節點句柄ros::NodeHandle n;// 創建一個名為/show_person的server,注冊回調函數personCallbackros::ServiceServer person_service = n.advertiseService("/show_person", personCallback);// 循環等待回調函數ROS_INFO("Ready to show person informtion.");ros::spin();return 0; } vim person_client.cpp /*********************************************************************** Copyright 2020 GuYueHome (www.guyuehome.com). ***********************************************************************//*** 該例程將請求/show_person服務,服務數據類型learning_service::Person*/#include <ros/ros.h> #include "learning_service/Person.h"int main(int argc, char** argv) {// 初始化ROS節點ros::init(argc, argv, "person_client");// 創建節點句柄ros::NodeHandle node;// 發現/spawn服務后,創建一個服務客戶端,連接名為/spawn的serviceros::service::waitForService("/show_person");ros::ServiceClient person_client = node.serviceClient<learning_service::Person>("/show_person");// 初始化learning_service::Person的請求數據learning_service::Person srv;srv.request.name = "Tom";srv.request.age = 20;srv.request.sex = learning_service::Person::Request::male;// 請求服務調用ROS_INFO("Call service to show person[name:%s, age:%d, sex:%d]", srv.request.name.c_str(), srv.request.age, srv.request.sex);person_client.call(srv);// 顯示服務調用結果ROS_INFO("Show person result : %s", srv.response.result.c_str());return 0; }; cd .. vim CMakeLists.txt #添加 add_executable(person_server src/person_server.cpp) target_link_libraries(person_server ${catkin_LIBRARIES}) add_dependencies(person_server ${PROJECT_NAME}_gencpp)add_executable(person_client src/person_client.cpp) target_link_libraries(person_client ${catkin_LIBRARIES}) add_dependencies(person_client ${PROJECT_NAME}_gencpp)

3.編譯運行

cd ~/catkin_ws catkin_make 1.roscore 2.rosrun learning_service person_server 2.rosrun learning_service person_client

7.參數使用示例

cd ~/catkin_ws/src catkin_create_pkg learning_parameter roscpp rospy std_srvs cd learning_parameter/src vim parameter_config.cpp /*********************************************************************** Copyright 2020 GuYueHome (www.guyuehome.com). ***********************************************************************//*** 該例程設置/讀取海龜例程中的參數*/ #include <string> #include <ros/ros.h> #include <std_srvs/Empty.h>int main(int argc, char **argv) {int red, green, blue;// ROS節點初始化ros::init(argc, argv, "parameter_config");// 創建節點句柄ros::NodeHandle node;// 讀取背景顏色參數ros::param::get("/background_r", red);ros::param::get("/background_g", green);ros::param::get("/background_b", blue);ROS_INFO("Get Backgroud Color[%d, %d, %d]", red, green, blue);// 設置背景顏色參數ros::param::set("/background_r", 255);ros::param::set("/background_g", 255);ros::param::set("/background_b", 255);ROS_INFO("Set Backgroud Color[255, 255, 255]");// 讀取背景顏色參數ros::param::get("/background_r", red);ros::param::get("/background_g", green);ros::param::get("/background_b", blue);ROS_INFO("Re-get Backgroud Color[%d, %d, %d]", red, green, blue);// 調用服務,刷新背景顏色ros::service::waitForService("/clear");ros::ServiceClient clear_background = node.serviceClient<std_srvs::Empty>("/clear");std_srvs::Empty srv;clear_background.call(srv);sleep(1);return 0; } cd .. vim CMakeLists.txt add_executable(parameter_config src/parameter_config.cpp) target_link_libraries(parameter_config ${catkin_LIBRARIES}) cd ~/catkin_ws catkin_make

運行

1.roscore 2.rosrun turtlesim turlesim_node 3.rosrun learrning_parameter parameter_config

8.TF坐標變換

1.TF變換演示

sudo apt-get install ros-melodic-turtle-tf #安裝功能包 1.roscore 2.roslanunch turtle_tf turtle_tf_demo.launch 3.rosrun turtlesim turtle_teleop_key 4.rosrun tf view_frames #保存坐標變換文件 5.rosrun tf tf_echo turtle1 turtle2 #終端顯示坐標變換

2.TF示例

cd ~/catkin_ws/src catkin_create_pkg learning_tf roscpp rospy tf turtlesim cd learning_tf/src vim turtle_tf_broadcaster.cpp /*********************************************************************** Copyright 2020 GuYueHome (www.guyuehome.com). ***********************************************************************//*** 該例程產生tf數據,并計算、發布turtle2的速度指令*/#include <ros/ros.h> #include <tf/transform_broadcaster.h> #include <turtlesim/Pose.h>std::string turtle_name;void poseCallback(const turtlesim::PoseConstPtr& msg) {// 創建tf的廣播器static tf::TransformBroadcaster br;// 初始化tf數據tf::Transform transform;transform.setOrigin( tf::Vector3(msg->x, msg->y, 0.0) );tf::Quaternion q;q.setRPY(0, 0, msg->theta);transform.setRotation(q);// 廣播world與海龜坐標系之間的tf數據br.sendTransform(tf::StampedTransform(transform, ros::Time::now(), "world", turtle_name)); }int main(int argc, char** argv) {// 初始化ROS節點ros::init(argc, argv, "my_tf_broadcaster");// 輸入參數作為海龜的名字if (argc != 2){ROS_ERROR("need turtle name as argument"); return -1;}turtle_name = argv[1];// 訂閱海龜的位姿話題ros::NodeHandle node;ros::Subscriber sub = node.subscribe(turtle_name+"/pose", 10, &poseCallback);// 循環等待回調函數ros::spin();return 0; }; vim turtle_tf_listener.cpp /*********************************************************************** Copyright 2020 GuYueHome (www.guyuehome.com). ***********************************************************************//*** 該例程監聽tf數據,并計算、發布turtle2的速度指令*/#include <ros/ros.h> #include <tf/transform_listener.h> #include <geometry_msgs/Twist.h> #include <turtlesim/Spawn.h>int main(int argc, char** argv) {// 初始化ROS節點ros::init(argc, argv, "my_tf_listener");// 創建節點句柄ros::NodeHandle node;// 請求產生turtle2ros::service::waitForService("/spawn");ros::ServiceClient add_turtle = node.serviceClient<turtlesim::Spawn>("/spawn");turtlesim::Spawn srv;add_turtle.call(srv);// 創建發布turtle2速度控制指令的發布者ros::Publisher turtle_vel = node.advertise<geometry_msgs::Twist>("/turtle2/cmd_vel", 10);// 創建tf的監聽器tf::TransformListener listener;ros::Rate rate(10.0);while (node.ok()){// 獲取turtle1與turtle2坐標系之間的tf數據tf::StampedTransform transform;try{listener.waitForTransform("/turtle2", "/turtle1", ros::Time(0), ros::Duration(3.0));listener.lookupTransform("/turtle2", "/turtle1", ros::Time(0), transform);}catch (tf::TransformException &ex) {ROS_ERROR("%s",ex.what());ros::Duration(1.0).sleep();continue;}// 根據turtle1與turtle2坐標系之間的位置關系,發布turtle2的速度控制指令geometry_msgs::Twist vel_msg;vel_msg.angular.z = 4.0 * atan2(transform.getOrigin().y(),transform.getOrigin().x());vel_msg.linear.x = 0.5 * sqrt(pow(transform.getOrigin().x(), 2) +pow(transform.getOrigin().y(), 2));turtle_vel.publish(vel_msg);rate.sleep();}return 0; }; cd .. vim CMakeLists.txt add_executable(turtle_tf_broadcaster src/turtle_tf_broadcaster.cpp) target_link_libraries(turtle_tf_broadcaster ${catkin_LIBRARIES})add_executable(turtle_tf_listener src/turtle_tf_listener.cpp) target_link_libraries(turtle_tf_listener ${catkin_LIBRARIES})

編譯運行

cd ~/catkin_ws catkin_make 1.roscore 2.rosrun turtlesim turtlesim_node 3.rosrun learning_tf turtle_tf_broadcaster __name:=turtle1_tf_broadcaster /turtle1 #運行turtle1坐標廣播 4.rosrun learning_tf turtle_tf_broadcaster __name:=turtle2_tf_broadcaster /turtlr2 #運行turtle2坐標廣播 5.rosrun learning_tf turtle_tf_listener #運行監聽,創建turtle2,發送坐標給turtle2(控制運動) 6.rosrun turtlesim turtle_teleop_key #鍵盤監聽

9.launch文件使用

1.基本語法

1.launch文件格式

<launch>...</launch>

2.node 節點

<node pkg="package_name" type="executable_name" name="node_name" /> node是要啟動的ROS節點,參數:pkg=“mypackage” :節點的功能包名稱type="nodetype" : 節點的可執行文件名稱name="nodename" :運行時的節點名字,它將覆蓋任何通過調用ros::init來賦予節點的名稱args="arg1 arg2 arg3" (可選):傳遞給節點的參數respawn="true" (可選) :如果節點停止,自動重啟節點ns="foo" (可選):在"foo"命名空間啟動節點output="log | screen" (可選) :如果選擇screen,節點的stdout(標準輸出)和stderr(標準錯誤)信息將顯示在終端窗口上;如果選擇log,stdout和stderr將發送一個log文件,stderr也會顯示在終端窗口上

3.include

<include file="$(dirname)/other.launch" /> include可以在當前launch文件中調用另一個launch文件,這樣有利于代碼的復用,減少開發工作量。

4.remap

<remap from="/turtlebot/cmd_vel" to="/cmd_vel" /> remap可以將一個參數名映射為另一個名字,參數:from="original-name"to="new-name"

5.arg

<arg name="arg_name" default="arg_value"> arg用來定義一個局部參數,該參數只能在一個launch文件中使用。有三種使用方法: <arg name="foo"/> :聲明一個參數foo,后面需要給它賦值 <arg name="foo" default="1"/> :聲明一個參數foo,它有一個默認值,該值可以被修改。 <arg name="foo" value="bar"/> :聲明一個常量foo,它的值不能被修改。

6.param

<param name="output_filename" value="odom" /> param用來定義一個設置在Parameter Server(參數服務器)的參數,它可以添加到node中。param包括以下幾個參數:name="namespace/name":參數的名字value="value"(可選):定義參數的值,如果省略這個參數,則應該指定一個文件(binfile/texfile)或命令type="str|int|double|boot"(可選):指定參數的類型texfile="$(find pkg-name)/path/file" (可選)binfile="$(find pkg-name)/path/file" (可選)commadn="(find pkg-name)/exe '$(find pkg-name)/arg.txt'" (可選):exe是可執行文件( .py或 .cpp),arg.txt是參數文件

7.rosparam

<rosparam file="params.yaml" command="load" ns="params" /> 可以使用.yaml文件load/dump/delete參數。delete和dump命令在load命令之前,load命令可以覆蓋以前設置的參數。rosparam也可以添加到node中使用。rosparam包括以下幾個參數:command="load|dump|delete"(默認時load)file="$(find pkg-name)/path/foo.yaml"(load或者dump命令):yaml文件的名字param="param-name":參數的名字

2.示例

cd ~/catkin_ws/src catkin_create_pkg learning_launch cd learning_launch mkdir launch cd launch vim simple.launch <launch><node pkg="learning_topic" type="person_subscriber" name="talker" output="screen" /><node pkg="learning_topic" type="person_publisher" name="listener" output="screen" /> </launch>
vim start_tf_demo_c++.launch <launch><!-- Turtlesim Node--><node pkg="turtlesim" type="turtlesim_node" name="sim"/><node pkg="turtlesim" type="turtle_teleop_key" name="teleop" output="screen"/><node pkg="learning_tf" type="turtle_tf_broadcaster" args="/turtle1" name="turtle1_tf_broadcaster" /><node pkg="learning_tf" type="turtle_tf_broadcaster" args="/turtle2" name="turtle2_tf_broadcaster" /><node pkg="learning_tf" type="turtle_tf_listener" name="listener" /></launch>
vim start_tf_demo_py.launch #編寫的是py文件,注意噢! <launch><!-- Turtlesim Node--><node pkg="turtlesim" type="turtlesim_node" name="sim"/><node pkg="turtlesim" type="turtle_teleop_key" name="teleop" output="screen"/><node name="turtle1_tf_broadcaster" pkg="learning_tf" type="turtle_tf_broadcaster.py"><param name="turtle" type="string" value="turtle1" /></node><node name="turtle2_tf_broadcaster" pkg="learning_tf" type="turtle_tf_broadcaster.py"><param name="turtle" type="string" value="turtle2" /> </node><node pkg="learning_tf" type="turtle_tf_listener.py" name="listener" /></launch>
vim turtlesim_parameter_config.launch <launch><param name="/turtle_number" value="2"/><node pkg="turtlesim" type="turtlesim_node" name="turtlesim_node"><param name="turtle_name1" value="Tom"/><param name="turtle_name2" value="Jerry"/><rosparam file="$(find learning_launch)/config/param.yaml" command="load"/></node><node pkg="turtlesim" type="turtle_teleop_key" name="turtle_teleop_key" output="screen"/></launch> cd .. mkdir config cd config vim param.yaml A: 123 B: "hello"group:C: 456D: "hello"
cd ../launch vim turtlesim_remap.launch <launch><include file="$(find learning_launch)/launch/simple.launch" /><node pkg="turtlesim" type="turtlesim_node" name="turtlesim_node"><remap from="/turtle1/cmd_vel" to="/cmd_vel"/></node></launch>

運行

roslaunch learning_launch simple.launch roslaunch learning_launch start_tf_demo_c++.launch roslaunch learning_launch start_tf_demo_py.launch roslaunch learning_launch turtlesim_parameter_config.launch roslaunch learning_launch turtlesim_remap.launch

總結

以上是生活随笔為你收集整理的ROS入门、ROS完整教程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

中文字幕免费高清av | 国产亚洲精品久久久久久久久久久久 | 国产视频二 | 久久综合九色综合网站 | 91视频啪| 国产伦理久久精品久久久久_ | 国产打女人屁股调教97 | 国产精品久久久av | 视频在线观看一区 | 一级成人免费视频 | 欧美精品免费在线观看 | 中文av网| 国产免费一区二区三区最新 | 国产成人免费高清 | 国内精品久久久久久久影视麻豆 | 婷婷 综合 色| 久草在线精品观看 | 国产精品久久久久久一二三四五 | 亚洲情影院 | 亚洲视频精品 | 国产又黄又爽又猛视频日本 | 欧美在线视频一区二区三区 | 日韩中文久久 | 亚洲精品国产综合99久久夜夜嗨 | av日韩中文 | 黄色的片子 | 天天操天天干天天综合网 | 超碰在线亚洲 | 麻花豆传媒mv在线观看网站 | 福利一区在线 | 欧美在线不卡一区 | 91入口在线观看 | 69精品久久 | 精品一区电影 | 成人啪啪18免费游戏链接 | 久草视频首页 | 国产免费人成xvideos视频 | 欧美一区免费观看 | 久色免费视频 | 国内精品久久久久影院优 | 欧美精品在线视频 | 亚洲国产精品日韩 | 日韩一区二区三区不卡 | 黄色网www | 久久黄色免费视频 | 黄色网www | 国色天香在线观看 | 日韩成人免费在线观看 | 国产精品99久久免费黑人 | 欧美日韩另类在线观看 | 国产视频999 | 日本91在线| 免费中文字幕在线观看 | 日本精品久久久久中文字幕5 | 免费观看福利视频 | 国产黄色片一级三级 | 九色琪琪久久综合网天天 | 91热这里只有精品 | 96香蕉视频 | 最近中文字幕大全中文字幕免费 | 成人黄色资源 | 国产91影视 | 黄色免费网站 | 婷婷播播网 | 免费日韩电影 | 四虎影视成人 | 日本公妇在线观看高清 | 91亚洲精 | 激情视频免费在线观看 | 国产精品第二页 | 亚洲激情婷婷 | 国产又黄又爽无遮挡 | 深爱激情av | 2020天天干夜夜爽 | 五月精品 | 国产视频日韩视频欧美视频 | 日韩高清在线一区二区三区 | 日本性生活一级片 | 免费看网站在线 | 色姑娘综合网 | 成人免费视频在线观看 | 亚洲高清视频一区二区三区 | 狠狠色丁香婷婷综合久小说久 | 九九视频免费观看视频精品 | 黄色片免费在线 | 国产午夜精品在线 | 91香蕉视频黄色 | 亚洲在线a | 99精品视频免费看 | 激情喷水 | 特级毛片aaa | 99婷婷狠狠成为人免费视频 | 国产一线二线三线性视频 | 国产视频网站在线观看 | 一区 二区 精品 | 亚洲精品黄色在线观看 | 欧美视频二区 | 中文在线字幕免 | 国产精品久久久久久久久免费看 | 国产美女网站在线观看 | 中文字幕 在线 一 二 | 伊人亚洲综合网 | 久久精品激情 | 正在播放亚洲精品 | 日韩欧美在线观看一区二区 | av不卡在线看 | 在线综合 亚洲 欧美在线视频 | 日韩性网站| 久久一区二区三区超碰国产精品 | 成人午夜片av在线看 | av在线一级 | 久久国产精品视频观看 | 国产美女免费观看 | 日韩欧美一区二区三区在线 | 亚洲h视频在线 | 99资源网| 国产99久久久国产精品成人免费 | 国产精品mm | 久久老司机精品视频 | 91香蕉久久 | 日韩精品一区不卡 | 免费视频久久久 | 欧美一区日韩一区 | 国内精品久久久久影院日本资源 | 国产成人91| 国产一卡在线 | 97精品国产97久久久久久久久久久久 | 精品国产伦一区二区三区观看说明 | 美女黄频视频大全 | 日韩三级在线观看 | 91系列在线观看 | 国产免费观看久久 | 黄色中文字幕在线 | 成年人黄色免费网站 | 三级黄色理论片 | 免费日韩一区二区三区 | 久草在线免费新视频 | 色综合天天天天做夜夜夜夜做 | 日韩最新中文字幕 | 成人动漫一区二区三区 | 久草新在线 | 激情婷婷av | 人人澡人摸人人添学生av | 日韩高清免费电影 | 日韩精品在线视频免费观看 | 狠狠操影视 | 精品国产aⅴ一区二区三区 在线直播av | 九九热国产视频 | 午夜在线免费视频 | 欧美激情精品久久久久久免费印度 | 最近中文字幕高清字幕在线视频 | 97色噜噜 | 亚洲伊人婷婷 | 久久高清国产视频 | 丁香婷婷激情国产高清秒播 | 欧美一区二区三区免费观看 | 91黄色在线看 | 深夜视频久久 | 91一区一区三区 | 91色吧| japanesexxxhd奶水 国产一区二区在线免费观看 | 成年人视频在线免费观看 | 天天弄天天干 | 国产色妞影院wwwxxx | 黄色av在 | 狠狠综合久久av | 免费观看的av网站 | 日本在线视频一区二区三区 | 久久精品99精品国产香蕉 | 国产精品麻豆视频 | 91久久精品日日躁夜夜躁国产 | 97福利社| 黄色aa久久| 69xxxx欧美 | 成人一级在线 | www.天天成人国产电影 | 免费在线观看成年人视频 | 黄色av一区二区三区 | 毛片播放网站 | 国产成人精品女人久久久 | 欧美精品一区在线 | 91新人在线观看 | 97视频在线 | 欧美在线视频一区二区 | 欧美视频在线二区 | 久草电影在线观看 | 欧美日韩三级在线观看 | 国内外成人在线 | 天天做天天爱夜夜爽 | 国产精品乱码久久久 | 91在线看视频 | 免费的黄色的网站 | 天天曰 | 中文字幕乱偷在线 | 天天天天天天操 | 国产麻豆精品久久一二三 | 在线看片日韩 | 免费涩涩网站 | 黄色小说在线免费观看 | 精品国产精品久久一区免费式 | 欧美日韩成人一区 | 久久久久久伊人 | 九月婷婷人人澡人人添人人爽 | 一本一道久久a久久综合蜜桃 | 成人黄色大片在线免费观看 | 九九欧美视频 | 操操操操网 | 国产精品免费久久久久影院仙踪林 | 日韩在线不卡av | 国产精品国产三级在线专区 | 亚洲精选国产 | 久久国产精品99久久久久久进口 | 热久久免费视频精品 | 亚洲精品乱码久久久久久蜜桃不爽 | 狠狠的日| 91久久人澡人人添人人爽欧美 | 成人免费共享视频 | 国产一级片免费观看 | 国内亚洲精品 | 人人爱夜夜操 | 欧美精彩视频在线观看 | 久久夜色网 | 99精品乱码国产在线观看 | 国产亚洲成av人片在线观看桃 | 日韩福利在线观看 | 中文av网 | av 一区二区三区四区 | 91精品秘密在线观看 | 99国产一区二区三精品乱码 | 91在线看网站 | 久久精品视频免费观看 | 色五月激情五月 | 日韩精品在线视频免费观看 | 国产麻豆精品久久一二三 | 天天插日日操 | 国产欧美高清 | 国产三级精品在线 | 成人免费大片黄在线播放 | 国产又粗又猛又爽又黄的视频先 | 在线观看日韩 | 免费久久久久久久 | 国产精品日韩在线 | 国产高清在线 | 日韩欧美综合精品 | 婷婷在线五月 | 国产黄色观看 | 91精品国产自产在线观看 | 精品欧美一区二区三区久久久 | 久久综合影视 | 日韩视频一区二区三区在线播放免费观看 | 五月导航 | 久久草在线视频国产 | 五月激情电影 | 婷婷丁香在线视频 | 国产91在| 亚洲区精品 | 伊人宗合网 | 91精品少妇偷拍99 | 91入口在线观看 | 91看片在线| av片子在线观看 | a级片在线播放 | 国产在线观看h | 99精品欧美一区二区 | 亚洲免费精彩视频 | www.久艹 | 成人黄色影片在线 | 人人要人人澡人人爽人人dvd | 999国内精品永久免费视频 | 久久久久亚洲精品中文字幕 | 狠狠操狠狠干天天操 | 亚洲理论电影网 | 欧美一区在线看 | 9999激情| 久久久国产99久久国产一 | www.黄色片网站 | 免费视频xnxx com | 婷婷丁香五 | 成人蜜桃| 青青草国产精品视频 | 国产精品99久久久精品免费观看 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 色婷婷电影 | 中文字幕第一页在线播放 | 国产成人精品久 | 在线亚洲天堂网 | 亚洲精品 在线视频 | 中文字幕亚洲精品日韩 | 国产精品美女视频 | 青青草国产精品视频 | 一本一道久久a久久精品蜜桃 | 99精品免费网| 久久99精品国产 | 免费在线黄色av | 99久久99久久精品免费 | 国产亚洲精品无 | 伊人国产视频 | 国产视频不卡一区 | 日韩免费一级a毛片在线播放一级 | 欧美日韩精品在线免费观看 | 婷婷国产精品 | 中文字幕在线免费看 | 欧美 日韩 国产 中文字幕 | 免费能看的av | 国产精品久久久久久吹潮天美传媒 | 波多野结衣电影一区二区三区 | 在线观看免费高清视频大全追剧 | 麻豆传媒在线视频 | 日韩美女av在线 | 日韩免费小视频 | 欧美俄罗斯性视频 | 亚洲 欧洲 国产 日本 综合 | 亚洲成av片人久久久 | 碰天天操天天 | 96av麻豆蜜桃一区二区 | 国产一区在线不卡 | 国产精品毛片完整版 | 国产午夜精品福利视频 | 亚洲专区在线播放 | 97天天综合网 | 国产精品第一视频 | 天天躁天天躁天天躁婷 | 91精品国产99久久久久久红楼 | 色综合中文字幕 | 成人免费在线播放 | 六月丁香六月婷婷 | 精品国产_亚洲人成在线 | 激情影院在线观看 | 欧美精品乱码久久久久久 | 免费亚洲电影 | 欧美91视频 | 天天·日日日干 | 久久精品资源 | 99国产精品久久久久老师 | 亚洲精品欧美视频 | 日韩性片 | 在线国产一区 | 国产精品久久久久久婷婷天堂 | 欧美久久久久久久久久久久久 | 天天摸天天舔天天操 | 精品在线免费视频 | 亚洲高清在线观看视频 | av在线免费在线观看 | 国产日韩中文字幕在线 | 处女av在线 | 成人免费影院 | 欧美9999 | 亚洲色五月 | 一级淫片a | 国产精品美女久久久久久久久久久 | 亚洲3级| 波多野结衣在线视频免费观看 | 色资源网免费观看视频 | 中文字幕在线字幕中文 | 天天爱天天射 | 国产精品永久在线观看 | 精品免费观看 | 国产视频二 | 99在线热播精品免费 | 日本爱爱免费 | 狠狠综合久久av | 激情五月综合网 | 狠狠狠狠狠狠狠狠干 | 一区二区三区日韩精品 | 婷婷成人在线 | 69av视频在线 | 亚洲国产经典视频 | 99久久99视频只有精品 | 91视频高清免费 | 97超级碰 | 国产精品福利午夜在线观看 | 欧美a级在线 | 成人黄色免费观看 | 在线观看麻豆av | 欧美日韩国产一区 | 日本黄色大片免费看 | 国产精品四虎 | 成年人免费av | a级片在线播放 | 亚洲三级视频 | 免费人人干| 91九色在线播放 | 亚洲精品一区二区精华 | 日韩精品一区电影 | 国产成人三级在线观看 | 国产精品久久片 | 免费看黄在线看 | 久久综合网色—综合色88 | 久久99视频免费 | 天天爱天天操天天爽 | 91精品蜜桃 | 九九九九精品 | 久久久久亚洲精品成人网小说 | 日韩三级av | 人人干人人艹 | 免费观看9x视频网站在线观看 | 91在线中文| 国产精品男女啪啪 | 精品久久网站 | 夜夜躁日日躁狠狠躁 | 国产成人久久精品一区二区三区 | 欧美精品久久久久久久久老牛影院 | 亚洲成成品网站 | 2021国产在线 | 亚洲精品乱码久久久久久蜜桃欧美 | 免费看亚洲毛片 | 欧美日韩免费一区二区三区 | 韩国精品一区二区三区六区色诱 | 欧美日韩一区二区三区免费视频 | 国产精品一区一区三区 | 日韩在线高清视频 | 欧美精品乱码久久久久 | 国产精品va最新国产精品视频 | 久久综合一本 | 久久的色 | 国产亚洲精品久久网站 | 成人日韩av| 国产精品久久久久久一区二区三区 | 啪啪肉肉污av国网站 | 在线 精品 国产 | 久久a v视频 | 在线免费中文字幕 | av三级在线免费观看 | 在线观看亚洲精品视频 | 91福利视频免费观看 | 四虎成人精品永久免费av | 三级免费黄 | 日韩xxxx视频 | 四虎影视成人永久免费观看亚洲欧美 | 欧美成人性网 | 久草视频看看 | 97超碰中文 | 人人澡人人草 | 日日夜夜网站 | 国产在线视频一区 | 91av电影在线观看 | 最新超碰在线 | 91精品久久久久 | 免费福利在线视频 | 在线日本v二区不卡 | 日韩电影中文字幕 | 亚洲精品mv在线观看 | 成人免费电影 | 欧美日韩视频 | 一区二区三区不卡在线 | 国产一区久久 | 五月天高清欧美mv | 婷婷色在线资源 | 一区二区三区中文字幕在线观看 | 一区二区伦理 | 欧美一级电影在线观看 | 久久r精品 | 91黄色小网站 | www.色综合.com| 中文国产成人精品久久一 | 亚洲视频在线观看免费 | 国产在线日本 | av大全在线免费观看 | 一区二区三区四区五区在线视频 | 欧美日韩一级视频 | 欧美性生活一级片 | 久久婷婷亚洲 | www.夜夜草| 国产一区二区视频在线播放 | 丁香婷婷激情啪啪 | 91热精品 | 国产精品自在欧美一区 | 欧美极品少妇xbxb性爽爽视频 | 国产在线播放不卡 | 国产精品99久久久久久久久久久久 | 国产亚洲成av片在线观看 | 97色婷婷成人综合在线观看 | 91麻豆文化传媒在线观看 | 天堂av免费在线 | 免费h漫在线观看 | 亚洲精品456在线播放 | 午夜av激情 | 免费毛片一区二区三区久久久 | 日韩欧美国产精品 | 日本 在线 视频 中文 有码 | 福利电影久久 | 97视频在线观看网址 | 九九热免费在线观看 | 国内综合精品午夜久久资源 | 在线观看免费91 | 97视频在线观看播放 | 日韩在线高清免费视频 | 久久高清视频免费 | 亚洲精品久 | 中文在线中文资源 | 欧美ⅹxxxxxx | 久久久黄视频 | 亚洲精品资源 | 免费久久视频 | 久久男女视频 | 日韩在线视频看看 | 日韩三区在线观看 | 成全免费观看视频 | 特级西西444www大胆高清无视频 | 狠狠躁日日躁夜夜躁av | 81国产精品久久久久久久久久 | 久久综合九色综合97婷婷女人 | 日韩高清无线码2023 | 久久综合九色综合欧美就去吻 | 久久网站免费 | 中文字幕亚洲欧美日韩2019 | 国产又粗又硬又长又爽的视频 | 日日干美女 | 国产在线观看高清视频 | 91资源在线观看 | 免费裸体视频网 | 视频高清 | 国产九色91 | av在线播放观看 | 色综合久久综合网 | 欧美污在线观看 | 91精品啪在线观看国产81旧版 | 在线免费观看涩涩 | 中文字幕av在线电影 | 精品亚洲va在线va天堂资源站 | 国产剧情av在线播放 | 91视频免费播放 | 成人一级电影在线观看 | 亚洲国产精品人久久电影 | 黄色午夜网站 | 久久精品综合网 | 91麻豆精品国产91久久久久久 | 99久久久久免费精品国产 | 在线观看免费黄色 | 色综合天天综合在线视频 | 色偷偷88888欧美精品久久 | 欧美 日韩 国产 成人 在线 | 亚洲精品一区中文字幕乱码 | 欧美综合在线视频 | 中文在线免费视频 | 91欧美精品 | 国产精品福利小视频 | 亚洲综合色视频在线观看 | 欧美激情视频一区二区三区免费 | 一二区av | 最新av在线播放 | 在线免费成人 | 久草网站在线观看 | 亚洲一区日韩 | 国产精品夜夜夜一区二区三区尤 | 国产成人精品一区二区三区在线观看 | 99久久精品免费看国产免费软件 | 一区二区三区高清在线观看 | 在线观看av国产 | 美女视频又黄又免费 | 天天干天天碰 | 精品国产视频在线观看 | a视频免费| 五月婷婷丁香色 | 久久成人免费电影 | 最新免费中文字幕 | 亚洲国产精品成人va在线观看 | 久久精品欧美 | 久久精品国产久精国产 | 麻豆传媒视频在线免费观看 | 国产99视频在线观看 | 免费黄色a网站 | 精品国产一区二区三区久久 | 97视频总站 | 国产精品免费麻豆入口 | 激情欧美一区二区三区免费看 | 日日日干 | 国产剧情一区二区在线观看 | 久久人人看 | 操操操操网 | 免费99视频 | 狠狠干天天色 | 久久草在线视频国产 | 国产日韩在线视频 | 91刺激视频 | 久久99热国产 | 色婷婷综合视频在线观看 | 成人久久18免费网站麻豆 | 六月激情婷婷 | 久久精品视频播放 | 日韩伦理片一区二区三区 | 韩国精品福利一区二区三区 | 97超碰人人澡人人爱 | 天天爱天天操天天射 | 日韩专区在线观看 | 久色伊人 | 久久国产精品99国产 | 17婷婷久久www | 六月丁香婷婷网 | 狠狠精品| 国产精美视频 | 久久国内精品视频 | 精品免费视频 | 最近中文字幕高清字幕免费mv | 激情网五月天 | 国产精品久久久一区二区 | 欧美成人精品欧美一级乱 | 免费在线看成人av | 午夜精品福利在线 | 最近高清中文字幕在线国语5 | 四虎成人免费观看 | 天天操天天干天天干 | 麻豆久久久久久久 | 91av视频观看 | 日韩视频一二三区 | 久久久亚洲影院 | 国产在线a免费观看 | 欧美老女人xx | 视频在线观看入口黄最新永久免费国产 | 国产成人一二片 | 视频福利在线观看 | 久久在线免费 | 国产精品一区二区三区四区在线观看 | 在线草 | 国产中文字幕网 | 欧美日韩99 | 欧美日韩精品在线视频 | 日韩视频欧美视频 | 欧美日韩中文国产一区发布 | 国产精品视频免费看 | 超碰97成人 | 狠狠躁18三区二区一区ai明星 | 久草在线一免费新视频 | 亚洲黄色在线观看 | 九九热国产视频 | 欧美乱大交 | 中文字幕av日韩 | 国产精品久久久久久久久久直播 | 色视频国产直接看 | 伊人激情网 | 久久1电影院 | japanesexxxhd奶水| 五月天中文字幕 | 色免费在线 | 91久久在线观看 | 在线国产能看的 | 91视频一8mav | 手机av电影在线 | 91亚·色| 日韩免费视频网站 | www.黄色片.com | 久久精品视频免费 | 亚洲午夜大片 | 91亚洲精品久久久蜜桃 | 亚洲高清在线视频 | 精品国产乱子伦一区二区 | 综合久久久久久久久 | 国产精品免费久久久久 | 国产精品久久久久久久免费大片 | 久久五月天综合 | 天堂av官网| se婷婷 | 日本久久影视 | 在线日韩亚洲 | 欧美性做爰猛烈叫床潮 | av成人免费 | 免费网站看v片在线a | 天天射一射| 国内精品亚洲 | 韩日av一区二区 | 日韩在线观看视频一区二区三区 | 亚洲精品国产精品国自 | 国产小视频在线免费观看 | 精品久久久久国产 | 国产在线观看,日本 | 久久综合射 | 色综合久久久久综合体桃花网 | 日本精品一区二区三区在线播放视频 | 国产精品美乳一区二区免费 | 91中文字幕在线视频 | 97视频免费 | 人人网av| 伊人六月| 就要色综合 | 色噜噜狠狠狠狠色综合 | 97日日碰人人模人人澡分享吧 | 成人高清在线观看 | 99视频在线免费看 | 韩国一区二区三区在线观看 | 美女国产免费 | 91人人澡 | 久久久久五月天 | 国产精品日韩高清 | 欧美va天堂va视频va在线 | 伊人欧美 | 国产日韩欧美在线一区 | 欧美精品亚洲精品日韩精品 | 久久精品成人 | 五月婷婷一区二区三区 | 香蕉影院在线 | 黄色毛片一级 | 久久激情五月激情 | 中文字幕免费看 | 久久不卡国产精品一区二区 | 色视频网页 | 在线播放日韩 | 一区二区欧美在线观看 | 国产精品黄色 | 国产不卡视频在线播放 | 国产美女无遮挡永久免费 | 久久精品国产美女 | 特级免费毛片 | 日本久久久久久久久 | 91激情视频在线 | 免费看三级网站 | 伊人午夜视频 | 99热在线国产 | 99热超碰在线 | 日韩在线观看a | 精品欧美乱码久久久久久 | 国产精品久久久久久吹潮天美传媒 | 亚洲精区二区三区四区麻豆 | 性色av一区二区 | 99在线热播精品免费99热 | 亚洲成人av片 | 免费av大片| 国产精品18久久久久久久久久久久 | 欧美久久久久久久久中文字幕 | 久久久久久亚洲精品 | 97自拍超碰 | 一区二区三区不卡在线 | 久久精品99国产国产精 | 91激情视频在线 | 久久日本视频 | 操操综合网 | 91久久久久久久 | 天天综合网 天天 | 免费国产在线观看 | 日本久久久久久久久久 | 日韩免费一区二区在线观看 | 国产在线不卡 | 99亚洲精品在线 | 91桃色在线观看视频 | 高清av网| 免费在线观看国产精品 | 国产一级二级视频 | 国产精品乱码一区二区视频 | 91高清视频 | 日韩高清免费电影 | 免费大片黄在线 | 深爱开心激情 | 久久精品中文字幕免费mv | 国产超碰在线 | 国产一级特黄毛片在线毛片 | 国产精品久久久久久久久久妇女 | 国产资源网| 天天草网站 | 久草香蕉在线 | 波多野结衣在线视频一区 | 久久国产免费看 | 日本中文字幕网址 | 日韩欧美一二三 | 99国内精品久久久久久久 | 色a综合 | 天堂网一区二区 | japanesexxx乱女另类 | 婷婷六月网 | 国产精品尤物视频 | 日本久久久久 | 亚洲日本va午夜在线影院 | av五月婷婷 | 日日操狠狠干 | 精品女同一区二区三区在线观看 | 99久久精品久久久久久动态片 | 亚洲天天看 | 国产伦精品一区二区三区无广告 | 欧美国产日韩在线观看 | 五月天婷亚洲天综合网鲁鲁鲁 | 亚洲精品综合在线观看 | 夜又临在线观看 | 在线播放日韩av | 91 在线视频播放 | 久久久久久国产精品 | 日韩系列在线 | 视频91 | 国产精久久久久久妇女av | 成人黄色在线看 | 亚洲黄色精品 | 天天伊人网| 亚洲天堂网在线观看视频 | 欧美一级免费片 | 人人澡人人爽 | 亚洲黄色在线观看 | 天天爱天天插 | 久久这里只有精品首页 | 国产黄色精品在线观看 | 91香蕉亚洲精品 | 91精品国产乱码 | 国产精品丝袜久久久久久久不卡 | 国产一级淫片免费看 | 午夜精品久久久久久久99热影院 | 国产 日韩 欧美 中文 在线播放 | 色偷偷人人澡久久超碰69 | 在线一区电影 | 麻豆精品在线视频 | 久久婷婷综合激情 | 日日操天天爽 | 欧美极品一区二区三区 | 国产小视频在线播放 | 国产亚洲小视频 | 91av视频导航 | 欧美a√在线 | 日韩福利在线观看 | 日韩精品最新在线观看 | 一区二区三区在线视频观看58 | 精品二区久久 | 香蕉视频一级 | 久久视频在线免费观看 | 狠狠色伊人亚洲综合成人 | 999成人| 日韩成人免费在线观看 | 911香蕉视频| 四川bbb搡bbb爽爽视频 | 免费日韩 精品中文字幕视频在线 | 天天射天天射天天射 | 久免费 | 欧美亚洲国产精品久久高清浪潮 | 中文字幕第| 亚洲精品va| 97精品国产91久久久久久 | 天天干天天操天天搞 | 日韩有码第一页 | 懂色av懂色av粉嫩av分享吧 | 亚洲精品资源在线 | 久久精品99久久 | 五月开心激情 | 中文字幕av全部资源www中文字幕在线观看 | 激情亚洲综合在线 | 天天干天天摸 | 天堂入口网站 | 国内免费久久久久久久久久久 | 五月激情五月激情 | 亚洲电影一区二区 | 四虎精品成人免费网站 | 日韩一区二区三区在线看 | 亚洲精品午夜久久久久久久久久久 | 在线看的av网站 | 中文字幕在线播放第一页 | 在线观看视频中文字幕 | 精品国产电影 | 免费看一级特黄a大片 | 国产成人精品亚洲精品 | 黄色三级在线看 | 亚洲精品xx | 一区二区三区免费网站 | 免费观看91视频 | 精品久久久久久亚洲综合网站 | v片在线播放 | 国产精品毛片一区二区在线看 | 免费日韩 精品中文字幕视频在线 | 一区二区三区四区免费视频 | 一区二区国产精品 | 天天爽综合网 | 亚洲 av网站 | 国产精品毛片久久久久久 | 成人不用播放器 | 99r精品视频在线观看 | 五月天天色 | 国产精品99久久久久久宅男 | 99这里有精品| 久久毛片网站 | 黄视频色网站 | 国内久久视频 | 麻豆视屏 | 日韩在线中文字幕视频 | 久久人人爽人人人人片 | 中文在线字幕免费观 | 成人影片在线播放 | 国产又粗又硬又爽的视频 | 99久久精品国产一区 | 日日久视频 | 国产综合精品久久 | 玖玖玖影院 | 91污在线 | 日韩欧美高清在线观看 | 国产精品久久久久一区二区三区共 | 久久国产精品久久精品国产演员表 | 91福利视频久久久久 | 国产一区二区三区在线免费观看 | 97人人视频 | 国产91精品一区二区 | 国产剧情av在线播放 | 国产一区二区精品久久91 | 国产黄色播放 | 激情电影影院 | 中文字幕a∨在线乱码免费看 | 欧美日韩aaaa| 久久国产精品99久久久久久丝袜 | 激情丁香| 免费观看91视频大全 | 亚洲在线精品视频 | 中文字幕一区在线 | 国产精品理论在线观看 | 欧美一区二区精品在线 | 国产91精品高清一区二区三区 | 久草精品视频在线播放 | 亚洲91在线 | 免费观看十分钟 | 国产午夜亚洲精品 | www.超碰| 亚洲毛片视频 | 色www免费视频 | 亚洲精品久久久久999中文字幕 | 欧美资源 | 超碰免费成人 | 久久er99热精品一区二区三区 | 国产精品毛片完整版 | 国产电影一区二区三区四区 | 在线视频福利 | 国产精品久久亚洲 | 国产视频一 | 中文字幕最新精品 | 精品国产色 | 久久精品国产精品亚洲 | 日韩精品资源 | 免费网站黄 | 国产不卡在线看 | 国产91学生粉嫩喷水 | 久久精品99国产精品酒店日本 | 国产精品成人在线观看 | 色综合咪咪久久网 | 69成人在线| 色99在线 | 中文字幕有码在线 | 国产日本三级 | 亚洲精品小视频在线观看 | 97超碰站 | 国产视频在线观看一区 | 久久精品视频观看 | 精品国产免费人成在线观看 | 色婷婷88av视频一二三区 | 午夜视频免费播放 | 天天综合色网 | 久久 地址| 99性视频 | 在线看成人 | 成人avav| 久久久久久国产一区二区三区 | 91网免费看 | 日韩免费视频线观看 | 国产麻豆精品免费视频 | 久久r精品 | 在线国产日韩 | 996久久国产精品线观看 | 免费在线观看av网站 | 久久午夜国产精品 | 日韩久久久久久久 | 久久超碰在线 | 国产亚州av| 欧美三级免费 | 五月的婷婷| 91久草视频 | 免费精品视频 | 国产精品99视频 | 国产精品成人久久 | 国产资源在线免费观看 | 韩日精品在线 | 久久久久久草 | 在线观看国产www | 97天堂网 | 亚洲欧美成人网 | 日韩欧美69 | 91av电影在线 | 毛片网站免费 | 超碰九九| 在线观看亚洲电影 | 97超碰在线久草超碰在线观看 | 午夜精品久久久久99热app | 免费日韩精品 | 黄色软件大全网站 | 波多野结衣视频在线 | 亚洲三级视频 | 欧美在线视频不卡 | 国产在线日本 | 在线看成人 | 国产精品一区欧美 | 日韩剧| 中文字幕在线看 | 国产在线a视频 | 日韩一区二区三区高清免费看看 | 婷五月激情 | 国产精品视频永久免费播放 | www.午夜色.com| 中文字幕视频一区 | 日韩特级片| 免费精品视频在线 | 欧美99久久 | 国产国语在线 | 日日干网址 | 久久亚洲综合色 | 在线观看视频91 | 成人国产精品免费观看 | wwxxxx日本| 亚洲综合色视频在线观看 | 又黄又爽的视频在线观看网站 | 超碰97人人爱 | 日韩久久在线 | av免费片 |