# 数据接收 开启算法后VIO会通过双目数据和IMU数据计算自身位姿,并通过话题方式输出结果(同步串口输出)。 ## 一.算法输出数据 ### 1.里程计 话题名:`/baton_mini/stereo3/odometry ` or `/baton_mini/stereo4/odometry ` Type: `nav_msgs/msg/Odometry` ### 2.带特征点的图像 话题名:`/baton_mini/stereo3/feature_img ` or `/baton_mini/stereo4/feature_img ` Type: `sensor_msgs/msg/Image` ### 3.历史轨迹 话题名:`/baton_mini/stereo3/path_odom ` or `/baton_mini/stereo4/path_odom ` Type: `nav_msgs/msg/Path` 这个话题需要有接收者接收里程计话题消息才会发出 ### 4.点云 话题名:`/baton_mini/stereo3/pointcloud` or `/baton_mini/stereo4/pointcloud` Type: `sensor_msgs/msg/PointCloud2` 视觉的点云是纯视觉点云,比较抽象,作用不大。 ## 二.简单demo ### 1.注册话题接收回调: 以下代码已stereo3为例,stereo4同理 ```c++ rclcpp::init(argc, argv); auto node_options = rclcpp::NodeOptions(); nh = rclcpp::Node::make_shared("stereo3_receive", node_options); rclcpp::Subscription::SharedPtr sub_stereo3_pointcloud = nh->create_subscription("/baton_mini/stereo3/pointcloud", 50, std::bind(&stereo3_pointcloud2_callback, std::placeholders::_1)); rclcpp::Subscription::SharedPtr sub_stereo3_img = nh->create_subscription("/baton_mini/stereo3/feature_img", 50, std::bind(&stereo3_img_callback, std::placeholders::_1)); rclcpp::Subscription::SharedPtr sub_stereo3_odom = nh->create_subscription("/baton_mini/stereo3/odometry", 50, std::bind(&stereo3_odom_callback, std::placeholders::_1)); ``` ### 2.编写回调函数 ```c++ void stereo3_odom_callback(const nav_msgs::msg::Odometry::SharedPtrmsg){ //todo } void stereo3_img_callback(const sensor_msgs::msg::Image::SharedPtr){ //todo } void stereo3_pointcloud2_callback(const sensor_msgs::msg::PointCloud2::SharedPtr){ //todo } ```