사용할 다이나믹셀 : xc330-m288 및 xl430-w250
사용환경 : 다이나믹셀 케뮤니케이션 브릿지를 통해 하나의 u2d2에 연결, 파워허브 두개로 각각 입력전압 5v,12v를 제공 / 보드레이트 1M이고 ID는 변경을 완료함
ros를 이용해서 dynamixel_workbench를 실행해 두 종류의 다이나믹셀 모두 dynamixel_controller.launch를 실행하였을 때 모두 연결할 수 있도록 하고 싶습니다.
yaml파일을 이용해 id가 각각 인식이 되도록 하였고 xc330-m288만 연결하였을 때는 위의 런치파일로 모두 연결이 되고 joint_operator.cpp로 모션도 작동되는 것을 확인 하였습니다. xl430-w250만 연결했을때에도 위의 런치파일로 마찬가지로 연결이 되었고 wheel_operator.cpp 로 작동되는 것도 확인하였습니다.
두 실행을 각각 따로하지않고 하나의 launch파일로 진행하고 싶은데요. 어떻게 해야하나요.??
(+ 추가)혹시 다이나믹셀 커뮤니케이션 브릿지로 U2D2에 4핀을 연결하고 12V의 전원 공급이 들어간 파워허브보드에3핀 연결해서 다이나믹셀 XL430-W250을 연결하였고, U2D2에 3핀을 연결하고 5V의 전원이 공급된 다른 파워허브보드에 3핀 연결해서 다이나믹셀 XC330-M288에 연결하였습니다. 혹시 회로 연결에 문제가 있는건가요? 이론상 이렇게 연결해서 진행되지 않을 이유가 있나요??
roslaunch dynamixel_workbench_controllers dynamixel_controllers.launch 진행결과입니다. ID 12번까지는 XC330-M288이며 ID 13번부터 16번까지는 XL430-W250입니다.
started core service [/rosout]
process[dynamixel_workbench-2]: started with pid [8001]
[ INFO] [1653853614.232429746]: Name : a, ID : 1, Model Number : 1240
[ INFO] [1653853614.269216266]: Name : b, ID : 2, Model Number : 1240
[ INFO] [1653853614.304262041]: Name : c, ID : 3, Model Number : 1240
[ INFO] [1653853614.339206196]: Name : d, ID : 4, Model Number : 1240
[ INFO] [1653853614.374476375]: Name : e, ID : 5, Model Number : 1240
[ INFO] [1653853614.409312484]: Name : f, ID : 6, Model Number : 1240
[ INFO] [1653853614.444220531]: Name : g, ID : 7, Model Number : 1240
[ INFO] [1653853614.479516691]: Name : h, ID : 8, Model Number : 1240
[ INFO] [1653853614.514173027]: Name : i, ID : 9, Model Number : 1240
[ INFO] [1653853614.549181577]: Name : j, ID : 10, Model Number : 1240
[ INFO] [1653853614.584227352]: Name : k, ID : 11, Model Number : 1240
[ INFO] [1653853614.619181146]: Name : l, ID : 12, Model Number : 1240
[ INFO] [1653853614.654235721]: Name : left_wheel, ID : 13, Model Number : 1060
[ INFO] [1653853614.689179597]: Name : left_wheel2, ID : 14, Model Number : 1060
[ INFO] [1653853614.724195969]: Name : right_wheel, ID : 15, Model Number : 1060
[ INFO] [1653853614.759188246]: Name : right_wheel2, ID : 16, Model Number : 1060
[ INFO] [1653853615.288369498]: [DynamixelDriver] Succeeded to add sync write handler
[ INFO] [1653853615.288447721]: [DynamixelDriver] Succeeded to add sync write handler
[ERROR] [1653853615.348469302]: [TxRxResult] There is no status packet!
[ERROR] [1653853615.348556535]: groupSyncRead getdata failed
[ERROR] [1653853615.348578884]: groupSyncRead getdata failed
[ERROR] [1653853615.348602630]: groupSyncRead getdata failed
[ERROR] [1653853615.386633037]: [TxRxResult] There is no status packet!
[ERROR] [1653853615.386727953]: groupSyncRead getdata failed
[ERROR] [1653853615.386755191]: groupSyncRead getdata failed
[ERROR] [1653853615.386786201]: groupSyncRead getdata failed
2022-05-29 23:25:04 | |
kyu8456 |
안녕하세요.
해당 방법으로 연결하여 사용하셔도 됩니다.
동작 관련으로는 코드를 확인 해주세요.
현재 연결한 다이나믹셀들이 정상적으로 검색이 되는지 다이나믹셀 위자드2.0을 통해서 확인해 주세요.
감사합니다.
2022-05-30 12:37:57 | |
ykw4463 |
답변 감사합니다.
1번 질문에 대한 궁금증이 해소되지 않아 추가적으로 문의를 드립니다. 현재 연결한 다이나믹셀은 정상적으로 검색이 되고 다이나믹셀 위자드에서는 작동이 됩니다.
1. groupSyncRead getdata failed 에 대한 오류는 다이나믹셀 id, 주소, 데이터 크기에 대한 오류로 나오는데 현재 사용하고 있는 xc330-m288모델의 경우와 xl430-w250모델의 어느부분이 차이가 나는지 궁금합니다. 에러 부분을 찾아보았을 때 1번 id의 126,128,132주소의 오류라고 나오는데 이 부분은 각각 Present Current(xl430-w250의 경우 Load), Present Velocity, Present Poision인 부분인 것 같은데요. 제가 발견한 파일에서 많은 헤더파일도 존재해 혼동이 오고있습니다. 다른 cpp인지도 찾아보고는 있습니다만 이 문제를 해결하려면 어떤 부분을 수정을 해야하나요?
2. 수 많은 구글링을 통해서 살펴본 결과 현재 다이나믹셀에서 indirect Address를 사용하면 된다고 하는데 로보티즈 e-manual에서 찾아보면 sdk파일의 C++에서 Indirect 주소설정을 참고하여 ros로 적용해도 되는지요? 사용자 지정 주소의 대한것으로 다른 두 기종의 통신을 일치시키는지 궁금합니다.
(https://emanual.robotis.com/docs/en/software/dynamixel/dynamixel_sdk/sample_code/cpp_indirect_address_protocol_2_0/#cpp-indirect-address-protocol-20)
3. 위 질문과 비슷한 문의지만 indirect 주소를 설정하는 것이 옳은지 워크밴치 런치파일 및 cpp파일을 건드리는 것 중 어느 것이 더 정확한가요?
2022-06-02 03:55:46 | |
kyu8456 |