dynamixel舵机在ros下的workbnech使用

01 安装环境

在工作空间的src文件夹下安装功能包dynamixel-workbenchdynamixel-workbench-msgs,以及依赖库DynamixelSDK
具体参考:https://emanual.robotis.com/docs/en/software/dynamixel/dynamixel_workbench/

关于dynamixelSDK和workbench,我的理解是workbench是在dynamixelSDK的基础上,专为ROS开发,提供一些简单的易实现的API

接下来可以按照官方教程的Tutorials使用,也可以自己写

02 使用自己的程序

为了更适合自己,也为了更了解程序,所以是自己写的。

2.1 创建自己的功能包

  • 创建功能包
    catkin_create_pkg myDynamixel std_msgs rospy roscpp dynamixel_workbench_toolbox
    

注意:需要添加依赖dynamixel_workbench_toolbox

2.2 简单控制一个舵机

具体参考:dynamixel 舵机 ros 使用指南(一)

实现了一个舵机PID简单控制,可以位置控制(也可以电流控制),可以读取位置和电流

其中的一些API

DynamixelWorkbench dxl_wb;  //声明对象
dxl_wb.begin("/dev/ttyUSB0",BAUDRATE);  //打开串口
dxl_wb.ping(ID);  //连接
dxl_wb.setPositionControlMode(ID);  //设置位置控制模式
dxl_wb.torqueOn(ID);    //上电,只有断电的情况下才能设置控制模式
dxl_wb.itemRead(ID,"Present_Position",&present_position);   //读取当前的位置
dxl_wb.itemWrite(ID,"Goal_Position",goal_position);         //写入目标的位置

具体过程如下:

  • 首先在功能包的src下创建cpp文件

    touch singleSimpleControl.cpp
    
  • 然后把cpp设为可执行文件:
    右键文件-属性-权限-执行:允许作为可执行文件

  • 在CMakeList.txt中添加:

    add_executable(my_dxl_node src/singleSimpleControl.cpp)
    target_link_libraries(my_dxl_node ${catkin_LIBRARIES})
    
  • cpp程序参考知乎博主的,但需要注意在torqueOn之前需要ping,否则舵机无法执行动作

2.3 简单控制多个舵机

  • 创建cpp文件,并设置为可执行文件

    touch multiSimpleControl.cpp
    
  • 头文件my_dxl_controller.h

  • 对应cpp文件my_dxl_controller.cpp(multiSimpleControl.cpp中创建对象调用)

  • roslaunch文件start_multi_dxl.launch

  • 修改CMakeList.txt

    add_library(MyDynamixelController
      include/my_dynamixel/my_dxl_controller.h
      src/my_dxl_controller.cpp
    )
    
    add_executable(my_multi_dxl_node src/multi_simple_control.cpp)
    add_dependencies(my_multi_dxl_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
    target_link_libraries(my_multi_dxl_node MyDynamixelController ${catkin_LIBRARIES}  ${YAML_CPP_LIBRARIES})
    
  • 遇到的问题和解决:

    • 这里主要遇到的就是自定义的头文件无法使用,要注意修改CMakeList.txt的一些依赖(比如add_library那一步,target_link_libraries也要把add_library加上去)(add_library后面的MyDynamixelController是类名,下面是一些文件)
      然后可以先build一下,因为他其实是在devel文件下找头文件的
    • 还有就是roslaunch启动含有node的cpp文件,因为涉及到node_handle.param读取启动的参数
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值