noid_upper_controller.cpp
Go to the documentation of this file.
2 
3 using namespace noid;
4 using namespace controller;
5 
6 NoidUpperController::NoidUpperController(const std::string& _port)
7 {
8  ros::param::get("joint_settings/upper/name",name_);
9  ros::param::get("joint_settings/upper/aero_index",aero_index_);
10  ros::param::get("joint_settings/upper/ros_index",ros_index_);
11  ros::param::get("joint_settings/upper/DOF",DOF_);
12 
13  upper_ = new aero::controller::AeroCommand();
14  if(upper_->openPort(_port,BAUDRATE)){
15  ROS_INFO("%s is connected", _port.c_str());
16  upper_->flushPort();
17  is_open_ = true;
18  }
19  else{
20  ROS_ERROR("%s is not connected", _port.c_str());
21  is_open_ = false;
22  }
23 
24  raw_data_.resize(31);
25  fill(raw_data_.begin(),raw_data_.end(),0);
26 
27 }
28 
30 {
31  if(is_open_) upper_->closePort();
32 }
33 
35 {
36  if(is_open_) raw_data_ = upper_->getPosition(0);
37 }
38 
39 
40 void NoidUpperController::sendPosition(uint16_t _time, std::vector<int16_t>& _data)
41 {
42  if(is_open_) raw_data_ = upper_->actuateByPosition(_time, _data.data());
43  else raw_data_.assign(_data.begin(), _data.end());
44 }
45 
46 void NoidUpperController::remapAeroToRos(std::vector<int16_t>& _before, std::vector<int16_t>& _after)
47 {
48  for(int i=0; i < DOF_ ; ++i){
49  for(size_t j=0; j < ros_index_.size(); ++j){
50  if(ros_index_[j] == i){
51  _after[i] = _before[aero_index_[j]];
52  break;
53  }
54  }
55  }
56 }
57 
58 
59 void NoidUpperController::remapRosToAero(std::vector<int16_t>& _before, std::vector<int16_t>& _after)
60 {
61  size_t aero_array_size = 30;
62  for(size_t i=0; i < aero_array_size; ++i){
63  for(size_t j=0; j < aero_index_.size(); ++j){
64  if(aero_index_[j] == i){
65  _after[i] = _before[ros_index_[j]];
66  break;
67  }
68  }
69  }
70 }
71 
72 void NoidUpperController::setCurrent(uint8_t _number, uint8_t _max, uint8_t _down)
73 {
74  if(is_open_)upper_->setCurrent(_number, _max, _down);
75 }
76 
77 void NoidUpperController::runScript(uint8_t _number, uint16_t _script)
78 {
79  if(is_open_)upper_->runScript(_number, _script);
80 }
void remapRosToAero(std::vector< int16_t > &_before, std::vector< int16_t > &_after)
void sendPosition(uint16_t _time, std::vector< int16_t > &_data)
NoidUpperController(const std::string &_port)
void remapAeroToRos(std::vector< int16_t > &_before, std::vector< int16_t > &_after)
ROSCPP_DECL bool get(const std::string &key, std::string &s)
#define ROS_INFO(...)
void setCurrent(uint8_t _number, uint8_t _max, uint8_t _down)
aero::controller::AeroCommand * upper_
void runScript(uint8_t _number, uint16_t _script)
#define ROS_ERROR(...)


noid_robot_interface
Author(s):
autogenerated on Sat Jul 20 2019 03:44:26