Hi all,
I am trying to control the roll of a plane using mavros and in particular the topic /mavros/setpoint_attitude/attitude. This is basically the code I am using:
ros::Publisher mav_att_pub = nh.advertise<geometry_msgs::PoseStamped>( “mavros/setpoint_attitude/attitude”, 100 );
ros::Publisher mav_thr_pub = nh.advertise<std_msgs::Float64>( “mavros/setpoint_attitude/att_throttle”, 100 );
// attitude
geometry_msgs::PoseStamped cmd_att;
//throttle
std_msgs::Float64 cmd_thr;
// Create attitude command message
cmd_att.header.stamp = ros::Time::now();
cmd_att.header.seq = count;
cmd_att.pose.position.x = 0.0;
cmd_att.pose.position.y = 0.0;
cmd_att.pose.position.z = 0.0;
// here your desired angles
tf::Quaternion mav_orientation = tf::createQuaternionFromRPY( 0.6, 0, 0 );
cmd_att.pose.orientation.x = mav_orientation.x();
cmd_att.pose.orientation.y = mav_orientation.y();
cmd_att.pose.orientation.z = mav_orientation.z();
cmd_att.pose.orientation.w = mav_orientation.w();
mav_att_pub.publish( cmd_att );
// here your throttle value a [0,1]
cmd_thr.data = 0.8;
mav_thr_pub.publish( cmd_thr );
++count;
I hardcoded some values just to try but unfortunately the plane does not respond to these messages. I am currently using the SITL. I tried with mode AUTO and GUIDED but the plane still do not respond to the messages.
I have also set the parameter setpoint_attitude/use_quaternion to true as described here http://wiki.ros.org/mavros#mavros.2BAC8-Plugins.setpoint_attitude.
I am using the latest ardupilot code (master) from github.
I am very new to mavros/ardupilot so any help would be appreciated.
Thanks!