We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
首先开启固定翼仿真
roslaunch px4 outdoor2.launch
之后运行offboard节点,以下是我的offboard节点代码
#include <ros/ros.h> #include <geometry_msgs/PoseStamped.h> #include <mavros_msgs/CommandBool.h> #include <mavros_msgs/SetMode.h> #include <mavros_msgs/State.h> mavros_msgs::State current_state; void state_cb(const mavros_msgs::State::ConstPtr& msg){ current_state = *msg; } int main(int argc, char **argv){ ros::init(argc, argv, "offb_fixed_wing"); ros::NodeHandle nh; ros::Subscriber state_sub = nh.subscribe<mavros_msgs::State> ("/plane_0/mavros/state", 10, state_cb); ros::Publisher local_pos_pub = nh.advertise<geometry_msgs::PoseStamped> ("/plane_0/mavros/setpoint_position/local", 10); ros::ServiceClient arming_client = nh.serviceClient<mavros_msgs::CommandBool> ("/plane_0/mavros/cmd/arming"); ros::ServiceClient set_mode_client = nh.serviceClient<mavros_msgs::SetMode> ("/plane_0/mavros/set_mode"); ros::Rate rate(20.0); while(ros::ok() && !current_state.connected){ ros::spinOnce(); rate.sleep(); } geometry_msgs::PoseStamped pose; pose.pose.position.z = 30; // Set initial altitude // Send a few setpoints before starting for(int i = 100; ros::ok() && i > 0; --i){ local_pos_pub.publish(pose); ros::spinOnce(); rate.sleep(); } // Try to set offboard mode and arm mavros_msgs::SetMode offb_set_mode; offb_set_mode.request.custom_mode = "OFFBOARD"; mavros_msgs::CommandBool arm_cmd; arm_cmd.request.value = true; if(current_state.mode != "OFFBOARD" && set_mode_client.call(offb_set_mode) && offb_set_mode.response.mode_sent){ ROS_INFO("Offboard enabled"); } if(!current_state.armed && arming_client.call(arm_cmd) && arm_cmd.response.success){ ROS_INFO("Vehicle armed"); } std::vector<std::pair<float, float>> waypoints = {{200, -50}, {240, -50}, {240, 50}, {200, 50}, {0, 0}}; for(auto &wp : waypoints){ pose.pose.position.x = wp.first; pose.pose.position.y = wp.second; for(int i = 0; i < 100; ++i){ local_pos_pub.publish(pose); ros::spinOnce(); rate.sleep(); } } // Land at the original point (0,0) pose.pose.position.x = 0; pose.pose.position.y = 0; pose.pose.position.z = 0; // Optionally lower the altitude for landing while(ros::ok()){ local_pos_pub.publish(pose); ros::spinOnce(); rate.sleep(); } return 0; }
之后无人机成功解锁,螺旋桨转动但未能起飞 本人对PX4的offboard控制尚不了解,该代码也仅用于尝试,期待各位朋友指出问题
The text was updated successfully, but these errors were encountered:
No branches or pull requests
首先开启固定翼仿真
之后运行offboard节点,以下是我的offboard节点代码
之后无人机成功解锁,螺旋桨转动但未能起飞
本人对PX4的offboard控制尚不了解,该代码也仅用于尝试,期待各位朋友指出问题
The text was updated successfully, but these errors were encountered: