longjie / kondo_motor

5 stars 3 forks source link

Error #1

Open retlol opened 7 years ago

retlol commented 7 years ago

I have a few questions after installing the kondo_motor.

When I catkin_make, I was given the following error: I seems like I am missing a file called setPower.h

/home/retlol/catkin_ws/src/kondo_motor/kondo_driver/src/kondo_driver.cpp:75:26: error: ‘const struct hardware_interface::ControllerInfo’ has no member named ‘resources’
     resource_it != info->resources.end(); ++resource_it) {
                          ^
do_driver.cpp:14:
/home/retlol/catkin_ws/src/kondo_motor/kondo_driver/include/kondo_driver/kondo_motor.h:7:33: fatal error: kondo_msgs/setPower.h: No such file or directory
 #include "kondo_msgs/setPower.h"
                                 ^
compilation terminated.
make[2]: *** [kondo_motor/kondo_driver/CMakeFiles/kondo_driver_node.dir/src/kondo_driver.cpp.o] Error 1
make[1]: *** [kondo_motor/kondo_driver/CMakeFiles/kondo_driver_node.dir/all] Error 2
make: *** [all] Error 2
Invoking "make -j8 -l8" failed

So I was looking at the README and I don't quite get this part... When I input this, they only prompt for my password and after that it just went to the next line, is it suppose to be like this? rosrun kondo_driver setup_device.sh

And lastly, I am not sure what it means... I think it may have caused some problems like for example... When I input roslaunch kondo_driver kondo_driver.launch I was given the following message:

ERROR: cannot launch node of type [kondo_driver/kondo_driver_node]: can't locate node [kondo_driver_node] in package [kondo_driver]
process[controller_spawner-2]: started with pid [2945]
process[robot_state_publisher-3]: started with pid [2946]
[INFO] [WallTime: 1473727725.909178] Controller Spawner: Waiting for service controller_manager/load_controller
[WARN] [WallTime: 1473727756.184382] Controller Spawner couldn't find the expected controller_manager ROS interface.
[controller_spawner-2] process has finished cleanly
log file: /home/retlol/.ros/log/cca916f8-794b-11e6-865d-247703e0c7d8/controller_spawner-2*.log

Based on the message I think it also caused the error when I input rosservice call /joint_0_position_controller/power_on "request: true"

ERROR: Service [/joint_0_position_controller/power_on] is not available.

Sorry for troubling you and took so long to answer if the above solve my problem. I really appreciate the effort.

longjie commented 7 years ago

Hi, thanks for your feedback.

First problem of kondo_msgs/setPower.h is fixed. Please pull the repo and retry.

Second,

rosrun kondo_driver setup_device.sh

will ask you sudo password, to setup new device for device driver ftdi_sio (see setup_device.sh)

Note, you need to run this script every time after the system rebooted. If you want to make it done automatically, you may use udev file as script/80-kondo-ics.rules, however, this is not tested and documented.

Third problem is caused by the first build problem, you should build the package correctly.

Please check it step by step. Firstly you should check your /dev/ttyUSB* is visible and secondly you should check the ICS ID by set_ics_id, to confirm the communication with the servo motor.

retlol commented 7 years ago

Hi, sorry but I got a problem after trying to when catkin_make the files again. This time the error is given as this: [ 86%] Built target kondo_msgs_generate_messages /home/retlol/catkin_ws/src/kondo_motor/kondo_driver/src/kondo_driver.cpp: In member function ‘virtual void KondoDriver::doSwitch(const std::list<hardware_interface::ControllerInfo>&, const std::list<hardware_interface::ControllerInfo>&)’: /home/retlol/catkin_ws/src/kondo_motor/kondo_driver/src/kondo_driver.cpp:74:73: error: ‘const struct hardware_interface::ControllerInfo’ has no member named ‘resources’ for (std::set < std::string >::const_iterator resource_it = info->resources.begin(); ^ /home/retlol/catkin_ws/src/kondo_motor/kondo_driver/src/kondo_driver.cpp:75:26: error: ‘const struct hardware_interface::ControllerInfo’ has no member named ‘resources’ resource_it != info->resources.end(); ++resource_it) { ^ make[2]: *** [kondo_motor/kondo_driver/CMakeFiles/kondo_driver_node.dir/src/kondo_driver.cpp.o] Error 1 make[1]: *** [kondo_motor/kondo_driver/CMakeFiles/kondo_driver_node.dir/all] Error 2 make: *** [all] Error 2 Invoking "make -j8 -l8" failed This caused the 3rd problem to persist as you have said above.

And I am thinking that the above caused the following problem:

retlol@TanedaRisa:~/catkin_ws$ rosservice call /joint_0_position_controller/power_on "request: true"
ERROR: Service [/joint_0_position_controller/power_on] is not available.
retlol@TanedaRisa:~/catkin_ws$ rosservice call /joint_0_position_controller/power_on "request: true"

I am not too sure if it is a ROS problem but help will be appreciated if this can be fixed

longjie commented 7 years ago

Hi,

What ROS version are you using? I'm developing in Indigo. And it is no use to call rosservice before you can build the node successfully.

retlol commented 7 years ago

I am using Jade at the moment

longjie commented 7 years ago

OK, I'll check it with Jade.

longjie commented 7 years ago

I confirmed the build error in Jade. It seems caused by API change around controller switching. Now I just comment it out in jade-devel branch. I believe it doesn't affect the servo motor functionality, if you won't switch the controller in runtime. However, I have not test it with actual motors right now. Please checkout jade-devel and give it a try.

retlol commented 7 years ago

First of all, thank you for the update which allowed me to get the catkin_make successful. We managed to build it. But when I use roslaunch kondo_driver kondo_driver.launch, I was given a different error from before.

[INFO] [WallTime: 1473926648.152511] Loading controller: joint_state_controller [ERROR] [1473926648.161354532]: Could not load controller 'joint_state_controller' because controller type 'joint_state_controller/JointStateController' does not exist. [ERROR] [1473926648.161404048]: Use 'rosservice call controller_manager/list_controller_types' to get the available types [ERROR] [WallTime: 1473926649.162103] Failed to load joint_state_controller [INFO] [WallTime: 1473926649.163139] Loading controller: joint_0_velocity_controller [ERROR] [1473926649.171384808]: Could not load controller 'joint_0_velocity_controller' because controller type 'velocity_controllers/JointVelocityController' does not exist. [ERROR] [1473926649.171501292]: Use 'rosservice call controller_manager/list_controller_types' to get the available types [ERROR] [WallTime: 1473926650.173021] Failed to load joint_0_velocity_controller [INFO] [WallTime: 1473926650.173976] Controller Spawner: Loaded controllers: [INFO] [WallTime: 1473926650.183371] Started controllers: rosrun kondo_driver setup_device.sh

Currently the following error still persist:

retlol@TanedaRisa:~/catkin_ws$ rosservice call /joint_0_position_controller/power_on "request: true" ERROR: Service [/joint_0_position_controller/power_on] is not available.

I have made sure the motor is plugged to my computer all along with the 12V supplied.

Once again, thank you for your precious time.

longjie commented 7 years ago

Error messages say you don't have some of the ros_controllers packages. You need following packages to run kondo_driver:

You should install these packages with apt-get.

Again, don't rush to try 'rosservice call' to check something.

Please check it step by step. Firstly you should check your /dev/ttyUSB* is visible and secondly you should check the ICS ID by set_ics_id, to confirm the communication with the servo motor.
retlol commented 7 years ago

Once again, thanks for your input, we did as you told us to, by sudo apt-get installing all the 3 packages. Now that we use roslaunch kondo_driver kondo_driver.launch, it launches successfully without any errors. However once when we got to rosservice call /joint_0_position_controller/power_on "request: true", it still gives us "ERROR: Service [/joint_0_position_controller/power_on] is not available." I wonder what could be the error causing it. Also, We also did all the steps from "rosrun kondo_driver setup_device.sh" without skipping any of your steps. We also ensured that we have checked the ICS ID by set_ics_id, to confirm our communication with the servo motor is set. We hope that you can help us. I also deeply apologise for using up your precious time and we are also deeply grateful for your help all along.

longjie commented 7 years ago

Hi, could you show me the output of roslaunch, and the output of following commands after roslaunch? They may help.

$ ls /dev/ttyUSB*
$ rosnode list
$ rosservice list
$ rostopic list
retlol commented 7 years ago

I don't have the motor with me atm... I will update this comment tomorrow.

UPDATE: I hope that the below information will be helpful in solving this problem.

$ ls /dev/ttyUSB*

/dev/ttyUSB0

$ rosnode list

/controller_spawner /kondo_driver /robot_state_publisher /rosout

$ rosservice list

/controller_manager/list_controller_types /controller_manager/list_controllers /controller_manager/load_controller /controller_manager/reload_controller_libraries /controller_manager/switch_controller /controller_manager/unload_controller /controller_spawner/get_loggers /controller_spawner/set_logger_level /kondo_driver/get_loggers /kondo_driver/servo_0/get_parameters /kondo_driver/servo_0/set_power /kondo_driver/set_logger_level /robot_state_publisher/get_loggers /robot_state_publisher/set_logger_level /rosout/get_loggers /rosout/set_logger_level

$ rostopic list

/joint_0_velocity_controller/command /joint_states /rosout /rosout_agg /tf /tf_static

The current output of roslaunch kondo_driver kondo_driver.launch is:

Checking log directory for disk usage. This may take awhile. Press Ctrl-C to interrupt Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://TanedaRisa:33810/

SUMMARY

PARAMETERS

  • /joint_0_position_controller/base_frame_id: base_link
  • /joint_0_position_controller/joint: joint_1
  • /joint_0_position_controller/publish_rate: 50
  • /joint_0_position_controller/type: position_controll...
  • /joint_0_velocity_controller/base_frame_id: base_link
  • /joint_0_velocity_controller/joint: joint_0
  • /joint_0_velocity_controller/publish_rate: 50
  • /joint_0_velocity_controller/type: velocity_controll...
  • /joint_1_position_controller/base_frame_id: base_link
  • /joint_1_position_controller/joint: joint_1
  • /joint_1_position_controller/publish_rate: 50
  • /joint_1_position_controller/type: position_controll...
  • /joint_1_velocity_controller/base_frame_id: base_link
  • /joint_1_velocity_controller/joint: joint_1
  • /joint_1_velocity_controller/publish_rate: 50
  • /joint_1_velocity_controller/type: velocity_controll...
  • /joint_state_controller/publish_rate: 50
  • /joint_state_controller/type: joint_state_contr...
  • /kondo_driver/device: /dev/ttyUSB0
  • /kondo_driver/loopback: False
  • /kondo_driver/servo_0/current_limit: 30
  • /kondo_driver/servo_0/id: 0
  • /kondo_driver/servo_0/joint_name: joint_0
  • /kondo_driver/servo_0/max_angle: 135
  • /kondo_driver/servo_0/min_angle: -135
  • /kondo_driver/servo_0/speed: 127
  • /kondo_driver/servo_0/stretch: 60
  • /kondo_driver/servo_0/temperature_limit: 80
  • /kondo_driver/servo_1/current_limit: 30
  • /kondo_driver/servo_1/id: 1
  • /kondo_driver/servo_1/joint_name: joint_1
  • /kondo_driver/servo_1/max_angle: 135
  • /kondo_driver/servo_1/min_angle: -135
  • /kondo_driver/servo_1/speed: 127
  • /kondo_driver/servo_1/stretch: 60
  • /kondo_driver/servo_1/temperature_limit: 80
  • /robot_description: <?xml version="1....
  • /rosdistro: jade
  • /rosversion: 1.11.16

NODES / controller_spawner (controller_manager/spawner) kondo_driver (kondo_driver/kondo_driver_node) robot_state_publisher (robot_state_publisher/robot_state_publisher)

ROS_MASTER_URI=http://localhost:11311

core service [/rosout] found process[kondo_driver-1]: started with pid [3923] process[controller_spawner-2]: started with pid [3924] process[robot_state_publisher-3]: started with pid [3925] [ INFO] [1474244941.679521075]: id: 0 [ INFO] [1474244941.680284727]: joint_name: joint_0 [ INFO] [1474244941.681027481]: min_angle: -135 [ INFO] [1474244941.681893464]: max_angle: 135 [ INFO] [1474244941.682426371]: stretch: 60 [ INFO] [1474244941.683950261]: set_stretch: 60 [ INFO] [1474244941.684596223]: speed: 127 [ INFO] [1474244941.685951281]: set_speed: 127 [ INFO] [1474244941.686761502]: current_limit: 30 [ INFO] [1474244941.687948095]: set_current_limit: 30 [ INFO] [1474244941.688401512]: temperature_limit: 80 [ INFO] [1474244941.689938255]: set_temperature_limit: 80 [INFO] [WallTime: 1474244942.064791] Controller Spawner: Waiting for service controller_manager/load_controller [INFO] [WallTime: 1474244942.067267] Controller Spawner: Waiting for service controller_manager/switch_controller [INFO] [WallTime: 1474244942.071016] Controller Spawner: Waiting for service controller_manager/unload_controller [INFO] [WallTime: 1474244942.074836] Loading controller: joint_state_controller [INFO] [WallTime: 1474244942.174556] Loading controller: joint_0_velocity_controller [INFO] [WallTime: 1474244942.324451] Controller Spawner: Loaded controllers: joint_state_controller, joint_0_velocity_controller [INFO] [WallTime: 1474244942.374495] Started controllers: joint_state_controller, joint_0_velocity_controller

Edit 2: I found something that may help. So I was using the following: rosservice call / When I press tab, I got the following output:

/controller_manager/list_controllers /controller_manager/list_controller_types /controller_manager/load_controller /controller_manager/reload_controller_libraries /controller_manager/switch_controller /controller_manager/unload_controller /controller_spawner/get_loggers /controller_spawner/set_logger_level /kondo_driver/get_loggers /kondo_driver/servo_0/get_parameters /kondo_driver/servo_0/set_power /kondo_driver/set_logger_level /robot_state_publisher/get_loggers /robot_state_publisher/set_logger_level /rosout/get_loggers /rosout/set_logger_level

There is no joint_0_position_controller in the output. So I was wondering if it may help. From the outputs, I suspect it is due to Joint_0_Position_Controller.
We hope that you may be able to solve this problem. Thank you.

retlol commented 7 years ago

Hi, I have tried to change the id of the motor to other numbers such as 1 but it kept giving me a barrage of errors

ics_set_pulse: ics_sync error

Any idea how do I go about fixing it?