diff --git a/agv_pro_base/CMakeLists.txt b/agv_pro_base/CMakeLists.txt index 1ed9c7e..16661fd 100644 --- a/agv_pro_base/CMakeLists.txt +++ b/agv_pro_base/CMakeLists.txt @@ -13,6 +13,7 @@ find_package(std_msgs REQUIRED) find_package(geometry_msgs REQUIRED) find_package(tf2 REQUIRED) find_package(tf2_ros REQUIRED) +find_package(tf2_geometry_msgs REQUIRED) find_package(sensor_msgs REQUIRED) find_package(geometry_msgs REQUIRED) find_package(nav_msgs REQUIRED) @@ -20,7 +21,10 @@ find_package(nav_msgs REQUIRED) # further dependencies manually. # find_package( REQUIRED) -add_executable(agv_pro_node src/agv_pro_node.cpp) +add_executable(agv_pro_node + src/agv_pro_node.cpp + src/agv_pro_ros.cpp +) target_include_directories(agv_pro_node PUBLIC $ @@ -32,7 +36,9 @@ ament_target_dependencies(agv_pro_node rclcpp tf2 tf2_ros + tf2_geometry_msgs std_msgs + sensor_msgs geometry_msgs serial_driver nav_msgs diff --git a/agv_pro_base/include/agv_pro_base/agv_pro_driver.h b/agv_pro_base/include/agv_pro_base/agv_pro_driver.h index ccacd43..8502eee 100644 --- a/agv_pro_base/include/agv_pro_base/agv_pro_driver.h +++ b/agv_pro_base/include/agv_pro_base/agv_pro_driver.h @@ -11,26 +11,14 @@ #include #include #include -#include +#include #define RECEIVE_DATA_SIZE 13 //The length of the data sent by the esp32 #define SEND_DATA_SIZE 13 //The length of data sent by ROS to the esp32 #define RETURN_COMMAND 0x25 -std::array odom_pose_covariance = { - {1e-9, 0, 0, 0, 0, 0, - 0, 1e-3, 1e-9, 0, 0, 0, - 0, 0, 1e6, 0, 0, 0, - 0, 0, 0, 1e6, 0, 0, - 0, 0, 0, 0, 1e6, 0, - 0, 0, 0, 0, 0, 1e-9} }; -std::array odom_twist_covariance = { - {1e-9, 0, 0, 0, 0, 0, - 0, 1e-3, 1e-9, 0, 0, 0, - 0, 0, 1e6, 0, 0, 0, - 0, 0, 0, 1e6, 0, 0, - 0, 0, 0, 0, 1e6, 0, - 0, 0, 0, 0, 0, 1e-9} }; +extern std::array odom_pose_covariance; +extern std::array odom_twist_covariance; class AGV_PRO : public rclcpp::Node { diff --git a/agv_pro_base/package.xml b/agv_pro_base/package.xml index bad143a..986e49f 100644 --- a/agv_pro_base/package.xml +++ b/agv_pro_base/package.xml @@ -15,6 +15,7 @@ serial_driver asio_cmake_module io_context + tf2_geometry_msgs ament_lint_auto ament_lint_common diff --git a/agv_pro_base/src/agv_pro_ros.cpp b/agv_pro_base/src/agv_pro_ros.cpp index b798d8c..38819ad 100644 --- a/agv_pro_base/src/agv_pro_ros.cpp +++ b/agv_pro_base/src/agv_pro_ros.cpp @@ -1,5 +1,21 @@ #include "agv_pro_base/agv_pro_driver.h" +std::array odom_pose_covariance = { + {1e-9, 0, 0, 0, 0, 0, + 0, 1e-3, 1e-9, 0, 0, 0, + 0, 0, 1e6, 0, 0, 0, + 0, 0, 0, 1e6, 0, 0, + 0, 0, 0, 0, 1e6, 0, + 0, 0, 0, 0, 0, 1e-9} }; + +std::array odom_twist_covariance = { + {1e-9, 0, 0, 0, 0, 0, + 0, 1e-3, 1e-9, 0, 0, 0, + 0, 0, 1e6, 0, 0, 0, + 0, 0, 0, 1e6, 0, 0, + 0, 0, 0, 0, 1e6, 0, + 0, 0, 0, 0, 0, 1e-9} }; + AGV_PRO::AGV_PRO(std::string node_name):rclcpp::Node(node_name) { this->declare_parameter("port_name","/dev/ttyS0"); @@ -101,8 +117,8 @@ void AGV_PRO::cmdCallback(const geometry_msgs::msg::Twist::SharedPtr msg) try { - size_t bytes_transmit_size = port->send(data_vec); - + port->send(data_vec); + // size_t bytes_transmit_size = port->send(data_vec); // std::stringstream ss; // for (auto b : data_vec) { // ss << std::hex << std::uppercase << std::setfill('0') << std::setw(2)