diablo_ros2 repository

diablo_ros2 repository

diablo_ros2 repository

Repository Summary

Checkout URI https://github.com/ddtrobot/diablo_ros2.git
VCS Type git
VCS Version main
Last Updated 2024-06-29
Dev Status UNMAINTAINED
CI status No Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

README

DIABLO ROS2

License language platform

语言:English / 中文

​ 基于串口通信的 DIABLO 机器人二次开发控制接口,您可以通过 ROS2 快速上手。如果您想要不通 ROS 进行开发,也可以在 ROS 中修改 CMakeLists 的方式只对源码进行编译。我们将不断的更新 ROS2 的功能节点 , 希望能对您的机器人开发有所帮助。


diablo_robot_render

Basic Information 基本信息

  • X3pi 默认用户是 root , 密码为 root

  • 树莓派中默认用户是 diablo ,密码为 diablo123

  • X3pi 中IO默认串口号是 /dev/ttyS3

    树莓派中IO默认串口号是 /dev/ttyAMA0,如果您使用自定义的镜像,请重新配置串口映射

    您可以通过修改 Hal.init(“/dev/ttyS3”) 并重新编译达到切换硬件的目的

  • ROS_DOMAIN_ID=5 , 可通过 export ROS_DOMAIN_ID=5 连接并控制局域网中 DIABLO 的功能节点。

主控制引脚说明

diablo_board_render

Installation 安装

Installation method Supported platform[s] Development Docs Official website
Source Linux , ros-foxy DIABLO 开发手册 Direct drive

您可以在大多数 Linux 设备中,编译我们的 SDK 源码。或者在支持 ros-foxy 的设备中直接编译我们提供的 ros 包,注意编译之前需要做重新配置串口映射,到达切换硬件设备。

Quick Start 快速开始

准备工作

在连接机器人之前,需要做下述准备工作:

显示

开发板支持HDMI显示接口,通过HDMI线缆连接开发板和显示器,支持图形化桌面显示。

网络连接

开发板支持有线以太网、无线WiFi两种网络接口,用户可通过任意接口实现网络连接功能。

登录系统

开发板支持Ubuntu 20.04 Desktop、Server两个系统版本,用户结合个人习惯自由选择使用,以获得更自由的体验。如果用户更熟悉命令行交互操作方式,可以使用不带图形化桌面的Ubuntu Server版本。

在此之前,机器人出厂已经部署ROS2驱动包无需用户自行部署,跳过ros_ws创建,如做了硬件设备切换,需要做重新部署

  1. 创建ros工程文件夹
#make sure you have build all dependence.

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

#clone API source code
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 

  1. 完整版编译
#make sure you have build all dependence.

sudo apt-get install python3-colcon-common-extensions python3-pip
sudo pip3 install rosdep
sudo rosdep init
rosdep update
mkdir -p ~/diablo_ws/src
cd ~/diablo_ws/src

#clone API source code
git clone https://github.com/DDTRobot/diablo_ros2.git
cd ~/diablo_ws
rosdep install -i --from-path src --rosdistro foxy -y

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 

Example 例子

1、开启第一个终端,输入以下命令,获取控制权限

ros2 run diablo_ctrl diablo_ctrl_node

执行成功之后终端输出一下信息: diablo_ctrl_render

打开另一个终端:输入以下命令,键盘控制

 ros2 run diablo_teleop teleop_node

执行成功之后终端输出一下信息: diablo_teleop_render 注意: 操纵前需求遥控手柄进行关机,否则按下键盘无反应。

操作说明:
w:控制机器人向前移动。 (-1.0~+1.0米/秒); (-1.6~+1.6米/秒Low-speed mode::High-speed mode::
s:控制机器人向后移动。 (-1.0~+1.0米/秒); (-1.6~+1.6米/秒Low-speed mode::High-speed mode::
a:控制机器人左转。 (-5.0~+5.0 弧度/秒)Arbitrarily mode::
d:控制机器人右转。 (-5.0~+5.0 弧度/秒)Arbitrarily mode::
q:控制机器人向左倾斜。 (-0.2~+0.2弧度/秒)Standing mode::
e:控制机器人向右倾斜。 (-0.2~+0.2弧度/秒)Standing mode::
r:将机身倾斜角度调整为水平。Standing mode:
z:将机器人切换到站立模式。
x:将机器人切换到爬行模式。
v:用于提升机器人的控制模式。 (0 ~ 1)Position mode 0:
b:用于提升机器人的控制模式。 (-0.25 ~ +0.25 米/秒)Position mode 1:
n:用于机器人头部俯仰的控制模式。 (0 ~ 1)Position mode 0:
m:用于机器人头部俯仰的控制模式。 (-0.3~ +0.3 弧度/秒)Position mode 1:
h:站立模式下的最小高度。Position mode
k:站立模式下的中等高度。Position mode
j:站立模式下的最大高度。Position mode
u:控制机器人上仰。Position mode
i:将机身调整为水平。Position mode
o:控制机器人下仰。Position mode
f:太空步。dance mode
g:太空步结束。dance mode
c:跳跃模式。Jump mode
`:退出虚拟遥控器。

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 :


Msg Type s-e:

命令示例:
 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:

Msg Type s-e:

命令示例:

```ros2 topic echo /diablo/sensor/Imu

---
##### IMU Euler 数据
##### 功能概述:获取快速的50hz imuEuler pitch、roll、yaw 等数据
##### Topic:
```/diablo/sensor/ImuEuler
Msg Type s-e:

命令示例:

```ros2 topic echo /diablo/sensor/ImuEuler

---
### 5.电机API
电机API用于获取六个电机的状态及腿长
#### 明细
##### 功能概况:读取六个电机状态信息及左右腿长
##### Topic :
```/diablo/sensor/Motors
Msg Type s-e:

命令示例:

```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:

命令示例:

```ros2 topic echo /diablo/sensor/Battery

##### 字段描述:
* header:用于更高级别的带时间戳的数据类型的标准元数据。此字段用于传递时间戳和坐标帧信息;
* voltage: 电压,单位V;
* current: 母线电流 ,单位A;
* percentage: 剩余电量
---
### 7.机器人状态信息 
机器人状态信息反馈如异常、未初始化等等,可用于自查故障、警告等问题
#### 明细
#### 功能概况:订阅Topic反馈电源信息
#### Topic:  
``` /diablo/sensor/Body_state
Msg Type s-e:

命令示例:

ros2 topic echo /diablo/sensor/Battery

字段描述:
  • 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 状态码 亦如此。

FAQ

  • [1 问题] diablo_timeout_render
  • [1 解决方法]
  • 确保你在GitHub上clone的是basic分支的diablo_ros2
  • 检查开发板与机器人控制板连接的40p线是否连接好或者存在虚接

  • [2 问题] diablo_device_render
  • [2 解决方法]
  • 解决方将diablo_ctrl.cpp 中Hal.init(“/dev/ttys3”)改为你的设备正确的端口,保存并重新编译。

    Contents 目录

以下为Ros2 节点目录 :

CONTRIBUTING

No CONTRIBUTING.md found.

diablo_ros2 repository

diablo_ros2 repository

diablo_ros2 repository

diablo_ros2 repository

diablo_ros2 repository

diablo_ros2 repository

diablo_ros2 repository

diablo_ros2 repository

diablo_ros2 repository

diablo_ros2 repository

diablo_ros2 repository

diablo_ros2 repository

diablo_ros2 repository

diablo_ros2 repository

diablo_ros2 repository