fix: multi ros version support

This commit is contained in:
fan-ziqi 2024-11-13 10:51:13 +08:00
parent c4514d235c
commit a5e54c323a
9 changed files with 36 additions and 20 deletions

View File

@ -52,14 +52,14 @@ def generate_launch_description():
joint_state_broadcaster_node = Node(
package="controller_manager",
executable="spawner",
executable='spawner.py' if os.environ.get('ROS_DISTRO', '') == 'foxy' else 'spawner',
arguments=["joint_state_broadcaster"],
output="screen",
)
robot_joint_controller_node = Node(
package="controller_manager",
executable="spawner",
executable='spawner.py' if os.environ.get('ROS_DISTRO', '') == 'foxy' else 'spawner',
arguments=["robot_joint_controller"],
output="screen",
)

View File

@ -19,7 +19,7 @@ from ament_index_python.packages import get_package_share_directory
from rl_sdk import *
from observation_buffer import *
CSV_LOGGER = True
CSV_LOGGER = False
class RL_Sim(RL, Node):
def __init__(self):

View File

@ -1,7 +1,7 @@
#include "rl_sim.hpp"
// #define PLOT
#define CSV_LOGGER
// #define CSV_LOGGER
RL_Sim::RL_Sim()
: rclcpp::Node("rl_sim_node")
@ -25,17 +25,23 @@ RL_Sim::RL_Sim()
auto future = param_client->async_send_request(request);
auto status = rclcpp::spin_until_future_complete(this->get_node_base_interface(), future, std::chrono::seconds(5));
if (status == rclcpp::FutureReturnCode::SUCCESS) {
if (status == rclcpp::FutureReturnCode::SUCCESS)
{
auto result = future.get();
if (result->values.size() < 2) {
if (result->values.size() < 2)
{
std::cout << LOGGER::ERROR << "Failed to get all parameters from param_node" << std::endl;
} else {
}
else
{
this->robot_name = result->values[0].string_value;
this->gazebo_model_name = result->values[1].string_value;
std::cout << LOGGER::INFO << "Get param robot_name: " << this->robot_name << std::endl;
std::cout << LOGGER::INFO << "Get param gazebo_model_name: " << this->gazebo_model_name << std::endl;
}
} else {
}
else
{
std::cout << LOGGER::ERROR << "Failed to call param_node service" << std::endl;
}

View File

@ -37,7 +37,11 @@ typedef struct
namespace robot_joint_controller
{
using CallbackReturn = rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn;
#if defined(ROS_DISTRO_FOXY)
using CallbackReturn = rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn;
#elif defined(ROS_DISTRO_HUMBLE)
using CallbackReturn = controller_interface::CallbackReturn;
#endif
class RobotJointController : public controller_interface::ControllerInterface
{
@ -50,15 +54,14 @@ public:
controller_interface::return_type update() override;
#elif defined(ROS_DISTRO_HUMBLE)
ROBOT_JOINT_CONTROLLER_PUBLIC
controller_interface::CallbackReturn on_init() override;
controller_interface::return_type update(const rclcpp::Time &time, const rclcpp::Duration &period) override;
ROBOT_JOINT_CONTROLLER_PUBLIC
CallbackReturn on_init() override;
#endif
ROBOT_JOINT_CONTROLLER_PUBLIC
controller_interface::InterfaceConfiguration command_interface_configuration() const override;
ROBOT_JOINT_CONTROLLER_PUBLIC
controller_interface::InterfaceConfiguration state_interface_configuration() const override;
// ROBOT_JOINT_CONTROLLER_PUBLIC
// CallbackReturn on_init() override;
ROBOT_JOINT_CONTROLLER_PUBLIC
CallbackReturn on_configure(const rclcpp_lifecycle::State &previous_state) override;
ROBOT_JOINT_CONTROLLER_PUBLIC

View File

@ -37,7 +37,11 @@ typedef struct
namespace robot_joint_controller
{
using CallbackReturn = rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn;
#if defined(ROS_DISTRO_FOXY)
using CallbackReturn = rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn;
#elif defined(ROS_DISTRO_HUMBLE)
using CallbackReturn = controller_interface::CallbackReturn;
#endif
class RobotJointControllerGroup : public controller_interface::ControllerInterface
{
@ -50,15 +54,14 @@ public:
controller_interface::return_type update() override;
#elif defined(ROS_DISTRO_HUMBLE)
ROBOT_JOINT_CONTROLLER_PUBLIC
controller_interface::CallbackReturn on_init() override;
controller_interface::return_type update(const rclcpp::Time &time, const rclcpp::Duration &period) override;
ROBOT_JOINT_CONTROLLER_PUBLIC
CallbackReturn on_init() override;
#endif
ROBOT_JOINT_CONTROLLER_PUBLIC
controller_interface::InterfaceConfiguration command_interface_configuration() const override;
ROBOT_JOINT_CONTROLLER_PUBLIC
controller_interface::InterfaceConfiguration state_interface_configuration() const override;
// ROBOT_JOINT_CONTROLLER_PUBLIC
// CallbackReturn on_init() override;
ROBOT_JOINT_CONTROLLER_PUBLIC
CallbackReturn on_configure(const rclcpp_lifecycle::State &previous_state) override;
ROBOT_JOINT_CONTROLLER_PUBLIC

View File

@ -18,10 +18,12 @@ RobotJointController::RobotJointController()
memset(&servo_command_, 0, sizeof(ServoCommand));
}
CallbackReturn RobotJointController::on_init()
#if defined(ROS_DISTRO_HUMBLE)
CallbackReturn RobotJointControllerGroup::on_init()
{
return CallbackReturn::SUCCESS;
}
#endif
CallbackReturn RobotJointController::on_configure(const rclcpp_lifecycle::State &previous_state)
{

View File

@ -16,10 +16,12 @@ RobotJointControllerGroup::RobotJointControllerGroup()
memset(&servo_command_, 0, sizeof(ServoCommand));
}
#if defined(ROS_DISTRO_HUMBLE)
CallbackReturn RobotJointControllerGroup::on_init()
{
return CallbackReturn::SUCCESS;
}
#endif
CallbackReturn RobotJointControllerGroup::on_configure(const rclcpp_lifecycle::State &previous_state)
{

View File

@ -38,14 +38,14 @@ def generate_launch_description():
joint_state_broadcaster_node = Node(
package="controller_manager",
executable="spawner",
executable='spawner.py' if os.environ.get('ROS_DISTRO', '') == 'foxy' else 'spawner',
arguments=["joint_state_broadcaster"],
output='screen',
)
robot_joint_controller_node = Node(
package="controller_manager",
executable="spawner",
executable='spawner.py' if os.environ.get('ROS_DISTRO', '') == 'foxy' else 'spawner',
arguments=["robot_joint_controller"],
output='screen',
)

View File

@ -46,7 +46,7 @@ def generate_launch_description():
controller_nodes = [Node(
package="controller_manager",
executable="spawner",
executable='spawner.py' if os.environ.get('ROS_DISTRO', '') == 'foxy' else 'spawner',
arguments=[name],
output='screen',
) for name in controller_names]