{"action":"created","issue":{"url":"https://api.github.com/repos/roboticslab-uc3m/teo-body/issues/81","repository_url":"https://api.github.com/repos/roboticslab-uc3m/teo-body","labels_url":"https://api.github.com/repos/roboticslab-uc3m/teo-body/issues/81/labels{/name}","comments_url":"https://api.github.com/repos/roboticslab-uc3m/teo-body/issues/81/comments","events_url":"https://api.github.com/repos/roboticslab-uc3m/teo-body/issues/81/events","html_url":"https://github.com/roboticslab-uc3m/teo-body/issues/81","id":188925712,"number":81,"title":"Cannot control axis 2-5 in ASIBOT with TeoBody code","user":{"login":"PeterBowman","id":9977198,"avatar_url":"https://avatars.githubusercontent.com/u/9977198?v=3","gravatar_id":"","url":"https://api.github.com/users/PeterBowman","html_url":"https://github.com/PeterBowman","followers_url":"https://api.github.com/users/PeterBowman/followers","following_url":"https://api.github.com/users/PeterBowman/following{/other_user}","gists_url":"https://api.github.com/users/PeterBowman/gists{/gist_id}","starred_url":"https://api.github.com/users/PeterBowman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PeterBowman/subscriptions","organizations_url":"https://api.github.com/users/PeterBowman/orgs","repos_url":"https://api.github.com/users/PeterBowman/repos","events_url":"https://api.github.com/users/PeterBowman/events{/privacy}","received_events_url":"https://api.github.com/users/PeterBowman/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2016-11-12T18:09:08Z","updated_at":"2016-11-15T06:02:57Z","closed_at":null,"body":"ASIBOT's PC (more precisely, a RoBoard computer with a Debian system installed on a SD card) stores a local copy of teo-body to communicate with CAN drivers at a low level. We've observed that, out of 5 axes, only the first one moves as expected and the rest stand still, while RPC responses always return an `[ok]` acknowledgement. Tested code corresponds to an old version of the repo since we first issued RPC commands by means of a now-defunct program called `testBodyBot`. This used to work some months ago before the loss of SD card memory due to an unexpected shutdown, later reinstated from a saved .iso file. Once fixed, we found out that only axis 1 produced motion. Newly fetched and built teo-body code did not help; moreover, `oneCanBusOneWrapper` won't communicate with CAN until we launch `checkCanBus` or `dumpCanBus` in another terminal, but the end result is the same anyway.\r\n\r\nThis is the command that used to work and is currently installed in ASIBOT with old teo-body libraries, all of this dates from ~1.5 year ago. Note the `motoripos` device type, currently called `TechnosiftIpos`:\r\n\r\n`$ testBodyBot --canDevice /dev/can0 --canBitrate 6 --ids 1 2 3 4 5 --types motoripos motoripos motoripos motoripos motoripos --trs 160 160 160 160 160 --maxs 90 90 90 90 90 --mins -90 -90 -90 -90 -90`\r\n\r\nAnd these are the contents of the .ini file the `oneCanBusOneWrapper` command is launched with (axes/ids 2 to 5 are failing):\r\n```\r\n[devCan0]\r\ndevice CanBusControlboard\r\ncanDevice /dev/can0\r\ntypes TechnosoftIpos\r\nids   2\r\nmaxs  90\r\nmins -90\r\ntrs   100\r\nrefAccelerations  0.575437\r\nrefSpeeds  5.0\r\n\r\n[wrapper0]\r\ndevice controlboardwrapper2\r\nname /wrapper0\r\nthreadrate 60\r\njoints 1\r\nnetworks (devCan0)\r\ndevCan0 0 0 0 0\r\n```\r\n\r\nThe output of `oneCanBusOneWrapper` upon launch:\r\n```\r\n[info] ICanBusSharerImpl.cpp:451 interpretMessage(): Got \"manufacturer status register\" from driver. 43 2 10 0 40 2 0 2. canId(2) via(580).\r\n[info] ICanBusSharerImpl.cpp:468 interpretMessage(): \t-Motor supply voltage is absent. canId: 2.\r\n[info] ICanBusSharerImpl.cpp:471 interpretMessage(): \t-Performing a quick stop. canId: 2.\r\n[info] ICanBusSharerImpl.cpp:474 interpretMessage(): \t-Switch on disabled. canId: 2.\r\n[info] ICanBusSharerImpl.cpp:483 interpretMessage(): \t-Remote: drive parameters may be modified via CAN and the drive will execute the command message. canId: 2.\r\n[info] ICanBusSharerImpl.cpp:490 interpretMessage(): \t-Target not reached. canId: 2.\r\n[info] ICanBusSharerImpl.cpp:498 interpretMessage(): \t-No event set or the programmed event has not occurred yet. canId: 2.\r\n[info] ICanBusSharerImpl.cpp:503 interpretMessage(): \t-Axis off. Power stage is disabled. Motor control is not performed. canId: 2.\r\n[info] ICanBusSharerImpl.cpp:534 interpretMessage(): \t*Target command reached. canId: 2.\r\n[success] IControlModeRawImpl.cpp:225 getControlModeRaw3(): Sent Motion Error Register query. 40 0 20 0 0 0 0 0. canId(2) via(600).\r\n[info] ICanBusSharerImpl.cpp:399 interpretMessage(): Got SDO ack \"Motion Error Register\" from driver. 4b 0 20 0 0 0 0 0. canId(2) via(580).\r\n[success] IControlModeRawImpl.cpp:240 getControlModeRaw4(): Sent Detailed Error Register query. 40 2 20 0 0 0 0 0. canId(2) via(600).\r\n[info] ICanBusSharerImpl.cpp:553 interpretMessage(): Got SDO ack \"Detailed Error Register\" from driver. 4b 2 20 0 0 0 0 0. canId(2) via(580).\r\n[success] IControlModeRawImpl.cpp:179 getControlModeRaw1(): Sent modes of operation display. 40 61 60 0 0 0 0 0. canId(2) via(600).\r\n[info] ICanBusSharerImpl.cpp:280 interpretMessage(): Got SDO \"modes of operation display\" from driver. 4f 61 60 0 0 0 0 0. canId(2) via(580).\r\n[warning] ICanBusSharerImpl.cpp:329 interpretMessage(): \t-Mode \"0\" not specified in manual, may be in Fault or not enabled yet. canId(2).\r\n[success] IControlModeRawImpl.cpp:210 getControlModeRaw2(): Sent manufacturer status query. 40 2 10 0 0 0 0 0. canId(2) via(600).\r\n```\r\n\r\nThe same for `dumpCanBus`:\r\n```\r\n[success] ThreadImpl.cpp:32 run(): Read CAN message: 4b 7e 20 0 0 0 0 0. canId(2) via(580)\r\n[success] ThreadImpl.cpp:32 run(): Read CAN message: 4b 0 20 0 0 0 0 0. canId(2) via(580)\r\n[success] ThreadImpl.cpp:32 run(): Read CAN message: 4b 2 20 0 0 0 0 0. canId(2) via(580)\r\n[success] ThreadImpl.cpp:32 run(): Read CAN message: 43 64 60 0 0 0 0 0. canId(2) via(580)\r\n[success] ThreadImpl.cpp:32 run(): Read CAN message: 4f 61 60 0 0 0 0 0. canId(2) via(580)\r\n[success] ThreadImpl.cpp:32 run(): Read CAN message: 43 2 10 0 40 2 0 2. canId(2) via(580)\r\n```\r\n\r\nIf we connect to `/wrapper0/rpc:i` and send `set pos 0 5`, this is the only extra line `dumpCanBus` spits out:\r\n```\r\n[success] ThreadImpl.cpp:32 run(): Read CAN message: 60 7a 60 0 0 0 0 0. canId(2) via(580)\r\n```\r\n\r\nI didn't observe any change in `oneCanBusOneWrapper`'s output, but I'll be running more tests in the next days to try to gather more data.\r\n\r\nPing @edwinDOS."},"comment":{"url":"https://api.github.com/repos/roboticslab-uc3m/teo-body/issues/comments/260555317","html_url":"https://github.com/roboticslab-uc3m/teo-body/issues/81#issuecomment-260555317","issue_url":"https://api.github.com/repos/roboticslab-uc3m/teo-body/issues/81","id":260555317,"user":{"login":"jgvictores","id":4448588,"avatar_url":"https://avatars.githubusercontent.com/u/4448588?v=3","gravatar_id":"","url":"https://api.github.com/users/jgvictores","html_url":"https://github.com/jgvictores","followers_url":"https://api.github.com/users/jgvictores/followers","following_url":"https://api.github.com/users/jgvictores/following{/other_user}","gists_url":"https://api.github.com/users/jgvictores/gists{/gist_id}","starred_url":"https://api.github.com/users/jgvictores/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jgvictores/subscriptions","organizations_url":"https://api.github.com/users/jgvictores/orgs","repos_url":"https://api.github.com/users/jgvictores/repos","events_url":"https://api.github.com/users/jgvictores/events{/privacy}","received_events_url":"https://api.github.com/users/jgvictores/received_events","type":"User","site_admin":false},"created_at":"2016-11-15T06:02:57Z","updated_at":"2016-11-15T06:02:57Z","body":"Okay, let's go little by little.\r\n1. As a basic rule, do not run programs simultaneously.\r\n2. Is possible to physically connect/disconnect the TechnosoftIpos power without stopping the roboard?\r\n3.  Copy and paste the output of `dumpCanBus` here. If 2 is true: run `dumpCanBus`, turn off TechnosoftIpos power, wait 5 seconds, do a ctrl-c to stop `dumpCanBus`, run `dumpCanBus`, turn on TechnosoftIpos power.\r\n4. Try a `oneCanBusOneWrapper` ini more like:\r\n```[devCan0]\r\ndevice CanBusControlboard\r\ncanDevice /dev/can0\r\ntypes TechnosoftIpos TechnosoftIpos TechnosoftIpos TechnosoftIpos TechnosoftIpos\r\nids   1 2 3 4 5\r\nmaxs  90 90 90 90 90\r\nmins -90 -90 -90 -90 -90\r\ntrs   100 100 100 100 100\r\nrefAccelerations  0.575437  0.575437  0.575437  0.575437  0.575437\r\nrefSpeeds  5.0 5.0 5.0 5.0 5.0\r\n\r\n[wrapper0]\r\ndevice controlboardwrapper2\r\nname /wrapper0\r\nthreadrate 60\r\njoints 5\r\nnetworks (devCan0)\r\ndevCan0 0 4 0 4\r\n```"}}
{"actor":{"display_login":"jgvictores"}}