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 
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 
16  spinner.start();
17 
18  ros::NodeHandle private_node_handle("~");
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 {
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