Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SRC-4962 Add command effort type #115

Open
wants to merge 3 commits into
base: noetic-devel
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions ros_ethercat_model/include/ros_ethercat_model/command.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/*
* Software License Agreement (BSD License)
*
* Copyright (c) 2021, Shadow Robot Company Ltd.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of the Willow Garage nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/

#ifndef ROS_ETHERCAT_MODEL_COMMAND_H
#define ROS_ETHERCAT_MODEL_COMMAND_H

namespace ros_ethercat_model
{

enum class EffortCommandType
{
UNSPECIFIED,
TORQUE,
PWM
};

} // namespace ros_ethercat_model

#endif // ROS_ETHERCAT_MODEL_COMMAND_H
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@

#include <ros/ros.h>

#include "ros_ethercat_model/command.hpp"

namespace ros_ethercat_model
{
Expand Down Expand Up @@ -95,12 +96,20 @@ class ActuatorCommand
public:
ActuatorCommand() :
enable_(0),
effort_(0)
effort_(0),
effort_command_type_(EffortCommandType::UNSPECIFIED)
{
}

bool enable_; //!< Enable this actuator
double effort_; //!< Force to apply (in Nm)
double effort_; //!< Effor to apply, unit depends on effort_command_type_ field
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo in the comment "effor"

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in fa9de9e.

EffortCommandType effort_command_type_; //!< Type of effort in effort_ field

void set_effort_command(double effort, EffortCommandType effort_command_type)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need a set method? None of the other fields have one.
Maybe it's better to keep the style uniform?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Idea was for all new code to use setter method because both fields should be set at the same time. Happy to remove it.

{
effort_ = effort;
effort_command_type_ = effort_command_type;
}
};

/*!
Expand Down
14 changes: 13 additions & 1 deletion ros_ethercat_model/include/ros_ethercat_model/joint.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@
#include <tinyxml.h>
#include <urdf_model/joint.h>

#include "ros_ethercat_model/command.hpp"

namespace ros_ethercat_model
{

Expand Down Expand Up @@ -170,6 +172,9 @@ class JointState
/// The position of the optical flag that was used to calibrate this joint
double reference_position_;

/// Type of effort in commanded_effort_ field
EffortCommandType effort_command_type_;

/// Constructor
JointState() :
position_(0.0),
Expand All @@ -178,8 +183,15 @@ class JointState
commanded_position_(0.0),
commanded_velocity_(0.0),
commanded_effort_(0.0),
reference_position_(0.0)
reference_position_(0.0),
effort_command_type_(EffortCommandType::UNSPECIFIED)
{
}

void set_effort_command(double commanded_effort, EffortCommandType effort_command_type)
{
commanded_effort_ = commanded_effort;
effort_command_type_ = effort_command_type;
}
};
inline void JointStatistics::update(JointState *jnt)
Expand Down