Skip to content
Snippets Groups Projects
Commit 1b301277 authored by Hoop77's avatar Hoop77
Browse files

mavlink node

parent e056325e
No related merge requests found
...@@ -125,7 +125,11 @@ target_link_libraries(lanekeeping ${catkin_LIBRARIES}) ...@@ -125,7 +125,11 @@ target_link_libraries(lanekeeping ${catkin_LIBRARIES})
add_library(mav_link src/mavLink/MavLink.cpp) add_library(mav_link src/mavLink/MavLink.cpp)
add_dependencies(mav_link ${catkin_EXPORTED_TARGETS} ${PROJECT_NAME}_generate_messages_cpp) add_dependencies(mav_link ${catkin_EXPORTED_TARGETS} ${PROJECT_NAME}_generate_messages_cpp)
target_link_libraries(mav_link ${catkin_LIBRARIES}) target_link_libraries(mav_link
${catkin_LIBRARIES}
VeloxProtocolLib)
target_include_directories(mav_link PUBLIC
${VeloxProtocolLib_INCLUDE_DIRS})
# NotifiableThread Test # NotifiableThread Test
set(NOTIFIABLE_THREAD_TEST_SOURCE_FILES set(NOTIFIABLE_THREAD_TEST_SOURCE_FILES
......
...@@ -9,32 +9,46 @@ ...@@ -9,32 +9,46 @@
#include "car/rcEnabledMsg.h" #include "car/rcEnabledMsg.h"
#include "boost/thread.hpp" #include "boost/thread.hpp"
#include "NetworkingLib/Networking.h"
#include "VeloxProtocolLib/Connection.h"
namespace car namespace car
{ {
class MavLink : public nodelet::Nodelet class MavLink : public nodelet::Nodelet
{ {
public: public:
virtual void onInit(); virtual void onInit();
MavLink(ros::NodeHandle &nh, std::string &name);
MavLink(); MavLink(ros::NodeHandle & nh, std::string & name);
~MavLink();
private: MavLink();
ros::NodeHandle nh_;
std::string name_; ~MavLink();
ros::Publisher stmData; private:
ros::Subscriber ccData; ros::NodeHandle nh_;
ros::Subscriber laneData; std::string name_;
ros::Subscriber rcEnabled;
ros::Publisher stmData;
ros::Subscriber ccData;
void ccDataCallback(const ccDataMsg::ConstPtr& inMsg); ros::Subscriber laneData;
void laneDataCallback(const laneDataMsg::ConstPtr& inMsg); ros::Subscriber rcEnabled;
void rcEnabledCallback(const rcEnabledMsg::ConstPtr& inMsg);
void ccDataCallback(const ccDataMsg::ConstPtr & inMsg);
boost::thread main; void laneDataCallback(const laneDataMsg::ConstPtr & inMsg);
};
void rcEnabledCallback(const rcEnabledMsg::ConstPtr & inMsg);
void onStmDataReceived();
float convertSpeedToStm(float speed);
float convertSpeedFromStm(float speed);
networking::Networking net;
veloxProtocol::Connection::Ptr veloxConnection;
};
} }
#endif #endif
...@@ -12,53 +12,70 @@ PLUGINLIB_EXPORT_CLASS(car::MavLink, nodelet::Nodelet); ...@@ -12,53 +12,70 @@ PLUGINLIB_EXPORT_CLASS(car::MavLink, nodelet::Nodelet);
namespace car namespace car
{ {
MavLink::MavLink(ros::NodeHandle &nh, std::string &name) : MavLink::MavLink(ros::NodeHandle & nh, std::string & name) :
nh_(nh), nh_(nh), name_(name)
name_(name) {}
{}
MavLink::MavLink()
MavLink::MavLink() {} {}
MavLink::~MavLink() {} MavLink::~MavLink()
{}
void MavLink::onInit()
{ void MavLink::onInit()
NODELET_INFO("MavLink::onInit -- START"); {
stmData = nh_.advertise<stmDataMsg>("stmData", 1); NODELET_INFO("MavLink::onInit -- START");
ccData = nh_.subscribe("ccData", 1, &MavLink::ccDataCallback, this);
laneData = nh_.subscribe("laneData", 1, &MavLink::laneDataCallback, this); stmData = nh_.advertise<stmDataMsg>("stmData", 1);
rcEnabled = nh_.subscribe("rcEnabled", 1, &MavLink::rcEnabledCallback, this); ccData = nh_.subscribe("ccData", 1, &MavLink::ccDataCallback, this);
main = boost::thread( laneData = nh_.subscribe("laneData", 1, &MavLink::laneDataCallback, this);
[this]() rcEnabled = nh_.subscribe("rcEnabled", 1, &MavLink::rcEnabledCallback, this);
{
int counter = 0; veloxConnection = veloxProtocol::Connection::create(net);
ros::Rate rate{1}; veloxConnection->open(
while (ros::ok()) "/dev/ttySAC0",
{ [this]
stmDataMsg msg; { onStmDataReceived(); },
msg.speed = counter++; [this]
msg.angle = 0; { NODELET_INFO("Connection to STM closed!\n"); });
stmData.publish(msg);
rate.sleep(); NODELET_INFO("MavLink::onInit -- END");
} }
});
NODELET_INFO("MavLink::onInit -- END"); void MavLink::ccDataCallback(const ccDataMsg::ConstPtr & inMsg)
} {
veloxConnection->setSpeed(convertSpeedToStm(inMsg->speed));
void MavLink::ccDataCallback(const ccDataMsg::ConstPtr& inMsg) }
{
std::cout << "MavLink recived new cc data (" << inMsg->speed << ").\n"; void MavLink::laneDataCallback(const laneDataMsg::ConstPtr & inMsg)
} {
void MavLink::laneDataCallback(const laneDataMsg::ConstPtr& inMsg)
{
std::cout << "MavLink recived new lane data ( ).\n"; std::cout << "MavLink recived new lane data ( ).\n";
} }
void MavLink::rcEnabledCallback(const rcEnabledMsg::ConstPtr& inMsg) void MavLink::rcEnabledCallback(const rcEnabledMsg::ConstPtr & inMsg)
{ {
std::cout << "MavLink recived new rc status (" << inMsg->enabled << ").\n"; std::cout << "MavLink recived new rc status (" << inMsg->enabled << ").\n";
} }
void MavLink::onStmDataReceived()
{
stmDataMsg msg;
msg.speed = convertSpeedFromStm(veloxConnection->getMeasuredSpeed().get());
msg.angle = veloxConnection->getMeasuredSteeringAngle().get();
stmData.publish(msg);
}
float MavLink::convertSpeedToStm(float speed)
{
// TODO: convert speed!
return speed;
}
float MavLink::convertSpeedFromStm(float speed)
{
// TODO: convert speed!
return speed;
}
} }
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment