new dummy attitude estimator skeleton

This commit is contained in:
Thomas Gubler 2014-12-30 09:13:20 +01:00
parent b632d128aa
commit 1f8fd5d120
5 changed files with 92 additions and 24 deletions

View File

@ -177,10 +177,10 @@ target_link_libraries(mc_att_control
)
## Attitude Estimator dummy
add_executable(att_estimator
src/platforms/ros/nodes/att_estimator/att_estimator.cpp)
add_dependencies(att_estimator px4_generate_messages_cpp)
target_link_libraries(att_estimator
add_executable(attitude_estimator
src/platforms/ros/nodes/attitude_estimator/attitude_estimator.cpp)
add_dependencies(attitude_estimator px4_generate_messages_cpp)
target_link_libraries(attitude_estimator
${catkin_LIBRARIES}
px4
)

View File

@ -2,7 +2,7 @@
<group ns="px4_example">
<node pkg="px4" name="manual_input" type="manual_input"/>
<node pkg="px4" name="att_estimator" type="att_estimator"/>
<node pkg="px4" name="attitude_estimator" type="attitude_estimator"/>
<node pkg="px4" name="mc_att_control" type="mc_att_control"/>
</group>

View File

@ -0,0 +1,70 @@
/****************************************************************************
*
* Copyright (c) 2014 PX4 Development Team. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name PX4 nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
/**
* @file att_estimator.cpp
* Dummy attitude estimator that forwards attitude from gazebo to px4 topic
*
* @author Thomas Gubler <thomasgubler@gmail.com>
*/
#include "attitude_estimator.h"
#include <px4/vehicle_attitude.h>
AttitudeEstimator::AttitudeEstimator() :
_n(),
_sub_modelstates(_n.subscribe("joy", 10, &AttitudeEstimator::ModelStatesCallback, this)),
_vehicle_attitude_pub(_n.advertise<px4::vehicle_attitude>("vehicle_attitude", 10))
{
}
void AttitudeEstimator::ModelStatesCallback(const gazebo_msgs::ModelStatesConstPtr& msg)
{
px4::vehicle_attitude msg_out;
/* Fill px4 attitude topic with contents from modelstates topic */
//XXX
_vehicle_attitude_pub.publish(msg_out);
}
int main(int argc, char **argv)
{
ros::init(argc, argv, "attitude_estimator");
AttitudeEstimator m;
ros::spin();
return 0;
}

View File

@ -32,7 +32,7 @@
****************************************************************************/
/**
* @file att_estimator.cpp
* @file att_estimator.h
* Dummy attitude estimator that forwards attitude from gazebo to px4 topic
*
* @author Thomas Gubler <thomasgubler@gmail.com>
@ -40,23 +40,22 @@
#include "ros/ros.h"
#include <gazebo_msgs/ModelStates.h>
//#include "std_msgs/String.h"
/**
* This tutorial demonstrates simple receipt of messages over the ROS system.
*/
void chatterCallback(const gazebo_msgs::ModelStates &msg)
{
// try to read out message here
}
class AttitudeEstimator {
public:
AttitudeEstimator();
int main(int argc, char **argv)
{
ros::init(argc, argv, "att_estimator");
ros::NodeHandle n;
ros::Subscriber sub = n.subscribe("chatter", 1000, chatterCallback);
~AttitudeEstimator() {}
ros::spin();
protected:
/**
* Takes ROS joystick message and converts/publishes to px4 manual control setpoint topic
*/
void ModelStatesCallback(const gazebo_msgs::ModelStatesConstPtr& msg);
return 0;
}
ros::NodeHandle _n;
ros::Subscriber _sub_modelstates;
ros::Publisher _vehicle_attitude_pub;
};

View File

@ -45,11 +45,10 @@
ManualInput::ManualInput() :
_n(),
_sub_joy(_n.subscribe("joy", 10, &ManualInput::JoyCallback, this)),
_man_ctrl_sp_pub(_n.advertise<px4::manual_control_setpoint>("manual_control_setpoint", 1000))
_man_ctrl_sp_pub(_n.advertise<px4::manual_control_setpoint>("manual_control_setpoint", 10))
{
}
void ManualInput::JoyCallback(const sensor_msgs::JoyConstPtr& msg)
{
px4::manual_control_setpoint msg_out;