how can i migrate ros1 hw to ros2 hw
Hello there
I am trying to switch from ros1 melodic version to ros2 humble version.
I'm stuck on the hardware interface and controller manager.
how can i migrate ros1 hw to ros2 hw
this is my hw;
#include <Hardwares/KRVizHWInterface.h>
extern KPyGlobals kPyGlobals;
KRVizHWInterface::KRVizHWInterface( ros::NodeHandle& nh ) : nh_( nh )
{
init();
controller_manager_.reset( new controller_manager::ControllerManager( this, nh_ ) );
ros::Duration update_freq = ros::Duration( 1.0 / 3000 );
non_realtime_loop_ = nh_.createTimer( update_freq, &KRVizHWInterface::callBack, this );
}
KRVizHWInterface::~KRVizHWInterface() {}
void KRVizHWInterface::init()
{
// Get joint names
ROS_INFO( "initializing..." );
position_state.resize( JOINT_COUNT );
velocity_state.resize( JOINT_COUNT );
effort_state.resize( JOINT_COUNT );
position_command.resize( JOINT_COUNT );
// Initialize Controllers
for ( int i = 0; i < JOINT_COUNT; ++i )
{
hardware_interface::JointStateHandle jointStateHandle( JOINT_NAMES[i], &position_state[i], &velocity_state[i], &effort_state[i] );
joint_state_interface_.registerHandle( jointStateHandle );
hardware_interface::JointHandle jointPositionHandle( jointStateHandle, &position_command[i] );
JointLimits limits;
SoftJointLimits softLimits;
getJointLimits( JOINT_NAMES[i], nh_, limits );
PositionJointSoftLimitsHandle jointLimitsHandle( jointPositionHandle, limits, softLimits );
position_joint_interface_.registerHandle( jointPositionHandle );
positionJointSoftLimitsInterface.registerHandle( jointLimitsHandle );
}
registerInterface( &joint_state_interface_ );
registerInterface( &position_joint_interface_ );
registerInterface( &positionJointSoftLimitsInterface );
ROS_INFO( "All joints handeled." );
}
void KRVizHWInterface::callBack( const ros::TimerEvent& e )
{
elapsed_time_ = ros::Duration( e.current_real - e.last_real );
////////////////////////////////////////////////////////////////////////
for ( int i = 0; i < JOINT_COUNT; i++ )
position_state[i] = kPyGlobals.USB.recv_Angles[i] * deg2rad;
////////////////////////////////////////////////////////////////////////
controller_manager_->update( ros::Time::now(), elapsed_time_ );
////////////////////////////////////////////////////////////////////////
positionJointSoftLimitsInterface.enforceLimits( elapsed_time_ );
for ( int i = 0; i < JOINT_COUNT; i++ )
kPyGlobals.recv_RVizAngles_INFO[i] = position_command[i] * rad2deg;
}
this is my starter;
ros::NodeHandle nh;
KRVizHWInterface rhi( nh );
ros::AsyncSpinner spinner( ASYNC_COUNT );
spinner.start();
ros::waitForShutdown();
Asked by omeranar1 on 2022-10-12 08:54:50 UTC
Answers
You may read the guide
How to migrate from ros1 to ros2 controller
Asked by duck-development on 2022-10-12 12:14:56 UTC
Comments