diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..10bf06b --- /dev/null +++ b/build.sh @@ -0,0 +1,22 @@ +#!/bin/bash +set -e + +if [ $# -eq 0 ]; then + echo "编译全部" + + colcon build \ + --symlink-install \ + --cmake-args -DCMAKE_BUILD_TYPE=Release + +else + echo "编译: $@" + + colcon build \ + --symlink-install \ + --cmake-args -DCMAKE_BUILD_TYPE=Release \ + --packages-up-to "$@" +fi + +source install/setup.bash + +echo "编译完成" \ No newline at end of file diff --git a/src/perception/uss/src/uss.cpp b/src/perception/uss/src/uss.cpp index 913691e..f73574b 100644 --- a/src/perception/uss/src/uss.cpp +++ b/src/perception/uss/src/uss.cpp @@ -4,7 +4,7 @@ // 超声波传感器的CAN ID定义 (J1939格式: 0x18EC5700) // Priority: 0x18, PGN: 0xEC00 (60416), Device ID: 0x57 (87) -constexpr uint32_t USS_CAN_ID = 0x18EC5700; +constexpr uint32_t USS_CAN_ID = 0x18EC0057; constexpr uint32_t USS_CAN_MASK = 0xFFFFFFFF; // 精确匹配 UssDriver::UssDriver() : print_debug_(false), initialized_(false) @@ -41,8 +41,8 @@ bool UssDriver::init(const std::string& can_interface) // 设置CAN过滤器,只接收超声波的CAN数据 struct can_filter filter; - filter.can_id = USS_CAN_ID; - filter.can_mask = USS_CAN_MASK; + filter.can_id = USS_CAN_ID | CAN_EFF_FLAG; + filter.can_mask = CAN_EFF_MASK | CAN_EFF_FLAG; std::vector filters; filters.push_back(filter); diff --git a/src/perception/uss/src/uss_node.cpp b/src/perception/uss/src/uss_node.cpp index fe8953e..5590c22 100644 --- a/src/perception/uss/src/uss_node.cpp +++ b/src/perception/uss/src/uss_node.cpp @@ -67,21 +67,34 @@ class UssNode : public rclcpp::Node message.data[0] = static_cast(uss_data.distances_calib[0]); message.data[1] = static_cast(uss_data.distances_calib[1]); + message.data[2] = static_cast(uss_data.distances_calib[2]); message.data[3] = static_cast(uss_data.distances_calib[3]); message.data[4] = static_cast(uss_data.distances_calib[4]); message.data[5] = static_cast(uss_data.distances_calib[5]); message.data[6] = static_cast(uss_data.distances_calib[6]); - message.data[7] = static_cast(uss_data.distances_calib[7]); + + message.data[7] = static_cast(uss_data.distances_calib[2]); // 发布消息 uss_publisher_->publish(message); // 调试打印 - for (int i = 0; i < 8; i++) - { - RCLCPP_INFO(this->get_logger(), "USS %d: %d cm", i + 1, static_cast(message.data[i])); - } + RCLCPP_INFO( + this->get_logger(), + "USS 1~4: %d %d %d %d cm", + static_cast(uss_data.distances_calib[0]), + static_cast(uss_data.distances_calib[1]), + static_cast(uss_data.distances_calib[2]), + static_cast(uss_data.distances_calib[3])); + RCLCPP_INFO( + this->get_logger(), + "USS 5~8: %d %d %d %d cm", + static_cast(uss_data.distances_calib[4]), + static_cast(uss_data.distances_calib[5]), + static_cast(uss_data.distances_calib[6]), + static_cast(uss_data.distances_calib[7])); + RCLCPP_INFO(this->get_logger(), "=========================="); } else {