Browse Source

新建robot_demo功能包,将demo程序放入其中

adam_zhuo 3 years ago
parent
commit
f35392e372

+ 0 - 5
src/infrared_maze/CMakeLists.txt

@@ -138,7 +138,6 @@ include_directories(
 ## With catkin_make all packages are built within a single CMake context
 ## The recommended prefix ensures that target names across packages don't collide
 add_executable(${PROJECT_NAME}_node src/infrared_maze.cpp)
-add_executable(infrared_demo_node src/infrared_demo.cpp)
 
 ## Rename C++ executable without prefix
 ## The above recommended prefix causes long target names, the following renames the
@@ -149,15 +148,11 @@ add_executable(infrared_demo_node src/infrared_demo.cpp)
 ## Add cmake target dependencies of the executable
 ## same as for the library above
 add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
-add_dependencies(infrared_demo_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
 
 ## Specify libraries to link a library or executable target against
 target_link_libraries(${PROJECT_NAME}_node
    ${catkin_LIBRARIES}
  )
-target_link_libraries(infrared_demo_node
-   ${catkin_LIBRARIES}
-)
 
 #############
 ## Install ##

+ 0 - 3
src/infrared_maze/cfg/param.yaml

@@ -14,7 +14,6 @@
 #   odom_frame:odom的tf名称.
 #   base_frame:底盘的tf名称.
 #   forward_dist:每次前进时移动的距离.
-#   center_dist:红外测距时悬停的距离.
 # Author: corvin,adam
 # History:
 #   20200404:init this file.
@@ -43,5 +42,3 @@ init_tolerance_dist: 0.01
 init_linear_x: 0.17
 init_linear_y: 0.05
 init_angular_speed: 0.2
-
-center_dist: 0.15

+ 0 - 16
src/infrared_maze/launch/infrared_demo.launch

@@ -1,16 +0,0 @@
-<!--
-  Copyright: 2016-2021 www.corvin.cn
-  Author: adam_zhuo
-  Description:
-    infrared_dist_demo
-  History:
-    20210429: intial this file.
--->
-<launch>
-  <arg name="cfg_file" default="$(find infrared_maze)/cfg/param.yaml" />
-
-  <!-- startup infrared_demo_node -->
-  <node pkg="infrared_maze" type="infrared_demo_node" name="infrared_demo_node" output="screen">
-    <rosparam file="$(arg cfg_file)" command="load" />
-  </node>
-</launch>

+ 0 - 8
src/rasp_camera/CMakeLists.txt

@@ -133,10 +133,6 @@ include_directories(
 ## Declare a C++ executable
 ## With catkin_make all packages are built within a single CMake context
 ## The recommended prefix ensures that target names across packages don't collide
-add_executable(${PROJECT_NAME}_color_detection_node 
-                src/color_detection_node.cpp
-                src/color_detection.cpp
-                src/kalman_filter.cpp)
 
 ## Rename C++ executable without prefix
 ## The above recommended prefix causes long target names, the following renames the
@@ -149,10 +145,6 @@ add_executable(${PROJECT_NAME}_color_detection_node
 # add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
 
 ## Specify libraries to link a library or executable target against
-target_link_libraries(${PROJECT_NAME}_color_detection_node
-  ${catkin_LIBRARIES}
-  ${OpenCV_LIBS}
-)
 
 #############
 ## Install ##

+ 37 - 8
src/rasp_imu_hat_6dof/imu_demo/CMakeLists.txt → src/robot_demo/CMakeLists.txt

@@ -1,5 +1,5 @@
 cmake_minimum_required(VERSION 3.0.2)
-project(imu_demo)
+project(robot_demo)
 
 ## Compile as C++11, supported in ROS Kinetic and newer
 # add_compile_options(-std=c++11)
@@ -10,7 +10,11 @@ project(imu_demo)
 find_package(catkin REQUIRED COMPONENTS
   roscpp
   std_msgs
+  sensor_msgs
   geometry_msgs
+  cv_bridge
+  ros_arduino_msgs
+  OpenCV REQUIRED
 )
 
 ## System dependencies are found with CMake's conventions
@@ -70,7 +74,7 @@ find_package(catkin REQUIRED COMPONENTS
 ## Generate added messages and services with any dependencies listed here
 # generate_messages(
 #   DEPENDENCIES
-#   std_msgs
+#   std_msgs  # Or other packages containing msgs
 # )
 
 ################################################
@@ -104,8 +108,8 @@ find_package(catkin REQUIRED COMPONENTS
 ## DEPENDS: system dependencies of this project that dependent projects also need
 catkin_package(
 #  INCLUDE_DIRS include
-#  LIBRARIES imu_demo
-#  CATKIN_DEPENDS roscpp std_msgs
+#  LIBRARIES robot_demo
+#  CATKIN_DEPENDS roscpp stdmsgs
 #  DEPENDS system_lib
 )
 
@@ -122,7 +126,7 @@ include_directories(
 
 ## Declare a C++ library
 # add_library(${PROJECT_NAME}
-#   src/${PROJECT_NAME}/imu_demo.cpp
+#   src/${PROJECT_NAME}/robot_demo.cpp
 # )
 
 ## Add cmake target dependencies of the library
@@ -133,7 +137,15 @@ include_directories(
 ## Declare a C++ executable
 ## With catkin_make all packages are built within a single CMake context
 ## The recommended prefix ensures that target names across packages don't collide
-add_executable(${PROJECT_NAME}_node src/imu_demo_node.cpp)
+add_executable(${PROJECT_NAME}_color_node
+              src/color_detection_node.cpp
+              src/color_detection.cpp
+              src/kalman_filter.cpp)
+
+add_executable(${PROJECT_NAME}_imu_node src/imu_demo_node.cpp)
+add_executable(${PROJECT_NAME}_infrared_node src/infrared_demo.cpp)
+add_executable(${PROJECT_NAME}_voice_node src/voice_demo.cpp)
+
 
 ## Rename C++ executable without prefix
 ## The above recommended prefix causes long target names, the following renames the
@@ -144,12 +156,29 @@ add_executable(${PROJECT_NAME}_node src/imu_demo_node.cpp)
 ## Add cmake target dependencies of the executable
 ## same as for the library above
 # add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
+add_dependencies(${PROJECT_NAME}_infrared_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
 
 ## Specify libraries to link a library or executable target against
-target_link_libraries(${PROJECT_NAME}_node
+# target_link_libraries(${PROJECT_NAME}_node
+#   ${catkin_LIBRARIES}
+# )
+target_link_libraries(${PROJECT_NAME}_color_node
+  ${catkin_LIBRARIES}
+  ${OpenCV_LIBS}
+)
+
+target_link_libraries(${PROJECT_NAME}_imu_node
   ${catkin_LIBRARIES}
 )
 
+target_link_libraries(${PROJECT_NAME}_infrared_node
+   ${catkin_LIBRARIES}
+)
+
+target_link_libraries(${PROJECT_NAME}_voice_node
+   ${catkin_LIBRARIES}
+)
+
 #############
 ## Install ##
 #############
@@ -197,7 +226,7 @@ target_link_libraries(${PROJECT_NAME}_node
 #############
 
 ## Add gtest based cpp test target and link libraries
-# catkin_add_gtest(${PROJECT_NAME}-test test/test_imu_demo.cpp)
+# catkin_add_gtest(${PROJECT_NAME}-test test/test_robot_demo.cpp)
 # if(TARGET ${PROJECT_NAME}-test)
 #   target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME})
 # endif()

+ 10 - 0
src/robot_demo/cfg/param.yaml

@@ -0,0 +1,10 @@
+#####################################################
+# Copyright: 2016-2021 www.corvin.cn ROS小课堂
+# Description:测试红外小程序
+#   center_dist:红外测距时悬停的距离.
+# Author: adam_zhuo
+# History:
+#   20210512:init this file.
+######################################################
+
+center_dist: 0.15

+ 0 - 0
src/rasp_camera/include/color_detection.h → src/robot_demo/include/color_detection.h


+ 1 - 3
src/rasp_imu_hat_6dof/imu_demo/include/imu_demo.h → src/robot_demo/include/imu_demo.h

@@ -2,7 +2,7 @@
  * @Copyright(C): 2016-2021 ROS小课堂 www.corvin.cn
  * @Author: adam_zhuo
  * @Date: 2021-04-30 15:29:44
- * @Description: imu小程序
+ * @Description: imu小程序头文件
  * @History: 20210430:初始化文件-adam_zhuo
  */
 #ifndef _IMU_DEMO_H
@@ -33,6 +33,4 @@ public:
     void yaw_callback(const std_msgs::Float32::ConstPtr &data);
 };
 
-
-
 #endif

+ 7 - 8
src/infrared_maze/include/infrared_demo.h → src/robot_demo/include/infrared_demo.h

@@ -1,10 +1,10 @@
-/***************************************************************
- Copyright(C): 2016-2021 ROS小课堂 www.corvin.cn
- Description:红外小demo头文件
- Author: adam_zhuo
- History:
-    20210429:初始化文件.-adam_zhuo
- **************************************************************/
+/*
+ * @Copyright(C): 2016-2021 ROS小课堂 www.corvin.cn
+ * @Author: adam_zhuo
+ * @Date: 2021-05-12 09:48:43
+ * @Description: 红外demo头文件
+ * @History: 20210512:初始化文件-adam_zhuo
+ */
 #ifndef _INFRARED_DEMO_H
 #define _INFRARED_DEMO_H
 
@@ -26,5 +26,4 @@ public:
     void infrared_callback(const ros_arduino_msgs::InfraredSensors::ConstPtr &data);
 };
 
-
 #endif

+ 0 - 0
src/rasp_camera/include/kalman_filter.h → src/robot_demo/include/kalman_filter.h


+ 24 - 0
src/robot_demo/include/voice_demo.h

@@ -0,0 +1,24 @@
+/*
+ * @Copyright(C): 2016-2021 ROS小课堂 www.corvin.cn
+ * @Author: adam_zhuo
+ * @Date: 2021-05-13 10:03:58
+ * @Description: 语音合成demo
+ * @History: 20210429:初始化文件-adam_zhuo
+ */
+#ifndef _VOICE_DEMO_H
+#define _VOICE_DEMO_H
+
+#include <ros/ros.h>
+#include <std_msgs/String.h>
+
+class Voice_Demo
+{
+private:
+    ros::NodeHandle nh;
+    ros::Publisher _voice_pub;
+public:
+    Voice_Demo();
+    ~Voice_Demo();
+};
+
+#endif

+ 1 - 1
src/rasp_camera/launch/color_detection.launch → src/robot_demo/launch/color_demo.launch

@@ -7,7 +7,7 @@
 -->
 <launch>
   <!-- 启动color_detection_node -->
-  <node pkg="rasp_camera" type="rasp_camera_color_detection_node" name="color_detection_node" output="screen">
+  <node pkg="robot_demo" type="robot_demo_color_node" name="robot_demo_color_node" output="screen">
 
   </node>
 </launch>

+ 13 - 0
src/robot_demo/launch/imu_demo.launch

@@ -0,0 +1,13 @@
+<!--
+ * @Copyright(C): 2016-2021 ROS小课堂 www.corvin.cn
+ * @Author: adam_zhuo
+ * @Date: 2021-05-12 11:16:35
+ * @Description: 启动imu程序节点
+ * @History: 20210512:初始化文件-adam_zhuo
+-->
+<launch>
+  <!-- 启动robot_demo_imu_node -->
+  <node pkg="robot_demo" type="robot_demo_imu_node" name="robot_demo_imu_node" output="screen">
+
+  </node>
+</launch>

+ 16 - 0
src/robot_demo/launch/infrared_demo.launch

@@ -0,0 +1,16 @@
+<!--
+ * @Copyright(C): 2016-2021 ROS小课堂 www.corvin.cn
+ * @Author: adam_zhuo
+ * @Date: 2021-05-12 09:53:40
+ * @Description: 启动红外demo节点
+ * @History: 20210429:初始化文件-adam_zhuo
+-->
+<launch>
+  <!-- 加载参数 -->
+  <arg name="cfg_file" default="$(find robot_demo)/cfg/param.yaml" />
+
+  <!-- 启动robot_demo_infrared_node -->
+  <node pkg="robot_demo" type="robot_demo_infrared_node" name="robot_demo_infrared_node" output="screen">
+    <rosparam file="$(arg cfg_file)" command="load" />
+  </node>
+</launch>

+ 14 - 0
src/robot_demo/launch/voice_demo.launch

@@ -0,0 +1,14 @@
+<!--
+ * @Copyright(C): 2016-2021 ROS小课堂 www.corvin.cn
+ * @Author: adam_zhuo
+ * @Date: 2021-05-13 11:16:35
+ * @Description: 启动语音程序节点
+ * @History: 20210513:初始化文件-adam_zhuo
+-->
+
+<launch>
+  <!-- 启动robot_demo_voice_node -->
+  <node pkg="robot_demo" type="robot_demo_voice_node" name="robot_demo_voice_node" output="screen">
+
+  </node>
+</launch>

+ 12 - 3
src/rasp_imu_hat_6dof/imu_demo/package.xml → src/robot_demo/package.xml

@@ -1,8 +1,8 @@
 <?xml version="1.0"?>
 <package format="2">
-  <name>imu_demo</name>
+  <name>robot_demo</name>
   <version>0.0.0</version>
-  <description>The imu_demo package</description>
+  <description>The robot_demo package</description>
 
   <!-- One maintainer tag required, multiple allowed, one person per tag -->
   <!-- Example:  -->
@@ -19,7 +19,7 @@
   <!-- Url tags are optional, but multiple are allowed, one per tag -->
   <!-- Optional attribute type can be: website, bugtracker, or repository -->
   <!-- Example: -->
-  <!-- <url type="website">http://wiki.ros.org/imu_demo</url> -->
+  <!-- <url type="website">http://wiki.ros.org/robot_demo</url> -->
 
 
   <!-- Author tags are optional, multiple are allowed, one per tag -->
@@ -51,12 +51,21 @@
   <buildtool_depend>catkin</buildtool_depend>
   <build_depend>roscpp</build_depend>
   <build_depend>std_msgs</build_depend>
+  <build_depend>ros_arduino_msgs</build_depend>
+  <build_depend>cv_bridge</build_depend>
+  <build_depend>sensor_msgs</build_depend>
   <build_depend>geometry_msgs</build_depend>
   <build_export_depend>roscpp</build_export_depend>
   <build_export_depend>std_msgs</build_export_depend>
+  <build_export_depend>ros_arduino_msgs</build_export_depend>
+  <build_export_depend>cv_bridge</build_export_depend>
+  <build_export_depend>sensor_msgs</build_export_depend>
   <build_export_depend>geometry_msgs</build_export_depend>
   <exec_depend>roscpp</exec_depend>
   <exec_depend>std_msgs</exec_depend>
+  <exec_depend>ros_arduino_msgs</exec_depend>
+  <exec_depend>cv_bridge</exec_depend>
+  <exec_depend>sensor_msgs</exec_depend>
   <exec_depend>geometry_msgs</exec_depend>
 
 

+ 0 - 0
src/rasp_camera/src/color_detection.cpp → src/robot_demo/src/color_detection.cpp


+ 0 - 0
src/rasp_camera/src/color_detection_node.cpp → src/robot_demo/src/color_detection_node.cpp


+ 23 - 4
src/rasp_imu_hat_6dof/imu_demo/src/imu_demo_node.cpp → src/robot_demo/src/imu_demo_node.cpp

@@ -2,12 +2,15 @@
  * @Copyright(C): 2016-2021 ROS小课堂 www.corvin.cn
  * @Author: adam_zhuo
  * @Date: 2021-04-30 15:29:58
- * @Description: file content
- * @History: 20210429:-adam_zhuo
+ * @Description: imu小程序
+ * @History: 20210429:初始化文件-adam_zhuo
  */
 
 #include "imu_demo.h"
 
+/**
+ * @description: 构造函数初始化变量。
+ */
 Imu_Demo::Imu_Demo(){
     
     start_flag = false;
@@ -20,6 +23,9 @@ Imu_Demo::~Imu_Demo(){
 
 }
 
+/**
+ * @description: 接收指定角度回调函数。程序启动后,发送指定角度,任意放置小车,小车最终朝向都会是指定角度。
+ */
 void Imu_Demo::angle_callback(const std_msgs::Float32::ConstPtr &data){
     start_flag = true;
     target_radian = data->data/180*M_PI;
@@ -28,11 +34,20 @@ void Imu_Demo::angle_callback(const std_msgs::Float32::ConstPtr &data){
         target_radian += (M_PI * 2);
 }
 
+/**
+ * @description: yaw角回调函数,不断检测当前小车朝向与指定角度的差值,如果大于一个阈值,则控制小车旋转。
+ */
 void Imu_Demo::yaw_callback(const std_msgs::Float32::ConstPtr &data){
+
+    //如果没有接收到发送的指定角度,则不做任何处理直接return
     if(!start_flag)
         return;
+    
+    //获取当前yaw角值
     current_radian = data->data ;
     current_radian_copy = current_radian;
+
+    // >>>判断与指定角度的差值,控制小车旋转
     if(current_radian < 0)
         current_radian += (M_PI * 2);
     current_radian = current_radian - target_radian;
@@ -43,14 +58,18 @@ void Imu_Demo::yaw_callback(const std_msgs::Float32::ConstPtr &data){
     }else{
         twist.angular.z = copysign(0.3, (current_radian - M_PI));
     }
+    // <<<判断与指定角度的差值,控制小车旋转
+
+    //向小车发送控制命令
     _cmd_vel_pub.publish(twist);
 }
 
 int main(int argc, char **argv){
 
+    //初始化节点
     ros::init(argc, argv, "imu_demo_node");
-
+    //根据Imu_Demo声明对象,调用构造函数
     Imu_Demo imu_demo;
-
+    //使ROS中回调函数生效
     ros::spin();
 }

+ 0 - 0
src/infrared_maze/src/infrared_demo.cpp → src/robot_demo/src/infrared_demo.cpp


+ 0 - 0
src/rasp_camera/src/kalman_filter.cpp → src/robot_demo/src/kalman_filter.cpp


+ 34 - 0
src/robot_demo/src/voice_demo_node.cpp

@@ -0,0 +1,34 @@
+/*
+ * @Copyright(C): 2016-2021 ROS小课堂 www.corvin.cn
+ * @Author: adam_zhuo
+ * @Date: 2021-05-13 10:09:03
+ * @Description: file content
+ * @History: 20210429:-adam_zhuo
+ */
+
+#include "voice_demo.h"
+
+Voice_Demo::Voice_Demo(){
+    _voice_pub = nh.advertise<std_msgs::String>("/voice_system/iflytek_offline_tts_topic", 1);
+    std_msgs::String data;
+    data->data = "你好";
+    ros::Rate rate(0.5);
+    while (true){
+        _voice_pub.publish(data);
+        rate.sleep();
+    }
+}
+
+Voice_Demo::~Voice_Demo(){
+
+}
+
+int main(int argc, char **argv){
+
+    //初始化节点
+    ros::init(argc, argv, "voice_demo_node");
+    //根据Voice_Demo声明对象,调用构造函数
+    Voice_Demo voice_demo;
+
+    ros::spin();
+}