src
franka_combined_control_node.cpp
Go to the documentation of this file.
1
// Copyright (c) 2019 Franka Emika GmbH
2
// Use of this source code is governed by the Apache-2.0 license, see LICENSE
3
4
#include <
controller_manager/controller_manager.h
>
5
#include <
franka_hw/franka_combined_hw.h
>
6
#include <
ros/ros.h
>
7
8
#include <franka/control_tools.h>
9
#include <sched.h>
10
#include <string>
11
12
int
main
(
int
argc,
char
** argv) {
13
ros::init
(argc, argv,
"franka_combined_control_node"
);
14
15
ros::AsyncSpinner
spinner
(4);
16
spinner
.start();
17
18
ros::NodeHandle
private_node_handle(
"~"
);
19
franka_hw::FrankaCombinedHW
franka_control
;
20
if
(!
franka_control
.init(private_node_handle, private_node_handle)) {
21
ROS_ERROR
(
"franka_combined_control_node:: Initialization of FrankaCombinedHW failed!"
);
22
return
1;
23
}
24
25
// set current thread to real-time priority
26
std::string error_message;
27
if
(!franka::setCurrentThreadToHighestSchedulerPriority(&error_message)) {
28
ROS_ERROR
(
"franka_combined_control_node: Failed to set thread priority to real-time. Error: %s"
,
29
error_message.c_str());
30
return
1;
31
}
32
33
controller_manager::ControllerManager
cm(&
franka_control
, private_node_handle);
34
ros::Duration
period(0.001);
35
ros::Rate
rate(period);
36
37
while
(
ros::ok
()) {
38
rate.
sleep
();
39
ros::Time
now =
ros::Time::now
();
40
franka_control
.read(now, period);
41
cm.
update
(now, period,
franka_control
.controllerNeedsReset());
42
if
(!
franka_control
.hasError()) {
43
franka_control
.write(now, period);
44
}
else
{
45
ROS_DEBUG_THROTTLE
(5,
46
"franka_combined_control_node: The HW is in error state."
47
"To recover, call the recovery action."
);
48
}
49
}
50
51
return
0;
52
}
controller_manager::ControllerManager
ros::init
ROSCPP_DECL void init(const M_string &remappings, const std::string &name, uint32_t options=0)
ros.h
franka_hw::FrankaCombinedHW
ros::AsyncSpinner
controller_manager.h
ros::ok
ROSCPP_DECL bool ok()
franka_combined_hw.h
spinner
void spinner()
main
int main(int argc, char **argv)
Definition:
franka_combined_control_node.cpp:12
ROS_ERROR
#define ROS_ERROR(...)
ros::Rate::sleep
bool sleep()
ros::Time
ros::Rate
ros::Duration
controller_manager::ControllerManager::update
void update(const ros::Time &time, const ros::Duration &period, bool reset_controllers=false)
ROS_DEBUG_THROTTLE
#define ROS_DEBUG_THROTTLE(period,...)
ros::NodeHandle
franka_control
Definition:
franka_state_controller.h:18
ros::Time::now
static Time now()
franka_control
Author(s): Franka Emika GmbH
autogenerated on Mon Sep 19 2022 02:33:24