RosenYin / lifting_ws_ros2

agilex750w和400w电机驱动包

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

agilex750W&400W电机控制功能包ROS2

Time: 2024.5.16

Test:

ROS_DISTRO STATE
foxy Pass
humble Pass

*注意:如果是jetson AGX orin arm64架构,需要将src/lifting_ctrl_ros2_pkg/lifting_ctrl_ros2_pkg/so下的agx_orin_arm64_humble_3.10文件夹中的文件,放到python3.10文件里,暂时只支持humble

有关rospackage细节详见:

lifting_ctrl_ros2_pkg's README

有关USB绑定规则详见:

usb-rules规则编写

注意事项

  1. 驱动器正面会有标签,可以看驱动器型号,目前只支持830ABS、850pro
  2. 驱动器有两个网口,走的一个是232协议,一个是485/can协议,
    1. 232那个口是用来插它自带的灰色的网口转232的,然后232一端连接usb转串口线,再插到win系统电脑上,使用win上位机控制
    2. 485用来连接工控机使用ros包控制,接线检查是否正确
  3. 若重新拆装了电机,建议将json的initMode参数设定为0,然后手动执行初始化指令(val: 0, mode: 1),设定这个参数之后启动程序,电机会发生微动,属正常现象 因为假设初始上电位置超过了json中设定的限位范围[downLimitVal,upLimitVal],initMode参数设定为0会导致刚上电数值超限,会向反方向旋转,这个只在initMode参数设定为0时出现, 如果initMode参数设定为1,则会上电初始化,不会出现这个问题

pip packages

cd lifting_ws_ros2
pip3 install -r ./requirement.txt

USB Permission

sudo cp ttyUSB_permission.rules /etc/udev/rules.d/

compile

cd lifting_ws_ros2
colcon build

run

# source
source install/setup.bash
#run node
ros2 run lifting_ctrl_ros2_pkg service_830abs --id 1 #830ABS
ros2 run lifting_ctrl_ros2_pkg service_850pro --id 1 #850pro
#topic echo
ros2 topic echo /LiftMotorStatePub
#service call
ros2 service call /LiftingMotorService lifting_msg_pkg/srv/LiftMotorSrv "{ val: 0, mode: 1 }"

推荐使用byobu命令行工具多开终端,一般开三个窗格,一个用来启动代码,一个用来echo topic,一个用来service call

Json

需要根据移动模组的参数来定,需要修改的如下:

  1. 确定丝杆导程,如果有减速箱,确定减速比,

    例:

    导程=8, 减速比= 5:1

    reductionRatio应该设定为:10000 * (5/8) = 6250

  2. 需要确定初始化的方向:

    如果是负方向初始化,一般电机倒置安装,丝杆为右旋情况下,也就是设定给initSpd为负数,电机向负方向运行是朝下限位运行,则需要将downLimitVal设定为0,upLimitVal设定为模组下限位到上限位距离(正值),单位为mm

    如果是正方向初始化,一般电机倒置安装,丝杆为右旋情况下,也就是设定给initSpd为正数,电机向负方向运行是朝上限位运行,则需要将downLimitVal设定为模组下限位到上限位距离(负值),upLimitVal设定为0,单位为mm

    正负方向初始化依照initSpd参数来确定,该参数为负则为负方向初始化,正数则为正方向初始化

  3. 初始化成功后,要运行的位置,单位mm:

    initPos电机初始化成功后,如果是依靠限位初始化成功,会识别这个数值,然后作为初始化后运行位置,然后驱动电机运行到这里

  4. motorSpd电机最大速度设定,须为正数,单位rpm

  5. responseTimeout是应答超时时间设定参数,call之后,会阻塞在终端,这个数值用来设定阻塞时间,依照模组行程确定,如果行程很长可以适当加大

  6. initMode用来确定程序刚启动时候的模式,设定1为初始化模式,如果不需要初始化,请设置为0

  7. portName用来设定电机信号线所在的usb端口,这个参数如果不存在,程序会自动寻找ttyUSB*

  8. motorStallCurrent用来设定电机保护电流,根据实际情况去设定,负载比较大的时候酌情加大

  9. motorTime用来设定电机加减速时间,在位置模式下,也就是梯形加减速模型

    如果是830ABS,则只用来设定位置模式下加减速时间

    如果是850pro,则同时设定位置模式和速度模式下加减速时间

{
   "portName": "/dev/lifter_1",//串口名字,如果不写,程序会自动寻找
   "initMode":0,//开始上电时的模式,0为位置控制,1为上电开始初始化,建议测试好功能后,将电机装到模组上面并测试好下限位正常再去改为1
   "reductionRatio":20000,//执行器末端执行1mm,电机运行多少脉冲(1圈10000脉冲),单位脉冲数
   "responseTimeout":70,//应答超时时间,单位s
   "motorSpd":800,//电机最大速度设定,单位rpm
   //电机加减速时间(梯形曲线),
   //(830ABS):单位 1 为 65ms,假设设定为10,则加减速时间为650ms
   //(850pro):单位 1 为 1ms,假设设定为10,则加减速时间为10ms,这个同时还会设置加减速时间
   "motorTime":0,
   "upLimitVal":305,//电机正方向运行最大值,单位mm
   "downLimitVal":0,//电机负方向运行最小值,单位mm
   "initSpd":-800,//初始化时电机运行速度,单位rpm
   "initPos":0,//初始化后执行器要到达的位置,单位mm
   "motorStallCurrent":17,//电机堵转电流限幅,单位A
}

About

agilex750w和400w电机驱动包


Languages

Language:Python 83.0%Language:CMake 17.0%