Main Page
+
Namespaces
Namespace List
+
Namespace Members
All
Variables
Typedefs
+
Classes
Class List
Class Hierarchy
+
Class Members
All
Functions
Variables
+
Files
File List
+
File Members
All
Functions
Typedefs
src
moveit_sim_hw_main.cpp
Go to the documentation of this file.
1
/*********************************************************************
2
* Software License Agreement (BSD License)
3
*
4
* Copyright (c) 2015, University of Colorado, Boulder
5
* All rights reserved.
6
*
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions
9
* are met:
10
*
11
* * Redistributions of source code must retain the above copyright
12
* notice, this list of conditions and the following disclaimer.
13
* * Redistributions in binary form must reproduce the above
14
* copyright notice, this list of conditions and the following
15
* disclaimer in the documentation and/or other materials provided
16
* with the distribution.
17
* * Neither the name of the Univ of CO, Boulder nor the names of its
18
* contributors may be used to endorse or promote products derived
19
* from this software without specific prior written permission.
20
*
21
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32
* POSSIBILITY OF SUCH DAMAGE.
33
*********************************************************************/
34
35
/* Author: Dave Coleman
36
Desc: MoveIt! robot simulator using ros_control
37
*/
38
39
#include <
ros_control_boilerplate/generic_hw_control_loop.h
>
40
#include <
moveit_sim_controller/moveit_sim_hw_interface.h
>
41
42
// Support released kinetic & melodic versions of GenericHWControlLoop
43
// can be dropped once kinetic is not supported anymore
44
template
<
typename
...>
using
void_t
= void;
45
template
<
typename
T,
typename
=
void
>
struct
WithRun
:
public
T {
using
T::T;
void
run
(){
ros::waitForShutdown
(); } };
46
template
<
typename
T>
struct
WithRun<T, void_t<decltype(&T::run)>
> :
public
T {
using
T::T; };
47
48
int
main
(
int
argc,
char
** argv)
49
{
50
ros::init
(argc, argv,
"moveit_sim_hw_main"
);
51
ros::NodeHandle
nh;
52
53
// NOTE: We run the ROS loop in a separate thread as external calls such
54
// as service callbacks to load controllers can block the (main) control loop
55
ros::AsyncSpinner
spinner
(2);
56
spinner.
start
();
57
58
// Create the hardware interface specific to your robot
59
boost::shared_ptr<moveit_sim_controller::MoveItSimHWInterface>
moveit_sim_hw_iface(
60
new
moveit_sim_controller::MoveItSimHWInterface
(nh));
61
moveit_sim_hw_iface->init();
62
63
// Start the control loop
64
WithRun<ros_control_boilerplate::GenericHWControlLoop>
control_loop(nh, moveit_sim_hw_iface);
65
control_loop.
run
();
// blocks until shutdown is signaled
66
67
return
0;
68
}
WithRun::run
void run()
Definition:
moveit_sim_hw_main.cpp:45
ros::NodeHandle
moveit_sim_hw_interface.h
ros::init
ROSCPP_DECL void init(int &argc, char **argv, const std::string &name, uint32_t options=0)
spinner
void spinner()
boost::shared_ptr
ros::AsyncSpinner::start
void start()
WithRun
Definition:
moveit_sim_hw_main.cpp:45
main
int main(int argc, char **argv)
Definition:
moveit_sim_hw_main.cpp:48
moveit_sim_controller::MoveItSimHWInterface
Definition:
moveit_sim_hw_interface.h:55
generic_hw_control_loop.h
void_t
void void_t
Definition:
moveit_sim_hw_main.cpp:44
ros::waitForShutdown
ROSCPP_DECL void waitForShutdown()
ros::AsyncSpinner
moveit_sim_controller
Author(s): Dave Coleman
autogenerated on Mon Feb 28 2022 22:51:51