MSRSIM/quadrotor_dynamics_node.cpp

博客介绍了一段代码的主要作用。该代码从订阅主题‘cmd_RPM’获取四个旋翼电机转速命令并存储,通过转速前向积分等方法更新四旋翼无人机的位置、速度等状态,还会发布无人机状态信息,如里程计数据到‘odom’主题、IMU数据到‘imu’主题。

1.代码的主要作用

  • 从订阅的主题 "cmd_RPM" 中获取四个旋翼电机的转速命令,存储在 RPM_input 中。
  • 根据获取的转速命令,从转速前向积分等办法更新四旋翼无人机的状态,包括位置、速度、加速度、姿态等。
  • 发布无人机的状态信息,包括里程计数据到 "odom" 主题和IMU数据到 "imu" 主题

2.代码

#include <nav_msgs/Odometry.h>
#include <ros/ros.h>
#include <sensor_msgs/Imu.h>
#include <quadrotor_dynamics.hpp>
#include <std_msgs/Float32MultiArray.h>

using namespace std;
using namespace Eigen;

std_msgs::Float32MultiArray RPM_msg;
Vector4d RPM_input;
void RPMCallbck(const std_msgs::Float32MultiArray& msg)
{
    RPM_msg = msg;
    RPM_input<< RPM_msg.data[0], RPM_msg.data[1],RPM_msg.data[2],RPM_msg.data[3];
}

int main(int argc, char** argv)
{
    ros::init(argc, argv, "quadrotor_dynamics");

    ros::NodeHandle n("~");


    double init_x, init_y, init_z,mass;
    double simulation_rate;
    std::string quad_name;
    n.param("mass", mass, 0.9);
    n.param("init_state_x", init_x
cmake_minimum_required(VERSION 3.0.2) project(rofly_ground_ctrl) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_FLAGS_DEBUG "-g3 -Wall -Wextra -fsanitize=address,undefined -static-libasan") set(CMAKE_CXX_FLAGS_RELEASE "-O3") find_package(catkin REQUIRED COMPONENTS rospy roscpp mavros nav_msgs std_msgs sensor_msgs mavros_msgs message_runtime message_generation quadrotor_msgs carstatemsgs back_end ) find_package(Eigen3 REQUIRED) if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release) endif() add_message_files( FILES MINCOTraj.msg MotionCtrlDebug.msg MotionCtrlDebugSeparate.msg ) generate_messages( DEPENDENCIES nav_msgs std_msgs sensor_msgs mavros_msgs ) catkin_package( INCLUDE_DIRS include # LIBRARIES communication_bridge CATKIN_DEPENDS rospy roscpp nav_msgs std_msgs sensor_msgs mavros_msgs message_runtime message_generation # DEPENDS system_lib ) include_directories( include ${catkin_INCLUDE_DIRS} ${Eigen3_INCLUDE_DIRS} ) add_library(ctrl SHARED src/ctrl/pid_controller.cpp src/ctrl/motion_controller.cpp src/ctrl/motion_controller_separate.cpp src/ctrl/motion_controller_bodyrate.cpp src/ctrl/motion_controller_bodyrate_separate.cpp) target_link_libraries(ctrl ${catkin_LIBRARIES}) add_library(minco SHARED src/minco/traj_opt.cpp) target_include_directories(minco PUBLIC ${PROJECT_SOURCE_DIR}/include/minco) target_link_libraries(minco ${catkin_LIBRARIES} Eigen3::Eigen) add_library(manage SHARED src/manage/ctrl_fsm_waypoints.cpp src/manage/ctrl_fsm_fix_trajectory.cpp src/manage/ctrl_fsm_planning.cpp src/manage/ctrl_fsm_planning_ddr.cpp) target_link_libraries(manage ${catkin_LIBRARIES} minco ctrl) # ===================== node ===================== add_executable(ctrl_fsm_waypoints_node src/ctrl_fsm_waypoints_node.cpp) target_link_libraries(ctrl_fsm_waypoints_node manage ${catkin_LIBRARIES} ${CURSES_LIBRARIES} ) add_executable(ctrl_fsm_fix_trajectory_node src/ctrl_fsm_fix_trajectory_node.cpp) target_link_libraries(ctrl_fsm_fix_trajectory_node manage ${catkin_LIBRARIES} ${CURSES_LIBRARIES} ) add_executable(ctrl_fsm_planning_node src/ctrl_fsm_planning_node.cpp) target_link_libraries(ctrl_fsm_planning_node manage ${catkin_LIBRARIES} ${CURSES_LIBRARIES} ) add_executable(ctrl_fsm_planning_ddr_node src/ctrl_fsm_planning_ddr_node.cpp) target_link_libraries(ctrl_fsm_planning_ddr_node manage ${catkin_LIBRARIES} ${CURSES_LIBRARIES} )注释上述代码
09-10
物联网通信协议测试是保障各类设备间实现可靠数据交互的核心环节。在众多适用于物联网的通信协议中,MQTT(消息队列遥测传输)以其设计简洁与低能耗的优势,获得了广泛应用。为确保MQTT客户端与服务端的实现严格遵循既定标准,并具备良好的互操作性,实施系统化的测试验证至关重要。 为此,采用TTCN-3(树表结合表示法第3版)这一国际标准化测试语言构建的自动化测试框架被引入。该语言擅长表达复杂的测试逻辑与数据结构,同时保持了代码的清晰度与可维护性。基于此框架开发的MQTT协议一致性验证套件,旨在自动化地检验MQTT实现是否完全符合协议规范,并验证其与Eclipse基金会及欧洲电信标准化协会(ETSI)所发布的相关标准的兼容性。这两个组织在物联网通信领域具有广泛影响力,其标准常被视为行业重要参考。 MQTT协议本身存在多个迭代版本,例如3.1、3.1.1以及功能更为丰富的5.0版。一套完备的测试工具必须能够覆盖对这些不同版本的验证,以确保基于各版本开发的设备与应用均能满足一致的质量与可靠性要求,这对于物联网生态的长期稳定运行具有基础性意义。 本资源包内包含核心测试框架文件、一份概述性介绍文档以及一份附加资源文档。这些材料共同提供了关于测试套件功能、应用方法及可能包含的扩展工具或示例的详细信息,旨在协助用户快速理解并部署该测试解决方案。 综上所述,一个基于TTCN-3的高效自动化测试框架,为执行全面、标准的MQTT协议一致性验证提供了理想的技术路径。通过此类专业测试套件,开发人员能够有效确保其MQTT实现的规范符合性与系统兼容性,从而为构建稳定、安全的物联网通信环境奠定坚实基础。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值