15 #include <sys/socket.h> 16 #include <netinet/in.h> 20 #include "std_msgs/String.h" 21 #include "mavros_msgs/State.h" 22 #include "mavros_msgs/ManualControl.h" 23 #include "mavros_msgs/Mavlink.h" 37 bool use_fake_gcs = nh_priv.
param(
"use_fake_gcs",
true);
61 state_timeout_timer.
start();
64 state->connected != state_msg->connected ||
65 state->mode != state_msg->mode ||
66 state->armed != state_msg->armed) {
75 mavros_msgs::State unknown_state;
76 state_pub.
publish(unknown_state);
83 state_pub = nh.
advertise<mavros_msgs::State>(
"state_latched", 1,
true);
87 mavros_msgs::State unknown_state;
88 state_pub.
publish(unknown_state);
100 mavros_msgs::Mavlink hb;
101 hb.framing_status = mavros_msgs::Mavlink::FRAMING_OK;
102 hb.magic = mavros_msgs::Mavlink::MAVLINK_V20;
104 hb.incompat_flags = 0;
110 hb.payload64.push_back(342282393542983680);
111 hb.payload64.push_back(3);
124 int sockfd =
socket(AF_INET, SOCK_DGRAM, 0);
127 sin.sin_family = AF_INET;
128 sin.sin_addr.s_addr = htonl(INADDR_ANY);
129 sin.sin_port = htons(port);
131 if (bind(sockfd, (sockaddr *)&sin,
sizeof(sin)) < 0) {
132 ROS_FATAL(
"socket bind error: %s", strerror(errno));
143 nh_priv.
param(
"port", port, 35602);
144 int sockfd = createSocket(port);
149 mavros_msgs::ManualControl manual_control_msg;
151 sockaddr_in client_addr;
152 socklen_t client_addr_size =
sizeof(client_addr);
154 ROS_INFO(
"UDP RC initialized on port %d", port);
158 int bsize = recvfrom(sockfd, &buff[0],
sizeof(buff) - 1, 0, (sockaddr *) &client_addr, &client_addr_size);
161 ROS_ERROR(
"recvfrom() error: %s", strerror(errno));
170 manual_control_msg.x = msg->
x;
171 manual_control_msg.y = msg->
y;
172 manual_control_msg.z = msg->
z;
173 manual_control_msg.r = msg->
r;
174 manual_control_pub.
publish(manual_control_msg);
181 int main(
int argc,
char **argv)
mavros_msgs::StateConstPtr state_msg
led_msgs::LEDStateArray state
Timer createTimer(Rate r, Handler h, Obj o, bool oneshot=false, bool autostart=true) const
Subscriber subscribe(const std::string &topic, uint32_t queue_size, void(T::*fp)(M), T *obj, const TransportHints &transport_hints=TransportHints())
void setPeriod(const Duration &period, bool reset=true)
ROSCPP_DECL void init(int &argc, char **argv, const std::string &name, uint32_t options=0)
void handleState(const mavros_msgs::StateConstPtr &state)
bool param(const std::string ¶m_name, T ¶m_val, const T &default_val) const
void publish(const boost::shared_ptr< M > &message) const
ros::Publisher mavlink_pub
#define ROS_ERROR_THROTTLE(period,...)
int createSocket(int port)
Publisher advertise(const std::string &topic, uint32_t queue_size, bool latch=false)
int main(int argc, char **argv)
void stateTimedOut(const ros::TimerEvent &)
ros::Timer state_timeout_timer
boost::asio::ip::tcp::socket socket
ROSCPP_DECL void shutdown()
INLINE Rall1d< T, V, S > sin(const Rall1d< T, V, S > &arg)
ros::Subscriber state_sub