src
ros_thread.cpp
Go to the documentation of this file.
1
// *****************************************************************************
2
//
3
// Copyright (c) 2015, Southwest Research Institute® (SwRI®)
4
// All rights reserved.
5
//
6
// Redistribution and use in source and binary forms, with or without
7
// modification, are permitted provided that the following conditions are met:
8
// * Redistributions of source code must retain the above copyright
9
// notice, this list of conditions and the following disclaimer.
10
// * Redistributions in binary form must reproduce the above copyright
11
// notice, this list of conditions and the following disclaimer in the
12
// documentation and/or other materials provided with the distribution.
13
// * Neither the name of Southwest Research Institute® (SwRI®) nor the
14
// names of its contributors may be used to endorse or promote products
15
// derived from this software without specific prior written permission.
16
//
17
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
// ARE DISCLAIMED. IN NO EVENT SHALL Southwest Research Institute® BE LIABLE
21
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
23
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
24
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
27
// DAMAGE.
28
//
29
// *****************************************************************************
30
31
#include <QCoreApplication>
32
#include "
include/swri_console/ros_thread.h
"
33
34
using namespace
swri_console
;
35
36
RosThread::RosThread
(
int
argc,
char
** argv) :
37
is_connected_(false),
38
is_running_(true)
39
{
40
ros::init
(argc, argv,
"swri_console"
,
41
ros::init_options::AnonymousName
|
42
ros::init_options::NoRosout
|
43
ros::init_options::NoSigintHandler
);
44
}
45
46
void
RosThread::run
()
47
{
48
while
(
is_running_
)
49
{
50
bool
master_status =
ros::master::check
();
51
52
if
(!
is_connected_
&& master_status) {
53
startRos
();
54
}
else
if
(
is_connected_
&& !master_status) {
55
stopRos
();
56
}
else
if
(
is_connected_
&& master_status) {
57
ros::spinOnce
();
58
Q_EMIT
spun
();
59
}
60
msleep(50);
61
}
62
}
63
64
65
void
RosThread::shutdown
()
66
{
67
is_running_
=
false
;
68
if
(
ros::isStarted
())
69
{
70
ros::shutdown
();
71
ros::waitForShutdown
();
72
}
73
}
74
75
void
RosThread::startRos
()
76
{
77
ros::start
();
78
is_connected_
=
true
;
79
80
ros::NodeHandle
nh;
81
rosout_sub_
= nh.
subscribe
(
"/rosout_agg"
, 10000,
82
&
RosThread::handleRosout
,
83
this
);
84
Q_EMIT
connected
(
true
);
85
}
86
87
void
RosThread::stopRos
()
88
{
89
ros::shutdown
();
90
is_connected_
=
false
;
91
Q_EMIT
connected
(
false
);
92
}
93
94
void
RosThread::handleRosout
(
const
rosgraph_msgs::LogConstPtr &
msg
)
95
{
96
Q_EMIT
logReceived
(
msg
);
97
}
ros::init_options::AnonymousName
AnonymousName
ros::init_options::NoRosout
NoRosout
swri_console::RosThread::handleRosout
void handleRosout(const rosgraph_msgs::LogConstPtr &msg)
Definition:
ros_thread.cpp:94
ros::master::check
ROSCPP_DECL bool check()
swri_console::RosThread::shutdown
void shutdown()
Definition:
ros_thread.cpp:65
ros::init
ROSCPP_DECL void init(const M_string &remappings, const std::string &name, uint32_t options=0)
swri_console::RosThread::RosThread
RosThread(int argc, char **argv)
Definition:
ros_thread.cpp:36
ros::spinOnce
ROSCPP_DECL void spinOnce()
ros::shutdown
ROSCPP_DECL void shutdown()
swri_console::RosThread::spun
void spun()
swri_console::RosThread::run
void run()
Definition:
ros_thread.cpp:46
swri_console::RosThread::startRos
void startRos()
Definition:
ros_thread.cpp:75
ros::NodeHandle::subscribe
Subscriber subscribe(const std::string &topic, uint32_t queue_size, const boost::function< void(C)> &callback, const VoidConstPtr &tracked_object=VoidConstPtr(), const TransportHints &transport_hints=TransportHints())
ros::isStarted
ROSCPP_DECL bool isStarted()
ros::start
ROSCPP_DECL void start()
swri_console
Definition:
bag_reader.h:40
ros_thread.h
swri_console::RosThread::rosout_sub_
ros::Subscriber rosout_sub_
Definition:
ros_thread.h:77
ros::waitForShutdown
ROSCPP_DECL void waitForShutdown()
console_generator.msg
msg
Definition:
console_generator.py:58
swri_console::RosThread::connected
void connected(bool)
swri_console::RosThread::is_running_
volatile bool is_running_
Definition:
ros_thread.h:76
swri_console::RosThread::stopRos
void stopRos()
Definition:
ros_thread.cpp:87
swri_console::RosThread::is_connected_
bool is_connected_
Definition:
ros_thread.h:75
ros::init_options::NoSigintHandler
NoSigintHandler
ros::NodeHandle
swri_console::RosThread::logReceived
void logReceived(const rosgraph_msgs::LogConstPtr &msg)
swri_console
Author(s): P. J. Reed
, Jerry Towler
, David Anthony
autogenerated on Sat Sep 23 2023 02:55:36