Diablo(刑天)sdk 使用

本末推荐使用ROS2 foxy (humble 兼容),以下这些就是安装过程:

sudo apt install python3-colcon-common-extensions
mkdir -p ~/diablo_ws/src
cd ~/diablo_ws/src

#用在板子上,拉取basic分支的代码
git clone -b basic https://github.com/DDTRobot/diablo_ros2.git  

cd ~/diablo_ws
colcon build
source install/setup.bash

#before starting the node , please check of serial port in diablo_ctrl.cpp is correct.
ros2 run diablo_ctrl diablo_ctrl_node

#run controller python script
ros2 run diablo_teleop teleop_node 

注:刑天ros系统出厂前基本配置完成,用户不需要安装ros系统。


第一次连接进入系统参考地瓜机器人X3pi 使用方法


以下所有节点,函数之间调用关系:

Diablo_node 控制节点发布电机和姿态消息,订阅/diablo/MotionCmd话题

这个MotionCmd是控制的协议,CTRL是映射的遥控器的消息

在此功能包中,定义了四种传感器数据的发布方式。由于机载传感器的数据是通过串口的形式发送到 Pi 中的,所以在此处定义的发布方法都是将 diablo_ctrl_node 的指针作为参数,进行数据的发布,并没有创建新的 node 。因此,文件中的构建的方法都需要在 diablo_ctrl.cpp 中进行调用才会工作。

机器人电池信息 : 1Hz

机器人状态信息 : 10Hz

机器人陀螺仪信息 : 50Hz

机器人关节电机信息 : 10Hz

传感器的消息函数

通讯协议,数据打包

头文件存放的位置

串口协议打包

四元数

加速度

电池信息

电机数据

机器人的状态

硬件接口说明

主控板提供两个用于串口通讯,二选一(UART3/UART4)

1.4.2 提供一路 2pin 12v DC ,对外设备供电接口。

1.4.3提供一路USB Type C 接口,作为X3pi供电接口,将电源接入开发板后,开发板红色电源指示灯亮起,说明开发板供电正常

刑天机器人电气拓扑图

基于串口通信的 DIABLO 机器人二次开发控制接口。diablo_ros2 sdk 开发包适用绝大数的linux 设备。如用X86作为主机跟刑天通讯,可以选择通过USB TO ttl 的方式接入 motion control Board ,串口3接口,运控板硬件接口上图所示。

1.6 diablo ROS API说明

1.diablo_ctrl_node

diablo_ctrl_node节点包括它发布的Topic、订阅的Topic以便其他节点能够正确地与其交互。

2.可订阅的Topic接口

Topic 名称:

/diablo/MotionCmd
/diablo/sensor/Battery
/diablo/sensor/Body_state
/diablo/sensor/Imu
/diablo/sensor/ImuEuler
/diablo/sensor/Motors 

3.控制API

diablo控制封装成ros2 topic 形式让客户端能控制机器人运行服务

明细
功能概述:进入站立模式、控制站立姿态、控制高度、前进左右、pitch、roll .
Topic :/diablo/MotionCmd
Msg Type s-e:motion_msgs/msg/MotionCtrl
命令示例:

ros2 topic pub /diablo/MotionCmd motion_msgs/msg/MotionCtrl "{mode_mark: false, value: {forward: 0.0, left: 0.0, up: 0.0, roll: 0.0, pitch: 0.0, leg_split: 0.0}, mode: {pitch_ctrl_mode: false, roll_ctrl_mode: false, height_ctrl_mode: false, stand_mode: false, jump_mode: false, split_mode: false}}"

字段描述:

对于MotionCtrl消息中的mode_mark,将其设置为true意味着你正在发送模式设定命令,而不是直接的移动控制命令。在模式设定命令中,你可以设置机器人进入某个特定的操作模式,比如站立模式、跳跃模式等。例如:需要设定机器人进入站立模式并改变高度控制。可以发送以下命令:

msg->mode_mark = true;
 msg->mode.stand_mode = true; 
msg->value.up = 1.0; //改变up 值从而改变高度 
motion_publisher->publish(msg);

假设不进行模式设定,意味着mode_mark设置false 。 更多控制示例参考:teleop.py


4.IMU传感器信息

传感器信息包括IMU、电源系统、6个电机数据等数据的获取和调用

明细
IMU 数据
功能概述:获取快速的50hz imu 四元数、角速度、加速度等数据
Topic:/diablo/sensor/Imu
Msg Type s-e:sensor_msgs/msg/Imu
命令示例:ros2 topic echo /diablo/sensor/Imu

IMU Euler 数据
功能概述:获取快速的50hz imuEuler pitch、roll、yaw 等数据
Topic:/diablo/sensor/ImuEuler
Msg Type s-e:ception_msgs/msg/IMUEuler
命令示例:ros2 topic echo /diablo/sensor/ImuEuler

5.电机API

电机API用于获取六个电机的状态及腿长

明细
功能概况:读取六个电机状态信息及左右腿长
Topic :/diablo/sensor/Motors
Msg Type s-e:motion_msgs/msg/LegMotors
命令示例:ros2 topic echo /diablo/sensor/Motors
字段描述:
  • header:用于更高级别的带时间戳的数据类型的标准元数据。此字段用于传递时间戳和坐标帧信息;

  • enc_rev: 圈数;

  • pos: 位置 ,单位rad;

  • vel: 角速度,单位rad/s;

  • iq: 电流,单位A;

  • leg_length: 腿长,单位m;


6.电源系统API

电源系统的API只能对电池信息等信息数据查看

明细
功能概况:订阅Topic反馈电源信息
Topic: /diablo/sensor/Body_state
Msg Type s-e: sensor_msgs/msg/Battery
命令示例:ros2 topic echo /diablo/sensor/Battery
字段描述:
  • header:用于更高级别的带时间戳的数据类型的标准元数据。此字段用于传递时间戳和坐标帧信息;

  • voltage: 电压,单位V;

  • current: 母线电流 ,单位A;

  • percentage: 剩余电量


7.机器人状态信息

机器人状态信息反馈如异常、未初始化等等,可用于自查故障、警告等问题

明细
功能概况:订阅Topic反馈电源信息
Topic: /diablo/sensor/Body_state
Msg Type s-e: motion_msgs/msg/RobotStatus
命令示例:ros2 topic echo /diablo/sensor/Body_state
字段描述:
  • header:用于更高级别的带时间戳的数据类型的标准元数据。此字段用于传递时间戳和坐标帧信息;

  • ctrl_mode_msg: 机器人控制状态

  • robot_mode_msg: 机器人模式状态

  • error_msg: 机器人错误状态码

  • warning_msg:机器人警告状态码

状态代码
  • ctrl_mode_msg = 1 ; sdk 控制控制权限模式

  • robot_mode_msg = 2; 匍匐状态

  • robot_mode_msg = 3 ; 站立状态

  • robot_mode_msg = 4 ; 站立状态过渡到匍匐状态

  • robot_mode_msg = 5 ; 匍匐状态过渡到站立状态

  • error_msg = 2064384 ; 6个电机断连,如有其他状态码反馈DDT FAE 协助诊断解决,warning_msg 状态码 亦如此。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值