Parameter 'joints' is not an array
I see the this code.
and execution.
#include <actuator_array_example/example1_driver.h>
namespace actuator_array_example
{
/* ******************************************************** */
Example1Driver::Example1Driver()
{
// For normal drivers, you would read custom configuration settings from the parameter
// server here. Common examples include the port name over which you are communicating,
// or the baud rate for the serial port. For this very simple example, we don't actually
// need any additional configuration.
// For this first, simple example, we will call the convenience init() script of the
// base class. This sets up the list of joints, subscribes to needed topics, advertises
// services, and calls the custom init_actuator_ function each actuator
ActuatorArrayDriver::init();
// Now create the array of simulated actuators
for(unsigned int i = 0; i < command_msg_.name.size(); ++i)
{
// For this first, simple example we will use the default parameters for joint limits,
// velocity, etc. provided by the DummyActuator Class
actuators_[i] = DummyActuator();
}
}
/* ******************************************************** */
Example1Driver::~Example1Driver()
{
}
/* ******************************************************** */
bool Example1Driver::read_(ros::Time ts)
{
// Calculate the time from the last update
double dt = (ts - previous_time_).toSec();
// Loop through each joint and request the current status
// Note: The base class functions ensure the same joint order in
// both the 'command' message and the 'joint_state' message
for (unsigned int i = 0; i < joint_state_msg_.name.size(); ++i)
{
// Update the simulated state of each actuator by dt seconds
actuators_[i].update(dt);
// Query the current state of each actuator
joint_state_msg_.position[i] = actuators_[i].getPosition();
joint_state_msg_.velocity[i] = actuators_[i].getVelocity();
joint_state_msg_.effort[i] = actuators_[i].getMaxTorque();
}
joint_state_msg_.header.stamp = ts;
previous_time_ = ts;
return true;
}
/* ******************************************************** */
bool Example1Driver::command_()
{
// Loop through each joint in the command message and send the
// corresponding servo the desired behavior
for (unsigned int i = 0; i < command_msg_.name.size(); ++i)
{
actuators_[i].setVelocity(command_msg_.velocity[i]);
actuators_[i].setPosition(command_msg_.position[i]);
}
return true;
}
/* ******************************************************** */
bool Example1Driver::stop_()
{
// Loop through each joint and send the stop command
for (unsigned int i = 0; i < command_msg_.name.size(); ++i)
{
// Update the simulated state of each actuator by dt seconds
actuators_[i].stop();
}
return true;
}
/* ******************************************************** */
bool Example1Driver::home_()
{
// Loop through each joint and send the home command
for (unsigned int i = 0; i < command_msg_.name.size(); ++i)
{
// Update the simulated state of each actuator by dt seconds
actuators_[i].home();
}
return true;
}
} // end namespace actuator_array_example
/* ******************************************************** */
int main(int argc, char** argv)
{
ros::init(argc, argv, "example1_driver");
// Create an Example1 Driver Object
actuator_array_example::Example1Driver driver;
// Put the driver in an infinite read-publish loop using the base class's 'spin' function
driver.spin();
return 0;
}
but, error
[ WARN] [1347388585.420279693]: Parameter 'joints' is not an array
Parameters. do I need to enter something?
add a comment